#include "TcPacketSerializer.h" #include TcPacketSerializer::TcPacketSerializer(uint8_t* store, size_t maxSize, PusConfig& cfg) : TcPacketPus(nullptr), store(store), maxSize(maxSize), cfg(cfg) {} ReturnValue_t TcPacketSerializer::serialize(uint8_t** buffer, size_t* size, size_t maxSize, Endianness streamEndianness) const { if (*size + getSerializedSize() > maxSize) { return BUFFER_TOO_SHORT; } std::memcpy(*buffer, store, getSerializedSize()); *buffer += getSerializedSize(); *size += getSerializedSize(); return RETURN_OK; } size_t TcPacketSerializer::getSerializedSize() const { return TC_PACKET_MIN_SIZE + cfg.appDataLen; } ReturnValue_t TcPacketSerializer::initialize() { if (getSerializedSize() > maxSize) { return SerializeIF::BUFFER_TOO_SHORT; } ReturnValue_t result = setData(store, maxSize); if (result != RETURN_OK) { return result; } initializeTcPacket(cfg.apid, cfg.sequenceCount, cfg.ack, cfg.service, cfg.subservice, PusConfig::PUS_VERSION, cfg.sourceId); if (cfg.appData != nullptr and cfg.appDataLen > 0) { std::memcpy(&tcData->appData, cfg.appData, cfg.appDataLen); } setPacketDataLength(calculateFullPacketLength(cfg.appDataLen) - sizeof(CCSDSPrimaryHeader) - 1); setErrorControl(); return RETURN_OK; } ReturnValue_t TcPacketSerializer::deSerialize(const uint8_t** buffer, size_t* size, Endianness streamEndianness) { return RETURN_FAILED; }