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

48 lines
1.6 KiB
C
Raw Normal View History

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