completed all indication parameters

This commit is contained in:
2022-08-10 10:34:02 +02:00
parent e45a99143c
commit 3e1fd15613
15 changed files with 64 additions and 73 deletions

View File

@ -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) {}

View File

@ -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;

View File

@ -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) {

View File

@ -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;

View File

@ -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,

View File

@ -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,

View File

@ -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

View File

@ -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() {}

View File

@ -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);
};