diff --git a/FMControl.cpp b/FMControl.cpp index f4a0f27..18d90c5 100644 --- a/FMControl.cpp +++ b/FMControl.cpp @@ -45,7 +45,7 @@ bool CFMControl::writeModem(const unsigned char* data, unsigned int length) return true; if (data[0U] == TAG_EOT) - return m_network->write(data, 1U); + return m_network->writeEOT(); if (data[0U] != TAG_DATA) return false; @@ -55,7 +55,7 @@ bool CFMControl::writeModem(const unsigned char* data, unsigned int length) m_incomingRFAudio.addData(data + 1U, length - 1U); unsigned int bufferLength = m_incomingRFAudio.dataSize(); - if(bufferLength > 255U) + if (bufferLength > 255U) bufferLength = 255U; if (bufferLength >= 3U) { @@ -100,7 +100,7 @@ bool CFMControl::writeModem(const unsigned char* data, unsigned int length) out[nOut++] = (sample >> 0) & 0xFFU; } - return m_network->write((unsigned char*)out, nOut); + return m_network->writeData((unsigned char*)out, nOut); } return true; diff --git a/FMNetwork.cpp b/FMNetwork.cpp index cfe6105..4e3df87 100644 --- a/FMNetwork.cpp +++ b/FMNetwork.cpp @@ -55,7 +55,7 @@ bool CFMNetwork::open() return m_socket.open(); } -bool CFMNetwork::write(const unsigned char* data, unsigned int length) +bool CFMNetwork::writeData(const unsigned char* data, unsigned int length) { assert(data != NULL); @@ -74,6 +74,21 @@ bool CFMNetwork::write(const unsigned char* data, unsigned int length) return m_socket.write(buffer, length + 3U, m_address, m_port); } +bool CFMNetwork::writeEOT() +{ + unsigned char buffer[10U]; + ::memset(buffer, 0x00U, 10U); + + buffer[0U] = 'F'; + buffer[1U] = 'M'; + buffer[2U] = 'E'; + + if (m_debug) + CUtils::dump(1U, "FM Network Data Sent", buffer, 3U); + + return m_socket.write(buffer, 3U, m_address, m_port); +} + void CFMNetwork::clock(unsigned int ms) { unsigned char buffer[BUFFER_LENGTH]; diff --git a/FMNetwork.h b/FMNetwork.h index e4c01ae..fba36d2 100644 --- a/FMNetwork.h +++ b/FMNetwork.h @@ -35,7 +35,9 @@ public: void enable(bool enabled); - bool write(const unsigned char* data, unsigned int length); + bool writeData(const unsigned char* data, unsigned int length); + + bool writeEOT(); unsigned int read(unsigned char* data, unsigned int space);