diff --git a/src/fsfw/tmtc/CMakeLists.txt b/src/fsfw/tmtc/CMakeLists.txt index 20c9c075a..781a74b70 100644 --- a/src/fsfw/tmtc/CMakeLists.txt +++ b/src/fsfw/tmtc/CMakeLists.txt @@ -3,5 +3,5 @@ target_sources( FsfwProtocolHeader.cpp TmManager.cpp TmMessage.cpp - #UdpTmTcBridge.cpp + UdpTmTcBridge.cpp ) \ No newline at end of file diff --git a/src/fsfw/tmtc/UdpTmTcBridge.cpp b/src/fsfw/tmtc/UdpTmTcBridge.cpp index 66e2c3962..e9791a9fb 100644 --- a/src/fsfw/tmtc/UdpTmTcBridge.cpp +++ b/src/fsfw/tmtc/UdpTmTcBridge.cpp @@ -1,6 +1,8 @@ #include "UdpTmTcBridge.h" +extern "C" { #include +} #include #include #include @@ -48,7 +50,7 @@ ReturnValue_t UdpTmTcBridgeNew::initialize() { int retval; - serverSocket = socket(AF_INET6, SOCK_DGRAM | SOCK_NONBLOCK, 0); + serverSocket = socket(AF_INET6, SOCK_DGRAM, 0); if (serverSocket == -1) { // TODO resolve errno #if FSFW_CPP_OSTREAM_ENABLED == 1 @@ -57,6 +59,11 @@ ReturnValue_t UdpTmTcBridgeNew::initialize() { return returnvalue::FAILED; } + //TODO verify that lwip interprets this correctly + int flags = fcntl(serverSocket, F_GETFL, 0); + flags |= O_NONBLOCK; + fcntl(serverSocket, F_SETFL, flags); + sockaddr_in6 serverAddr; memset(&serverAddr, 0, sizeof(serverAddr)); @@ -144,6 +151,7 @@ void UdpTmTcBridgeNew::handleTC() { return; } + size_t bufferLen = receivedLen; const uint8_t *constApplicationData = applicationData; diff --git a/src/fsfw/tmtc/UdpTmTcBridge.h b/src/fsfw/tmtc/UdpTmTcBridge.h index 4c5937367..6fc1befd8 100644 --- a/src/fsfw/tmtc/UdpTmTcBridge.h +++ b/src/fsfw/tmtc/UdpTmTcBridge.h @@ -5,7 +5,9 @@ #include #include #include -#include +#include + + class UdpTmTcBridgeNew : public SystemObject, public ExecutableObjectIF,