#ifndef FSFW_SRC_FSFW_TMTCPACKET_PUS_TC_TCPACKETPUSINTOBUF_H_ #define FSFW_SRC_FSFW_TMTCPACKET_PUS_TC_TCPACKETPUSINTOBUF_H_ #include #include "TcPacketPus.h" #include "fsfw/serialize/SerializeIF.h" struct PusConfig { uint16_t apid = 0; uint8_t service = 0; uint8_t subservice = 0; uint16_t sequenceCount = 0; uint16_t sourceId = 0; uint8_t* appData = nullptr; size_t appDataLen = 0; #if FSFW_USE_PUS_C_TELECOMMANDS == 1 static constexpr pus::PusVersion PUS_VERSION = pus::PusVersion::PUS_C_VERSION; #else static constexpr pus::PusVersion PUS_VERSION = pus::PusVersion::PUS_A_VERSION; #endif uint8_t ack = TcPacketPus::ACK_ALL; }; class TcPacketSerializer : public TcPacketPus, public SerializeIF, public HasReturnvaluesIF { public: TcPacketSerializer(uint8_t* store, size_t maxSize, PusConfig& cfg); ReturnValue_t initialize(); ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize, Endianness streamEndianness) const override; size_t getSerializedSize() const override; ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size, Endianness streamEndianness) override; private: uint8_t* store; size_t maxSize; PusConfig& cfg; }; #endif /* FSFW_SRC_FSFW_TMTCPACKET_PUS_TC_TCPACKETPUSINTOBUF_H_ */