Add conditional compilation to the common classes for all of the modes.

This commit is contained in:
Jonathan Naylor 2023-06-30 16:40:54 +01:00
parent 72152cc82b
commit ebc539b205
12 changed files with 1123 additions and 40 deletions

View file

@ -442,20 +442,24 @@ const unsigned int PRNG_TABLE[] = {
0xECDB0FU, 0xB542DAU, 0x9E5131U, 0xC7ABA5U, 0x8C38FEU, 0x97010BU, 0xDED290U, 0xA4CC7DU, 0xAD3D2EU, 0xF6B6B3U,
0xF9A540U, 0x205ED9U, 0x634EB6U, 0x5A9567U, 0x11A6D8U, 0x0B3F09U};
#if defined(USE_DMR) || defined(USE_YSF) || defined(USE_NXDN)
const unsigned int DMR_A_TABLE[] = { 0U, 4U, 8U, 12U, 16U, 20U, 24U, 28U, 32U, 36U, 40U, 44U,
48U, 52U, 56U, 60U, 64U, 68U, 1U, 5U, 9U, 13U, 17U, 21U};
const unsigned int DMR_B_TABLE[] = {25U, 29U, 33U, 37U, 41U, 45U, 49U, 53U, 57U, 61U, 65U, 69U,
2U, 6U, 10U, 14U, 18U, 22U, 26U, 30U, 34U, 38U, 42U};
const unsigned int DMR_C_TABLE[] = {46U, 50U, 54U, 58U, 62U, 66U, 70U, 3U, 7U, 11U, 15U, 19U,
23U, 27U, 31U, 35U, 39U, 43U, 47U, 51U, 55U, 59U, 63U, 67U, 71U};
#endif
#if defined(USE_DSTAR)
const unsigned int DSTAR_A_TABLE[] = {0U, 6U, 12U, 18U, 24U, 30U, 36U, 42U, 48U, 54U, 60U, 66U,
1U, 7U, 13U, 19U, 25U, 31U, 37U, 43U, 49U, 55U, 61U, 67U};
const unsigned int DSTAR_B_TABLE[] = {2U, 8U, 14U, 20U, 26U, 32U, 38U, 44U, 50U, 56U, 62U, 68U,
3U, 9U, 15U, 21U, 27U, 33U, 39U, 45U, 51U, 57U, 63U, 69U};
const unsigned int DSTAR_C_TABLE[] = {4U, 10U, 16U, 22U, 28U, 34U, 40U, 46U, 52U, 58U, 64U, 70U,
5U, 11U, 17U, 23U, 29U, 35U, 41U, 47U, 53U, 59U, 65U, 71U};
#endif
#if defined(USE_YSF) || defined(USE_P25)
const unsigned int IMBE_INTERLEAVE[] = {
0, 7, 12, 19, 24, 31, 36, 43, 48, 55, 60, 67, 72, 79, 84, 91, 96, 103, 108, 115, 120, 127, 132, 139,
1, 6, 13, 18, 25, 30, 37, 42, 49, 54, 61, 66, 73, 78, 85, 90, 97, 102, 109, 114, 121, 126, 133, 138,
@ -464,6 +468,7 @@ const unsigned int IMBE_INTERLEAVE[] = {
4, 11, 16, 23, 28, 35, 40, 47, 52, 59, 64, 71, 76, 83, 88, 95, 100, 107, 112, 119, 124, 131, 136, 143,
5, 10, 17, 22, 29, 34, 41, 46, 53, 58, 65, 70, 77, 82, 89, 94, 101, 106, 113, 118, 125, 130, 137, 142
};
#endif
CAMBEFEC::CAMBEFEC()
{
@ -473,6 +478,7 @@ CAMBEFEC::~CAMBEFEC()
{
}
#if defined(USE_DMR) || defined(USE_YSF) || defined(USE_NXDN)
unsigned int CAMBEFEC::regenerateDMR(unsigned char* bytes) const
{
assert(bytes != NULL);
@ -573,6 +579,7 @@ unsigned int CAMBEFEC::regenerateDMR(unsigned char* bytes) const
return errors;
}
#endif
#if defined(USE_DSTAR)
unsigned int CAMBEFEC::regenerateDStar(unsigned char* bytes) const
@ -608,6 +615,7 @@ unsigned int CAMBEFEC::regenerateDStar(unsigned char* bytes) const
}
#endif
#if defined(USE_YSF)
unsigned int CAMBEFEC::regenerateYSFDN(unsigned char* bytes) const
{
assert(bytes != NULL);
@ -658,7 +666,9 @@ unsigned int CAMBEFEC::regenerateYSFDN(unsigned char* bytes) const
return errors;
}
#endif
#if defined(USE_YSF) || defined(USE_P25)
unsigned int CAMBEFEC::regenerateIMBE(unsigned char* bytes) const
{
assert(bytes != NULL);
@ -792,6 +802,7 @@ unsigned int CAMBEFEC::regenerateIMBE(unsigned char* bytes) const
return errors;
}
#endif
#if defined(USE_DSTAR)
unsigned int CAMBEFEC::regenerateDStar(unsigned int& a, unsigned int& b) const
@ -829,6 +840,7 @@ unsigned int CAMBEFEC::regenerateDStar(unsigned int& a, unsigned int& b) const
}
#endif
#if defined(USE_DMR) || defined(USE_YSF) || defined(USE_NXDN)
unsigned int CAMBEFEC::regenerateDMR(unsigned int& a, unsigned int& b, unsigned int& c) const
{
unsigned int orig_a = a;
@ -870,3 +882,5 @@ unsigned int CAMBEFEC::regenerateDMR(unsigned int& a, unsigned int& b, unsigned
return errsA + errsB;
}
#endif

View file

@ -26,20 +26,29 @@ public:
CAMBEFEC();
~CAMBEFEC();
#if defined(USE_DMR) || defined(USE_YSF) || defined(USE_NXDN)
unsigned int regenerateDMR(unsigned char* bytes) const;
#endif
#if defined(USE_DSTAR)
unsigned int regenerateDStar(unsigned char* bytes) const;
#endif
unsigned int regenerateYSFDN(unsigned char* bytes) const;
#if defined(USE_YSF)
unsigned int regenerateYSFDN(unsigned char* bytes) const;
#endif
#if defined(USE_YSF) || defined(USE_P25)
unsigned int regenerateIMBE(unsigned char* bytes) const;
#endif
private:
#if defined(USE_DSTAR)
unsigned int regenerateDStar(unsigned int& a, unsigned int& b) const;
#endif
#if defined(USE_DMR) || defined(USE_YSF) || defined(USE_NXDN)
unsigned int regenerateDMR(unsigned int& a, unsigned int& b,unsigned int& c) const;
#endif
};
#endif

132
Conf.cpp
View file

