Merge pull request #575 from m0vse/FM
Add enable/disable commands to RemoteCommand
This commit is contained in:
commit
5fe70ee654
6 changed files with 109 additions and 0 deletions
|
@ -1975,6 +1975,58 @@ void CMMDVMHost::remoteControl()
|
|||
if (m_nxdn != NULL)
|
||||
processModeCommand(MODE_NXDN, m_nxdnRFModeHang);
|
||||
break;
|
||||
case RCD_MODE_FM:
|
||||
if (m_fmEnabled != false)
|
||||
processModeCommand(MODE_FM, 0);
|
||||
break;
|
||||
case RCD_ENABLE_DSTAR:
|
||||
if (m_dstar != NULL && m_dstarEnabled==false)
|
||||
processEnableCommand(m_dstarEnabled, true);
|
||||
break;
|
||||
case RCD_ENABLE_DMR:
|
||||
if (m_dmr != NULL && m_dmrEnabled==false)
|
||||
processEnableCommand(m_dmrEnabled, true);
|
||||
break;
|
||||
case RCD_ENABLE_YSF:
|
||||
if (m_ysf != NULL && m_ysfEnabled==false)
|
||||
processEnableCommand(m_ysfEnabled, true);
|
||||
break;
|
||||
case RCD_ENABLE_P25:
|
||||
if (m_p25 != NULL && m_p25Enabled==false)
|
||||
processEnableCommand(m_p25Enabled, true);
|
||||
break;
|
||||
case RCD_ENABLE_NXDN:
|
||||
if (m_nxdn != NULL && m_nxdnEnabled==false)
|
||||
processEnableCommand(m_nxdnEnabled, true);
|
||||
break;
|
||||
case RCD_ENABLE_FM:
|
||||
if (m_fmEnabled==false)
|
||||
processEnableCommand(m_fmEnabled, true);
|
||||
break;
|
||||
case RCD_DISABLE_DSTAR:
|
||||
if (m_dstar != NULL && m_dstarEnabled==true)
|
||||
processEnableCommand(m_dstarEnabled, false);
|
||||
break;
|
||||
case RCD_DISABLE_DMR:
|
||||
if (m_dmr != NULL && m_dmrEnabled==true)
|
||||
processEnableCommand(m_dmrEnabled, false);
|
||||
break;
|
||||
case RCD_DISABLE_YSF:
|
||||
if (m_ysf != NULL && m_ysfEnabled==true)
|
||||
processEnableCommand(m_ysfEnabled, false);
|
||||
break;
|
||||
case RCD_DISABLE_P25:
|
||||
if (m_p25 != NULL && m_p25Enabled==true)
|
||||
processEnableCommand(m_p25Enabled, false);
|
||||
break;
|
||||
case RCD_DISABLE_NXDN:
|
||||
if (m_nxdn != NULL && m_nxdnEnabled==true)
|
||||
processEnableCommand(m_nxdnEnabled, false);
|
||||
break;
|
||||
case RCD_DISABLE_FM:
|
||||
if (m_fmEnabled == true)
|
||||
processEnableCommand(m_fmEnabled, false);
|
||||
break;
|
||||
case RCD_PAGE:
|
||||
if (m_pocsag != NULL) {
|
||||
unsigned int ric = m_remoteControl->getArgUInt(0U);
|
||||
|
@ -2008,3 +2060,12 @@ void CMMDVMHost::processModeCommand(unsigned char mode, unsigned int timeout)
|
|||
|
||||
setMode(mode);
|
||||
}
|
||||
|
||||
void CMMDVMHost::processEnableCommand(bool& mode, bool enabled)
|
||||
{
|
||||
LogDebug("Setting mode current=%s new=%s",mode ? "true" : "false",enabled ? "true" : "false");
|
||||
mode=enabled;
|
||||
m_modem->setModeParams(m_dstarEnabled, m_dmrEnabled, m_ysfEnabled, m_p25Enabled, m_nxdnEnabled, m_pocsagEnabled, m_fmEnabled);
|
||||
if (!m_modem->writeConfig())
|
||||
LogError("Cannot write Config to MMDVM");
|
||||
}
|
||||
|
|
|
@ -117,6 +117,7 @@ private:
|
|||
|
||||
void remoteControl();
|
||||
void processModeCommand(unsigned char mode, unsigned int timeout);
|
||||
void processEnableCommand(bool& mode, bool enabled);
|
||||
|
||||
void setMode(unsigned char mode);
|
||||
|
||||
|
|
|
@ -1491,6 +1491,11 @@ bool CModem::readStatus()
|
|||
return m_serial->write(buffer, 3U) == 3;
|
||||
}
|
||||
|
||||
bool CModem::writeConfig()
|
||||
{
|
||||
return setConfig();
|
||||
}
|
||||
|
||||
bool CModem::setConfig()
|
||||
{
|
||||
assert(m_serial != NULL);
|
||||
|
|
1
Modem.h
1
Modem.h
|
@ -75,6 +75,7 @@ public:
|
|||
virtual bool hasLockout() const;
|
||||
virtual bool hasError() const;
|
||||
|
||||
virtual bool writeConfig();
|
||||
virtual bool writeDStarData(const unsigned char* data, unsigned int length);
|
||||
virtual bool writeDMRData1(const unsigned char* data, unsigned int length);
|
||||
virtual bool writeDMRData2(const unsigned char* data, unsigned int length);
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
#include <cstring>
|
||||
|
||||
const unsigned int SET_MODE_ARGS = 2U;
|
||||
const unsigned int ENABLE_ARGS = 2U;
|
||||
const unsigned int DISABLE_ARGS = 2U;
|
||||
const unsigned int PAGE_ARGS = 3U;
|
||||
|
||||
const unsigned int BUFFER_LENGTH = 100U;
|
||||
|
@ -86,6 +88,32 @@ REMOTE_COMMAND CRemoteControl::getCommand()
|
|||
m_command = RCD_MODE_P25;
|
||||
else if (m_args.at(1U) == "nxdn")
|
||||
m_command = RCD_MODE_NXDN;
|
||||
} else if (m_args.at(0U) == "enable" && m_args.size() >= ENABLE_ARGS) {
|
||||
if (m_args.at(1U) == "dstar")
|
||||
m_command = RCD_ENABLE_DSTAR;
|
||||
else if (m_args.at(1U) == "dmr")
|
||||
m_command = RCD_ENABLE_DMR;
|
||||
else if (m_args.at(1U) == "ysf")
|
||||
m_command = RCD_ENABLE_YSF;
|
||||
else if (m_args.at(1U) == "p25")
|
||||
m_command = RCD_ENABLE_P25;
|
||||
else if (m_args.at(1U) == "nxdn")
|
||||
m_command = RCD_ENABLE_NXDN;
|
||||
else if (m_args.at(1U) == "fm")
|
||||
m_command = RCD_ENABLE_FM;
|
||||
} else if (m_args.at(0U) == "disable" && m_args.size() >= DISABLE_ARGS) {
|
||||
if (m_args.at(1U) == "dstar")
|
||||
m_command = RCD_DISABLE_DSTAR;
|
||||
else if (m_args.at(1U) == "dmr")
|
||||
m_command = RCD_DISABLE_DMR;
|
||||
else if (m_args.at(1U) == "ysf")
|
||||
m_command = RCD_DISABLE_YSF;
|
||||
else if (m_args.at(1U) == "p25")
|
||||
m_command = RCD_DISABLE_P25;
|
||||
else if (m_args.at(1U) == "nxdn")
|
||||
m_command = RCD_DISABLE_NXDN;
|
||||
else if (m_args.at(1U) == "fm")
|
||||
m_command = RCD_DISABLE_FM;
|
||||
} else if (m_args.at(0U) == "page" && m_args.size() >= PAGE_ARGS) {
|
||||
// Page command is in the form of "page <ric> <message>"
|
||||
m_command = RCD_PAGE;
|
||||
|
|
|
@ -33,6 +33,19 @@ enum REMOTE_COMMAND {
|
|||
RCD_MODE_YSF,
|
||||
RCD_MODE_P25,
|
||||
RCD_MODE_NXDN,
|
||||
RCD_MODE_FM,
|
||||
RCD_ENABLE_DSTAR,
|
||||
RCD_ENABLE_DMR,
|
||||
RCD_ENABLE_YSF,
|
||||
RCD_ENABLE_P25,
|
||||
RCD_ENABLE_NXDN,
|
||||
RCD_ENABLE_FM,
|
||||
RCD_DISABLE_DSTAR,
|
||||
RCD_DISABLE_DMR,
|
||||
RCD_DISABLE_YSF,
|
||||
RCD_DISABLE_P25,
|
||||
RCD_DISABLE_NXDN,
|
||||
RCD_DISABLE_FM,
|
||||
RCD_PAGE
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue