Merge pull request #575 from m0vse/FM
Add enable/disable commands to RemoteCommand
This commit is contained in:
commit
5fe70ee654
|
@ -1975,6 +1975,58 @@ void CMMDVMHost::remoteControl()
|
||||||
if (m_nxdn != NULL)
|
if (m_nxdn != NULL)
|
||||||
processModeCommand(MODE_NXDN, m_nxdnRFModeHang);
|
processModeCommand(MODE_NXDN, m_nxdnRFModeHang);
|
||||||
break;
|
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:
|
case RCD_PAGE:
|
||||||
if (m_pocsag != NULL) {
|
if (m_pocsag != NULL) {
|
||||||
unsigned int ric = m_remoteControl->getArgUInt(0U);
|
unsigned int ric = m_remoteControl->getArgUInt(0U);
|
||||||
|
@ -2008,3 +2060,12 @@ void CMMDVMHost::processModeCommand(unsigned char mode, unsigned int timeout)
|
||||||
|
|
||||||
setMode(mode);
|
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 remoteControl();
|
||||||
void processModeCommand(unsigned char mode, unsigned int timeout);
|
void processModeCommand(unsigned char mode, unsigned int timeout);
|
||||||
|
void processEnableCommand(bool& mode, bool enabled);
|
||||||
|
|
||||||
void setMode(unsigned char mode);
|
void setMode(unsigned char mode);
|
||||||
|
|
||||||
|
|
|
@ -1491,6 +1491,11 @@ bool CModem::readStatus()
|
||||||
return m_serial->write(buffer, 3U) == 3;
|
return m_serial->write(buffer, 3U) == 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CModem::writeConfig()
|
||||||
|
{
|
||||||
|
return setConfig();
|
||||||
|
}
|
||||||
|
|
||||||
bool CModem::setConfig()
|
bool CModem::setConfig()
|
||||||
{
|
{
|
||||||
assert(m_serial != NULL);
|
assert(m_serial != NULL);
|
||||||
|
|
1
Modem.h
1
Modem.h
|
@ -75,6 +75,7 @@ public:
|
||||||
virtual bool hasLockout() const;
|
virtual bool hasLockout() const;
|
||||||
virtual bool hasError() const;
|
virtual bool hasError() const;
|
||||||
|
|
||||||
|
virtual bool writeConfig();
|
||||||
virtual bool writeDStarData(const unsigned char* data, unsigned int length);
|
virtual bool writeDStarData(const unsigned char* data, unsigned int length);
|
||||||
virtual bool writeDMRData1(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);
|
virtual bool writeDMRData2(const unsigned char* data, unsigned int length);
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
const unsigned int SET_MODE_ARGS = 2U;
|
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 PAGE_ARGS = 3U;
|
||||||
|
|
||||||
const unsigned int BUFFER_LENGTH = 100U;
|
const unsigned int BUFFER_LENGTH = 100U;
|
||||||
|
@ -86,6 +88,32 @@ REMOTE_COMMAND CRemoteControl::getCommand()
|
||||||
m_command = RCD_MODE_P25;
|
m_command = RCD_MODE_P25;
|
||||||
else if (m_args.at(1U) == "nxdn")
|
else if (m_args.at(1U) == "nxdn")
|
||||||
m_command = RCD_MODE_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) {
|
} else if (m_args.at(0U) == "page" && m_args.size() >= PAGE_ARGS) {
|
||||||
// Page command is in the form of "page <ric> <message>"
|
// Page command is in the form of "page <ric> <message>"
|
||||||
m_command = RCD_PAGE;
|
m_command = RCD_PAGE;
|
||||||
|
|
|
@ -33,6 +33,19 @@ enum REMOTE_COMMAND {
|
||||||
RCD_MODE_YSF,
|
RCD_MODE_YSF,
|
||||||
RCD_MODE_P25,
|
RCD_MODE_P25,
|
||||||
RCD_MODE_NXDN,
|
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
|
RCD_PAGE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue