diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index dee5d063..ae8a13c0 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -2639,9 +2639,21 @@ void CMMDVMHost::remoteControl() text += m_remoteControl->getArgString(i); } m_pocsag->sendPage(ric, text); - m_pocsag->sendBCDPage(ric, "01234"); } break; + case RCD_PAGE_BCD: + if (m_pocsag != NULL) { + unsigned int ric = m_remoteControl->getArgUInt(0U); + std::string text; + for (unsigned int i = 1U; i < m_remoteControl->getArgCount(); i++) { + if (i > 1U) + text += " "; + text += m_remoteControl->getArgString(i); + } + m_pocsag->sendPageBCD(ric, text); + } + break; + case RCD_CW: setMode(MODE_IDLE); // Force the modem to go idle so that we can send the CW text. if (!m_modem->hasTX()) { diff --git a/POCSAGControl.cpp b/POCSAGControl.cpp index 09e72301..830b5442 100644 --- a/POCSAGControl.cpp +++ b/POCSAGControl.cpp @@ -124,7 +124,7 @@ void CPOCSAGControl::sendPage(unsigned int ric, const std::string& text) } -void CPOCSAGControl::sendBCDPage(unsigned int ric, const std::string& text) +void CPOCSAGControl::sendPageBCD(unsigned int ric, const std::string& text) { if (!m_enabled) return; diff --git a/POCSAGControl.h b/POCSAGControl.h index c082f20c..d6c428de 100644 --- a/POCSAGControl.h +++ b/POCSAGControl.h @@ -43,7 +43,7 @@ class CPOCSAGControl { ~CPOCSAGControl(); void sendPage(unsigned int ric, const std::string& text); - void sendBCDPage(unsigned int ric, const std::string& text); + void sendPageBCD(unsigned int ric, const std::string& text); unsigned int readModem(unsigned char* data); diff --git a/RemoteControl.cpp b/RemoteControl.cpp index c67bd29f..a99546e8 100644 --- a/RemoteControl.cpp +++ b/RemoteControl.cpp @@ -137,6 +137,9 @@ REMOTE_COMMAND CRemoteControl::getCommand() } else if (m_args.at(0U) == "page" && m_args.size() >= PAGE_ARGS) { // Page command is in the form of "page " m_command = RCD_PAGE; + } else if (m_args.at(0U) == "page_bcd" && m_args.size() >= PAGE_ARGS) { + // BCD page command is in the form of "page_bcd " + m_command = RCD_PAGE_BCD; } else if (m_args.at(0U) == "cw" && m_args.size() >= CW_ARGS) { // CW command is in the form of "cw " m_command = RCD_CW; @@ -192,6 +195,7 @@ unsigned int CRemoteControl::getArgCount() const case RCD_MODE_M17: return m_args.size() - SET_MODE_ARGS; case RCD_PAGE: + case RCD_PAGE_BCD: return m_args.size() - 1U; case RCD_CW: return m_args.size() - 1U; @@ -214,6 +218,7 @@ std::string CRemoteControl::getArgString(unsigned int n) const n += SET_MODE_ARGS; break; case RCD_PAGE: + case RCD_PAGE_BCD: n += 1U; break; case RCD_CW: diff --git a/RemoteControl.h b/RemoteControl.h index 5f2610c0..3142d57f 100644 --- a/RemoteControl.h +++ b/RemoteControl.h @@ -54,6 +54,7 @@ enum REMOTE_COMMAND { RCD_DISABLE_FM, RCD_DISABLE_AX25, RCD_PAGE, + RCD_PAGE_BCD, RCD_CW, RCD_RELOAD, RCD_CONNECTION_STATUS,