From 5932cc227b43cdbaf2c3e4d637287639609233e1 Mon Sep 17 00:00:00 2001 From: Andy CA6JAU Date: Mon, 4 Feb 2019 13:51:45 -0300 Subject: [PATCH] Fix POCSAG cal TX on/off --- MMDVM_HS.cpp | 5 +---- POCSAGTX.cpp | 16 ++++++++++++---- POCSAGTX.h | 2 +- SerialPort.cpp | 13 +++++++------ 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/MMDVM_HS.cpp b/MMDVM_HS.cpp index bdf1586..de256e8 100644 --- a/MMDVM_HS.cpp +++ b/MMDVM_HS.cpp @@ -121,11 +121,8 @@ void loop() if (m_nxdnEnable && m_modemState == STATE_NXDN) nxdnTX.process(); - if (m_pocsagEnable && (m_modemState == STATE_POCSAG || pocsagTX.busy())) { - if (m_calState == STATE_POCSAGCAL) - pocsagTX.setCal(true); + if (m_pocsagEnable && (m_modemState == STATE_POCSAG || pocsagTX.busy())) pocsagTX.process(); - } if (m_calState == STATE_DMRCAL || m_calState == STATE_DMRDMO1K || m_calState == STATE_INTCAL) calDMR.process(); diff --git a/POCSAGTX.cpp b/POCSAGTX.cpp index 4dae061..493f44e 100644 --- a/POCSAGTX.cpp +++ b/POCSAGTX.cpp @@ -87,8 +87,8 @@ bool CPOCSAGTX::busy() uint8_t CPOCSAGTX::writeData(const uint8_t* data, uint8_t length) { - //if (length != POCSAG_FRAME_LENGTH_BYTES) - //return 4U; + if (length != POCSAG_FRAME_LENGTH_BYTES) + return 4U; uint16_t space = m_buffer.getSpace(); if (space < POCSAG_FRAME_LENGTH_BYTES) @@ -128,9 +128,17 @@ uint8_t CPOCSAGTX::getSpace() const return m_buffer.getSpace() / POCSAG_FRAME_LENGTH_BYTES; } -void CPOCSAGTX::setCal(bool start) +uint8_t CPOCSAGTX::setCal(const uint8_t* data, uint8_t length) { - m_cal = start ? true : false; + if (length != 1U) + return 4U; + + m_cal = data[0U] == 1U; + + if (!m_cal) + io.ifConf(STATE_POCSAG, true); + + return 0U; } void CPOCSAGTX::createCal() diff --git a/POCSAGTX.h b/POCSAGTX.h index 88cfc9b..077556b 100644 --- a/POCSAGTX.h +++ b/POCSAGTX.h @@ -29,7 +29,7 @@ public: void setTXDelay(uint8_t delay); - void setCal(bool); + uint8_t setCal(const uint8_t* data, uint8_t length); void createCal(); diff --git a/SerialPort.cpp b/SerialPort.cpp index 6196475..a05ca72 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -294,8 +294,9 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length) m_pocsagEnable = true; m_modemState = STATE_POCSAG; m_calState = modemState; - if (m_firstCal) - io.updateCal(); + //if (m_firstCal) + // io.updateCal(); + io.ifConf(STATE_POCSAG, true); } else { m_modemState = modemState; @@ -329,7 +330,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length) io.setLoDevYSF(ysfLoDev); - if (!m_firstCal || (modemState != STATE_DMRCAL && modemState != STATE_DMRDMO1K && modemState != STATE_RSSICAL && modemState != STATE_INTCAL)) { + if (!m_firstCal || (modemState != STATE_DMRCAL && modemState != STATE_DMRDMO1K && modemState != STATE_RSSICAL && modemState != STATE_INTCAL && modemState != STATE_POCSAGCAL)) { if(m_dstarEnable) io.ifConf(STATE_DSTAR, true); else if(m_dmrEnable) @@ -391,8 +392,8 @@ uint8_t CSerialPort::setMode(const uint8_t* data, uint8_t length) m_pocsagEnable = true; tmpState = STATE_POCSAG; m_calState = modemState; - if (m_firstCal) - io.updateCal(); + //if (m_firstCal) + // io.updateCal(); } else { tmpState = modemState; @@ -606,7 +607,7 @@ void CSerialPort::process() if (m_calState == STATE_DMRCAL || m_calState == STATE_DMRDMO1K) { err = calDMR.write(m_buffer + 3U, m_len - 3U); } else if (m_calState == STATE_POCSAGCAL) { - err = pocsagTX.writeData(m_buffer + 3U, m_len - 3U); + err = pocsagTX.setCal(m_buffer + 3U, m_len - 3U); } else if (m_calState == STATE_RSSICAL || m_calState == STATE_INTCAL) { err = 0U; }