Merge pull request #591 from F4FXL/FM_Ext

Add FM Poll network message
This commit is contained in:
Jonathan Naylor
2020-05-16 17:08:09 +01:00
committed by GitHub
2 changed files with 32 additions and 2 deletions

View File

@@ -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();
}
@@ -84,13 +87,19 @@ 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);
}
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;
@@ -105,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;
@@ -159,3 +172,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);
}

View File

@@ -54,6 +54,9 @@ private:
bool m_debug;
bool m_enabled;
CRingBuffer<unsigned char> m_buffer;
CTimer m_pollTimer;
bool writePoll();
};
#endif