From 23e92af6faa7430dc8afe8e60153c9c9d26c5d00 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Sat, 16 May 2020 17:40:42 +0200 Subject: [PATCH] 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