fsfw/src/fsfw/cfdp/pdu/NakInfo.cpp

71 lines
2.0 KiB
C++

#include "NakInfo.h"
NakInfo::NakInfo(cfdp::FileSize startOfScope, cfdp::FileSize endOfScope)
: startOfScope(startOfScope), endOfScope(endOfScope) {}
size_t NakInfo::getSerializedSize(bool fssLarge) {
size_t size = 8;
if (fssLarge) {
size += 8;
}
if (hasSegmentRequests()) {
if (fssLarge) {
size += segmentRequestsLen * 16;
} else {
size += segmentRequestsLen * 8;
}
}
return size;
}
bool NakInfo::hasSegmentRequests() const {
if (this->segmentRequests != nullptr and segmentRequestsLen > 0) {
return true;
}
return false;
}
bool NakInfo::canHoldSegmentRequests() const {
if (segmentRequests != nullptr and maxSegmentRequestsLen > 0) {
return true;
}
return false;
}
bool NakInfo::getSegmentRequests(SegmentRequest** segmentRequestPtr, size_t* segmentRequestLen,
size_t* maxSegmentRequestsLen) {
if (this->segmentRequests != nullptr) {
*segmentRequestPtr = this->segmentRequests;
}
if (segmentRequestLen != nullptr) {
*segmentRequestLen = this->segmentRequestsLen;
}
if (maxSegmentRequestsLen != nullptr) {
*maxSegmentRequestsLen = this->maxSegmentRequestsLen;
}
return true;
}
void NakInfo::setSegmentRequests(SegmentRequest* segmentRequests, size_t* segmentRequestLen,
size_t* maxSegmentRequestLen) {
this->segmentRequests = segmentRequests;
if (segmentRequestLen != nullptr) {
this->segmentRequestsLen = *segmentRequestLen;
}
if (maxSegmentRequestLen != nullptr) {
this->maxSegmentRequestsLen = *maxSegmentRequestLen;
}
}
cfdp::FileSize& NakInfo::getStartOfScope() { return startOfScope; }
cfdp::FileSize& NakInfo::getEndOfScope() { return endOfScope; }
size_t NakInfo::getSegmentRequestsLen() const { return segmentRequestsLen; }
size_t NakInfo::getSegmentRequestsMaxLen() const { return maxSegmentRequestsLen; }
void NakInfo::setSegmentRequestLen(size_t readLen) { this->segmentRequestsLen = readLen; }
void NakInfo::setMaxSegmentRequestLen(size_t maxSize) { this->maxSegmentRequestsLen = maxSize; }