fsfw/src/fsfw/cfdp/pdu/MetadataInfo.cpp

99 lines
2.9 KiB
C++
Raw Normal View History

#include "MetadataInfo.h"
MetadataInfo::MetadataInfo(bool closureRequested, cfdp::ChecksumType checksumType,
2022-02-02 10:29:30 +01:00
cfdp::FileSize& fileSize, cfdp::Lv& sourceFileName,
cfdp::Lv& destFileName)
: closureRequested(closureRequested),
checksumType(checksumType),
fileSize(fileSize),
sourceFileName(sourceFileName),
destFileName(destFileName) {}
2022-08-08 17:53:42 +02:00
void MetadataInfo::setOptionsArray(cfdp::Tlv** optionsArray_, const size_t* optionsLen_,
const size_t* maxOptionsLen_) {
this->optionsArray = optionsArray_;
if (maxOptionsLen_ != nullptr) {
this->maxOptionsLen = *maxOptionsLen_;
2022-02-02 10:29:30 +01:00
}
2022-08-08 17:53:42 +02:00
if (optionsLen_ != nullptr) {
this->optionsLen = *optionsLen_;
2022-02-02 10:29:30 +01:00
}
}
2022-02-02 10:29:30 +01:00
cfdp::ChecksumType MetadataInfo::getChecksumType() const { return checksumType; }
2022-08-08 17:53:42 +02:00
void MetadataInfo::setChecksumType(cfdp::ChecksumType checksumType_) {
checksumType = checksumType_;
}
2022-02-02 10:29:30 +01:00
bool MetadataInfo::isClosureRequested() const { return closureRequested; }
2022-08-08 17:53:42 +02:00
void MetadataInfo::setClosureRequested(bool closureRequested_) {
closureRequested = closureRequested_;
}
2022-02-02 10:29:30 +01:00
cfdp::Lv& MetadataInfo::getDestFileName() { return destFileName; }
2022-02-02 10:29:30 +01:00
cfdp::FileSize& MetadataInfo::getFileSize() { return fileSize; }
2022-08-08 17:53:42 +02:00
ReturnValue_t MetadataInfo::getOptions(cfdp::Tlv*** optionsArray_, size_t* optionsLen_,
2022-02-02 10:29:30 +01:00
size_t* maxOptsLen) {
2022-08-08 17:53:42 +02:00
if (optionsArray_ == nullptr or optionsArray == nullptr) {
2022-08-16 01:08:26 +02:00
return returnvalue::FAILED;
2022-02-02 10:29:30 +01:00
}
2022-08-08 17:53:42 +02:00
*optionsArray_ = optionsArray;
if (optionsLen_ != nullptr) {
*optionsLen_ = this->optionsLen;
2022-02-02 10:29:30 +01:00
}
if (maxOptsLen != nullptr) {
*maxOptsLen = this->maxOptionsLen;
}
2022-08-16 01:08:26 +02:00
return returnvalue::OK;
}
bool MetadataInfo::hasOptions() const {
2022-02-02 10:29:30 +01:00
if (optionsArray != nullptr and optionsLen > 0) {
return true;
}
return false;
}
bool MetadataInfo::canHoldOptions() const {
2022-02-02 10:29:30 +01:00
if (optionsArray != nullptr and maxOptionsLen > 0) {
return true;
}
return false;
}
size_t MetadataInfo::getSerializedSize(bool fssLarge) {
2022-02-02 10:29:30 +01:00
// 1 byte + minimal FSS 4 bytes
size_t size = 5;
if (fssLarge) {
size += 4;
}
size += sourceFileName.getSerializedSize();
size += destFileName.getSerializedSize();
if (hasOptions()) {
for (size_t idx = 0; idx < optionsLen; idx++) {
size += optionsArray[idx]->getSerializedSize();
}
2022-02-02 10:29:30 +01:00
}
return size;
}
2022-08-08 17:53:42 +02:00
void MetadataInfo::setDestFileName(cfdp::Lv& destFileName_) { this->destFileName = destFileName_; }
2022-08-08 17:53:42 +02:00
void MetadataInfo::setSourceFileName(cfdp::Lv& sourceFileName_) {
this->sourceFileName = sourceFileName_;
}
2022-02-02 10:29:30 +01:00
size_t MetadataInfo::getMaxOptionsLen() const { return maxOptionsLen; }
2022-08-08 17:53:42 +02:00
void MetadataInfo::setMaxOptionsLen(size_t maxOptionsLen_) { this->maxOptionsLen = maxOptionsLen_; }
2022-02-02 10:29:30 +01:00
size_t MetadataInfo::getOptionsLen() const { return optionsLen; }
2022-08-08 17:53:42 +02:00
void MetadataInfo::setOptionsLen(size_t optionsLen_) { this->optionsLen = optionsLen_; }
2022-02-02 10:29:30 +01:00
cfdp::Lv& MetadataInfo::getSourceFileName() { return sourceFileName; }