diff --git a/MMDVM_HS.cpp b/MMDVM_HS.cpp index 2b556ec..cf15140 100644 --- a/MMDVM_HS.cpp +++ b/MMDVM_HS.cpp @@ -120,7 +120,7 @@ void loop() if (m_nxdnEnable && m_modemState == STATE_NXDN) nxdnTX.process(); - if (m_pocsagEnable && m_modemState == STATE_POCSAG) + if (m_pocsagEnable && (m_modemState == STATE_POCSAG || pocsagTX.busy())) pocsagTX.process(); if (m_calState == STATE_DMRCAL || m_calState == STATE_DMRDMO1K) diff --git a/MMDVM_HS.ino b/MMDVM_HS.ino index 7b1cd39..ebf4adc 100644 --- a/MMDVM_HS.ino +++ b/MMDVM_HS.ino @@ -115,7 +115,7 @@ void loop() if (m_nxdnEnable && m_modemState == STATE_NXDN) nxdnTX.process(); - if (m_pocsagEnable && m_modemState == STATE_POCSAG) + if (m_pocsagEnable && (m_modemState == STATE_POCSAG || pocsagTX.busy())) pocsagTX.process(); if (m_calState == STATE_DMRCAL || m_calState == STATE_DMRDMO1K) diff --git a/POCSAGTX.cpp b/POCSAGTX.cpp index f4bdfe3..b4dc7ab 100644 --- a/POCSAGTX.cpp +++ b/POCSAGTX.cpp @@ -70,6 +70,14 @@ void CPOCSAGTX::process() } } +bool CPOCSAGTX::busy() +{ + if (m_poLen > 0U) + return true; + else + return false; +} + uint8_t CPOCSAGTX::writeData(const uint8_t* data, uint8_t length) { if (length != POCSAG_FRAME_LENGTH_BYTES) diff --git a/POCSAGTX.h b/POCSAGTX.h index a102ce9..7391cad 100644 --- a/POCSAGTX.h +++ b/POCSAGTX.h @@ -32,6 +32,8 @@ public: void process(); + bool busy(); + private: CSerialRB m_buffer; uint8_t m_poBuffer[200U];