@ -34,17 +34,29 @@ enum SECTION {
SECTION_LOG,
SECTION_MQTT,
SECTION_CWID,
#if defined(USE_DMR) || defined(USE_P25)
SECTION_DMRID_LOOKUP,
#endif
#if defined(USE_NXDN)
SECTION_NXDNID_LOOKUP,
#endif
SECTION_MODEM,
SECTION_TRANSPARENT,
#if defined(USE_DSTAR)
SECTION_DSTAR,
#endif
#if defined(USE_DMR)
SECTION_DMR,
#endif
#if defined(USE_YSF)
SECTION_FUSION,
#endif
#if defined(USE_P25)
SECTION_P25,
#endif
#if defined(USE_NXDN)
SECTION_NXDN,
#endif
#if defined(USE_M17)
SECTION_M17,
#endif
@ -60,10 +72,18 @@ enum SECTION {
#if defined(USE_DSTAR)
SECTION_DSTAR_NETWORK,
#endif
#if defined(USE_DMR)
SECTION_DMR_NETWORK,
#endif
#if defined(USE_YSF)
SECTION_FUSION_NETWORK,
#endif
#if defined(USE_P25)
SECTION_P25_NETWORK,
#endif
#if defined(USE_NXDN)
SECTION_NXDN_NETWORK,
#endif
#if defined(USE_M17)
SECTION_M17_NETWORK,
#endif
@ -105,10 +125,14 @@ m_mqttName("mmdvm"),
m_cwIdEnabled(false),
m_cwIdTime(10U),
m_cwIdCallsign(),
#if defined(USE_DMR) || defined(USE_P25)
m_dmrIdLookupFile(),
m_dmrIdLookupTime(0U),
#endif
#if defined(USE_NXDN)
m_nxdnIdLookupFile(),
m_nxdnIdLookupTime(0U),
#endif
m_modemProtocol("uart"),
m_modemUARTPort(),
m_modemUARTSpeed(115200U),
@ -122,7 +146,9 @@ m_modemRXInvert(false),
m_modemTXInvert(false),
m_modemPTTInvert(false),
m_modemTXDelay(100U),
#if defined(USE_DMR)
m_modemDMRDelay(0U),
#endif
m_modemTXOffset(0),
m_modemRXOffset(0),
m_modemRXDCOffset(0),
@ -161,6 +187,7 @@ m_dstarErrorReply(true),
m_dstarRemoteGateway(false),
#endif
m_dstarModeHang(10U),
#if defined(USE_DMR)
m_dmrEnabled(false),
m_dmrBeacons(DMR_BEACONS_OFF),
m_dmrBeaconInterval(60U),
@ -177,14 +204,20 @@ m_dmrSlot1TGWhiteList(),
m_dmrSlot2TGWhiteList(),
m_dmrCallHang(10U),
m_dmrTXHang(4U),
#endif
m_dmrModeHang(10U),
#if defined(USE_DMR)
m_dmrOVCM(DMR_OVCM_OFF),
#endif
#if defined(USE_YSF)
m_fusionEnabled(false),
m_fusionLowDeviation(false),
m_fusionRemoteGateway(false),
m_fusionSelfOnly(false),
m_fusionTXHang(4U),
#endif
m_fusionModeHang(10U),
#if defined(USE_P25)
m_p25Enabled(false),
m_p25Id(0U),
m_p25NAC(0x293U),
@ -192,13 +225,16 @@ m_p25SelfOnly(false),
m_p25OverrideUID(false),
m_p25RemoteGateway(false),
m_p25TXHang(5U),
#endif
m_p25ModeHang(10U),
#if defined(USE_NXDN)
m_nxdnEnabled(false),
m_nxdnId(0U),
m_nxdnRAN(1U),
m_nxdnSelfOnly(false),
m_nxdnRemoteGateway(false),
m_nxdnTXHang(5U),
#endif
m_nxdnModeHang(10U),
#if defined(USE_M17)
m_m17Enabled(false),
@ -275,6 +311,7 @@ m_dstarNetworkModeHang(3U),
#if defined(USE_DSTAR)
m_dstarNetworkDebug(false),
#endif
#if defined(USE_DMR)
m_dmrNetworkEnabled(false),
m_dmrNetworkGatewayAddress(),
m_dmrNetworkGatewayPort(0U),
@ -284,29 +321,42 @@ m_dmrNetworkDebug(false),
m_dmrNetworkJitter(360U),
m_dmrNetworkSlot1(true),
m_dmrNetworkSlot2(true),
#endif
m_dmrNetworkModeHang(3U),
#if defined(USE_YSF)
m_fusionNetworkEnabled(false),
m_fusionNetworkLocalAddress(),
m_fusionNetworkLocalPort(0U),
m_fusionNetworkGatewayAddress(),
m_fusionNetworkGatewayPort(0U),
#endif
m_fusionNetworkModeHang(3U),
#if defined(USE_YSF)
m_fusionNetworkDebug(false),
#endif
#if defined(USE_P25)
m_p25NetworkEnabled(false),
m_p25GatewayAddress(),
m_p25GatewayPort(0U),
m_p25LocalAddress(),
m_p25LocalPort(0U),
#endif
m_p25NetworkModeHang(3U),
#if defined(USE_P25)
m_p25NetworkDebug(false),
#endif
#if defined(USE_NXDN)
m_nxdnNetworkEnabled(false),
m_nxdnNetworkProtocol("Icom"),
m_nxdnGatewayAddress(),
m_nxdnGatewayPort(0U),
m_nxdnLocalAddress(),
m_nxdnLocalPort(0U),
#endif
m_nxdnNetworkModeHang(3U),
#if defined(USE_NXDN)
m_nxdnNetworkDebug(false),
#endif
#if defined(USE_M17)
m_m17NetworkEnabled(false),
m_m17GatewayAddress(),
@ -385,10 +435,14 @@ bool CConf::read()
section = SECTION_MQTT;
else if (::strncmp(buffer, "[CW Id]", 7U) == 0)
section = SECTION_CWID;
#if defined(USE_DMR) || defined(USE_P25)
else if (::strncmp(buffer, "[DMR Id Lookup]", 15U) == 0)
section = SECTION_DMRID_LOOKUP;
#endif
#if defined(USE_NXDN)
else if (::strncmp(buffer, "[NXDN Id Lookup]", 16U) == 0)
section = SECTION_NXDNID_LOOKUP;
#endif
else if (::strncmp(buffer, "[Modem]", 7U) == 0)
section = SECTION_MODEM;
else if (::strncmp(buffer, "[Transparent Data]", 18U) == 0)
@ -397,14 +451,22 @@ bool CConf::read()
else if (::strncmp(buffer, "[D-Star]", 8U) == 0)
section = SECTION_DSTAR;
#endif
#if defined(USE_DMR)
else if (::strncmp(buffer, "[DMR]", 5U) == 0)
section = SECTION_DMR;
#endif
#if defined(USE_YSF)
else if (::strncmp(buffer, "[System Fusion]", 15U) == 0)
section = SECTION_FUSION;
#endif
#if defined(USE_P25)
else if (::strncmp(buffer, "[P25]", 5U) == 0)
section = SECTION_P25;
#endif
#if defined(USE_NXDN)
else if (::strncmp(buffer, "[NXDN]", 6U) == 0)
section = SECTION_NXDN;
#endif
#if defined(USE_M17)
else if (::strncmp(buffer, "[M17]", 5U) == 0)
section = SECTION_M17;
@ -425,14 +487,22 @@ bool CConf::read()
else if (::strncmp(buffer, "[D-Star Network]", 16U) == 0)
section = SECTION_DSTAR_NETWORK;
#endif
#if defined(USE_DMR)
else if (::strncmp(buffer, "[DMR Network]", 13U) == 0)
section = SECTION_DMR_NETWORK;
#endif
#if defined(USE_YSF)
else if (::strncmp(buffer, "[System Fusion Network]", 23U) == 0)
section = SECTION_FUSION_NETWORK;
#endif
#if defined(USE_P25)
else if (::strncmp(buffer, "[P25 Network]", 13U) == 0)
section = SECTION_P25_NETWORK;
#endif
#if defined(USE_NXDN)
else if (::strncmp(buffer, "[NXDN Network]", 14U) == 0)
section = SECTION_NXDN_NETWORK;
#endif
#if defined(USE_M17)
else if (::strncmp(buffer, "[M17 Network]", 13U) == 0)
section = SECTION_M17_NETWORK;
@ -549,16 +619,20 @@ bool CConf::read()
value[i] = ::toupper(value[i]);
m_cwIdCallsign = value;
}
#if defined(USE_DMR) || defined(USE_P25)
} else if (section == SECTION_DMRID_LOOKUP) {
if (::strcmp(key, "File") == 0)
m_dmrIdLookupFile = value;
else if (::strcmp(key, "Time") == 0)
m_dmrIdLookupTime = (unsigned int)::atoi(value);
#endif
#if defined(USE_NXDN)
} else if (section == SECTION_NXDNID_LOOKUP) {
if (::strcmp(key, "File") == 0)
m_nxdnIdLookupFile = value;
else if (::strcmp(key, "Time") == 0)
m_nxdnIdLookupTime = (unsigned int)::atoi(value);
#endif
} else if (section == SECTION_MODEM) {
if (::strcmp(key, "Protocol") == 0)
m_modemProtocol = value;
@ -586,8 +660,10 @@ bool CConf::read()
m_modemPTTInvert = ::atoi(value) == 1;
else if (::strcmp(key, "TXDelay") == 0)
m_ax25TXDelay = m_modemTXDelay = (unsigned int)::atoi(value);
#if defined(USE_DMR)
else if (::strcmp(key, "DMRDelay") == 0)
m_modemDMRDelay = (unsigned int)::atoi(value);
#endif
else if (::strcmp(key, "RXOffset") == 0)
m_modemRXOffset = ::atoi(value);
else if (::strcmp(key, "TXOffset") == 0)
@ -604,16 +680,26 @@ bool CConf::read()
m_modemAX25TXLevel = m_modemFMTXLevel = m_modemCWIdTXLevel = m_modemDStarTXLevel = m_modemDMRTXLevel = m_modemYSFTXLevel = m_modemP25TXLevel = m_modemNXDNTXLevel = m_modemM17TXLevel = m_modemPOCSAGTXLevel = float(::atof(value));
else if (::strcmp(key, "CWIdTXLevel") == 0)
m_modemCWIdTXLevel = float(::atof(value));
#if defined(USE_DSTAR)
else if (::strcmp(key, "D-StarTXLevel") == 0)
m_modemDStarTXLevel = float(::atof(value));
#endif
#if defined(USE_DMR)
else if (::strcmp(key, "DMRTXLevel") == 0)
m_modemDMRTXLevel = float(::atof(value));
#endif
#if defined(USE_YSF)
else if (::strcmp(key, "YSFTXLevel") == 0)
m_modemYSFTXLevel = float(::atof(value));
#endif
#if defined(USE_P25)
else if (::strcmp(key, "P25TXLevel") == 0)
m_modemP25TXLevel = float(::atof(value));
#endif
#if defined(USE_NXDN)
else if (::strcmp(key, "NXDNTXLevel") == 0)
m_modemNXDNTXLevel = float(::atof(value));
#endif
#if defined(USE_M17)
else if (::strcmp(key, "M17TXLevel") == 0)
m_modemM17TXLevel = float(::atof(value));
@ -699,6 +785,7 @@ bool CConf::read()
else if (::strcmp(key, "ModeHang") == 0)
m_dstarModeHang = (unsigned int)::atoi(value);
#endif
#if defined(USE_DMR)
} else if (section == SECTION_DMR) {
if (::strcmp(key, "Enable") == 0)
m_dmrEnabled = ::atoi(value) == 1;
@ -784,6 +871,8 @@ bool CConf::read()
break;
}
}
#endif
#if defined(USE_YSF)
} else if (section == SECTION_FUSION) {
if (::strcmp(key, "Enable") == 0)
m_fusionEnabled = ::atoi(value) == 1;
@ -797,6 +886,8 @@ bool CConf::read()
m_fusionTXHang = (unsigned int)::atoi(value);
else if (::strcmp(key, "ModeHang") == 0)
m_fusionModeHang = (unsigned int)::atoi(value);
#endif
#if defined(USE_P25)
} else if (section == SECTION_P25) {
if (::strcmp(key, "Enable") == 0)
m_p25Enabled = ::atoi(value) == 1;
@ -814,6 +905,8 @@ bool CConf::read()
m_p25TXHang = (unsigned int)::atoi(value);
else if (::strcmp(key, "ModeHang") == 0)
m_p25ModeHang = (unsigned int)::atoi(value);
#endif
#if defined(USE_NXDN)
} else if (section == SECTION_NXDN) {
if (::strcmp(key, "Enable") == 0)
m_nxdnEnabled = ::atoi(value) == 1;
@ -829,6 +922,7 @@ bool CConf::read()
m_nxdnTXHang = (unsigned int)::atoi(value);
else if (::strcmp(key, "ModeHang") == 0)
m_nxdnModeHang = (unsigned int)::atoi(value);
#endif
#if defined(USE_M17)
} else if (section == SECTION_M17) {
if (::strcmp(key, "Enable") == 0)
@ -971,6 +1065,7 @@ bool CConf::read()
else if (::strcmp(key, "Debug") == 0)
m_dstarNetworkDebug = ::atoi(value) == 1;
#endif
#if defined(USE_DMR)
} else if (section == SECTION_DMR_NETWORK) {
if (::strcmp(key, "Enable") == 0)
m_dmrNetworkEnabled = ::atoi(value) == 1;
@ -992,6 +1087,8 @@ bool CConf::read()
m_dmrNetworkSlot2 = ::atoi(value) == 1;
else if (::strcmp(key, "ModeHang") == 0)
m_dmrNetworkModeHang = (unsigned int)::atoi(value);
#endif
#if defined(USE_YSF)
} else if (section == SECTION_FUSION_NETWORK) {
if (::strcmp(key, "Enable") == 0)
m_fusionNetworkEnabled = ::atoi(value) == 1;
@ -1007,6 +1104,8 @@ bool CConf::read()
m_fusionNetworkModeHang = (unsigned int)::atoi(value);
else if (::strcmp(key, "Debug") == 0)
m_fusionNetworkDebug = ::atoi(value) == 1;
#endif
#if defined(USE_P25)
} else if (section == SECTION_P25_NETWORK) {
if (::strcmp(key, "Enable") == 0)
m_p25NetworkEnabled = ::atoi(value) == 1;
@ -1022,6 +1121,8 @@ bool CConf::read()
m_p25NetworkModeHang = (unsigned int)::atoi(value);
else if (::strcmp(key, "Debug") == 0)
m_p25NetworkDebug = ::atoi(value) == 1;
#endif
#if defined(USE_NXDN)
} else if (section == SECTION_NXDN_NETWORK) {
if (::strcmp(key, "Enable") == 0)
m_nxdnNetworkEnabled = ::atoi(value) == 1;
@ -1037,6 +1138,7 @@ bool CConf::read()
m_nxdnNetworkModeHang = (unsigned int)::atoi(value);
else if (::strcmp(key, "Debug") == 0)
m_nxdnNetworkDebug = ::atoi(value) == 1;
#endif
#if defined(USE_M17)
} else if (section == SECTION_M17_NETWORK) {
if (::strcmp(key, "Enable") == 0)
@ -1240,6 +1342,7 @@ std::string CConf::getCWIdCallsign() const
return m_cwIdCallsign;
}
#if defined(USE_DMR) || defined(USE_P25)
std::string CConf::getDMRIdLookupFile() const
{
return m_dmrIdLookupFile;
@ -1249,7 +1352,9 @@ unsigned int CConf::getDMRIdLookupTime() const
{
return m_dmrIdLookupTime;
}
#endif
#if defined(USE_NXDN)
std::string CConf::getNXDNIdLookupFile() const
{
return m_nxdnIdLookupFile;
@ -1259,6 +1364,7 @@ unsigned int CConf::getNXDNIdLookupTime() const
{
return m_nxdnIdLookupTime;
}
#endif
std::string CConf::getModemProtocol() const
{
@ -1325,10 +1431,12 @@ unsigned int CConf::getModemTXDelay() const
return m_modemTXDelay;
}
#if defined(USE_DMR)
unsigned int CConf::getModemDMRDelay() const
{
return m_modemDMRDelay;
}
#endif
int CConf::getModemRXOffset() const
{
@ -1372,25 +1480,33 @@ float CConf::getModemDStarTXLevel() const
}
#endif
#if defined(USE_DMR)
float CConf::getModemDMRTXLevel() const
{
return m_modemDMRTXLevel;
}
#endif
#if defined(USE_YSF)
float CConf::getModemYSFTXLevel() const
{
return m_modemYSFTXLevel;
}
#endif
#if defined(USE_P25)
float CConf::getModemP25TXLevel() const
{
return m_modemP25TXLevel;
}
#endif
#if defined(USE_NXDN)
float CConf::getModemNXDNTXLevel() const
{
return m_modemNXDNTXLevel;
}
#endif
#if defined(USE_M17)
float CConf::getModemM17TXLevel() const
@ -1522,6 +1638,7 @@ unsigned int CConf::getDStarModeHang() const
}
#endif
#if defined(USE_DMR)
bool CConf::getDMREnabled() const
{
return m_dmrEnabled;
@ -1611,7 +1728,9 @@ DMR_OVCM_TYPES CConf::getDMROVCM() const
{
return m_dmrOVCM;
}
#endif
#if defined(USE_YSF)
bool CConf::getFusionEnabled() const
{
return m_fusionEnabled;
@ -1641,7 +1760,9 @@ unsigned int CConf::getFusionModeHang() const
{
return m_fusionModeHang;
}
#endif
#if defined(USE_P25)
bool CConf::getP25Enabled() const
{
return m_p25Enabled;
@ -1681,7 +1802,9 @@ unsigned int CConf::getP25ModeHang() const
{
return m_p25ModeHang;
}
#endif
#if defined(USE_NXDN)
bool CConf::getNXDNEnabled() const
{
return m_nxdnEnabled;
@ -1716,6 +1839,7 @@ unsigned int CConf::getNXDNModeHang() const
{
return m_nxdnModeHang;
}
#endif
#if defined(USE_M17)
bool CConf::getM17Enabled() const
@ -2012,6 +2136,7 @@ bool CConf::getDStarNetworkDebug() const
}
#endif
#if defined(USE_DMR)
bool CConf::getDMRNetworkEnabled() const
{
return m_dmrNetworkEnabled;
@ -2061,7 +2186,9 @@ bool CConf::getDMRNetworkSlot2() const
{
return m_dmrNetworkSlot2;
}
#endif
#if defined(USE_YSF)
bool CConf::getFusionNetworkEnabled() const
{
return m_fusionNetworkEnabled;
@ -2096,7 +2223,9 @@ bool CConf::getFusionNetworkDebug() const
{
return m_fusionNetworkDebug;
}
#endif
#if defined(USE_P25)
bool CConf::getP25NetworkEnabled() const
{
return m_p25NetworkEnabled;
@ -2131,7 +2260,9 @@ bool CConf::getP25NetworkDebug() const
{
return m_p25NetworkDebug;
}
#endif
#if defined(USE_NXDN)
bool CConf::getNXDNNetworkEnabled() const
{
return m_nxdnNetworkEnabled;
@ -2171,6 +2302,7 @@ bool CConf::getNXDNNetworkDebug() const
{
return m_nxdnNetworkDebug;
}
#endif
#if defined(USE_M17)
bool CConf::getM17NetworkEnabled() const

62
Conf.h
View file

@ -63,13 +63,17 @@ public:
unsigned int getCWIdTime() const;
std::string getCWIdCallsign() const;
#if defined(USE_DMR) || defined(USE_P25)
// The DMR Id section
std::string getDMRIdLookupFile() const;
unsigned int getDMRIdLookupTime() const;
#endif
#if defined(USE_NXDN)
// The NXDN Id section
std::string getNXDNIdLookupFile() const;
unsigned int getNXDNIdLookupTime() const;
#endif
// The Modem section
std::string getModemProtocol() const;
@ -85,7 +89,9 @@ public:
bool getModemTXInvert() const;
bool getModemPTTInvert() const;
unsigned int getModemTXDelay() const;
#if defined(USE_DMR)
unsigned int getModemDMRDelay() const;
#endif
int getModemTXOffset() const;
int getModemRXOffset() const;
int getModemRXDCOffset() const;
@ -96,10 +102,18 @@ public:
#if defined(USE_DSTAR)
float getModemDStarTXLevel() const;
#endif
#if defined(USE_DMR)
float getModemDMRTXLevel() const;
#endif
#if defined(USE_YSF)
float getModemYSFTXLevel() const;
#endif
#if defined(USE_P25)
float getModemP25TXLevel() const;
#endif
#if defined(USE_NXDN)
float getModemNXDNTXLevel() const;
#endif
#if defined(USE_M17)
float getModemM17TXLevel() const;
#endif
@ -124,8 +138,8 @@ public:
unsigned short getTransparentLocalPort() const;
unsigned int getTransparentSendFrameType() const;
// The D-Star section
#if defined(USE_DSTAR)
// The D-Star section
bool getDStarEnabled() const;
std::string getDStarModule() const;
bool getDStarSelfOnly() const;
@ -139,6 +153,7 @@ public:
unsigned int getDStarModeHang() const;
#endif
#if defined(USE_DMR)
// The DMR section
bool getDMREnabled() const;
DMR_BEACONS getDMRBeacons() const;
@ -158,7 +173,9 @@ public:
unsigned int getDMRTXHang() const;
unsigned int getDMRModeHang() const;
DMR_OVCM_TYPES getDMROVCM() const;
#endif
#if defined(USE_YSF)
// The System Fusion section
bool getFusionEnabled() const;
bool getFusionLowDeviation() const;
@ -166,7 +183,9 @@ public:
bool getFusionSelfOnly() const;
unsigned int getFusionTXHang() const;
unsigned int getFusionModeHang() const;
#endif
#if defined(USE_P25)
// The P25 section
bool getP25Enabled() const;
unsigned int getP25Id() const;
@ -176,7 +195,9 @@ public:
bool getP25RemoteGateway() const;
unsigned int getP25TXHang() const;
unsigned int getP25ModeHang() const;
#endif
#if defined(USE_NXDN)
// The NXDN section
bool getNXDNEnabled() const;
unsigned int getNXDNId() const;
@ -185,6 +206,7 @@ public:
bool getNXDNRemoteGateway() const;
unsigned int getNXDNTXHang() const;
unsigned int getNXDNModeHang() const;
#endif
#if defined(USE_M17)
// The M17 section
@ -263,6 +285,7 @@ public:
bool getDStarNetworkDebug() const;
#endif
#if defined(USE_DMR)
// The DMR Network section
bool getDMRNetworkEnabled() const;
std::string getDMRNetworkGatewayAddress() const;
@ -274,7 +297,9 @@ public:
bool getDMRNetworkSlot1() const;
bool getDMRNetworkSlot2() const;
unsigned int getDMRNetworkModeHang() const;
#endif
#if defined(USE_YSF)
// The System Fusion Network section
bool getFusionNetworkEnabled() const;
std::string getFusionNetworkLocalAddress() const;
@ -283,7 +308,9 @@ public:
unsigned short getFusionNetworkGatewayPort() const;
unsigned int getFusionNetworkModeHang() const;
bool getFusionNetworkDebug() const;
#endif
#if defined(USE_P25)
// The P25 Network section
bool getP25NetworkEnabled() const;
std::string getP25GatewayAddress() const;
@ -292,7 +319,9 @@ public:
unsigned short getP25LocalPort() const;
unsigned int getP25NetworkModeHang() const;
bool getP25NetworkDebug() const;
#endif
#if defined(USE_NXDN)
// The NXDN Network section
bool getNXDNNetworkEnabled() const;
std::string getNXDNNetworkProtocol() const;
@ -302,6 +331,7 @@ public:
unsigned short getNXDNLocalPort() const;
unsigned int getNXDNNetworkModeHang() const;
bool getNXDNNetworkDebug() const;
#endif
#if defined(USE_M17)
// The M17 Network section
@ -386,11 +416,15 @@ private:
unsigned int m_cwIdTime;
std::string m_cwIdCallsign;
#if defined(USE_DMR) || defined(USE_P25)
std::string m_dmrIdLookupFile;
unsigned int m_dmrIdLookupTime;
#endif
#if defined(USE_NXDN)
std::string m_nxdnIdLookupFile;
unsigned int m_nxdnIdLookupTime;
#endif
std::string m_modemProtocol;
std::string m_modemUARTPort;
@ -405,7 +439,9 @@ private:
bool m_modemTXInvert;
bool m_modemPTTInvert;
unsigned int m_modemTXDelay;
#if defined(USE_DMR)
unsigned int m_modemDMRDelay;
#endif
int m_modemTXOffset;
int m_modemRXOffset;
int m_modemRXDCOffset;
@ -447,6 +483,7 @@ private:
#endif
unsigned int m_dstarModeHang;
#if defined(USE_DMR)
bool m_dmrEnabled;
DMR_BEACONS m_dmrBeacons;
unsigned int m_dmrBeaconInterval;
@ -463,16 +500,22 @@ private:
std::vector<unsigned int> m_dmrSlot2TGWhiteList;
unsigned int m_dmrCallHang;
unsigned int m_dmrTXHang;
#endif
unsigned int m_dmrModeHang;
#if defined(USE_DMR)
DMR_OVCM_TYPES m_dmrOVCM;
#endif
#if defined(USE_YSF)
bool m_fusionEnabled;
bool m_fusionLowDeviation;
bool m_fusionRemoteGateway;
bool m_fusionSelfOnly;
unsigned int m_fusionTXHang;
#endif
unsigned int m_fusionModeHang;
#if defined(USE_P25)
bool m_p25Enabled;
unsigned int m_p25Id;
unsigned int m_p25NAC;
@ -480,14 +523,17 @@ private:
bool m_p25OverrideUID;
bool m_p25RemoteGateway;
unsigned int m_p25TXHang;
#endif
unsigned int m_p25ModeHang;
#if defined(USE_NXDN)
bool m_nxdnEnabled;
unsigned int m_nxdnId;
unsigned int m_nxdnRAN;
bool m_nxdnSelfOnly;
bool m_nxdnRemoteGateway;
unsigned int m_nxdnTXHang;
#endif
unsigned int m_nxdnModeHang;
#if defined(USE_M17)
@ -570,6 +616,7 @@ private:
bool m_dstarNetworkDebug;
#endif
#if defined(USE_DMR)
bool m_dmrNetworkEnabled;
std::string m_dmrNetworkGatewayAddress;
unsigned short m_dmrNetworkGatewayPort;
@ -579,32 +626,45 @@ private:
unsigned int m_dmrNetworkJitter;
bool m_dmrNetworkSlot1;
bool m_dmrNetworkSlot2;
#endif
unsigned int m_dmrNetworkModeHang;
#if defined(USE_YSF)
bool m_fusionNetworkEnabled;
std::string m_fusionNetworkLocalAddress;
unsigned short m_fusionNetworkLocalPort;
std::string m_fusionNetworkGatewayAddress;
unsigned short m_fusionNetworkGatewayPort;
#endif
unsigned int m_fusionNetworkModeHang;
#if defined(USE_YSF)
bool m_fusionNetworkDebug;
#endif
#if defined(USE_P25)
bool m_p25NetworkEnabled;
std::string m_p25GatewayAddress;
unsigned short m_p25GatewayPort;
std::string m_p25LocalAddress;
unsigned short m_p25LocalPort;
#endif
unsigned int m_p25NetworkModeHang;
#if defined(USE_P25)
bool m_p25NetworkDebug;
#endif
#if defined(USE_NXDN)
bool m_nxdnNetworkEnabled;
std::string m_nxdnNetworkProtocol;
std::string m_nxdnGatewayAddress;
unsigned short m_nxdnGatewayPort;
std::string m_nxdnLocalAddress;
unsigned short m_nxdnLocalPort;
#endif
unsigned int m_nxdnNetworkModeHang;
#if defined(USE_NXDN)
bool m_nxdnNetworkDebug;
#endif
#if defined(USE_M17)
bool m_m17NetworkEnabled;

File diff suppressed because it is too large Load diff

View file

@ -64,10 +64,18 @@ private:
#if defined(USE_DSTAR)
CDStarControl* m_dstar;
#endif
#if defined(USE_DMR)
CDMRControl* m_dmr;
#endif
#if defined(USE_YSF)
CYSFControl* m_ysf;
#endif
#if defined(USE_P25)
CP25Control* m_p25;
#endif
#if defined(USE_NXDN)
CNXDNControl* m_nxdn;
#endif
#if defined(USE_M17)
CM17Control* m_m17;
#endif
@ -83,10 +91,18 @@ private:
#if defined(USE_DSTAR)
CDStarNetwork* m_dstarNetwork;
#endif
#if defined(USE_DMR)
CDMRNetwork* m_dmrNetwork;
#endif
#if defined(USE_YSF)
CYSFNetwork* m_ysfNetwork;
#endif
#if defined(USE_P25)
CP25Network* m_p25Network;
#endif
#if defined(USE_NXDN)
INXDNNetwork* m_nxdnNetwork;
#endif
#if defined(USE_M17)
CM17Network* m_m17Network;
#endif
@ -103,10 +119,18 @@ private:
#if defined(USE_DSTAR)
unsigned int m_dstarRFModeHang;
#endif
#if defined(USE_DMR)
unsigned int m_dmrRFModeHang;
#endif
#if defined(USE_YSF)
unsigned int m_ysfRFModeHang;
#endif
#if defined(USE_P25)
unsigned int m_p25RFModeHang;
#endif
#if defined(USE_NXDN)
unsigned int m_nxdnRFModeHang;
#endif
#if defined(USE_M17)
unsigned int m_m17RFModeHang;
#endif
@ -116,10 +140,18 @@ private:
#if defined(USE_DSTAR)
unsigned int m_dstarNetModeHang;
#endif
#if defined(USE_DMR)
unsigned int m_dmrNetModeHang;
#endif
#if defined(USE_YSF)
unsigned int m_ysfNetModeHang;
#endif
#if defined(USE_P25)
unsigned int m_p25NetModeHang;
#endif
#if defined(USE_NXDN)
unsigned int m_nxdnNetModeHang;
#endif
#if defined(USE_M17)
unsigned int m_m17NetModeHang;
#endif
@ -130,7 +162,9 @@ private:
unsigned int m_fmNetModeHang;
#endif
CTimer m_modeTimer;
#if defined(USE_DMR)
CTimer m_dmrTXTimer;
#endif
CTimer m_cwIdTimer;
bool m_duplex;
unsigned int m_timeout;
@ -144,8 +178,12 @@ private:
bool m_fmEnabled;
bool m_ax25Enabled;
unsigned int m_cwIdTime;
#if defined(USE_DMR) || defined(USE_P25)
CDMRLookup* m_dmrLookup;
#endif
#if defined(USE_NXDN)
CNXDNLookup* m_nxdnLookup;
#endif
std::string m_callsign;
unsigned int m_id;
std::string m_cwCallsign;
@ -159,10 +197,18 @@ private:
#if defined(USE_DSTAR)
bool createDStarNetwork();
#endif
#if defined(USE_DMR)
bool createDMRNetwork();
#endif
#if defined(USE_YSF)
bool createYSFNetwork();
#endif
#if defined(USE_P25)
bool createP25Network();
#endif
#if defined(USE_NXDN)
bool createNXDNNetwork();
#endif
#if defined(USE_M17)
bool createM17Network();
#endif
@ -175,7 +221,6 @@ private:
#if defined(USE_AX25)
bool createAX25Network();
#endif
void writeSerial(const std::string& message);
void remoteControl(const std::string& commandString);

276
Modem.cpp
View file

@ -58,6 +58,7 @@ const unsigned char MMDVM_DSTAR_LOST = 0x12U;
const unsigned char MMDVM_DSTAR_EOT = 0x13U;
#endif
#if defined(USE_DMR)
const unsigned char MMDVM_DMR_DATA1 = 0x18U;
const unsigned char MMDVM_DMR_LOST1 = 0x19U;
const unsigned char MMDVM_DMR_DATA2 = 0x1AU;
@ -65,16 +66,23 @@ const unsigned char MMDVM_DMR_LOST2 = 0x1BU;
const unsigned char MMDVM_DMR_SHORTLC = 0x1CU;
const unsigned char MMDVM_DMR_START = 0x1DU;
const unsigned char MMDVM_DMR_ABORT = 0x1EU;
#endif
#if defined(USE_YSF)
const unsigned char MMDVM_YSF_DATA = 0x20U;
const unsigned char MMDVM_YSF_LOST = 0x21U;
#endif
#if defined(USE_P25)
const unsigned char MMDVM_P25_HDR = 0x30U;
const unsigned char MMDVM_P25_LDU = 0x31U;
const unsigned char MMDVM_P25_LOST = 0x32U;
#endif
#if defined(USE_NXDN)
const unsigned char MMDVM_NXDN_DATA = 0x40U;
const unsigned char MMDVM_NXDN_LOST = 0x41U;
#endif
#if defined(USE_M17)
const unsigned char MMDVM_M17_LINK_SETUP = 0x45U;
@ -124,10 +132,18 @@ const unsigned int BUFFER_LENGTH = 2000U;
#if defined(USE_DSTAR)
const unsigned char CAP1_DSTAR = 0x01U;
#endif
#if defined(USE_DMR)
const unsigned char CAP1_DMR = 0x02U;
#endif
#if defined(USE_YSF)
const unsigned char CAP1_YSF = 0x04U;
#endif
#if defined(USE_P25)
const unsigned char CAP1_P25 = 0x08U;
#endif
#if defined(USE_NXDN)
const unsigned char CAP1_NXDN = 0x10U;
#endif
#if defined(USE_M17)
const unsigned char CAP1_M17 = 0x20U;
#endif
@ -143,11 +159,19 @@ const unsigned char CAP2_AX25 = 0x02U;
CModem::CModem(bool duplex, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int dmrDelay, bool useCOSAsLockout, bool trace, bool debug) :
m_protocolVersion(0U),
#if defined(USE_DMR)
m_dmrColorCode(0U),
#endif
#if defined(USE_YSF)
m_ysfLoDev(false),
m_ysfTXHang(4U),
#endif
#if defined(USE_P25)
m_p25TXHang(5U),
#endif
#if defined(USE_NXDN)
m_nxdnTXHang(5U),
#endif
#if defined(USE_M17)
m_m17TXHang(5U),
#endif
@ -156,16 +180,26 @@ m_rxInvert(rxInvert),
m_txInvert(txInvert),
m_pttInvert(pttInvert),
m_txDelay(txDelay),
#if defined(USE_DMR)
m_dmrDelay(dmrDelay),
#endif
m_rxLevel(0.0F),
m_cwIdTXLevel(0.0F),
#if defined(USE_DSTAR)
m_dstarTXLevel(0.0F),
#endif
#if defined(USE_DMR)
m_dmrTXLevel(0.0F),
#endif
#if defined(USE_YSF)
m_ysfTXLevel(0.0F),
#endif
#if defined(USE_P25)
m_p25TXLevel(0.0F),
#endif
#if defined(USE_NXDN)
m_nxdnTXLevel(0.0F),
#endif
#if defined(USE_M17)
m_m17TXLevel(0.0F),
#endif
@ -190,10 +224,18 @@ m_pocsagFrequency(0U),
#if defined(USE_DSTAR)
m_dstarEnabled(false),
#endif
#if defined(USE_DMR)
m_dmrEnabled(false),
#endif
#if defined(USE_YSF)
m_ysfEnabled(false),
#endif
#if defined(USE_P25)
m_p25Enabled(false),
#endif
#if defined(USE_NXDN)
m_nxdnEnabled(false),
#endif
#if defined(USE_M17)
m_m17Enabled(false),
#endif
@ -218,16 +260,24 @@ m_type(0U),
m_rxDStarData(1000U, "Modem RX D-Star"),
m_txDStarData(1000U, "Modem TX D-Star"),
#endif
#if defined(USE_DMR)
m_rxDMRData1(1000U, "Modem RX DMR1"),
m_rxDMRData2(1000U, "Modem RX DMR2"),
m_txDMRData1(1000U, "Modem TX DMR1"),
m_txDMRData2(1000U, "Modem TX DMR2"),
#endif
#if defined(USE_YSF)
m_rxYSFData(1000U, "Modem RX YSF"),
m_txYSFData(1000U, "Modem TX YSF"),
#endif
#if defined(USE_P25)
m_rxP25Data(1000U, "Modem RX P25"),
m_txP25Data(1000U, "Modem TX P25"),
#endif
#if defined(USE_NXDN)
m_rxNXDNData(1000U, "Modem RX NXDN"),
m_txNXDNData(1000U, "Modem TX NXDN"),
#endif
#if defined(USE_M17)
m_rxM17Data(1000U, "Modem RX M17"),
m_txM17Data(1000U, "Modem TX M17"),
@ -254,11 +304,19 @@ m_playoutTimer(1000U, 0U, 10U),
#if defined(USE_DSTAR)
m_dstarSpace(0U),
#endif
#if defined(USE_DMR)
m_dmrSpace1(0U),
m_dmrSpace2(0U),
#endif
#if defined(USE_YSF)
m_ysfSpace(0U),
#endif
#if defined(USE_P25)
m_p25Space(0U),
#endif
#if defined(USE_NXDN)
m_nxdnSpace(0U),
#endif
#if defined(USE_M17)
m_m17Space(0U),
#endif
@ -356,10 +414,18 @@ void CModem::setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled,
#if defined(USE_DSTAR)
m_dstarEnabled = dstarEnabled;
#endif
#if defined(USE_DMR)
m_dmrEnabled = dmrEnabled;
#endif
#if defined(USE_YSF)
m_ysfEnabled = ysfEnabled;
#endif
#if defined(USE_P25)
m_p25Enabled = p25Enabled;
#endif
#if defined(USE_NXDN)
m_nxdnEnabled = nxdnEnabled;
#endif
#if defined(USE_M17)
m_m17Enabled = m17Enabled;
#endif
@ -381,10 +447,18 @@ void CModem::setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, flo
#if defined(USE_DSTAR)
m_dstarTXLevel = dstarTXLevel;
#endif
#if defined(USE_DMR)
m_dmrTXLevel = dmrTXLevel;
#endif
#if defined(USE_YSF)
m_ysfTXLevel = ysfTXLevel;
#endif
#if defined(USE_P25)
m_p25TXLevel = p25TXLevel;
#endif
#if defined(USE_NXDN)
m_nxdnTXLevel = nxdnTXLevel;
#endif
#if defined(USE_M17)
m_m17TXLevel = m17TXLevel;
#endif
@ -399,28 +473,36 @@ void CModem::setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, flo
#endif
}
#if defined(USE_DMR)
void CModem::setDMRParams(unsigned int colorCode)
{
assert(colorCode < 16U);
m_dmrColorCode = colorCode;
}
#endif
#if defined(USE_YSF)
void CModem::setYSFParams(bool loDev, unsigned int txHang)
{
m_ysfLoDev = loDev;
m_ysfTXHang = txHang;
}
#endif
#if defined(USE_P25)
void CModem::setP25Params(unsigned int txHang)
{
m_p25TXHang = txHang;
}
#endif
#if defined(USE_NXDN)
void CModem::setNXDNParams(unsigned int txHang)
{
m_nxdnTXHang = txHang;
}
#endif
#if defined(USE_M17)
void CModem::setM17Params(unsigned int txHang)
@ -611,6 +693,7 @@ void CModem::clock(unsigned int ms)
break;
#endif
#if defined(USE_DMR)
case MMDVM_DMR_DATA1: {
if (m_trace)
CUtils::dump(1U, "RX DMR Data 1", m_buffer, m_length);
@ -668,7 +751,9 @@ void CModem::clock(unsigned int ms)
m_rxDMRData2.addData(&data, 1U);
}
break;
#endif
#if defined(USE_YSF)
case MMDVM_YSF_DATA: {
if (m_trace)
CUtils::dump(1U, "RX YSF Data", m_buffer, m_length);
@ -694,7 +779,9 @@ void CModem::clock(unsigned int ms)
m_rxYSFData.addData(&data, 1U);
}
break;
#endif
#if defined(USE_P25)
case MMDVM_P25_HDR: {
if (m_trace)
CUtils::dump(1U, "RX P25 Header", m_buffer, m_length);
@ -734,7 +821,9 @@ void CModem::clock(unsigned int ms)
m_rxP25Data.addData(&data, 1U);
}
break;
#endif
#if defined(USE_NXDN)
case MMDVM_NXDN_DATA: {
if (m_trace)
CUtils::dump(1U, "RX NXDN Data", m_buffer, m_length);
@ -760,6 +849,7 @@ void CModem::clock(unsigned int ms)
m_rxNXDNData.addData(&data, 1U);
}
break;
#endif
#if defined(USE_M17)
case MMDVM_M17_LINK_SETUP: {
@ -814,6 +904,7 @@ void CModem::clock(unsigned int ms)
}
break;
#endif
#if defined(USE_FM)
case MMDVM_FM_DATA: {
if (m_trace)
@ -857,6 +948,7 @@ void CModem::clock(unsigned int ms)
}
break;
#endif
#if defined(USE_AX25)
case MMDVM_AX25_DATA: {
if (m_trace)
@ -894,8 +986,12 @@ void CModem::clock(unsigned int ms)
LogError("MMDVM DAC levels have overflowed");
m_cd = (m_buffer[m_offset + 2U] & 0x40U) == 0x40U;
#if defined(USE_P25)
m_p25Space = 0U;
#endif
#if defined(USE_NXDN)
m_nxdnSpace = 0U;
#endif
#if defined(USE_M17)
m_m17Space = 0U;
#endif
@ -911,15 +1007,22 @@ void CModem::clock(unsigned int ms)
#if defined(USE_DSTAR)
m_dstarSpace = m_buffer[m_offset + 3U];
#endif
#if defined(USE_DMR)
m_dmrSpace1 = m_buffer[m_offset + 4U];
m_dmrSpace2 = m_buffer[m_offset + 5U];
#endif
#if defined(USE_YSF)
m_ysfSpace = m_buffer[m_offset + 6U];
#endif
// The following depend on the version of the firmware
#if defined(USE_P25)
if (m_length > (m_offset + 7U))
m_p25Space = m_buffer[m_offset + 7U];
#endif
#if defined(USE_NXDN)
if (m_length > (m_offset + 8U))
m_nxdnSpace = m_buffer[m_offset + 8U];
#endif
#if defined(USE_POCSAG)
if (m_length > (m_offset + 9U))
m_pocsagSpace = m_buffer[m_offset + 9U];
@ -953,11 +1056,19 @@ void CModem::clock(unsigned int ms)
#if defined(USE_DSTAR)
m_dstarSpace = m_buffer[m_offset + 3U];
#endif
#if defined(USE_DMR)
m_dmrSpace1 = m_buffer[m_offset + 4U];
m_dmrSpace2 = m_buffer[m_offset + 5U];
#endif
#if defined(USE_YSF)
m_ysfSpace = m_buffer[m_offset + 6U];
#endif
#if defined(USE_P25)
m_p25Space = m_buffer[m_offset + 7U];
#endif
#if defined(USE_NXDN)
m_nxdnSpace = m_buffer[m_offset + 8U];
#endif
#if defined(USE_M17)
m_m17Space = m_buffer[m_offset + 9U];
#endif
@ -977,11 +1088,19 @@ void CModem::clock(unsigned int ms)
#if defined(USE_DSTAR)
m_dstarSpace = 0U;
#endif
#if defined(USE_DMR)
m_dmrSpace1 = 0U;
m_dmrSpace2 = 0U;
#endif
#if defined(USE_YSF)
m_ysfSpace = 0U;
#endif
#if defined(USE_P25)
m_p25Space = 0U;
#endif
#if defined(USE_NXDN)
m_nxdnSpace = 0U;
#endif
#if defined(USE_M17)
m_m17Space = 0U;
#endif
@ -1094,6 +1213,7 @@ void CModem::clock(unsigned int ms)
}
#endif
#if defined(USE_DMR)
if (m_dmrSpace1 > 1U && !m_txDMRData1.isEmpty()) {
unsigned char len = 0U;
m_txDMRData1.getData(&len, 1U);
@ -1127,7 +1247,9 @@ void CModem::clock(unsigned int ms)
m_dmrSpace2--;
}
#endif
#if defined(USE_YSF)
if (m_ysfSpace > 1U && !m_txYSFData.isEmpty()) {
unsigned char len = 0U;
m_txYSFData.getData(&len, 1U);
@ -1144,7 +1266,9 @@ void CModem::clock(unsigned int ms)
m_ysfSpace--;
}
#endif
#if defined(USE_P25)
if (m_p25Space > 1U && !m_txP25Data.isEmpty()) {
unsigned char len = 0U;
m_txP25Data.getData(&len, 1U);
@ -1165,7 +1289,9 @@ void CModem::clock(unsigned int ms)
m_p25Space--;
}
#endif
#if defined(USE_NXDN)
if (m_nxdnSpace > 1U && !m_txNXDNData.isEmpty()) {
unsigned char len = 0U;
m_txNXDNData.getData(&len, 1U);
@ -1182,6 +1308,7 @@ void CModem::clock(unsigned int ms)
m_nxdnSpace--;
}
#endif
#if defined(USE_M17)
if (m_m17Space > 1U && !m_txM17Data.isEmpty()) {
@ -1326,6 +1453,7 @@ unsigned int CModem::readDStarData(unsigned char* data)
}
#endif
#if defined(USE_DMR)
unsigned int CModem::readDMRData1(unsigned char* data)
{
assert(data != NULL);
@ -1353,7 +1481,9 @@ unsigned int CModem::readDMRData2(unsigned char* data)
return len;
}
#endif
#if defined(USE_YSF)
unsigned int CModem::readYSFData(unsigned char* data)
{
assert(data != NULL);
@ -1367,7 +1497,9 @@ unsigned int CModem::readYSFData(unsigned char* data)
return len;
}
#endif
#if defined(USE_P25)
unsigned int CModem::readP25Data(unsigned char* data)
{
assert(data != NULL);
@ -1381,7 +1513,9 @@ unsigned int CModem::readP25Data(unsigned char* data)
return len;
}
#endif
#if defined(USE_NXDN)
unsigned int CModem::readNXDNData(unsigned char* data)
{
assert(data != NULL);
@ -1395,6 +1529,7 @@ unsigned int CModem::readNXDNData(unsigned char* data)
return len;
}
#endif
#if defined(USE_M17)
unsigned int CModem::readM17Data(unsigned char* data)
@ -1515,6 +1650,7 @@ bool CModem::writeDStarData(const unsigned char* data, unsigned int length)
}
#endif
#if defined(USE_DMR)
bool CModem::hasDMRSpace1() const
{
unsigned int space = m_txDMRData1.freeSpace() / (DMR_FRAME_LENGTH_BYTES + 4U);
@ -1574,7 +1710,9 @@ bool CModem::writeDMRData2(const unsigned char* data, unsigned int length)
return true;
}
#endif
#if defined(USE_YSF)
bool CModem::hasYSFSpace() const
{
unsigned int space = m_txYSFData.freeSpace() / (YSF_FRAME_LENGTH_BYTES + 4U);
@ -1604,7 +1742,9 @@ bool CModem::writeYSFData(const unsigned char* data, unsigned int length)
return true;
}
#endif
#if defined(USE_P25)
bool CModem::hasP25Space() const
{
unsigned int space = m_txP25Data.freeSpace() / (P25_LDU_FRAME_LENGTH_BYTES + 4U);
@ -1634,7 +1774,9 @@ bool CModem::writeP25Data(const unsigned char* data, unsigned int length)
return true;
}
#endif
#if defined(USE_NXDN)
bool CModem::hasNXDNSpace() const
{
unsigned int space = m_txNXDNData.freeSpace() / (NXDN_FRAME_LENGTH_BYTES + 4U);
@ -1664,6 +1806,7 @@ bool CModem::writeNXDNData(const unsigned char* data, unsigned int length)
return true;
}
#endif
#if defined(USE_M17)
bool CModem::hasM17Space() const
@ -1876,6 +2019,7 @@ bool CModem::writeDStarInfo(const char* my1, const char* my2, const char* your,
}
#endif
#if defined(USE_DMR)
bool CModem::writeDMRInfo(unsigned int slotNo, const std::string& src, bool group, const std::string& dest, const char* type)
{
assert(m_port != NULL);
@ -1901,7 +2045,9 @@ bool CModem::writeDMRInfo(unsigned int slotNo, const std::string& src, bool grou
return m_port->write(buffer, 47U) != 47;
}
#endif
#if defined(USE_YSF)
bool CModem::writeYSFInfo(const char* source, const char* dest, unsigned char dgid, const char* type, const char* origin)
{
assert(m_port != NULL);
@ -1929,7 +2075,9 @@ bool CModem::writeYSFInfo(const char* source, const char* dest, unsigned char dg
return m_port->write(buffer, 36U) != 36;
}
#endif
#if defined(USE_P25)
bool CModem::writeP25Info(const char* source, bool group, unsigned int dest, const char* type)
{
assert(m_port != NULL);
@ -1954,7 +2102,9 @@ bool CModem::writeP25Info(const char* source, bool group, unsigned int dest, con
return m_port->write(buffer, 31U) != 31;
}
#endif
#if defined(USE_NXDN)
bool CModem::writeNXDNInfo(const char* source, bool group, unsigned int dest, const char* type)
{
assert(m_port != NULL);
@ -1979,6 +2129,7 @@ bool CModem::writeNXDNInfo(const char* source, bool group, unsigned int dest, co
return m_port->write(buffer, 31U) != 31;
}
#endif
#if defined(USE_M17)
bool CModem::writeM17Info(const char* source, const char* dest, const char* type)
@ -2100,25 +2251,33 @@ bool CModem::hasDStar() const
}
#endif
#if defined(USE_DMR)
bool CModem::hasDMR() const
{
return (m_capabilities1 & CAP1_DMR) == CAP1_DMR;
}
#endif
#if defined(USE_YSF)
bool CModem::hasYSF() const
{
return (m_capabilities1 & CAP1_YSF) == CAP1_YSF;
}
#endif
#if defined(USE_P25)
bool CModem::hasP25() const
{
return (m_capabilities1 & CAP1_P25) == CAP1_P25;
}
#endif
#if defined(USE_NXDN)
bool CModem::hasNXDN() const
{
return (m_capabilities1 & CAP1_NXDN) == CAP1_NXDN;
}
#endif
#if defined(USE_M17)
bool CModem::hasM17() const
@ -2215,7 +2374,18 @@ bool CModem::readVersion()
#if defined(USE_DSTAR)
m_capabilities1 |= CAP1_DSTAR;
#endif
m_capabilities1 |= CAP1_DMR | CAP1_YSF | CAP1_P25 | CAP1_NXDN;
#if defined(USE_DMR)
m_capabilities1 |= CAP1_DMR;
#endif
#if defined(USE_YSF)
m_capabilities1 |= CAP1_YSF;
#endif
#if defined(USE_P25)
m_capabilities1 |= CAP1_P25;
#endif
#if defined(USE_NXDN)
m_capabilities1 |= CAP1_NXDN;
#endif
#if defined(USE_M17)
m_capabilities1 |= CAP1_M17;
#endif
@ -2248,14 +2418,22 @@ bool CModem::readVersion()
if (hasDStar())
::strcat(modeText, " D-Star");
#endif
#if defined(USE_DMR)
if (hasDMR())
::strcat(modeText, " DMR");
#endif
#if defined(USE_YSF)
if (hasYSF())
::strcat(modeText, " YSF");
#endif
#if defined(USE_P25)
if (hasP25())
::strcat(modeText, " P25");
#endif
#if defined(USE_NXDN)
if (hasNXDN())
::strcat(modeText, " NXDN");
#endif
#if defined(USE_M17)
if (hasM17())
::strcat(modeText, " M17");
@ -2352,14 +2530,22 @@ bool CModem::setConfig1()
if (m_dstarEnabled)
buffer[4U] |= 0x01U;
#endif
#if defined(USE_DMR)
if (m_dmrEnabled)
buffer[4U] |= 0x02U;
#endif
#if defined(USE_YSF)
if (m_ysfEnabled)
buffer[4U] |= 0x04U;
#endif
#if defined(USE_P25)
if (m_p25Enabled)
buffer[4U] |= 0x08U;
#endif
#if defined(USE_NXDN)
if (m_nxdnEnabled)
buffer[4U] |= 0x10U;
#endif
#if defined(USE_POCSAG)
if (m_pocsagEnabled)
buffer[4U] |= 0x20U;
@ -2377,9 +2563,13 @@ bool CModem::setConfig1()
buffer[8U] = (unsigned char)(m_cwIdTXLevel * 2.55F + 0.5F);
buffer[9U] = m_dmrColorCode;
#if defined(USE_DMR)
buffer[9U] = m_dmrColorCode;
buffer[10U] = m_dmrDelay;
#else
buffer[9U] = 0U;
buffer[10U] = 0U;
#endif
buffer[11U] = 128U; // Was OscOffset
@ -2388,16 +2578,35 @@ bool CModem::setConfig1()
#else
buffer[12U] = 0U;
#endif
#if defined(USE_DMR)
buffer[13U] = (unsigned char)(m_dmrTXLevel * 2.55F + 0.5F);
#else
buffer[13U] = 0U;
#endif
#if defined(USE_YSF)
buffer[14U] = (unsigned char)(m_ysfTXLevel * 2.55F + 0.5F);
#else
buffer[14U] = 0U;
#endif
#if defined(USE_P25)
buffer[15U] = (unsigned char)(m_p25TXLevel * 2.55F + 0.5F);
#else
buffer[15U] = 0U;
#endif
buffer[16U] = (unsigned char)(m_txDCOffset + 128);
buffer[17U] = (unsigned char)(m_rxDCOffset + 128);
#if defined(USE_NXDN)
buffer[18U] = (unsigned char)(m_nxdnTXLevel * 2.55F + 0.5F);
#else
buffer[18U] = 0U;
#endif
#if defined(USE_YSF)
buffer[19U] = (unsigned char)m_ysfTXHang;
#else
buffer[19U] = 0U;
#endif
#if defined(USE_POCSAG)
buffer[20U] = (unsigned char)(m_pocsagTXLevel * 2.55F + 0.5F);
#else
@ -2408,10 +2617,16 @@ bool CModem::setConfig1()
#else
buffer[21U] = 0U;
#endif
#if defined(USE_P25)
buffer[22U] = (unsigned char)m_p25TXHang;
#else
buffer[22U] = 0U;
#endif
#if defined(USE_NXDN)
buffer[23U] = (unsigned char)m_nxdnTXHang;
#else
buffer[23U] = 0U;
#endif
#if defined(USE_M17)
buffer[24U] = (unsigned char)(m_m17TXLevel * 2.55F + 0.5F);
buffer[25U] = (unsigned char)m_m17TXHang;
@ -2486,14 +2701,22 @@ bool CModem::setConfig2()
if (m_dstarEnabled)
buffer[4U] |= 0x01U;
#endif
#if defined(USE_DMR)
if (m_dmrEnabled)
buffer[4U] |= 0x02U;
#endif
#if defined(USE_YSF)
if (m_ysfEnabled)
buffer[4U] |= 0x04U;
#endif
#if defined(USE_P25)
if (m_p25Enabled)
buffer[4U] |= 0x08U;
#endif
#if defined(USE_NXDN)
if (m_nxdnEnabled)
buffer[4U] |= 0x10U;
#endif
#if defined(USE_FM)
if (m_fmEnabled)
buffer[4U] |= 0x20U;
@ -2522,15 +2745,32 @@ bool CModem::setConfig2()
buffer[10U] = (unsigned char)(m_rxLevel * 2.55F + 0.5F);
buffer[11U] = (unsigned char)(m_cwIdTXLevel * 2.55F + 0.5F);
#if defined(USE_DSTAR)
buffer[12U] = (unsigned char)(m_dstarTXLevel * 2.55F + 0.5F);
#else
buffer[12U] = 0U;
#endif
#if defined(USE_DMR)
buffer[13U] = (unsigned char)(m_dmrTXLevel * 2.55F + 0.5F);
#else
buffer[13U] = 0U;
#endif
#if defined(USE_YSF)
buffer[14U] = (unsigned char)(m_ysfTXLevel * 2.55F + 0.5F);
#else
buffer[14U] = 0U;
#endif
#if defined(USE_P25)
buffer[15U] = (unsigned char)(m_p25TXLevel * 2.55F + 0.5F);
#else
buffer[15U] = 0U;
#endif
#if defined(USE_NXDN)
buffer[16U] = (unsigned char)(m_nxdnTXLevel * 2.55F + 0.5F);
#else
buffer[16U] = 0U;
#endif
#if defined(USE_M17)
buffer[17U] = (unsigned char)(m_m17TXLevel * 2.55F + 0.5F);
#else
@ -2551,22 +2791,41 @@ bool CModem::setConfig2()
#else
buffer[20U] = 0U;
#endif
buffer[21U] = 0x00U;
buffer[22U] = 0x00U;
#if defined(USE_YSF)
buffer[23U] = (unsigned char)m_ysfTXHang;
#else
buffer[23U] = 0U;
#endif
#if defined(USE_P25)
buffer[24U] = (unsigned char)m_p25TXHang;
#else
buffer[24U] = 0U;
#endif
#if defined(USE_NXDN)
buffer[25U] = (unsigned char)m_nxdnTXHang;
#else
buffer[25U] = 0U;
#endif
#if defined(USE_M17)
buffer[26U] = (unsigned char)m_m17TXHang;
#else
buffer[26U] = 0U;
#endif
buffer[27U] = 0x00U;
buffer[28U] = 0x00U;
#if defined(USE_DMR)
buffer[29U] = m_dmrColorCode;
buffer[30U] = m_dmrDelay;
#else
buffer[29U] = 0U;
buffer[30U] = 0U;
#endif
#if defined(USE_AX25)
buffer[31U] = (unsigned char)(m_ax25RXTwist + 128);
@ -2579,6 +2838,7 @@ bool CModem::setConfig2()
buffer[33U] = 0U;
buffer[34U] = 0U;
#endif
buffer[35U] = 0x00U;
buffer[36U] = 0x00U;
buffer[37U] = 0x00U;
@ -2850,6 +3110,7 @@ bool CModem::sendCWId(const std::string& callsign)
return m_port->write(buffer, length + 3U) == int(length + 3U);
}
#if defined(USE_DMR)
bool CModem::writeDMRStart(bool tx)
{
assert(m_port != NULL);
@ -2916,6 +3177,7 @@ bool CModem::writeDMRShortLC(const unsigned char* lc)
return m_port->write(buffer, 12U) == 12;
}
#endif
#if defined(USE_FM)
void CModem::setFMCallsignParams(const std::string& callsign, unsigned int callsignSpeed, unsigned int callsignFrequency, unsigned int callsignTime, unsigned int callsignHoldoff, float callsignHighLevel, float callsignLowLevel, bool callsignAtStart, bool callsignAtEnd, bool callsignAtLatch)

94
Modem.h
View file

@ -49,10 +49,19 @@ public:
void setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset, int txDCOffset, int rxDCOffset, float rfLevel, unsigned int pocsagFrequency);
void setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled, bool nxdnEnabled, bool m17Enabled, bool pocsagEnabled, bool fmEnabled, bool ax25Enabled);
void setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, float dmrTXLevel, float ysfTXLevel, float p25TXLevel, float nxdnTXLevel, float m17TXLevel, float pocsagLevel, float fmTXLevel, float ax25TXLevel);
#if defined(USE_DMR)
void setDMRParams(unsigned int colorCode);
#endif
#if defined(USE_YSF)
void setYSFParams(bool loDev, unsigned int txHang);
#endif
#if defined(USE_P25)
void setP25Params(unsigned int txHang);
#endif
#if defined(USE_NXDN)
void setNXDNParams(unsigned int txHang);
#endif
#if defined(USE_M17)
void setM17Params(unsigned int txHang);
#endif
@ -73,10 +82,18 @@ public:
#if defined(USE_DSTAR)
bool hasDStar() const;
#endif
#if defined(USE_DMR)
bool hasDMR() const;
#endif
#if defined(USE_YSF)
bool hasYSF() const;
#endif
#if defined(USE_P25)
bool hasP25() const;
#endif
#if defined(USE_NXDN)
bool hasNXDN() const;
#endif
#if defined(USE_M17)
bool hasM17() const;
#endif
@ -94,11 +111,19 @@ public:
#if defined(USE_DSTAR)
unsigned int readDStarData(unsigned char* data);
#endif
#if defined(USE_DMR)
unsigned int readDMRData1(unsigned char* data);
unsigned int readDMRData2(unsigned char* data);
#endif
#if defined(USE_YSF)
unsigned int readYSFData(unsigned char* data);
#endif
#if defined(USE_P25)
unsigned int readP25Data(unsigned char* data);
#endif
#if defined(USE_NXDN)
unsigned int readNXDNData(unsigned char* data);
#endif
#if defined(USE_M17)
unsigned int readM17Data(unsigned char* data);
#endif
@ -112,11 +137,19 @@ public:
#if defined(USE_DSTAR)
bool hasDStarSpace() const;
#endif
#if defined(USE_DMR)
bool hasDMRSpace1() const;
bool hasDMRSpace2() const;
#endif
#if defined(USE_YSF)
bool hasYSFSpace() const;
#endif
#if defined(USE_P25)
bool hasP25Space() const;
#endif
#if defined(USE_NXDN)
bool hasNXDNSpace() const;
#endif
#if defined(USE_M17)
bool hasM17Space() const;
#endif
@ -141,11 +174,19 @@ public:
#if defined(USE_DSTAR)
bool writeDStarData(const unsigned char* data, unsigned int length);
#endif
#if defined(USE_DMR)
bool writeDMRData1(const unsigned char* data, unsigned int length);
bool writeDMRData2(const unsigned char* data, unsigned int length);
#endif
#if defined(USE_YSF)
bool writeYSFData(const unsigned char* data, unsigned int length);
#endif
#if defined(USE_P25)
bool writeP25Data(const unsigned char* data, unsigned int length);
#endif
#if defined(USE_NXDN)
bool writeNXDNData(const unsigned char* data, unsigned int length);
#endif
#if defined(USE_M17)
bool writeM17Data(const unsigned char* data, unsigned int length);
#endif
@ -162,10 +203,18 @@ public:
#if defined(USE_DSTAR)
bool writeDStarInfo(const char* my1, const char* my2, const char* your, const char* type, const char* reflector);
#endif
#if defined(USE_DMR)
bool writeDMRInfo(unsigned int slotNo, const std::string& src, bool group, const std::string& dst, const char* type);
#endif
#if defined(USE_YSF)
bool writeYSFInfo(const char* source, const char* dest, unsigned char dgid, const char* type, const char* origin);
#endif
#if defined(USE_P25)
bool writeP25Info(const char* source, bool group, unsigned int dest, const char* type);
#endif
#if defined(USE_NXDN)
bool writeNXDNInfo(const char* source, bool group, unsigned int dest, const char* type);
#endif
#if defined(USE_M17)
bool writeM17Info(const char* source, const char* dest, const char* type);
#endif
@ -174,10 +223,11 @@ public:
#endif
bool writeIPInfo(const std::string& address);
#if defined(USE_DMR)
bool writeDMRStart(bool tx);
bool writeDMRShortLC(const unsigned char* lc);
bool writeDMRAbort(unsigned int slotNo);
#endif
bool writeTransparentData(const unsigned char* data, unsigned int length);
unsigned int readTransparentData(unsigned char* data);
@ -197,11 +247,19 @@ public:
private:
unsigned int m_protocolVersion;
#if defined(USE_DMR)
unsigned int m_dmrColorCode;
#endif
#if defined(USE_YSF)
bool m_ysfLoDev;
unsigned int m_ysfTXHang;
#endif
#if defined(USE_P25)
unsigned int m_p25TXHang;
#endif
#if defined(USE_NXDN)
unsigned int m_nxdnTXHang;
#endif
#if defined(USE_M17)
unsigned int m_m17TXHang;
#endif
@ -210,16 +268,26 @@ private:
bool m_txInvert;
bool m_pttInvert;
unsigned int m_txDelay;
#if defined(USE_DMR)
unsigned int m_dmrDelay;
#endif
float m_rxLevel;
float m_cwIdTXLevel;
#if defined(USE_DSTAR)
float m_dstarTXLevel;
#endif
#if defined(USE_DMR)
float m_dmrTXLevel;
#endif
#if defined(USE_YSF)
float m_ysfTXLevel;
#endif
#if defined(USE_P25)
float m_p25TXLevel;
#endif
#if defined(USE_NXDN)
float m_nxdnTXLevel;
#endif
#if defined(USE_M17)
float m_m17TXLevel;
#endif
@ -244,10 +312,18 @@ private:
#if defined(USE_DSTAR)
bool m_dstarEnabled;
#endif
#if defined(USE_DMR)
bool m_dmrEnabled;
#endif
#if defined(USE_YSF)
bool m_ysfEnabled;
#endif
#if defined(USE_P25)
bool m_p25Enabled;
#endif
#if defined(USE_NXDN)
bool m_nxdnEnabled;
#endif
#if defined(USE_M17)
bool m_m17Enabled;
#endif
@ -273,16 +349,24 @@ private:
CRingBuffer<unsigned char> m_rxDStarData;
CRingBuffer<unsigned char> m_txDStarData;
#endif
#if defined(USE_DMR)
CRingBuffer<unsigned char> m_rxDMRData1;
CRingBuffer<unsigned char> m_rxDMRData2;
CRingBuffer<unsigned char> m_txDMRData1;
CRingBuffer<unsigned char> m_txDMRData2;
#endif
#if defined(USE_YSF)
CRingBuffer<unsigned char> m_rxYSFData;
CRingBuffer<unsigned char> m_txYSFData;
#endif
#if defined(USE_P25)
CRingBuffer<unsigned char> m_rxP25Data;
CRingBuffer<unsigned char> m_txP25Data;
#endif
#if defined(USE_NXDN)
CRingBuffer<unsigned char> m_rxNXDNData;
CRingBuffer<unsigned char> m_txNXDNData;
#endif
#if defined(USE_M17)
CRingBuffer<unsigned char> m_rxM17Data;
CRingBuffer<unsigned char> m_txM17Data;
@ -309,11 +393,19 @@ private:
#if defined(USE_DSTAR)
unsigned int m_dstarSpace;
#endif
#if defined(USE_DMR)
unsigned int m_dmrSpace1;
unsigned int m_dmrSpace2;
#endif
#if defined(USE_YSF)
unsigned int m_ysfSpace;
#endif
#if defined(USE_P25)
unsigned int m_p25Space;
#endif
#if defined(USE_NXDN)
unsigned int m_nxdnSpace;
#endif
#if defined(USE_M17)
unsigned int m_m17Space;
#endif

View file

@ -69,14 +69,22 @@ REMOTE_COMMAND CRemoteControl::getCommand(const std::string& command)
else if (m_args.at(1U) == "d-star")
m_command = RCD_MODE_DSTAR;
#endif
#if defined(USE_DMR)
else if (m_args.at(1U) == "dmr")
m_command = RCD_MODE_DMR;
#endif
#if defined(USE_YSF)
else if (m_args.at(1U) == "ysf")
m_command = RCD_MODE_YSF;
#endif
#if defined(USE_P25)
else if (m_args.at(1U) == "p25")
m_command = RCD_MODE_P25;
#endif
#if defined(USE_NXDN)
else if (m_args.at(1U) == "nxdn")
m_command = RCD_MODE_NXDN;
#endif
#if defined(USE_M17)
else if (m_args.at(1U) == "m17")
m_command = RCD_MODE_M17;
@ -89,18 +97,26 @@ REMOTE_COMMAND CRemoteControl::getCommand(const std::string& command)
m_command = RCD_ENABLE_DSTAR;
else
#endif
#if defined(USE_DMR)
if (m_args.at(1U) == "dmr")
m_command = RCD_ENABLE_DMR;
else
#endif
#if defined(USE_YSF)
if (m_args.at(1U) == "ysf")
m_command = RCD_ENABLE_YSF;
else
#endif
#if defined(USE_P25)
if (m_args.at(1U) == "p25")
m_command = RCD_ENABLE_P25;
else
#endif
#if defined(USE_NXDN)
if (m_args.at(1U) == "nxdn")
m_command = RCD_ENABLE_NXDN;
else
#endif
#if defined(USE_M17)
if (m_args.at(1U) == "m17")
m_command = RCD_ENABLE_M17;
@ -123,18 +139,26 @@ REMOTE_COMMAND CRemoteControl::getCommand(const std::string& command)
m_command = RCD_DISABLE_DSTAR;
else
#endif
#if defined(USE_DMR)
if (m_args.at(1U) == "dmr")
m_command = RCD_DISABLE_DMR;
else
#endif
#if defined(USE_YSF)
if (m_args.at(1U) == "ysf")
m_command = RCD_DISABLE_YSF;
else
#endif
#if defined(USE_P25)
if (m_args.at(1U) == "p25")
m_command = RCD_DISABLE_P25;
else
#endif
#if defined(USE_NXDN)
if (m_args.at(1U) == "nxdn")
m_command = RCD_DISABLE_NXDN;
else
#endif
#if defined(USE_M17)
if (m_args.at(1U) == "m17")
m_command = RCD_DISABLE_M17;
@ -214,10 +238,18 @@ unsigned int CRemoteControl::getArgCount() const
#if defined(USE_DSTAR)
case RCD_MODE_DSTAR:
#endif
#if defined(USE_DMR)
case RCD_MODE_DMR:
#endif
#if defined(USE_YSF)
case RCD_MODE_YSF:
#endif
#if defined(USE_P25)
case RCD_MODE_P25:
#endif
#if defined(USE_NXDN)
case RCD_MODE_NXDN:
#endif
#if defined(USE_M17)
case RCD_MODE_M17:
#endif
@ -244,10 +276,18 @@ std::string CRemoteControl::getArgString(unsigned int n) const
#if defined(USE_DSTAR)
case RCD_MODE_DSTAR:
#endif
#if defined(USE_DMR)
case RCD_MODE_DMR:
#endif
#if defined(USE_YSF)
case RCD_MODE_YSF:
#endif
#if defined(USE_P25)
case RCD_MODE_P25:
#endif
#if defined(USE_NXDN)
case RCD_MODE_NXDN:
#endif
#if defined(USE_M17)
case RCD_MODE_M17:
#endif

View file

@ -35,10 +35,18 @@ enum REMOTE_COMMAND {
#if defined(USE_DSTAR)
RCD_MODE_DSTAR,
#endif
#if defined(USE_DMR)
RCD_MODE_DMR,
#endif
#if defined(USE_YSF)
RCD_MODE_YSF,
#endif
#if defined(USE_P25)
RCD_MODE_P25,
#endif
#if defined(USE_NXDN)
RCD_MODE_NXDN,
#endif
#if defined(USE_M17)
RCD_MODE_M17,
#endif
@ -48,10 +56,18 @@ enum REMOTE_COMMAND {
#if defined(USE_DSTAR)
RCD_ENABLE_DSTAR,
#endif
#if defined(USE_DMR)
RCD_ENABLE_DMR,
#endif
#if defined(USE_YSF)
RCD_ENABLE_YSF,
#endif
#if defined(USE_P25)
RCD_ENABLE_P25,
#endif
#if defined(USE_NXDN)
RCD_ENABLE_NXDN,
#endif
#if defined(USE_M17)
RCD_ENABLE_M17,
#endif
@ -64,10 +80,18 @@ enum REMOTE_COMMAND {
#if defined(USE_DSTAR)
RCD_DISABLE_DSTAR,
#endif
#if defined(USE_DMR)
RCD_DISABLE_DMR,
#endif
#if defined(USE_YSF)
RCD_DISABLE_YSF,
#endif
#if defined(USE_P25)
RCD_DISABLE_P25,
#endif
#if defined(USE_NXDN)
RCD_DISABLE_NXDN,
#endif
#if defined(USE_M17)
RCD_DISABLE_M17,
#endif

View file

@ -38,6 +38,7 @@ void CSync::addDStarSync(unsigned char* data)
}
#endif
#if defined(USE_DMR)
void CSync::addDMRDataSync(unsigned char* data, bool duplex)
{
assert(data != NULL);
@ -63,21 +64,27 @@ void CSync::addDMRAudioSync(unsigned char* data, bool duplex)
data[i + 13U] = (data[i + 13U] & ~SYNC_MASK[i]) | MS_SOURCED_AUDIO_SYNC[i];
}
}
#endif
#if defined(USE_YSF)
void CSync::addYSFSync(unsigned char* data)
{
assert(data != NULL);
::memcpy(data, YSF_SYNC_BYTES, YSF_SYNC_LENGTH_BYTES);
}
#endif
#if defined(USE_P25)
void CSync::addP25Sync(unsigned char* data)
{
assert(data != NULL);
::memcpy(data, P25_SYNC_BYTES, P25_SYNC_LENGTH_BYTES);
}
#endif
#if defined(USE_NXDN)
void CSync::addNXDNSync(unsigned char* data)
{
assert(data != NULL);
@ -85,6 +92,7 @@ void CSync::addNXDNSync(unsigned char* data)
for (unsigned int i = 0U; i < NXDN_FSW_BYTES_LENGTH; i++)
data[i] = (data[i] & ~NXDN_FSW_BYTES_MASK[i]) | NXDN_FSW_BYTES[i];
}
#endif
#if defined(USE_M17)
void CSync::addM17LinkSetupSync(unsigned char* data)

9
Sync.h
View file

@ -27,14 +27,23 @@ public:
#if defined(USE_DSTAR)
static void addDStarSync(unsigned char* data);
#endif
#if defined(USE_DMR)
static void addDMRDataSync(unsigned char* data, bool duplex);
static void addDMRAudioSync(unsigned char* data, bool duplex);
#endif
#if defined(USE_YSF)
static void addYSFSync(unsigned char* data);
#endif
#if defined(USE_P25)
static void addP25Sync(unsigned char* data);
#endif
#if defined(USE_NXDN)
static void addNXDNSync(unsigned char* data);
#endif
#if defined(USE_M17)
static void addM17LinkSetupSync(unsigned char* data);