fsfw/src/fsfw/tmtcpacket/pus/tm/PusTmCreator.h

63 lines
2.0 KiB
C
Raw Normal View History

2022-07-19 18:13:25 +02:00
#ifndef FSFW_TMTCPACKET_TMPACKETCREATOR_H
#define FSFW_TMTCPACKET_TMPACKETCREATOR_H
2022-07-20 22:21:15 +02:00
#include "PusTmIF.h"
#include "fsfw/tmtcpacket/ccsds/SpacePacketCreator.h"
#include "fsfw/tmtcpacket/pus/CreatorDataIF.h"
2022-07-19 18:13:25 +02:00
2022-07-20 22:21:15 +02:00
struct PusTmSecHeader {
2022-07-19 18:13:25 +02:00
uint8_t pusVersion;
uint8_t scTimeRefStatus;
uint8_t service;
uint8_t subservice;
uint16_t messageTypeCounter;
uint16_t destId;
2022-07-20 22:21:15 +02:00
TimeStamperIF* timeStamper;
2022-07-19 18:13:25 +02:00
};
2022-07-20 22:21:15 +02:00
struct PusTmParams {
PusTmSecHeader secHeader;
ecss::DataWrapper dataWrapper;
};
class TimeStamperIF;
class PusTmCreator : public SerializeIF, public PusTmIF, public CreatorDataIF {
2022-07-19 18:13:25 +02:00
public:
2022-07-20 22:21:15 +02:00
PusTmCreator();
explicit PusTmCreator(TimeStamperIF* timeStamper);
PusTmCreator(SpacePacketParams initSpParams, PusTmParams initPusParams,
TimeStamperIF* timeStamper);
2022-07-19 18:13:25 +02:00
~PusTmCreator() override = default;
2022-07-20 22:21:15 +02:00
void setTimeStamper(TimeStamperIF* timeStamper);
SpacePacketParams& getSpParams();
void setApid(uint16_t apid);
PusTmParams& getParams();
void updateSpLengthField();
2022-07-20 11:43:16 +02:00
[[nodiscard]] uint16_t getPacketIdRaw() const override;
[[nodiscard]] uint16_t getPacketSeqCtrlRaw() const override;
2022-07-19 18:13:25 +02:00
[[nodiscard]] uint16_t getPacketDataLen() const override;
[[nodiscard]] uint8_t getPusVersion() const override;
[[nodiscard]] uint8_t getService() const override;
[[nodiscard]] uint8_t getSubService() const override;
2022-07-20 22:21:15 +02:00
uint8_t getScTimeRefStatus() override;
uint16_t getMessageTypeCounter() override;
uint16_t getDestId() override;
ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize,
Endianness streamEndianness) const override;
[[nodiscard]] size_t getSerializedSize() const override;
ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size,
Endianness streamEndianness) override;
2022-07-21 11:34:11 +02:00
TimeStamperIF* getTimestamper();
2022-07-20 22:21:15 +02:00
private:
ecss::DataWrapper& getDataWrapper() override;
2022-07-19 18:13:25 +02:00
private:
2022-07-20 22:21:15 +02:00
PusTmParams pusParams{};
SpacePacketCreator spCreator;
2022-07-19 18:13:25 +02:00
};
#endif // FSFW_TMTCPACKET_TMPACKETCREATOR_H