F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
FinPdu.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title FinPdu.hpp
3 // \author Brian Campuzano
4 // \brief hpp file for CFDP Finished PDU
5 // ======================================================================
6 
7 #ifndef Svc_Ccsds_Cfdp_FinPdu_HPP
8 #define Svc_Ccsds_Cfdp_FinPdu_HPP
9 
13 
14 namespace Svc {
15 namespace Ccsds {
16 namespace Cfdp {
17 
19 class FinPdu : public PduBase {
20  private:
22  ConditionCode m_conditionCode;
23 
25  FinDeliveryCode m_deliveryCode;
26 
28  FinFileStatus m_fileStatus;
29 
31  TlvList m_tlvList;
32 
33  public:
36  : m_conditionCode(ConditionCode::CONDITION_CODE_NO_ERROR),
38  m_fileStatus(FinFileStatus::FIN_FILE_STATUS_RETAINED) {}
39 
41  void initialize(PduDirection direction,
42  Cfdp::Class::T txmMode,
43  EntityId sourceEid,
44  TransactionSeq transactionSeq,
45  EntityId destEid,
46  ConditionCode conditionCode,
47  FinDeliveryCode deliveryCode,
48  FinFileStatus fileStatus);
49 
51  U32 getBufferSize() const override;
52 
55  Fw::Endianness mode = Fw::Endianness::BIG) const override;
56 
59  Fw::Endianness mode = Fw::Endianness::BIG) override;
60 
62  const PduHeader& asHeader() const { return this->m_header; }
63 
65  ConditionCode getConditionCode() const { return this->m_conditionCode; }
66 
68  FinDeliveryCode getDeliveryCode() const { return this->m_deliveryCode; }
69 
71  FinFileStatus getFileStatus() const { return this->m_fileStatus; }
72 
75 
78  bool appendTlv(const Tlv& tlv) { return this->m_tlvList.appendTlv(tlv); }
79 
81  const TlvList& getTlvList() const { return this->m_tlvList; }
82 
84  U8 getNumTlv() const { return this->m_tlvList.getNumTlv(); }
85 
86  private:
88  Fw::SerializeStatus fromSerialBuffer(Fw::SerialBufferBase& serialBuffer);
89 
91  Fw::SerializeStatus toSerialBuffer(Fw::SerialBufferBase& serialBuffer) const;
92 };
93 
94 } // namespace Cfdp
95 } // namespace Ccsds
96 } // namespace Svc
97 
98 #endif // Svc_Ccsds_Cfdp_FinPdu_HPP
bool appendTlv(const Tlv &tlv)
Definition: Tlv.cpp:188
U32 EntityId
Entity id size.
FinFileStatus getFileStatus() const
Get file status.
Definition: FinPdu.hpp:71
U32 getBufferSize() const override
Compute the buffer size needed.
Definition: FinPdu.cpp:33
List of TLVs.
Definition: Tlv.hpp:88
ConditionCode getConditionCode() const
Get condition code.
Definition: FinPdu.hpp:65
bool appendTlv(const Tlv &tlv)
Definition: FinPdu.hpp:78
const PduHeader & asHeader() const
Get this as a Header.
Definition: FinPdu.hpp:62
Fw::SerializeStatus serializeTo(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) const override
Fw::Serializable interface - serialize to buffer.
Definition: FinPdu.cpp:46
SerializeStatus
forward declaration for string
FileDirective getDirectiveCode() const
Get directive code.
Definition: FinPdu.hpp:74
U32 TransactionSeq
transaction sequence number size
U8 getNumTlv() const
Definition: Tlv.cpp:202
FinPdu()
Constructor.
Definition: FinPdu.hpp:35
U8 getNumTlv() const
Get number of TLVs.
Definition: FinPdu.hpp:84
Fw::SerializeStatus deserializeFrom(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) override
Fw::Serializable interface - deserialize from buffer.
Definition: FinPdu.cpp:50
Single TLV entry.
Definition: Tlv.hpp:59
The type of a Finished PDU.
Definition: FinPdu.hpp:19
const TlvList & getTlvList() const
Get TLV list.
Definition: FinPdu.hpp:81
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
void initialize(PduDirection direction, Cfdp::Class::T txmMode, EntityId sourceEid, TransactionSeq transactionSeq, EntityId destEid, ConditionCode conditionCode, FinDeliveryCode deliveryCode, FinFileStatus fileStatus)
Initialize a Finished PDU.
Definition: FinPdu.cpp:14
The type of a PDU header (common to all PDUs)
Definition: PduHeader.hpp:47
FinDeliveryCode getDeliveryCode() const
Get delivery code.
Definition: FinPdu.hpp:68
RateGroupDivider component implementation.
Endianness
T
The raw enum type.
Definition: ClassEnumAc.hpp:42
Big endian serialization.