diff --git a/osal/linux/TmTcUnixUdpBridge.cpp b/osal/linux/TmTcUnixUdpBridge.cpp index 02c17312..c2c0c353 100644 --- a/osal/linux/TmTcUnixUdpBridge.cpp +++ b/osal/linux/TmTcUnixUdpBridge.cpp @@ -2,8 +2,19 @@ #include TmTcUnixUdpBridge::TmTcUnixUdpBridge(object_id_t objectId, - object_id_t ccsdsPacketDistributor): + object_id_t ccsdsPacketDistributor, uint16_t serverPort, + uint16_t clientPort): TmTcBridge(objectId, ccsdsPacketDistributor) { + uint16_t setServerPort = DEFAULT_UDP_SERVER_PORT; + if(serverPort != 0xFFFF) { + setServerPort = serverPort; + } + + uint16_t setClientPort = DEFAULT_UDP_CLIENT_PORT; + if(clientPort != 0xFFFF) { + setClientPort = clientPort; + } + serverSocket = socket(AF_INET, SOCK_DGRAM, 0); if(socket < 0) { sif::error << "TmTcUnixUdpBridge::TmTcUnixUdpBridge: Could not open" @@ -14,7 +25,7 @@ TmTcUnixUdpBridge::TmTcUnixUdpBridge(object_id_t objectId, serverAddress.sin_family = AF_INET; serverAddress.sin_addr.s_addr = htonl(INADDR_ANY); - serverAddress.sin_port = htons(UDP_SERVER_PORT); + serverAddress.sin_port = htons(setServerPort); setsockopt(serverSocket, SOL_SOCKET, SO_REUSEADDR, &serverSocketOptions, sizeof(serverSocketOptions)); @@ -23,7 +34,7 @@ TmTcUnixUdpBridge::TmTcUnixUdpBridge(object_id_t objectId, sizeof(serverAddress)); if(result== -1) { sif::error << "TmTcUnixUdpBridge::TmTcUnixUdpBridge: Could not bind " - "local port " << UDP_SERVER_PORT << " to server socket!" + "local port " << setServerPort << " to server socket!" << std::endl; // check errno here. return; @@ -35,3 +46,15 @@ TmTcUnixUdpBridge::TmTcUnixUdpBridge(object_id_t objectId, TmTcUnixUdpBridge::~TmTcUnixUdpBridge() { } + +ReturnValue_t TmTcUnixUdpBridge::handleTc() { + return HasReturnvaluesIF::RETURN_OK; +} + +ReturnValue_t TmTcUnixUdpBridge::receiveTc(uint8_t **recvBuffer, size_t *size) { + return HasReturnvaluesIF::RETURN_OK; +} + +ReturnValue_t TmTcUnixUdpBridge::sendTm(const uint8_t *data, size_t dataLen) { + return HasReturnvaluesIF::RETURN_OK; +} diff --git a/osal/linux/TmTcUnixUdpBridge.h b/osal/linux/TmTcUnixUdpBridge.h index b84d9fe1..ab2e2d67 100644 --- a/osal/linux/TmTcUnixUdpBridge.h +++ b/osal/linux/TmTcUnixUdpBridge.h @@ -8,14 +8,18 @@ class TmTcUnixUdpBridge: public TmTcBridge { public: - static constexpr int UDP_SERVER_PORT = 7; - static constexpr int UDP_CLIENT_PORT = 2008; + static constexpr int DEFAULT_UDP_SERVER_PORT = 7; + static constexpr int DEFAULT_UDP_CLIENT_PORT = 2008; - TmTcUnixUdpBridge(object_id_t objectId, object_id_t ccsdsPacketDistributor); + TmTcUnixUdpBridge(object_id_t objectId, object_id_t ccsdsPacketDistributor, + uint16_t serverPort = 0xFFFF,uint16_t clientPort = 0xFFFF); virtual~ TmTcUnixUdpBridge(); protected: - + virtual ReturnValue_t handleTc() override; + virtual ReturnValue_t receiveTc(uint8_t ** recvBuffer, + size_t * size) override; + virtual ReturnValue_t sendTm(const uint8_t * data, size_t dataLen) override; private: int serverSocket = 0; const int serverSocketOptions = 0;