44 lines
1.3 KiB
C++
44 lines
1.3 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;
|
|
#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_ */
|