From b5316907ad1f02947fd1d68c21eec6c2337b8be8 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Fri, 15 May 2020 20:19:57 +0200 Subject: [PATCH] Handle FM EOT --- FMControl.cpp | 3 +++ Modem.cpp | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/FMControl.cpp b/FMControl.cpp index 0041797..f4a0f27 100644 --- a/FMControl.cpp +++ b/FMControl.cpp @@ -44,6 +44,9 @@ bool CFMControl::writeModem(const unsigned char* data, unsigned int length) if (data[0U] == TAG_HEADER) return true; + if (data[0U] == TAG_EOT) + return m_network->write(data, 1U); + if (data[0U] != TAG_DATA) return false; diff --git a/Modem.cpp b/Modem.cpp index b73f54c..4d5aaab 100644 --- a/Modem.cpp +++ b/Modem.cpp @@ -82,6 +82,7 @@ const unsigned char MMDVM_FM_PARAMS3 = 0x62U; const unsigned char MMDVM_FM_PARAMS4 = 0x63U; const unsigned char MMDVM_FM_DATA = 0x65U; const unsigned char MMDVM_FM_CONTROL = 0x66U; +const unsigned char MMDVM_FM_EOT = 0x67U; const unsigned char MMDVM_ACK = 0x70U; const unsigned char MMDVM_NAK = 0x7FU; @@ -632,6 +633,19 @@ void CModem::clock(unsigned int ms) } break; + case MMDVM_FM_EOT: { + if(m_trace) + CUtils::dump(1U, "RX FM End of transmission", m_buffer, m_length); + + unsigned char data = m_length - 2U; + m_rxFMData.addData(&data, 1U); + + data = TAG_EOT; + m_rxFMData.addData(&data, 1U); + + m_rxFMData.addData(m_buffer + 3U, m_length - 3U); + } + case MMDVM_GET_STATUS: { // if (m_trace) // CUtils::dump(1U, "GET_STATUS", m_buffer, m_length);