F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
AckPdu.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title AckPdu.hpp
3 // \author Brian Campuzano
4 // \brief hpp file for CFDP ACK PDU
5 // ======================================================================
6 
7 #ifndef Svc_Ccsds_Cfdp_AckPdu_HPP
8 #define Svc_Ccsds_Cfdp_AckPdu_HPP
9 
12 
13 namespace Svc {
14 namespace Ccsds {
15 namespace Cfdp {
16 
18 class AckPdu : public PduBase {
19  private:
21  FileDirective m_directiveCode;
22 
24  U8 m_directiveSubtypeCode;
25 
27  ConditionCode m_conditionCode;
28 
30  AckTxnStatus m_transactionStatus;
31 
32  public:
35  : m_directiveCode(FileDirective::FILE_DIRECTIVE_INVALID_MIN),
36  m_directiveSubtypeCode(0),
37  m_conditionCode(ConditionCode::CONDITION_CODE_NO_ERROR),
38  m_transactionStatus(AckTxnStatus::ACK_TXN_STATUS_UNDEFINED) {}
39 
41  void initialize(PduDirection direction,
42  Cfdp::Class::T txmMode,
43  EntityId sourceEid,
44  TransactionSeq transactionSeq,
45  EntityId destEid,
46  FileDirective directiveCode,
47  U8 directiveSubtypeCode,
48  ConditionCode conditionCode,
49  AckTxnStatus transactionStatus);
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  FileDirective getDirectiveCode() const { return this->m_directiveCode; }
67 
69  U8 getDirectiveSubtypeCode() const { return this->m_directiveSubtypeCode; }
70 
72  ConditionCode getConditionCode() const { return this->m_conditionCode; }
73 
75  AckTxnStatus getTransactionStatus() const { return this->m_transactionStatus; }
76 
77  private:
79  Fw::SerializeStatus fromSerialBuffer(Fw::SerialBufferBase& serialBuffer);
80 
82  Fw::SerializeStatus toSerialBuffer(Fw::SerialBufferBase& serialBuffer) const;
83 };
84 
85 } // namespace Cfdp
86 } // namespace Ccsds
87 } // namespace Svc
88 
89 #endif // Svc_Ccsds_Cfdp_AckPdu_HPP
AckTxnStatus getTransactionStatus() const
Get transaction status.
Definition: AckPdu.hpp:75
const PduHeader & asHeader() const
Get this as a Header.
Definition: AckPdu.hpp:63
U32 getBufferSize() const override
Compute the buffer size needed.
Definition: AckPdu.cpp:32
U32 EntityId
Entity id size.
void initialize(PduDirection direction, Cfdp::Class::T txmMode, EntityId sourceEid, TransactionSeq transactionSeq, EntityId destEid, FileDirective directiveCode, U8 directiveSubtypeCode, ConditionCode conditionCode, AckTxnStatus transactionStatus)
Initialize an ACK PDU.
Definition: AckPdu.cpp:14
ConditionCode getConditionCode() const
Get condition code.
Definition: AckPdu.hpp:72
SerializeStatus
forward declaration for string
FileDirective getDirectiveCode() const
Get directive code.
Definition: AckPdu.hpp:66
U32 TransactionSeq
transaction sequence number size
AckPdu()
Constructor.
Definition: AckPdu.hpp:34
PduHeader m_header
The PDU header (common to all PDUs)
Definition: PduBase.hpp:27
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:54
Fw::SerializeStatus deserializeFrom(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) override
Fw::Serializable interface - deserialize from buffer.
Definition: AckPdu.cpp:47
The type of a PDU header (common to all PDUs)
Definition: PduHeader.hpp:47
U8 getDirectiveSubtypeCode() const
Get directive subtype code.
Definition: AckPdu.hpp:69
RateGroupDivider component implementation.
Endianness
T
The raw enum type.
Definition: ClassEnumAc.hpp:42
Fw::SerializeStatus serializeTo(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) const override
Fw::Serializable interface - serialize to buffer.
Definition: AckPdu.cpp:43
The type of an ACK PDU.
Definition: AckPdu.hpp:18
Big endian serialization.