/** RAW IO format * * @file * @author Steffen Vogel * @copyright 2014-2022, Institute for Automation of Complex Power Systems, EONERC * @license Apache 2.0 *********************************************************************************/ #pragma once #include #include #include /* float128 is currently not yet supported as htole128() functions a missing */ #if 0 && defined(__GNUC__) && defined(__linux__) #define HAS_128BIT #endif namespace villas { namespace node { /* Forward declarations */ struct Sample; class RawFormat : public BinaryFormat { public: enum Endianess { BIG, LITTLE }; protected: enum Endianess endianess; int bits; bool fake; public: RawFormat(int fl, int b = 32, enum Endianess e = Endianess::LITTLE) : BinaryFormat(fl), endianess(e), bits(b), fake(false) { if (fake) flags |= (int) SampleFlags::HAS_SEQUENCE | (int) SampleFlags::HAS_TS_ORIGIN; } virtual int sscan(const char *buf, size_t len, size_t *rbytes, struct Sample * const smps[], unsigned cnt); virtual int sprint(char *buf, size_t len, size_t *wbytes, const struct Sample * const smps[], unsigned cnt); virtual void parse(json_t *json); }; class GtnetRawFormat : public RawFormat { public: GtnetRawFormat(int fl) : RawFormat(fl, 32, Endianess::BIG) { } }; } // namespace node } // namespace villas