Compare commits
1 Commits
38a39cf2ac
...
20819dd99a
Author | SHA1 | Date | |
---|---|---|---|
20819dd99a |
@ -129,7 +129,7 @@ ReturnValue_t cfdp::DestHandler::handleFileDataPdu(const PduPacketIF& info) {
|
||||
segParams.segmentMetadata = {segMetadata, segmentMetadatLen};
|
||||
destParams.user.fileSegmentRecvdIndication(segParams);
|
||||
}
|
||||
sif::printDebug("Writing %d bytes at offset %d\n", fileSegmentLen, fdInfo.getOffset().value());
|
||||
// sif::printDebug("Writing %d bytes at offset %d\n", fileSegmentLen, fdInfo.getOffset().value());
|
||||
result = destParams.user.vfs.writeToFile(transactionParams.destName.data(),
|
||||
fdInfo.getOffset().value(), fileData, fileSegmentLen);
|
||||
if (result != returnvalue::OK) {
|
||||
|
@ -49,13 +49,6 @@ struct DestHandlerParams {
|
||||
size_t maxFilenameLen = 255;
|
||||
};
|
||||
|
||||
struct PacketInfo {
|
||||
const uint8_t* rawPdu = nullptr;
|
||||
size_t pduSize = 0;
|
||||
PduType pduType = PduType::FILE_DATA;
|
||||
std::optional<FileDirective> directiveType = FileDirective::INVALID_DIRECTIVE;
|
||||
};
|
||||
|
||||
class DestHandler {
|
||||
public:
|
||||
enum class TransactionStep : uint8_t {
|
||||
|
@ -105,10 +105,14 @@ cfdp::SourceHandler::FsmResult& cfdp::SourceHandler::fsmNacked() {
|
||||
return fsmResult;
|
||||
}
|
||||
|
||||
const cfdp::SourceHandler::FsmResult& cfdp::SourceHandler::stateMachine() {
|
||||
const cfdp::SourceHandler::FsmResult& cfdp::SourceHandler::stateMachineNoPacket() {
|
||||
return stateMachine(std::nullopt);
|
||||
}
|
||||
|
||||
const cfdp::SourceHandler::FsmResult& cfdp::SourceHandler::stateMachine(
|
||||
std::optional<std::reference_wrapper<PduPacketIF>> optPduPacket) {
|
||||
fsmResult.packetsSent = 0;
|
||||
fsmResult.errors = 0;
|
||||
// fsmResult.callStatus = CallStatus::DONE;
|
||||
if (state == cfdp::CfdpState::IDLE) {
|
||||
return fsmResult;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
#include "PduPacketIF.h"
|
||||
#include "PduSenderIF.h"
|
||||
#include "UserBase.h"
|
||||
#include "defs.h"
|
||||
@ -60,7 +61,8 @@ class SourceHandler {
|
||||
* @return
|
||||
*/
|
||||
ReturnValue_t transactionStart(PutRequest& putRequest, RemoteEntityCfg& cfg);
|
||||
const FsmResult& stateMachine();
|
||||
const FsmResult& stateMachine(std::optional<std::reference_wrapper<PduPacketIF>> optPduPacket);
|
||||
const FsmResult& stateMachineNoPacket();
|
||||
|
||||
ReturnValue_t initialize();
|
||||
|
||||
|
@ -138,16 +138,16 @@ TEST_CASE("CFDP Source Handler", "[cfdp]") {
|
||||
CHECK(sourceHandler.transactionStart(putRequest, cfg) == OK);
|
||||
|
||||
size_t expectedFileSize = 0;
|
||||
const SourceHandler::FsmResult& fsmResult = sourceHandler.stateMachine();
|
||||
const SourceHandler::FsmResult& fsmResult = sourceHandler.stateMachineNoPacket();
|
||||
// Verify metadata PDU was sent.
|
||||
genericMetadataCheck(fsmResult, expectedFileSize, 0);
|
||||
|
||||
sourceHandler.stateMachine();
|
||||
sourceHandler.stateMachineNoPacket();
|
||||
// Verify EOF PDU was sent. No file data PDU is sent for an empty file and the checksum is 0.
|
||||
genericEofCheck(fsmResult, expectedFileSize, 0, 0);
|
||||
|
||||
// Verify notice of completion.
|
||||
sourceHandler.stateMachine();
|
||||
sourceHandler.stateMachineNoPacket();
|
||||
genericNoticeOfCompletionCheck(fsmResult, 0);
|
||||
}
|
||||
|
||||
@ -159,13 +159,13 @@ TEST_CASE("CFDP Source Handler", "[cfdp]") {
|
||||
fsMock.writeToFile(srcFileName.c_str(), 0, reinterpret_cast<const uint8_t*>(fileContent.data()),
|
||||
expectedFileSize);
|
||||
CHECK(sourceHandler.transactionStart(putRequest, cfg) == OK);
|
||||
const SourceHandler::FsmResult& fsmResult = sourceHandler.stateMachine();
|
||||
const SourceHandler::FsmResult& fsmResult = sourceHandler.stateMachineNoPacket();
|
||||
|
||||
// Verify metadata PDU was sent.
|
||||
genericMetadataCheck(fsmResult, expectedFileSize, expectedSeqNum);
|
||||
|
||||
// Verify that a small file data PDU was sent.
|
||||
sourceHandler.stateMachine();
|
||||
sourceHandler.stateMachineNoPacket();
|
||||
|
||||
onePduSentCheck(fsmResult);
|
||||
auto optNextPacket = pduSender.getNextSentPacket();
|
||||
@ -184,7 +184,7 @@ TEST_CASE("CFDP Source Handler", "[cfdp]") {
|
||||
std::string dataReadBack(reinterpret_cast<const char*>(fileData), fileSize);
|
||||
CHECK(dataReadBack == fileContent);
|
||||
|
||||
sourceHandler.stateMachine();
|
||||
sourceHandler.stateMachineNoPacket();
|
||||
|
||||
etl::crc32 crcCalc;
|
||||
crcCalc.add(fileContent.data(), fileContent.data() + fileContent.size());
|
||||
@ -192,7 +192,7 @@ TEST_CASE("CFDP Source Handler", "[cfdp]") {
|
||||
genericEofCheck(fsmResult, expectedFileSize, crcCalc.value(), expectedSeqNum);
|
||||
|
||||
// Verify notice of completion.
|
||||
sourceHandler.stateMachine();
|
||||
sourceHandler.stateMachineNoPacket();
|
||||
genericNoticeOfCompletionCheck(fsmResult, expectedSeqNum);
|
||||
}
|
||||
|
||||
@ -211,12 +211,12 @@ TEST_CASE("CFDP Source Handler", "[cfdp]") {
|
||||
fsMock.createFile(srcFileName.c_str());
|
||||
fsMock.writeToFile(srcFileName.c_str(), 0, largerFileData.data(), largerFileData.size());
|
||||
CHECK(sourceHandler.transactionStart(putRequest, cfg) == OK);
|
||||
const SourceHandler::FsmResult& fsmResult = sourceHandler.stateMachine();
|
||||
const SourceHandler::FsmResult& fsmResult = sourceHandler.stateMachineNoPacket();
|
||||
// Verify metadata PDU was sent.
|
||||
genericMetadataCheck(fsmResult, expectedFileSize, expectedSeqNum);
|
||||
|
||||
// Check first file data PDU. It should have the maximum file segment size.
|
||||
sourceHandler.stateMachine();
|
||||
sourceHandler.stateMachineNoPacket();
|
||||
|
||||
onePduSentCheck(fsmResult);
|
||||
auto optNextPacket = pduSender.getNextSentPacket();
|
||||
@ -240,7 +240,7 @@ TEST_CASE("CFDP Source Handler", "[cfdp]") {
|
||||
}
|
||||
|
||||
// Check second file data PDU.
|
||||
sourceHandler.stateMachine();
|
||||
sourceHandler.stateMachineNoPacket();
|
||||
{
|
||||
optNextPacket = pduSender.getNextSentPacket();
|
||||
CHECK(optNextPacket.has_value());
|
||||
@ -260,7 +260,7 @@ TEST_CASE("CFDP Source Handler", "[cfdp]") {
|
||||
}
|
||||
|
||||
// Check EOF and verify checksum.
|
||||
sourceHandler.stateMachine();
|
||||
sourceHandler.stateMachineNoPacket();
|
||||
|
||||
etl::crc32 crcCalc;
|
||||
crcCalc.add(largerFileData.data(), largerFileData.data() + largerFileData.size());
|
||||
@ -268,7 +268,7 @@ TEST_CASE("CFDP Source Handler", "[cfdp]") {
|
||||
genericEofCheck(fsmResult, expectedFileSize, crcCalc.value(), expectedSeqNum);
|
||||
|
||||
// Verify notice of completion.
|
||||
sourceHandler.stateMachine();
|
||||
sourceHandler.stateMachineNoPacket();
|
||||
genericNoticeOfCompletionCheck(fsmResult, expectedSeqNum);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user