CCSDSPack
C++ Library for CCSDS Space Packet manipulation. i.e. generation, extraction, analisys and more
Loading...
Searching...
No Matches
CCSDSHeader.h
Go to the documentation of this file.
1#ifndef CCSDS_HEADER_H
2#define CCSDS_HEADER_H
3
4#include <CCSDSResult.h>
5#include <cstdint>
6#include <vector>
7
8namespace CCSDS {
25
42 // version and packet identification 16 bit 4 hex
43 uint8_t versionNumber{};
44 uint8_t type{};
46 uint16_t APID{};
47
48 //packet sequence control 16 bit 4 hex
49 uint8_t sequenceFlags{};
50 uint16_t sequenceCount{};
51
52 // data packet length
53 uint16_t dataLength{};
54
66 PrimaryHeader(const uint8_t versionNumber_value, const uint8_t type_value, const uint8_t dataFieldHeaderFlag_value,
67 const uint16_t APID_value, const uint8_t sequenceFlag_value, const uint16_t sequenceCount_value,
68 const uint16_t dataLength_value) : versionNumber(versionNumber_value), type(type_value),
69 dataFieldHeaderFlag(dataFieldHeaderFlag_value),
70 APID(APID_value), sequenceFlags(sequenceFlag_value),
71 sequenceCount(sequenceCount_value),
72 dataLength(dataLength_value) {
73 }
74 };
75
80 class Header {
81 public:
82 Header() = default;
83
84 [[nodiscard]] uint8_t getVersionNumber() const { return m_versionNumber; }
85 [[nodiscard]] uint8_t getType() const { return m_type; }
86 [[nodiscard]] uint8_t getDataFieldHeaderFlag() const { return m_dataFieldHeaderFlag; }
87 [[nodiscard]] uint16_t getAPID() const { return m_APID; }
88 [[nodiscard]] uint8_t getSequenceFlags() const { return m_sequenceFlags; }
89 [[nodiscard]] uint16_t getSequenceCount() const { return m_sequenceCount; }
90 [[nodiscard]] uint16_t getDataLength() const { return m_dataLength; }
91
98 std::vector<uint8_t> serialize();
99
108 uint64_t getFullHeader() {
111 m_APID;
112 return (static_cast<uint64_t>(m_packetIdentificationAndVersion) << 32) | (
113 static_cast<uint32_t>(m_packetSequenceControl) << 16) | m_dataLength;
114 }
115
116 void setVersionNumber ( const uint8_t &value ) { m_versionNumber = value & 0x0007; }
117 void setType ( const uint8_t &value ) { m_type = value & 0x0001; }
118 void setDataFieldHeaderFlag( const uint8_t &value ) { m_dataFieldHeaderFlag = value & 0x0001; }
119 void setAPID ( const uint16_t &value ) { m_APID = value & 0x07FF; }
120 void setSequenceFlags ( const uint8_t &value ) { m_sequenceFlags = value & 0x0003; }
121 void setSequenceCount ( const uint16_t &value ) { m_sequenceCount = value & 0x3FFF; }
122 void setDataLength ( const uint16_t &value ) { m_dataLength = value; }
123
135 [[nodiscard]] ResultBool setData(const uint64_t &data);
136
148 [[nodiscard]] ResultBool deserialize(const std::vector<uint8_t> &data);
149
150
160 void setData(const PrimaryHeader &data);
161
162 private:
163 // version and packet identification 16 bit 4 hex
164 uint8_t m_versionNumber{};
165
166 // packet identification 4 hex
167 uint8_t m_type{};
169 uint16_t m_APID{};
170
171 // packet sequence control 16 bit 4 hex
173 uint16_t m_sequenceCount{};
174
175 // full packet size 48 bit fixed 6 byes
178 uint16_t m_dataLength{};
179 };
180}
181#endif // CCSDS_HEADER_H
Manages the decomposition and manipulation of CCSDS primary headers.
Definition CCSDSHeader.h:80
uint8_t m_sequenceFlags
2 bit first of sequence control / ESequenceFlag enum.
uint8_t m_dataFieldHeaderFlag
1 bit third of packet identification
void setVersionNumber(const uint8_t &value)
3 bits
uint8_t getVersionNumber() const
3 bits
Definition CCSDSHeader.h:84
ResultBool deserialize(const std::vector< uint8_t > &data)
Sets the header data from a 64-bit integer representation.
void setDataLength(const uint16_t &value)
16 bits
uint16_t getAPID() const
11 bits
Definition CCSDSHeader.h:87
void setSequenceCount(const uint16_t &value)
14 bits
void setSequenceFlags(const uint8_t &value)
2 bits
std::vector< uint8_t > serialize()
decomposes the Primary header class and returns it as a vector of bytes.
uint16_t m_sequenceCount
14 bit last of sequence control
uint8_t getType() const
1 bits
Definition CCSDSHeader.h:85
uint16_t m_packetSequenceControl
packet sequence control 16 bit 4 hex
uint8_t getSequenceFlags() const
2 bits
Definition CCSDSHeader.h:88
uint8_t getDataFieldHeaderFlag() const
1 bits
Definition CCSDSHeader.h:86
uint16_t getSequenceCount() const
14 bits
Definition CCSDSHeader.h:89
uint8_t m_versionNumber
3 bit first of packet identification
uint16_t m_APID
11 bit last of packet identification
uint16_t getDataLength() const
16 bits
Definition CCSDSHeader.h:90
ResultBool setData(const uint64_t &data)
Sets the header data from a 64-bit integer representation.
void setAPID(const uint16_t &value)
11 bits
uint8_t m_type
1 bit second of packet identification
Header()=default
void setDataFieldHeaderFlag(const uint8_t &value)
1 bits
uint16_t m_packetIdentificationAndVersion
packet id and version 16 bit 4 hex
uint16_t m_dataLength
data packet length 16 bits 4 hex
void setType(const uint8_t &value)
1 bits
uint64_t getFullHeader()
Computes and retrieves the full header as a 64-bit value.
Encapsulates a result that can hold either a value or an Error.
Definition CCSDSResult.h:81
Contains definitions and classes for handling CCSDS headers.
ESequenceFlag
Represents the sequence flags used in CCSDS telemetry transfer frames.
Definition CCSDSHeader.h:19
@ LAST_SEGMENT
10 Last segment of a multi-frame packet.
Definition CCSDSHeader.h:22
@ UNSEGMENTED
11 Complete packet in a single frame.
Definition CCSDSHeader.h:23
@ CONTINUING_SEGMENT
00 Intermediate segment of a packet.
Definition CCSDSHeader.h:20
@ FIRST_SEGMENT
01 First segment of a new packet.
Definition CCSDSHeader.h:21
Represents the primary header of a CCSDS packet.
Definition CCSDSHeader.h:41
uint8_t type
1 bit second of packet identification
Definition CCSDSHeader.h:44
PrimaryHeader(const uint8_t versionNumber_value, const uint8_t type_value, const uint8_t dataFieldHeaderFlag_value, const uint16_t APID_value, const uint8_t sequenceFlag_value, const uint16_t sequenceCount_value, const uint16_t dataLength_value)
Constructs a PrimaryHeader with specified field values.
Definition CCSDSHeader.h:66
uint8_t dataFieldHeaderFlag
1 bit third of packet identification
Definition CCSDSHeader.h:45
uint16_t sequenceCount
14 bit last of sequence control
Definition CCSDSHeader.h:50
uint8_t sequenceFlags
2 bit first of sequence control
Definition CCSDSHeader.h:49
uint8_t versionNumber
3 bit first of packet identification
Definition CCSDSHeader.h:43
uint16_t dataLength
16 bits
Definition CCSDSHeader.h:53
uint16_t APID
11 bit last of packet identification
Definition CCSDSHeader.h:46