diff --git a/src/fsfw/cfdp/handler/DestHandler.h b/src/fsfw/cfdp/handler/DestHandler.h index 4a19c6ca..80ec2dd2 100644 --- a/src/fsfw/cfdp/handler/DestHandler.h +++ b/src/fsfw/cfdp/handler/DestHandler.h @@ -17,9 +17,7 @@ #include "fsfw/cfdp/pdu/MetadataPduReader.h" #include "fsfw/cfdp/pdu/PduConfig.h" #include "fsfw/cfdp/tlv/MessageToUserTlv.h" -#include "fsfw/container/DynamicFIFO.h" #include "fsfw/storagemanager/StorageManagerIF.h" -#include "fsfw/storagemanager/storeAddress.h" #include "fsfw/tmtcservices/AcceptsTelemetryIF.h" namespace cfdp { @@ -30,7 +28,6 @@ using LostSegmentsListBase = etl::iset>; struct DestHandlerParams { DestHandlerParams(LocalEntityCfg cfg, UserBase& user, RemoteConfigTableIF& remoteCfgTable, - // PacketInfoListBase& packetList, // TODO: This container can potentially take tons of space. For a better // memory efficient implementation, an additional abstraction could be // be used so users can use uint32_t as the pair type @@ -41,14 +38,12 @@ struct DestHandlerParams { : cfg(std::move(cfg)), user(user), remoteCfgTable(remoteCfgTable), - // packetListRef(packetList), lostSegmentsContainer(lostSegmentsContainer) {} LocalEntityCfg cfg; UserBase& user; RemoteConfigTableIF& remoteCfgTable; - // PacketInfoListBase& packetListRef; LostSegmentsListBase& lostSegmentsContainer; uint8_t maxTlvsInOnePdu = 20; size_t maxFilenameLen = 255; diff --git a/src/fsfw/cfdp/handler/ReservedMessageParser.cpp b/src/fsfw/cfdp/handler/ReservedMessageParser.cpp index ffd2fdc6..9bc40f78 100644 --- a/src/fsfw/cfdp/handler/ReservedMessageParser.cpp +++ b/src/fsfw/cfdp/handler/ReservedMessageParser.cpp @@ -14,7 +14,7 @@ cfdp::ReservedMessageParser::ReservedMessageParser(StorageManagerIF& ipcStore, : msgQueue(msgQueue), ipcStore(ipcStore), userDestination(userDestination) {} ReturnValue_t cfdp::ReservedMessageParser::parse(const MessageToUserTlv* msgsToUserArray, - size_t numMsgToUser) { + size_t numMsgToUser) const { ReturnValue_t result = returnvalue::OK; cfdp::StringLv sourceFileName; cfdp::StringLv destFileName; @@ -23,31 +23,28 @@ ReturnValue_t cfdp::ReservedMessageParser::parse(const MessageToUserTlv* msgsToU size_t deserSize = 0; bool needToSendPutRequest = false; for (size_t idx = 0; idx < numMsgToUser; idx++) { - if (&msgsToUserArray[idx] == nullptr) { + uint8_t messageType = 0; + if (not msgsToUserArray[idx].isReservedCfdpMessage(messageType, ¤tPtr, deserSize)) { continue; } - uint8_t messageType = 0; - if (msgsToUserArray[idx].isReservedCfdpMessage(messageType, ¤tPtr, deserSize)) { - if (messageType == static_cast(ProxyOpMessageType::PUT_REQUEST)) { - EntityId entityIdLv; - result = entityIdLv.deSerializeFromLv(¤tPtr, &deserSize); - if (result != returnvalue::OK) { - return result; - } - putRequest.setDestId(entityIdLv); - result = - sourceFileName.deSerialize(¤tPtr, &deserSize, SerializeIF::Endianness::NETWORK); - if (result != OK) { - return result; - } - result = - destFileName.deSerialize(¤tPtr, &deserSize, SerializeIF::Endianness::NETWORK); - if (result != OK) { - return result; - } - putRequest.setSourceAndDestName(sourceFileName, destFileName); - needToSendPutRequest = true; + if (messageType == static_cast(ProxyOpMessageType::PUT_REQUEST)) { + EntityId entityIdLv; + result = entityIdLv.deSerializeFromLv(¤tPtr, &deserSize); + if (result != returnvalue::OK) { + return result; } + putRequest.setDestId(entityIdLv); + result = + sourceFileName.deSerialize(¤tPtr, &deserSize, SerializeIF::Endianness::NETWORK); + if (result != OK) { + return result; + } + result = destFileName.deSerialize(¤tPtr, &deserSize, SerializeIF::Endianness::NETWORK); + if (result != OK) { + return result; + } + putRequest.setSourceAndDestName(sourceFileName, destFileName); + needToSendPutRequest = true; } } if (needToSendPutRequest) { @@ -71,4 +68,4 @@ ReturnValue_t cfdp::ReservedMessageParser::parse(const MessageToUserTlv* msgsToU } } return OK; -} +} \ No newline at end of file diff --git a/src/fsfw/cfdp/handler/ReservedMessageParser.h b/src/fsfw/cfdp/handler/ReservedMessageParser.h index 2b5c89b2..45d87c09 100644 --- a/src/fsfw/cfdp/handler/ReservedMessageParser.h +++ b/src/fsfw/cfdp/handler/ReservedMessageParser.h @@ -16,7 +16,7 @@ class ReservedMessageParser { ReservedMessageParser(StorageManagerIF& ipcStore, MessageQueueIF& msgQueue, MessageQueueId_t userDestination); - ReturnValue_t parse(const MessageToUserTlv* msgsToUserArray, size_t numMsgsToUser); + ReturnValue_t parse(const MessageToUserTlv* msgsToUserArray, size_t numMsgsToUser) const; private: MessageQueueIF& msgQueue; diff --git a/src/fsfw/cfdp/handler/defs.h b/src/fsfw/cfdp/handler/defs.h index 257ce8b2..6a668602 100644 --- a/src/fsfw/cfdp/handler/defs.h +++ b/src/fsfw/cfdp/handler/defs.h @@ -1,5 +1,4 @@ -#ifndef FSFW_CFDP_HANDLER_DEFS_H -#define FSFW_CFDP_HANDLER_DEFS_H +#pragma once #include @@ -8,43 +7,18 @@ #include "fsfw/tmtcservices/AcceptsTelemetryIF.h" namespace cfdp { - enum class CfdpState { IDLE, BUSY_CLASS_1_NACKED, BUSY_CLASS_2_ACKED, SUSPENDED }; static constexpr uint8_t SSID = SUBSYSTEM_ID::CFDP; static constexpr uint8_t CID = CLASS_ID::CFDP_HANDLER; -/* -struct PacketInfo { - PacketInfo(PduType type, store_address_t storeId, - std::optional directive = std::nullopt) - : pduType(type), directiveType(directive), storeId(storeId) {} - - PduType pduType = PduType::FILE_DATA; - std::optional directiveType = FileDirective::INVALID_DIRECTIVE; - store_address_t storeId = store_address_t::invalid(); - PacketInfo() = default; -}; -*/ - struct FsfwParams { FsfwParams(EventReportingProxyIF* eventReporter) : eventReporter(eventReporter) {} - // AcceptsTelemetryIF& packetDest; - // uint8_t virtualChannelId; - // MessageQueueIF* msgQueue; + EventReportingProxyIF* eventReporter = nullptr; - // StorageManagerIF* tcStore = nullptr; - // StorageManagerIF* tmStore = nullptr; }; -// template -// using PacketInfoList = etl::list; -// using PacketInfoListBase = etl::ilist; - -// enum class CallStatus { DONE, CALL_AFTER_DELAY, CALL_AGAIN }; - namespace events { - static constexpr Event PDU_SEND_ERROR = event::makeEvent(SSID, 1, severity::LOW); static constexpr Event SERIALIZATION_ERROR = event::makeEvent(SSID, 2, severity::LOW); static constexpr Event FILESTORE_ERROR = event::makeEvent(SSID, 3, severity::LOW); @@ -52,7 +26,6 @@ static constexpr Event FILESTORE_ERROR = event::makeEvent(SSID, 3, severity::LOW static constexpr Event FILENAME_TOO_LARGE_ERROR = event::makeEvent(SSID, 4, severity::LOW); //! [EXPORT] : [COMMENT] CFDP request handling failed. P2: Returncode. static constexpr Event HANDLING_CFDP_REQUEST_FAILED = event::makeEvent(SSID, 5, severity::LOW); - } // namespace events static constexpr ReturnValue_t SOURCE_TRANSACTION_PENDING = returnvalue::makeCode(CID, 0); @@ -65,6 +38,4 @@ static constexpr ReturnValue_t TARGET_MSG_QUEUE_FULL = returnvalue::makeCode(CID static constexpr ReturnValue_t TM_STORE_FULL = returnvalue::makeCode(CID, 7); static constexpr ReturnValue_t DEST_NON_METADATA_PDU_AS_FIRST_PDU = returnvalue::makeCode(CID, 8); static constexpr ReturnValue_t PDU_BUFFER_TOO_SMALL = returnvalue::makeCode(CID, 9); - -} // namespace cfdp -#endif // FSFW_CFDP_HANDLER_DEFS_H +} // namespace cfdp \ No newline at end of file diff --git a/unittests/cfdp/handler/testDestHandler.cpp b/unittests/cfdp/handler/testDestHandler.cpp index e94531ce..c7ae5225 100644 --- a/unittests/cfdp/handler/testDestHandler.cpp +++ b/unittests/cfdp/handler/testDestHandler.cpp @@ -192,8 +192,7 @@ TEST_CASE("CFDP Dest Handler", "[cfdp]") { std::vector idsToCheck; { Fss offset(0); - FileDataInfo fdPduInfo(offset, (largerFileData.data()), - largerFileData.size() / 2); + FileDataInfo fdPduInfo(offset, (largerFileData.data()), largerFileData.size() / 2); FileDataCreator fdPduCreator(conf, fdPduInfo); REQUIRE(fdPduCreator.serialize(pduBuf.data(), serLen, fdPduCreator.getSerializedSize()) == OK); @@ -204,8 +203,7 @@ TEST_CASE("CFDP Dest Handler", "[cfdp]") { { Fss offset(512); - FileDataInfo fdPduInfo(offset, largerFileData.data() + 512, - largerFileData.size() / 2); + FileDataInfo fdPduInfo(offset, largerFileData.data() + 512, largerFileData.size() / 2); FileDataCreator fdPduCreator(conf, fdPduInfo); REQUIRE(fdPduCreator.serialize(pduBuf.data(), serLen, fdPduCreator.getSerializedSize()) == OK);