fsfw/src/fsfw/cfdp/tlv/FilestoreResponseTlv.h

48 lines
1.6 KiB
C++

#ifndef FSFW_SRC_FSFW_CFDP_FILESTORERESPONSETLV_H_
#define FSFW_SRC_FSFW_CFDP_FILESTORERESPONSETLV_H_
#include "Lv.h"
#include "TlvIF.h"
#include "fsfw/cfdp/tlv/FilestoreTlvBase.h"
#include "fsfw/cfdp/tlv/StringLv.h"
#include "fsfw/cfdp/tlv/Tlv.h"
class FilestoreResponseTlv : public cfdp::FilestoreTlvBase {
public:
FilestoreResponseTlv(cfdp::StringLv& firstFileName, cfdp::Lv* fsMsg);
FilestoreResponseTlv(cfdp::FilestoreActionCode actionCode, uint8_t statusCode,
cfdp::StringLv& firstFileName, cfdp::Lv* fsMsg);
[[nodiscard]] uint8_t getStatusCode() const;
void setSecondFileName(cfdp::StringLv* secondFileName);
void setFilestoreMessage(cfdp::Lv* filestoreMsg);
ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize,
Endianness streamEndianness) const override;
/**
* Deserialize a filestore response from a raw TLV object
* @param tlv
* @param endianness
* @return
*/
ReturnValue_t deSerialize(const cfdp::Tlv& tlv, Endianness endianness);
ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size,
Endianness streamEndianness) override;
[[nodiscard]] uint8_t getLengthField() const override;
[[nodiscard]] cfdp::TlvType getType() const override;
private:
uint8_t statusCode;
cfdp::StringLv* secondFileName = nullptr;
cfdp::Lv* filestoreMsg = nullptr;
ReturnValue_t deSerializeFromValue(const uint8_t** buffer, size_t* size,
Endianness streamEndianness);
};
#endif /* FSFW_SRC_FSFW_CFDP_FILESTORERESPONSETLV_H_ */