From 60dcacf432aa0a7b739f8fdf8bf4aaa37ac614e5 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 14 Aug 2023 20:47:27 +0200 Subject: [PATCH] further tweaks for both CFDP handlers --- src/fsfw/cfdp/handler/DestHandler.cpp | 2 +- src/fsfw/cfdp/handler/DestHandler.h | 2 +- src/fsfw/cfdp/handler/SourceHandler.cpp | 13 ++++++++++--- src/fsfw/cfdp/handler/SourceHandler.h | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/fsfw/cfdp/handler/DestHandler.cpp b/src/fsfw/cfdp/handler/DestHandler.cpp index 4814917f..953cad86 100644 --- a/src/fsfw/cfdp/handler/DestHandler.cpp +++ b/src/fsfw/cfdp/handler/DestHandler.cpp @@ -23,7 +23,7 @@ cfdp::DestHandler::DestHandler(DestHandlerParams params, FsfwParams fsfwParams) transactionParams.pduConf.direction = cfdp::Direction::TOWARDS_SENDER; } -const cfdp::DestHandler::FsmResult& cfdp::DestHandler::performStateMachine() { +const cfdp::DestHandler::FsmResult& cfdp::DestHandler::stateMachine() { ReturnValue_t result; uint8_t errorIdx = 0; fsmRes.resetOfIteration(); diff --git a/src/fsfw/cfdp/handler/DestHandler.h b/src/fsfw/cfdp/handler/DestHandler.h index c9436b35..0940ab70 100644 --- a/src/fsfw/cfdp/handler/DestHandler.h +++ b/src/fsfw/cfdp/handler/DestHandler.h @@ -92,7 +92,7 @@ class DestHandler { * - @c returnvalue::OK State machine OK for this execution cycle * - @c CALL_FSM_AGAIN State machine should be called again. */ - const FsmResult& performStateMachine(); + const FsmResult& stateMachine(); void setMsgQueue(MessageQueueIF& queue); void setEventReporter(EventReportingProxyIF& reporter); diff --git a/src/fsfw/cfdp/handler/SourceHandler.cpp b/src/fsfw/cfdp/handler/SourceHandler.cpp index 105a8f17..959dfb00 100644 --- a/src/fsfw/cfdp/handler/SourceHandler.cpp +++ b/src/fsfw/cfdp/handler/SourceHandler.cpp @@ -63,6 +63,7 @@ cfdp::SourceHandler::FsmResult& cfdp::SourceHandler::fsmNacked() { if (result != OK) { // TODO: Error handling } + fsmResult.callStatus = CallStatus::CALL_AGAIN; return fsmResult; } if (step == TransactionStep::SENDING_FILE_DATA) { @@ -72,6 +73,7 @@ cfdp::SourceHandler::FsmResult& cfdp::SourceHandler::fsmNacked() { // TODO: Error handling } if (!noFdPdu) { + fsmResult.callStatus = CallStatus::CALL_AGAIN; return fsmResult; } } @@ -85,9 +87,12 @@ cfdp::SourceHandler::FsmResult& cfdp::SourceHandler::fsmNacked() { } if (transactionParams.closureRequested) { step = TransactionStep::WAIT_FOR_FINISH; - return fsmResult; + fsmResult.callStatus = CallStatus::CALL_AFTER_DELAY; + } else { + step = TransactionStep::NOTICE_OF_COMPLETION; + fsmResult.callStatus = CallStatus::CALL_AGAIN; } - step = TransactionStep::NOTICE_OF_COMPLETION; + return fsmResult; } if (step == TransactionStep::WAIT_FOR_FINISH) { // TODO: In case this is a request with closure, wait for finish. @@ -101,9 +106,10 @@ cfdp::SourceHandler::FsmResult& cfdp::SourceHandler::fsmNacked() { return fsmResult; } -cfdp::SourceHandler::FsmResult& cfdp::SourceHandler::stateMachine() { +const cfdp::SourceHandler::FsmResult& cfdp::SourceHandler::stateMachine() { fsmResult.packetsSent = 0; fsmResult.errors = 0; + fsmResult.callStatus = CallStatus::DONE; if (state == cfdp::CfdpState::IDLE) { return fsmResult; } @@ -346,6 +352,7 @@ ReturnValue_t cfdp::SourceHandler::noticeOfCompletion() { ReturnValue_t cfdp::SourceHandler::reset() { step = TransactionStep::IDLE; state = cfdp::CfdpState::IDLE; + fsmResult.callStatus = CallStatus::DONE; transactionParams.reset(); return OK; } diff --git a/src/fsfw/cfdp/handler/SourceHandler.h b/src/fsfw/cfdp/handler/SourceHandler.h index 3aaaf789..60634e0a 100644 --- a/src/fsfw/cfdp/handler/SourceHandler.h +++ b/src/fsfw/cfdp/handler/SourceHandler.h @@ -59,7 +59,7 @@ class SourceHandler { * @return */ ReturnValue_t transactionStart(PutRequest& putRequest, RemoteEntityCfg& cfg); - FsmResult& stateMachine(); + const FsmResult& stateMachine(); ReturnValue_t initialize();