F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
PduBase.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title PduBase.hpp
3 // \author Brian Campuzano
4 // \brief Base class for all CFDP PDU types
5 //
6 // This base class provides a common interface for all PDU types,
7 // enabling proper construction/destruction and type safety.
8 // ======================================================================
9 
10 #ifndef Svc_Ccsds_Cfdp_PduBase_HPP
11 #define Svc_Ccsds_Cfdp_PduBase_HPP
12 
13 #include <Fw/Buffer/Buffer.hpp>
14 #include <Fw/FPrimeBasicTypes.hpp>
17 
18 namespace Svc {
19 namespace Ccsds {
20 namespace Cfdp {
21 
24 class PduBase : public Fw::Serializable {
25  protected:
28 
29  public:
31  PduBase() {}
32 
34  virtual ~PduBase() = default;
35 
41  Fw::Endianness mode = Fw::Endianness::BIG) const override = 0;
42 
48  Fw::Endianness mode = Fw::Endianness::BIG) override = 0;
49 
52  virtual U32 getBufferSize() const = 0;
53 
56  PduTypeEnum::T getType() const { return this->m_header.getType(); }
57 
60  PduDirection getDirection() const { return this->m_header.getDirection(); }
61 
64  Cfdp::Class::T getTxmMode() const { return this->m_header.getTxmMode(); }
65 
68  EntityId getSourceEid() const { return this->m_header.getSourceEid(); }
69 
72  TransactionSeq getTransactionSeq() const { return this->m_header.getTransactionSeq(); }
73 
76  EntityId getDestEid() const { return this->m_header.getDestEid(); }
77 
80  const PduHeader& getHeader() const { return this->m_header; }
81 };
82 
83 } // namespace Cfdp
84 } // namespace Ccsds
85 } // namespace Svc
86 
87 // Include all concrete PDU types for convenience (umbrella header pattern)
94 
95 #endif // Svc_Ccsds_Cfdp_PduBase_HPP
EntityId getDestEid() const
Get the destination entity ID.
Definition: PduHeader.hpp:130
U32 EntityId
Entity id size.
Fw::SerializeStatus serializeTo(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) const override=0
EntityId getSourceEid() const
Definition: PduBase.hpp:68
SerializeStatus
forward declaration for string
Cfdp::Class::T getTxmMode() const
Get the transmission mode.
Definition: PduHeader.hpp:121
Fw::SerializeStatus deserializeFrom(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) override=0
PduTypeEnum::T getType() const
Get the PDU type.
Definition: PduHeader.hpp:115
U32 TransactionSeq
transaction sequence number size
virtual U32 getBufferSize() const =0
PduDirection getDirection() const
Definition: PduBase.hpp:60
EntityId getDestEid() const
Definition: PduBase.hpp:76
PduHeader m_header
The PDU header (common to all PDUs)
Definition: PduBase.hpp:27
The type of a PDU header (common to all PDUs)
Definition: PduHeader.hpp:47
TransactionSeq getTransactionSeq() const
Get the transaction sequence number.
Definition: PduHeader.hpp:127
RateGroupDivider component implementation.
EntityId getSourceEid() const
Get the source entity ID.
Definition: PduHeader.hpp:124
Endianness
T
The raw enum type.
Definition: ClassEnumAc.hpp:42
PduDirection getDirection() const
Get the direction.
Definition: PduHeader.hpp:118
Cfdp::Class::T getTxmMode() const
Definition: PduBase.hpp:64
TransactionSeq getTransactionSeq() const
Definition: PduBase.hpp:72
PduBase()
Constructor.
Definition: PduBase.hpp:31
virtual ~PduBase()=default
Virtual destructor for proper cleanup.
Big endian serialization.
PduTypeEnum::T getType() const
Definition: PduBase.hpp:56
const PduHeader & getHeader() const
Definition: PduBase.hpp:80