From 531d8c45e8b517d6a69cef8e7305c748e42c5dcc Mon Sep 17 00:00:00 2001 From: Ulrich Mohr Date: Mon, 10 Jul 2023 16:17:05 +0200 Subject: [PATCH] removed hardcoded ip information --- src/fsfw/action/ActionHelper.cpp | 3 ++- src/fsfw/tmtc/UdpTmTcBridge.cpp | 25 ++++++++++++++++--------- src/fsfw/tmtc/UdpTmTcBridge.h | 6 ++++-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/fsfw/action/ActionHelper.cpp b/src/fsfw/action/ActionHelper.cpp index e61bc7773..0c2b061a5 100644 --- a/src/fsfw/action/ActionHelper.cpp +++ b/src/fsfw/action/ActionHelper.cpp @@ -136,7 +136,8 @@ void ActionHelper::prepareExecution(MessageQueueId_t commandedBy, size_t offset, CommandMessage message; - TmMessage::setCommand(&message, replyStoreId, dataAddress); + ipcStore->deleteData(dataAddress); + TmMessage::setCommand(&message, replyStoreId, store_address_t()); queueToUse->sendMessage(information.reportingQueue, &message); diff --git a/src/fsfw/tmtc/UdpTmTcBridge.cpp b/src/fsfw/tmtc/UdpTmTcBridge.cpp index a7056865a..6ff5a0322 100644 --- a/src/fsfw/tmtc/UdpTmTcBridge.cpp +++ b/src/fsfw/tmtc/UdpTmTcBridge.cpp @@ -13,11 +13,15 @@ #include "FsfwProtocolHeader.h" #include "TmMessage.h" -UdpTmTcBridgeNew::UdpTmTcBridgeNew(object_id_t objectId, object_id_t tmStoreId, - object_id_t tcStoreId) - : SystemObject(objectId), defaultDestination(nullptr), defaultDestinationLen(0) { +UdpTmTcBridgeNew::UdpTmTcBridgeNew(object_id_t objectId, uint16_t listeningPort, + const sockaddr *defaultDestination_in, + socklen_t defaultDestinationLen) + : SystemObject(objectId), + listeningPort(listeningPort), + defaultDestinationLen(defaultDestinationLen) { messageQueue = QueueFactory::instance()->createMessageQueue(50, MessageQueueMessage::MAX_MESSAGE_SIZE); + memcpy(&this->defaultDestination, defaultDestination_in, defaultDestinationLen); } UdpTmTcBridgeNew::~UdpTmTcBridgeNew() {} @@ -58,7 +62,7 @@ ReturnValue_t UdpTmTcBridgeNew::initialize() { memset(&serverAddr, 0, sizeof(serverAddr)); serverAddr.sin6_family = AF_INET6; - serverAddr.sin6_port = htons(6667); + serverAddr.sin6_port = htons(listeningPort); serverAddr.sin6_addr = IN6ADDR_ANY_INIT; retval = bind(serverSocket, (struct sockaddr *)&serverAddr, sizeof(serverAddr)); @@ -131,10 +135,6 @@ void UdpTmTcBridgeNew::handleTC() { ssize_t receivedLen = recvfrom(serverSocket, applicationData, peekLen, 0, (struct sockaddr *)(bufferPointer + 1), &senderlen); - printf("type %i, port %i, senderlen %i, sizeof4 %li, sizeof6 %li\n", sender.ss_family, - ntohs(((sockaddr_in *)&sender)->sin_port), senderlen, sizeof(sockaddr_in), - sizeof(sockaddr_in6)); - if (receivedLen == -1) { return; } @@ -202,7 +202,7 @@ void UdpTmTcBridgeNew::handleTM() { size_t tcDataSize; result = IPCStore->getData(tc, &tcData, &tcDataSize); if (result != returnvalue::OK) { - receiver = defaultDestination; + receiver = (const sockaddr *)&defaultDestination; receiverLen = defaultDestinationLen; } else { if (*tcData != IP6) { @@ -218,6 +218,9 @@ void UdpTmTcBridgeNew::handleTM() { result = IPCStore->getData(tm, &tmData, &tmDataSize); if (result != returnvalue::OK) { // nothing to send + if (tc != store_address_t()) { + IPCStore->deleteData(tc); + } return; } @@ -226,4 +229,8 @@ void UdpTmTcBridgeNew::handleTM() { if (res == -1) { sif::error << "UdpTmTcBridge::handleTM: sendto failed with " << errno << std::endl; } + IPCStore->deleteData(tm); + if (tc != store_address_t()) { + IPCStore->deleteData(tc); + } } diff --git a/src/fsfw/tmtc/UdpTmTcBridge.h b/src/fsfw/tmtc/UdpTmTcBridge.h index f214fd7ac..4c5937367 100644 --- a/src/fsfw/tmtc/UdpTmTcBridge.h +++ b/src/fsfw/tmtc/UdpTmTcBridge.h @@ -14,7 +14,8 @@ class UdpTmTcBridgeNew : public SystemObject, enum PerformOperationCode { BOTH = 0, TM, TC }; static const size_t MINIMAL_LENGTH = 4 + 2; // ObjectId, interface, function - UdpTmTcBridgeNew(object_id_t objectId, object_id_t tmStoreId, object_id_t tcStoreId); + UdpTmTcBridgeNew(object_id_t objectId, uint16_t listeningPort, const sockaddr* defaultDestination, + socklen_t defaultDestinationLen); virtual ~UdpTmTcBridgeNew(); ReturnValue_t initialize() override; @@ -24,11 +25,12 @@ class UdpTmTcBridgeNew : public SystemObject, MessageQueueId_t getReportReceptionQueue() const override; private: + uint16_t listeningPort; MessageQueueIF* messageQueue; int serverSocket; StorageManagerIF* IPCStore; - const sockaddr* const defaultDestination; + sockaddr_storage defaultDestination; const socklen_t defaultDestinationLen; void handleTC();