#ifndef FSFW_UTIL_UNSIGNEDBYTEFIELD_H #define FSFW_UTIL_UNSIGNEDBYTEFIELD_H #include "fsfw/serialize.h" template class UnsignedByteField : public SerializeIF { public: static_assert(std::is_unsigned::value); explicit UnsignedByteField(T value) : value(value) {} [[nodiscard]] ReturnValue_t serialize(uint8_t **buffer, size_t *size, size_t maxSize, Endianness streamEndianness) const override { return SerializeAdapter::serialize(&value, buffer, size, maxSize, streamEndianness); } ReturnValue_t deSerialize(const uint8_t **buffer, size_t *size, Endianness streamEndianness) override { return SerializeAdapter::deSerialize(&value, buffer, size, streamEndianness); } [[nodiscard]] size_t getSerializedSize() const override { return sizeof(T); } [[nodiscard]] T getValue() const { return value; } void setValue(T value_) { value = value_; } private: T value; }; class U32ByteField : public UnsignedByteField { public: explicit U32ByteField(uint32_t value) : UnsignedByteField(value) {} }; class U16ByteField : public UnsignedByteField { public: explicit U16ByteField(uint16_t value) : UnsignedByteField(value) {} }; class U8ByteField : public UnsignedByteField { public: explicit U8ByteField(uint8_t value) : UnsignedByteField(value) {} }; #endif // FSFW_UTIL_UNSIGNEDBYTEFIELD_H