fsfw/src/fsfw/cfdp/pdu/PduHeaderIF.h

38 lines
1.5 KiB
C
Raw Normal View History

#ifndef FSFW_SRC_FSFW_CFDP_PDU_PDUHEADERIF_H_
#define FSFW_SRC_FSFW_CFDP_PDU_PDUHEADERIF_H_
#include <cstddef>
2022-02-02 10:29:30 +01:00
#include "PduConfig.h"
2022-08-09 14:39:03 +02:00
#include "fsfw/cfdp/definitions.h"
2022-02-02 10:29:30 +01:00
/**
* @brief Generic interface to access all fields of a PDU header
* @details
* See CCSDS 727.0-B-5 pp.75 for more information about these fields
*/
class PduHeaderIF {
2022-02-02 10:29:30 +01:00
public:
2022-08-03 15:22:39 +02:00
virtual ~PduHeaderIF() = default;
2022-08-03 15:22:39 +02:00
[[nodiscard]] virtual size_t getWholePduSize() const = 0;
[[nodiscard]] virtual size_t getPduDataFieldLen() const = 0;
2022-09-15 18:41:15 +02:00
[[nodiscard]] virtual cfdp::PduType getPduType() const = 0;
2022-08-03 15:22:39 +02:00
[[nodiscard]] virtual cfdp::Direction getDirection() const = 0;
2022-09-15 18:41:15 +02:00
[[nodiscard]] virtual cfdp::TransmissionMode getTransmissionMode() const = 0;
2022-08-03 15:22:39 +02:00
[[nodiscard]] virtual bool getCrcFlag() const = 0;
[[nodiscard]] virtual bool getLargeFileFlag() const = 0;
[[nodiscard]] virtual cfdp::SegmentationControl getSegmentationControl() const = 0;
[[nodiscard]] virtual cfdp::WidthInBytes getLenEntityIds() const = 0;
[[nodiscard]] virtual cfdp::WidthInBytes getLenSeqNum() const = 0;
[[nodiscard]] virtual cfdp::SegmentMetadataFlag getSegmentMetadataFlag() const = 0;
[[nodiscard]] virtual bool hasSegmentMetadataFlag() const = 0;
2022-02-02 10:29:30 +01:00
virtual void getSourceId(cfdp::EntityId& sourceId) const = 0;
virtual void getDestId(cfdp::EntityId& destId) const = 0;
virtual void getTransactionSeqNum(cfdp::TransactionSeqNum& seqNum) const = 0;
2022-02-02 10:29:30 +01:00
private:
};
#endif /* FSFW_SRC_FSFW_CFDP_PDU_PDUHEADERIF_H_ */