F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
NakPdu.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title NakPdu.hpp
3 // \author Brian Campuzano
4 // \brief hpp file for CFDP NAK PDU
5 // ======================================================================
6 
7 #ifndef Svc_Ccsds_Cfdp_NakPdu_HPP
8 #define Svc_Ccsds_Cfdp_NakPdu_HPP
9 
12 
13 namespace Svc {
14 namespace Ccsds {
15 namespace Cfdp {
16 
21 };
22 
24 class NakPdu : public PduBase {
25  private:
27  FileSize m_scopeStart;
28 
30  FileSize m_scopeEnd;
31 
33  U8 m_numSegments;
34 
36  SegmentRequest m_segments[58];
37 
38  public:
40  NakPdu() : m_scopeStart(0), m_scopeEnd(0), m_numSegments(0) {}
41 
43  void initialize(PduDirection direction,
44  Cfdp::Class::T txmMode,
45  EntityId sourceEid,
46  TransactionSeq transactionSeq,
47  EntityId destEid,
48  FileSize scopeStart,
49  FileSize scopeEnd);
50 
52  U32 getBufferSize() const override;
53 
56  Fw::Endianness mode = Fw::Endianness::BIG) const override;
57 
60  Fw::Endianness mode = Fw::Endianness::BIG) override;
61 
63  const PduHeader& asHeader() const { return this->m_header; }
64 
66  FileSize getScopeStart() const { return this->m_scopeStart; }
67 
69  FileSize getScopeEnd() const { return this->m_scopeEnd; }
70 
72  U8 getNumSegments() const { return this->m_numSegments; }
73 
75  const SegmentRequest& getSegment(U8 index) const { return this->m_segments[index]; }
76 
79  bool addSegment(FileSize offsetStart, FileSize offsetEnd);
80 
82  void clearSegments();
83 
86 
87  private:
89  Fw::SerializeStatus fromSerialBuffer(Fw::SerialBufferBase& serialBuffer);
90 
92  Fw::SerializeStatus toSerialBuffer(Fw::SerialBufferBase& serialBuffer) const;
93 };
94 
95 } // namespace Cfdp
96 } // namespace Ccsds
97 } // namespace Svc
98 
99 #endif // Svc_Ccsds_Cfdp_NakPdu_HPP
FileDirective getDirectiveCode() const
Get directive code.
Definition: NakPdu.hpp:85
FileSize getScopeStart() const
Get scope start.
Definition: NakPdu.hpp:66
Segment request structure for NAK PDU.
Definition: NakPdu.hpp:18
const PduHeader & asHeader() const
Get this as a Header.
Definition: NakPdu.hpp:63
U8 getNumSegments() const
Get number of segments.
Definition: NakPdu.hpp:72
U32 EntityId
Entity id size.
FileSize getScopeEnd() const
Get scope end.
Definition: NakPdu.hpp:69
SerializeStatus
forward declaration for string
Fw::SerializeStatus serializeTo(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) const override
Fw::Serializable interface - serialize to buffer.
Definition: NakPdu.cpp:56
U32 TransactionSeq
transaction sequence number size
FileSize offsetEnd
End offset of missing data.
Definition: NakPdu.hpp:20
NakPdu()
Constructor.
Definition: NakPdu.hpp:40
PduHeader m_header
The PDU header (common to all PDUs)
Definition: PduBase.hpp:27
void initialize(PduDirection direction, Cfdp::Class::T txmMode, EntityId sourceEid, TransactionSeq transactionSeq, EntityId destEid, FileSize scopeStart, FileSize scopeEnd)
Initialize a NAK PDU.
Definition: NakPdu.cpp:14
bool addSegment(FileSize offsetStart, FileSize offsetEnd)
Definition: NakPdu.cpp:29
U32 FileSize
File size and offset type.
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:54
FileSize offsetStart
Start offset of missing data.
Definition: NakPdu.hpp:19
The type of a PDU header (common to all PDUs)
Definition: PduHeader.hpp:47
void clearSegments()
Clear all segment requests.
Definition: NakPdu.cpp:39
RateGroupDivider component implementation.
Endianness
const SegmentRequest & getSegment(U8 index) const
Get segment at index (no bounds checking - caller must verify index < getNumSegments()) ...
Definition: NakPdu.hpp:75
Fw::SerializeStatus deserializeFrom(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) override
Fw::Serializable interface - deserialize from buffer.
Definition: NakPdu.cpp:60
T
The raw enum type.
Definition: ClassEnumAc.hpp:42
U32 getBufferSize() const override
Compute the buffer size needed.
Definition: NakPdu.cpp:43
The type of a NAK PDU.
Definition: NakPdu.hpp:24
Big endian serialization.