diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index 11f32315..dee5d063 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -2639,6 +2639,7 @@ void CMMDVMHost::remoteControl() text += m_remoteControl->getArgString(i); } m_pocsag->sendPage(ric, text); + m_pocsag->sendBCDPage(ric, "01234"); } break; case RCD_CW: diff --git a/POCSAGControl.cpp b/POCSAGControl.cpp index ca34a551..09e72301 100644 --- a/POCSAGControl.cpp +++ b/POCSAGControl.cpp @@ -123,6 +123,31 @@ void CPOCSAGControl::sendPage(unsigned int ric, const std::string& text) m_data.push_back(output); } + +void CPOCSAGControl::sendBCDPage(unsigned int ric, const std::string& text) +{ + if (!m_enabled) + return; + + POCSAGData* output = new POCSAGData; + + output->m_ric = ric; + output->m_text = text; + + addAddress(FUNCTIONAL_NUMERIC, ric, output->m_buffer); + + LogDebug("Local message to %07u, func NUMERIC: \"%s\"", ric, text.c_str()); + + packNumeric(text, output->m_buffer); + + // Ensure data is an even number of words + if ((output->m_buffer.size() % 2U) == 1U) + output->m_buffer.push_back(POCSAG_IDLE_WORD); + + m_data.push_back(output); +} + + bool CPOCSAGControl::readNetwork() { if (m_network == NULL) diff --git a/POCSAGControl.h b/POCSAGControl.h index 1f2a81b0..c082f20c 100644 --- a/POCSAGControl.h +++ b/POCSAGControl.h @@ -43,6 +43,7 @@ class CPOCSAGControl { ~CPOCSAGControl(); void sendPage(unsigned int ric, const std::string& text); + void sendBCDPage(unsigned int ric, const std::string& text); unsigned int readModem(unsigned char* data);