fsfw/src/fsfw/tmtcpacket/ccsds/SpacePacketCreator.h

62 lines
2.0 KiB
C
Raw Normal View History

2022-07-20 11:43:16 +02:00
#ifndef FSFW_TMTCPACKET_SPACEPACKETCREATOR_H
#define FSFW_TMTCPACKET_SPACEPACKETCREATOR_H
#include <utility>
#include "PacketId.h"
#include "PacketSeqCtrl.h"
#include "SpacePacketIF.h"
#include "fsfw/serialize/SerializeIF.h"
struct SpacePacketParams {
2022-07-20 22:21:15 +02:00
SpacePacketParams() = default;
2022-07-20 11:43:16 +02:00
SpacePacketParams(PacketId packetId, PacketSeqCtrl psc, uint16_t dataLen)
: packetId(std::move(packetId)), packetSeqCtrl(std::move(psc)), dataLen(dataLen) {}
PacketId packetId{};
PacketSeqCtrl packetSeqCtrl{};
uint16_t dataLen = 0;
uint8_t version = 0b000;
};
class SpacePacketCreator : public SpacePacketIF, public SerializeIF {
public:
2022-07-20 22:21:15 +02:00
SpacePacketCreator() = default;
2022-07-20 11:43:16 +02:00
explicit SpacePacketCreator(SpacePacketParams params);
2022-07-23 10:24:56 +02:00
bool operator==(const SpacePacketCreator &other) const;
2022-07-23 11:43:48 +02:00
explicit operator bool() const;
2022-07-23 10:24:56 +02:00
2022-07-20 11:43:16 +02:00
SpacePacketCreator(ccsds::PacketType packetType, bool secHeaderFlag, uint16_t apid,
ccsds::SequenceFlags seqFlags, uint16_t seqCount, uint16_t dataLen,
uint8_t version = 0);
[[nodiscard]] bool isValid() const;
[[nodiscard]] uint16_t getPacketIdRaw() const override;
[[nodiscard]] uint16_t getPacketSeqCtrlRaw() const override;
[[nodiscard]] uint16_t getPacketDataLen() const override;
2022-07-20 22:21:15 +02:00
SpacePacketParams &getParams();
void setParams(SpacePacketParams params);
void setSecHeaderFlag();
2022-07-21 17:48:11 +02:00
void setPacketType(ccsds::PacketType type);
2022-07-20 11:43:16 +02:00
void setApid(uint16_t apid);
void setSeqCount(uint16_t seqCount);
void setSeqFlags(ccsds::SequenceFlags flags);
void setDataLen(uint16_t dataLen);
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;
private:
void checkFieldValidity();
bool valid{};
2022-07-20 22:21:15 +02:00
SpacePacketParams params{};
2022-07-20 11:43:16 +02:00
};
#endif // FSFW_TMTCPACKET_SPACEPACKETCREATOR_H