completed all indication parameters
This commit is contained in:
@ -2,14 +2,5 @@
|
||||
|
||||
#include <array>
|
||||
#include <iostream>
|
||||
void cfdp::testFunc() {
|
||||
std::vector<void*> testVec;
|
||||
testVec.reserve(10);
|
||||
std::array<uint8_t, 4> customMsg = {1, 2, 3, 4};
|
||||
MessageToUserTlv tlv0(customMsg.data(), customMsg.size());
|
||||
std::cout << testVec.size() << std::endl;
|
||||
testVec[0] = &tlv0;
|
||||
FilestoreResponseTlv tlv1();
|
||||
}
|
||||
|
||||
cfdp::UserBase::UserBase(HasFileSystemIF& vfs) : vfs(vfs) {}
|
||||
|
@ -13,8 +13,6 @@
|
||||
|
||||
namespace cfdp {
|
||||
|
||||
void testFunc();
|
||||
|
||||
struct TransactionFinishedParams {
|
||||
TransactionFinishedParams(TransactionId id, ConditionCode code, FileDeliveryStatus status,
|
||||
FileDeliveryCode delivCode)
|
||||
@ -24,18 +22,17 @@ struct TransactionFinishedParams {
|
||||
ConditionCode condCode;
|
||||
FileDeliveryStatus status;
|
||||
FileDeliveryCode deliveryCode;
|
||||
std::pair<uint8_t, FilestoreResponseTlv**> fsResponses;
|
||||
std::vector<FilestoreResponseTlv*> fsResponses;
|
||||
StatusReportIF* statusReport = nullptr;
|
||||
};
|
||||
|
||||
struct MetadataRecvParams {
|
||||
struct MetadataRecvdParams {
|
||||
TransactionId id;
|
||||
EntityId sourceId;
|
||||
size_t fileSize;
|
||||
const char* sourceFileName;
|
||||
const char* destFileName;
|
||||
std::vector<MessageToUserTlv*> msgsToUser;
|
||||
// std::pair<uint8_t, MessageToUserTlv**> msgsToUser;
|
||||
};
|
||||
|
||||
struct FileSegmentRecvdParams {
|
||||
@ -65,17 +62,15 @@ class UserBase {
|
||||
|
||||
virtual void transactionIndication(TransactionId id) = 0;
|
||||
virtual void eofSentIndication(TransactionId id) = 0;
|
||||
|
||||
virtual void abandonedIndication(TransactionId id, ConditionCode code, uint64_t progress) = 0;
|
||||
virtual void eofRecvIndication(TransactionId id) = 0;
|
||||
|
||||
// TODO: Parameters
|
||||
virtual void transactionFinishedIndication(TransactionFinishedParams params) = 0;
|
||||
virtual void metadataRecvdIndication(MetadataRecvParams params) = 0;
|
||||
virtual void metadataRecvdIndication(MetadataRecvdParams params) = 0;
|
||||
virtual void fileSegmentRecvdIndication(FileSegmentRecvdParams params) = 0;
|
||||
virtual void reportIndication() = 0;
|
||||
virtual void suspendedIndication() = 0;
|
||||
virtual void resumedIndication() = 0;
|
||||
virtual void reportIndication(TransactionId id, StatusReportIF& report) = 0;
|
||||
virtual void suspendedIndication(TransactionId id, ConditionCode code) = 0;
|
||||
virtual void resumedIndication(TransactionId id, size_t progress) = 0;
|
||||
virtual void faultIndication(TransactionId id, ConditionCode code, size_t progress) = 0;
|
||||
virtual void abandonedIndication(TransactionId id, ConditionCode code, size_t progress) = 0;
|
||||
virtual void eofRecvIndication(TransactionId id) = 0;
|
||||
|
||||
private:
|
||||
HasFileSystemIF& vfs;
|
||||
|
@ -3,10 +3,10 @@
|
||||
#include "fsfw/FSFW.h"
|
||||
|
||||
FilestoreRequestTlv::FilestoreRequestTlv(cfdp::FilestoreActionCode actionCode,
|
||||
cfdp::Lv &firstFileName)
|
||||
cfdp::StringLv &firstFileName)
|
||||
: FilestoreTlvBase(actionCode, firstFileName) {}
|
||||
|
||||
FilestoreRequestTlv::FilestoreRequestTlv(cfdp::Lv &firstFileName)
|
||||
FilestoreRequestTlv::FilestoreRequestTlv(cfdp::StringLv &firstFileName)
|
||||
: FilestoreTlvBase(cfdp::FilestoreActionCode::INVALID, firstFileName) {}
|
||||
|
||||
void FilestoreRequestTlv::setSecondFileName(cfdp::Lv *secondFileName) {
|
||||
|
@ -9,9 +9,9 @@
|
||||
|
||||
class FilestoreRequestTlv : public cfdp::FilestoreTlvBase {
|
||||
public:
|
||||
FilestoreRequestTlv(cfdp::FilestoreActionCode actionCode, cfdp::Lv &firstFileName);
|
||||
FilestoreRequestTlv(cfdp::FilestoreActionCode actionCode, cfdp::StringLv &firstFileName);
|
||||
|
||||
FilestoreRequestTlv(cfdp::Lv &firstFileName);
|
||||
explicit FilestoreRequestTlv(cfdp::StringLv &firstFileName);
|
||||
|
||||
void setSecondFileName(cfdp::Lv *secondFileName);
|
||||
|
||||
@ -29,8 +29,8 @@ class FilestoreRequestTlv : public cfdp::FilestoreTlvBase {
|
||||
ReturnValue_t deSerialize(const uint8_t **buffer, size_t *size,
|
||||
Endianness streamEndianness) override;
|
||||
|
||||
uint8_t getLengthField() const override;
|
||||
cfdp::TlvTypes getType() const override;
|
||||
[[nodiscard]] uint8_t getLengthField() const override;
|
||||
[[nodiscard]] cfdp::TlvTypes getType() const override;
|
||||
|
||||
private:
|
||||
cfdp::Lv *secondFileName = nullptr;
|
||||
|
@ -1,10 +1,10 @@
|
||||
#include "FilestoreResponseTlv.h"
|
||||
|
||||
FilestoreResponseTlv::FilestoreResponseTlv(cfdp::FilestoreActionCode actionCode, uint8_t statusCode,
|
||||
cfdp::Lv &firstFileName, cfdp::Lv *fsMsg)
|
||||
cfdp::StringLv &firstFileName, cfdp::Lv *fsMsg)
|
||||
: FilestoreTlvBase(actionCode, firstFileName), statusCode(statusCode), filestoreMsg(fsMsg) {}
|
||||
|
||||
FilestoreResponseTlv::FilestoreResponseTlv(cfdp::Lv &firstFileName, cfdp::Lv *fsMsg)
|
||||
FilestoreResponseTlv::FilestoreResponseTlv(cfdp::StringLv &firstFileName, cfdp::Lv *fsMsg)
|
||||
: FilestoreTlvBase(firstFileName), statusCode(0), filestoreMsg(fsMsg) {}
|
||||
|
||||
uint8_t FilestoreResponseTlv::getLengthField() const {
|
||||
@ -20,12 +20,12 @@ uint8_t FilestoreResponseTlv::getLengthField() const {
|
||||
return 1 + firstFileName.getSerializedSize() + optFieldsLen;
|
||||
}
|
||||
|
||||
void FilestoreResponseTlv::setSecondFileName(cfdp::Lv *secondFileName) {
|
||||
this->secondFileName = secondFileName;
|
||||
void FilestoreResponseTlv::setSecondFileName(cfdp::StringLv *secondFileName_) {
|
||||
this->secondFileName = secondFileName_;
|
||||
}
|
||||
|
||||
void FilestoreResponseTlv::setFilestoreMessage(cfdp::Lv *filestoreMsg) {
|
||||
this->filestoreMsg = filestoreMsg;
|
||||
void FilestoreResponseTlv::setFilestoreMessage(cfdp::Lv *filestoreMsg_) {
|
||||
this->filestoreMsg = filestoreMsg_;
|
||||
}
|
||||
|
||||
ReturnValue_t FilestoreResponseTlv::serialize(uint8_t **buffer, size_t *size, size_t maxSize,
|
||||
|
@ -4,17 +4,18 @@
|
||||
#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::Lv& firstFileName, cfdp::Lv* fsMsg);
|
||||
FilestoreResponseTlv(cfdp::StringLv& firstFileName, cfdp::Lv* fsMsg);
|
||||
|
||||
FilestoreResponseTlv(cfdp::FilestoreActionCode actionCode, uint8_t statusCode,
|
||||
cfdp::Lv& firstFileName, cfdp::Lv* fsMsg);
|
||||
cfdp::StringLv& firstFileName, cfdp::Lv* fsMsg);
|
||||
|
||||
uint8_t getStatusCode() const;
|
||||
void setSecondFileName(cfdp::Lv* secondFileName);
|
||||
[[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,
|
||||
@ -31,12 +32,12 @@ class FilestoreResponseTlv : public cfdp::FilestoreTlvBase {
|
||||
ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size,
|
||||
Endianness streamEndianness) override;
|
||||
|
||||
uint8_t getLengthField() const override;
|
||||
cfdp::TlvTypes getType() const override;
|
||||
[[nodiscard]] uint8_t getLengthField() const override;
|
||||
[[nodiscard]] cfdp::TlvTypes getType() const override;
|
||||
|
||||
private:
|
||||
uint8_t statusCode;
|
||||
cfdp::Lv* secondFileName = nullptr;
|
||||
cfdp::StringLv* secondFileName = nullptr;
|
||||
cfdp::Lv* filestoreMsg = nullptr;
|
||||
|
||||
ReturnValue_t deSerializeFromValue(const uint8_t** buffer, size_t* size,
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
#include "StringLv.h"
|
||||
#include "fsfw/FSFW.h"
|
||||
|
||||
namespace cfdp {
|
||||
@ -65,8 +66,8 @@ static constexpr uint8_t FSR_DENY_DIR_NOT_ALLOWED = 0b0010;
|
||||
|
||||
class FilestoreTlvBase : public TlvIF {
|
||||
public:
|
||||
FilestoreTlvBase(cfdp::Lv& firstFileName) : firstFileName(firstFileName){};
|
||||
FilestoreTlvBase(FilestoreActionCode actionCode, cfdp::Lv& firstFileName)
|
||||
explicit FilestoreTlvBase(cfdp::StringLv& firstFileName) : firstFileName(firstFileName){};
|
||||
FilestoreTlvBase(FilestoreActionCode actionCode, cfdp::StringLv& firstFileName)
|
||||
: actionCode(actionCode), firstFileName(firstFileName){};
|
||||
|
||||
ReturnValue_t commonSerialize(uint8_t** buffer, size_t* size, size_t maxSize,
|
||||
@ -101,7 +102,7 @@ class FilestoreTlvBase : public TlvIF {
|
||||
if (*size < 3) {
|
||||
return SerializeIF::STREAM_TOO_SHORT;
|
||||
}
|
||||
cfdp::TlvTypes type = static_cast<cfdp::TlvTypes>(**buffer);
|
||||
auto type = static_cast<cfdp::TlvTypes>(**buffer);
|
||||
if (type != getType()) {
|
||||
return cfdp::INVALID_TLV_TYPE;
|
||||
}
|
||||
@ -117,7 +118,7 @@ class FilestoreTlvBase : public TlvIF {
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
bool requiresSecondFileName() const {
|
||||
[[nodiscard]] bool requiresSecondFileName() const {
|
||||
using namespace cfdp;
|
||||
if (actionCode == FilestoreActionCode::RENAME_FILE or
|
||||
actionCode == FilestoreActionCode::APPEND_FILE or
|
||||
@ -141,9 +142,9 @@ class FilestoreTlvBase : public TlvIF {
|
||||
#endif
|
||||
}
|
||||
|
||||
FilestoreActionCode getActionCode() const { return actionCode; }
|
||||
[[nodiscard]] FilestoreActionCode getActionCode() const { return actionCode; }
|
||||
|
||||
void setActionCode(FilestoreActionCode actionCode) { this->actionCode = actionCode; }
|
||||
void setActionCode(FilestoreActionCode actionCode_) { this->actionCode = actionCode_; }
|
||||
|
||||
cfdp::Lv& getFirstFileName() { return firstFileName; }
|
||||
|
||||
@ -160,11 +161,11 @@ class FilestoreTlvBase : public TlvIF {
|
||||
return result;
|
||||
}
|
||||
|
||||
size_t getSerializedSize() const override { return getLengthField() + 2; }
|
||||
[[nodiscard]] size_t getSerializedSize() const override { return getLengthField() + 2; }
|
||||
|
||||
protected:
|
||||
FilestoreActionCode actionCode = FilestoreActionCode::INVALID;
|
||||
cfdp::Lv& firstFileName;
|
||||
cfdp::StringLv& firstFileName;
|
||||
};
|
||||
|
||||
} // namespace cfdp
|
||||
|
@ -5,3 +5,5 @@ cfdp::StringLv::StringLv(const std::string& fileName)
|
||||
|
||||
cfdp::StringLv::StringLv(const char* filename, size_t len)
|
||||
: Lv(reinterpret_cast<const uint8_t*>(filename), len) {}
|
||||
|
||||
cfdp::StringLv::StringLv() : Lv() {}
|
||||
|
@ -9,6 +9,7 @@ namespace cfdp {
|
||||
|
||||
class StringLv : public Lv {
|
||||
public:
|
||||
StringLv();
|
||||
explicit StringLv(const std::string& fileName);
|
||||
explicit StringLv(const char* filename, size_t len);
|
||||
};
|
||||
|
Reference in New Issue
Block a user