From 6c9c4ee047b061bd48f8a5c184b41ffb5875e103 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 19 Jul 2023 14:06:15 +0200 Subject: [PATCH] add EOF impl --- src/fsfw/cfdp/handler/SourceHandler.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/fsfw/cfdp/handler/SourceHandler.cpp b/src/fsfw/cfdp/handler/SourceHandler.cpp index affdf9f0..74333a69 100644 --- a/src/fsfw/cfdp/handler/SourceHandler.cpp +++ b/src/fsfw/cfdp/handler/SourceHandler.cpp @@ -158,7 +158,10 @@ ReturnValue_t cfdp::SourceHandler::prepareAndSendMetadataPdu() { cfdp::StringLv destName(transactionParams.destName.data(), transactionParams.destNameSize); auto metadataInfo = MetadataInfo(transactionParams.fileSize, sourceName, destName); auto metadataPdu = MetadataPduCreator(transactionParams.pduConf, metadataInfo); - sendGenericPdu(metadataPdu); + ReturnValue_t result = sendGenericPdu(metadataPdu); + if (result != OK) { + return result; + } // Advance FSM if everything works step = TransactionStep::SENDING_FILE_DATA; return OK; @@ -190,7 +193,10 @@ ReturnValue_t cfdp::SourceHandler::prepareAndSendNextFileDataPdu() { } auto fileDataInfo = FileDataInfo(offset, fileBuf.data(), readLen); auto fileDataPdu = FileDataCreator(transactionParams.pduConf, fileDataInfo); - sendGenericPdu(fileDataPdu); + result = sendGenericPdu(fileDataPdu); + if (result != OK) { + return result; + } transactionParams.progress += readLen; if (transactionParams.progress >= fileSize) { // Advance FSM after all file data PDUs were sent. @@ -200,8 +206,13 @@ ReturnValue_t cfdp::SourceHandler::prepareAndSendNextFileDataPdu() { } ReturnValue_t cfdp::SourceHandler::prepareAndSendEofPdu() { - // TODO: Implement - auto eofInfo = EofInfo(); + // TODO: Checksum + auto eofInfo = EofInfo(ConditionCode::NO_ERROR, 0, transactionParams.fileSize); + auto eofPdu = EofPduCreator(transactionParams.pduConf, eofInfo); + ReturnValue_t result = sendGenericPdu(eofPdu); + if (result != OK) { + return result; + } step = TransactionStep::WAIT_FOR_FINISH; return OK; }