2021-12-03 15:37:49 +01:00
|
|
|
#ifndef FSFW_SRC_FSFW_CFDP_PDU_FILEDATAINFO_H_
|
|
|
|
#define FSFW_SRC_FSFW_CFDP_PDU_FILEDATAINFO_H_
|
|
|
|
|
|
|
|
#include <fsfw/cfdp/FileSize.h>
|
2022-02-02 10:29:30 +01:00
|
|
|
#include <fsfw/cfdp/definitions.h>
|
2021-12-03 15:37:49 +01:00
|
|
|
|
|
|
|
class FileDataInfo {
|
2022-02-02 10:29:30 +01:00
|
|
|
public:
|
2022-09-02 11:58:16 +02:00
|
|
|
explicit FileDataInfo(cfdp::FileSize& offset);
|
2022-02-02 10:29:30 +01:00
|
|
|
FileDataInfo(cfdp::FileSize& offset, const uint8_t* fileData, size_t fileSize);
|
|
|
|
|
2022-09-02 11:58:16 +02:00
|
|
|
[[nodiscard]] size_t getSerializedSize(bool largeFile = false) const;
|
2022-02-02 10:29:30 +01:00
|
|
|
|
|
|
|
cfdp::FileSize& getOffset();
|
|
|
|
const uint8_t* getFileData(size_t* fileSize = nullptr) const;
|
|
|
|
void setFileData(const uint8_t* fileData, size_t fileSize);
|
|
|
|
|
2022-09-02 11:58:16 +02:00
|
|
|
[[nodiscard]] cfdp::SegmentMetadataFlag getSegmentMetadataFlag() const;
|
|
|
|
[[nodiscard]] cfdp::SegmentationControl getSegmentationControl() const;
|
|
|
|
[[nodiscard]] cfdp::RecordContinuationState getRecordContinuationState() const;
|
2022-02-02 10:29:30 +01:00
|
|
|
void setRecordContinuationState(cfdp::RecordContinuationState recContState);
|
|
|
|
void setSegmentationControl(cfdp::SegmentationControl segCtrl);
|
|
|
|
|
2022-09-02 11:58:16 +02:00
|
|
|
[[nodiscard]] size_t getSegmentMetadataLen() const;
|
2022-02-02 10:29:30 +01:00
|
|
|
void setSegmentMetadataLen(size_t len);
|
|
|
|
void setSegmentMetadata(const uint8_t* ptr);
|
2022-09-02 11:58:16 +02:00
|
|
|
[[nodiscard]] bool hasSegmentMetadata() const;
|
2022-02-02 10:29:30 +01:00
|
|
|
void setSegmentMetadataFlag(bool enable);
|
|
|
|
ReturnValue_t addSegmentMetadataInfo(cfdp::RecordContinuationState recContState,
|
|
|
|
const uint8_t* segmentMetadata, size_t segmentMetadataLen);
|
|
|
|
const uint8_t* getSegmentMetadata(size_t* segmentMetadataLen = nullptr);
|
|
|
|
|
|
|
|
private:
|
|
|
|
cfdp::SegmentMetadataFlag segmentMetadataFlag = cfdp::SegmentMetadataFlag::NOT_PRESENT;
|
|
|
|
cfdp::SegmentationControl segCtrl = cfdp::SegmentationControl::NO_RECORD_BOUNDARIES_PRESERVATION;
|
|
|
|
cfdp::FileSize& offset;
|
|
|
|
const uint8_t* fileData = nullptr;
|
|
|
|
size_t fileSize = 0;
|
|
|
|
cfdp::RecordContinuationState recContState = cfdp::RecordContinuationState::NO_START_NO_END;
|
|
|
|
size_t segmentMetadataLen = 0;
|
|
|
|
const uint8_t* segmentMetadata = nullptr;
|
2021-12-03 15:37:49 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* FSFW_SRC_FSFW_CFDP_PDU_FILEDATAINFO_H_ */
|