fsfw/src/fsfw/tmtcpacket/pus/tc/TcPacketPusIntoBuf.h

39 lines
1.1 KiB
C++

#ifndef FSFW_SRC_FSFW_TMTCPACKET_PUS_TC_TCPACKETPUSINTOBUF_H_
#define FSFW_SRC_FSFW_TMTCPACKET_PUS_TC_TCPACKETPUSINTOBUF_H_
#include <cstdint>
#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;
uint8_t ack = TcPacketPus::ACK_ALL;
};
class TcPacketPusIntoBuf : public TcPacketPus, public SerializeIF, public HasReturnvaluesIF {
public:
TcPacketPusIntoBuf(uint8_t* data, size_t size, 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_ */