From 8f836716b8bb744f8150da87ac06dd8e8bfe343e Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Tue, 12 Apr 2016 21:33:16 +0100 Subject: [PATCH] COnvert to handling new style YSF data from the modem. --- Modem.cpp | 5 +---- YSFControl.cpp | 18 ++++++++---------- YSFDefines.h | 2 +- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/Modem.cpp b/Modem.cpp index 13d7940..8e8ec5a 100644 --- a/Modem.cpp +++ b/Modem.cpp @@ -331,10 +331,7 @@ void CModem::clock(unsigned int ms) unsigned char data = m_length - 2U; m_rxYSFData.addData(&data, 1U); - if ((m_buffer[3U] & (YSF_CKSUM_OK | YSF_FI_MASK)) == (YSF_CKSUM_OK | YSF_DT_TERMINATOR_CHANNEL)) - data = TAG_EOT; - else - data = TAG_DATA; + data = TAG_DATA; m_rxYSFData.addData(&data, 1U); m_rxYSFData.addData(m_buffer + 3U, m_length - 3U); diff --git a/YSFControl.cpp b/YSFControl.cpp index 8f2697f..1ed252d 100644 --- a/YSFControl.cpp +++ b/YSFControl.cpp @@ -79,9 +79,13 @@ bool CYSFControl::writeModem(unsigned char *data) if (type == TAG_LOST) return false; - bool valid = (data[1U] & YSF_CKSUM_OK) == YSF_CKSUM_OK; + bool valid = m_fich.decode(data + 2U); + + if (valid && m_state == RS_RF_LISTENING) { + unsigned char fi = m_fich.getFI(); + if (fi == YSF_FI_TERMINATOR) + return false; - if (type == TAG_DATA && valid && m_state == RS_RF_LISTENING) { m_frames = 0U; m_timeoutTimer.start(); m_payload.reset(); @@ -94,12 +98,10 @@ bool CYSFControl::writeModem(unsigned char *data) if (m_state != RS_RF_AUDIO) return false; - if (type == TAG_EOT) { + unsigned char fi = m_fich.getFI(); + if (valid && fi == YSF_FI_TERMINATOR) { CSync::addYSFSync(data + 2U); - m_fich.decode(data + 2U); - - unsigned char fi = m_fich.getFI(); unsigned char fn = m_fich.getFN(); unsigned char dt = m_fich.getDT(); @@ -140,10 +142,6 @@ bool CYSFControl::writeModem(unsigned char *data) CSync::addYSFSync(data + 2U); if (valid) { - bool ret = m_fich.decode(data + 2U); - assert(ret); - - unsigned char fi = m_fich.getFI(); unsigned char cm = m_fich.getCM(); unsigned char fn = m_fich.getFN(); unsigned char dt = m_fich.getDT(); diff --git a/YSFDefines.h b/YSFDefines.h index 41414fd..ad21d78 100644 --- a/YSFDefines.h +++ b/YSFDefines.h @@ -32,7 +32,7 @@ const unsigned char YSF_DT_MASK = 0x30U; const unsigned char YSF_DT_HEADER_CHANNEL = 0x00U; const unsigned char YSF_DT_TERMINATOR_CHANNEL = 0x80U; -const unsigned char YSF_CKSUM_OK = 0x01U; +const unsigned char YSF_SYNC_OK = 0x01U; const unsigned char YSF_FI_HEADER = 0x00U; const unsigned char YSF_FI_COMMUNICATIONS = 0x40U;