From 734af9453ca53aaf22565876003388357f4e3871 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Sat, 16 May 2020 17:16:05 +0200 Subject: [PATCH 1/3] Fix message for FM EOT --- FMNetwork.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FMNetwork.cpp b/FMNetwork.cpp index 4e3df87..57095c5 100644 --- a/FMNetwork.cpp +++ b/FMNetwork.cpp @@ -84,7 +84,7 @@ bool CFMNetwork::writeEOT() buffer[2U] = 'E'; if (m_debug) - CUtils::dump(1U, "FM Network Data Sent", buffer, 3U); + CUtils::dump(1U, "FM Network End of Transmission Sent", buffer, 3U); return m_socket.write(buffer, 3U, m_address, m_port); } From 23e92af6faa7430dc8afe8e60153c9c9d26c5d00 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Sat, 16 May 2020 17:40:42 +0200 Subject: [PATCH 2/3] Add Poll message --- FMNetwork.cpp | 25 ++++++++++++++++++++++++- FMNetwork.h | 3 +++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/FMNetwork.cpp b/FMNetwork.cpp index 57095c5..10078b5 100644 --- a/FMNetwork.cpp +++ b/FMNetwork.cpp @@ -33,7 +33,8 @@ m_address(), m_port(gatewayPort), m_debug(debug), m_enabled(false), -m_buffer(2000U, "FM Network") +m_buffer(2000U, "FM Network"), +m_pollTimer(1000U, 5U) { assert(gatewayPort > 0U); assert(!gatewayAddress.empty()); @@ -52,6 +53,8 @@ bool CFMNetwork::open() if (m_address.s_addr == INADDR_NONE) return false; + m_pollTimer.start(); + return m_socket.open(); } @@ -91,6 +94,12 @@ bool CFMNetwork::writeEOT() void CFMNetwork::clock(unsigned int ms) { + m_pollTimer.clock(ms); + if (m_pollTimer.hasExpired()) { + writePoll(); + m_pollTimer.start(); + } + unsigned char buffer[BUFFER_LENGTH]; in_addr address; @@ -159,3 +168,17 @@ void CFMNetwork::enable(bool enabled) m_enabled = enabled; } + +bool CFMNetwork::writePoll() +{ + unsigned char buffer[3U]; + + buffer[0U] = 'F'; + buffer[1U] = 'M'; + buffer[2U] = 'P'; + + if (m_debug) + CUtils::dump(1U, "FM Network Poll Sent", buffer, 3U); + + return m_socket.write(buffer, 3U, m_address, m_port); +} diff --git a/FMNetwork.h b/FMNetwork.h index fba36d2..453e776 100644 --- a/FMNetwork.h +++ b/FMNetwork.h @@ -54,6 +54,9 @@ private: bool m_debug; bool m_enabled; CRingBuffer m_buffer; + CTimer m_pollTimer; + + bool writePoll(); }; #endif From 578ef5a3d41021cacf937c5366077a9cf15ee872 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Sat, 16 May 2020 17:45:24 +0200 Subject: [PATCH 3/3] Handle poll message --- FMNetwork.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/FMNetwork.cpp b/FMNetwork.cpp index 10078b5..67d0f2e 100644 --- a/FMNetwork.cpp +++ b/FMNetwork.cpp @@ -114,6 +114,10 @@ void CFMNetwork::clock(unsigned int ms) return; } + // Ignore incoming polls + if (::memcmp(buffer, "FMP", 3U) == 0) + return; + // Invalid packet type? if (::memcmp(buffer, "FMD", 3U) != 0) return;