Make the compilation of M17 conditional.

This commit is contained in:
Jonathan Naylor
2023-06-29 18:15:33 +01:00
parent 7724be0fd7
commit 72152cc82b
22 changed files with 339 additions and 83 deletions

View File

@@ -76,11 +76,13 @@ const unsigned char MMDVM_P25_LOST = 0x32U;
const unsigned char MMDVM_NXDN_DATA = 0x40U;
const unsigned char MMDVM_NXDN_LOST = 0x41U;
#if defined(USE_M17)
const unsigned char MMDVM_M17_LINK_SETUP = 0x45U;
const unsigned char MMDVM_M17_STREAM = 0x46U;
const unsigned char MMDVM_M17_PACKET = 0x47U;
const unsigned char MMDVM_M17_LOST = 0x48U;
const unsigned char MMDVM_M17_EOT = 0x49U;
#endif
#if defined(USE_POCSAG)
const unsigned char MMDVM_POCSAG_DATA = 0x50U;
@@ -126,7 +128,9 @@ const unsigned char CAP1_DMR = 0x02U;
const unsigned char CAP1_YSF = 0x04U;
const unsigned char CAP1_P25 = 0x08U;
const unsigned char CAP1_NXDN = 0x10U;
#if defined(USE_M17)
const unsigned char CAP1_M17 = 0x20U;
#endif
#if defined(USE_FM)
const unsigned char CAP1_FM = 0x40U;
#endif
@@ -144,7 +148,9 @@ m_ysfLoDev(false),
m_ysfTXHang(4U),
m_p25TXHang(5U),
m_nxdnTXHang(5U),
#if defined(USE_M17)
m_m17TXHang(5U),
#endif
m_duplex(duplex),
m_rxInvert(rxInvert),
m_txInvert(txInvert),
@@ -160,7 +166,9 @@ m_dmrTXLevel(0.0F),
m_ysfTXLevel(0.0F),
m_p25TXLevel(0.0F),
m_nxdnTXLevel(0.0F),
#if defined(USE_M17)
m_m17TXLevel(0.0F),
#endif
#if defined(USE_POCSAG)
m_pocsagTXLevel(0.0F),
#endif
@@ -186,7 +194,9 @@ m_dmrEnabled(false),
m_ysfEnabled(false),
m_p25Enabled(false),
m_nxdnEnabled(false),
#if defined(USE_M17)
m_m17Enabled(false),
#endif
#if defined(USE_POCSAG)
m_pocsagEnabled(false),
#endif
@@ -218,8 +228,10 @@ m_rxP25Data(1000U, "Modem RX P25"),
m_txP25Data(1000U, "Modem TX P25"),
m_rxNXDNData(1000U, "Modem RX NXDN"),
m_txNXDNData(1000U, "Modem TX NXDN"),
#if defined(USE_M17)
m_rxM17Data(1000U, "Modem RX M17"),
m_txM17Data(1000U, "Modem TX M17"),
#endif
#if defined(USE_POCSAG)
m_txPOCSAGData(1000U, "Modem TX POCSAG"),
#endif
@@ -247,7 +259,9 @@ m_dmrSpace2(0U),
m_ysfSpace(0U),
m_p25Space(0U),
m_nxdnSpace(0U),
#if defined(USE_M17)
m_m17Space(0U),
#endif
#if defined(USE_POCSAG)
m_pocsagSpace(0U),
#endif
@@ -346,7 +360,9 @@ void CModem::setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled,
m_ysfEnabled = ysfEnabled;
m_p25Enabled = p25Enabled;
m_nxdnEnabled = nxdnEnabled;
#if defined(USE_M17)
m_m17Enabled = m17Enabled;
#endif
#if defined(USE_POCSAG)
m_pocsagEnabled = pocsagEnabled;
#endif
@@ -369,7 +385,9 @@ void CModem::setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, flo
m_ysfTXLevel = ysfTXLevel;
m_p25TXLevel = p25TXLevel;
m_nxdnTXLevel = nxdnTXLevel;
#if defined(USE_M17)
m_m17TXLevel = m17TXLevel;
#endif
#if defined(USE_POCSAG)
m_pocsagTXLevel = pocsagTXLevel;
#endif
@@ -404,10 +422,12 @@ void CModem::setNXDNParams(unsigned int txHang)
m_nxdnTXHang = txHang;
}
#if defined(USE_M17)
void CModem::setM17Params(unsigned int txHang)
{
m_m17TXHang = txHang;
}
#endif
#if defined(USE_AX25)
void CModem::setAX25Params(int rxTwist, unsigned int txDelay, unsigned int slotTime, unsigned int pPersist)
@@ -741,6 +761,7 @@ void CModem::clock(unsigned int ms)
}
break;
#if defined(USE_M17)
case MMDVM_M17_LINK_SETUP: {
if (m_trace)
CUtils::dump(1U, "RX M17 Link Setup", m_buffer, m_length);
@@ -792,7 +813,7 @@ void CModem::clock(unsigned int ms)
m_rxM17Data.addData(&data, 1U);
}
break;
#endif
#if defined(USE_FM)
case MMDVM_FM_DATA: {
if (m_trace)
@@ -875,7 +896,9 @@ void CModem::clock(unsigned int ms)
m_p25Space = 0U;
m_nxdnSpace = 0U;
#if defined(USE_M17)
m_m17Space = 0U;
#endif
#if defined(USE_POCSAG)
m_pocsagSpace = 0U;
#endif
@@ -901,8 +924,10 @@ void CModem::clock(unsigned int ms)
if (m_length > (m_offset + 9U))
m_pocsagSpace = m_buffer[m_offset + 9U];
#endif
#if defined(USE_M17)
if (m_length > (m_offset + 10U))
m_m17Space = m_buffer[m_offset + 10U];
#endif
}
break;
@@ -933,7 +958,9 @@ void CModem::clock(unsigned int ms)
m_ysfSpace = m_buffer[m_offset + 6U];
m_p25Space = m_buffer[m_offset + 7U];
m_nxdnSpace = m_buffer[m_offset + 8U];
#if defined(USE_M17)
m_m17Space = m_buffer[m_offset + 9U];
#endif
#if defined(USE_FM)
m_fmSpace = m_buffer[m_offset + 10U];
#endif
@@ -955,7 +982,9 @@ void CModem::clock(unsigned int ms)
m_ysfSpace = 0U;
m_p25Space = 0U;
m_nxdnSpace = 0U;
#if defined(USE_M17)
m_m17Space = 0U;
#endif
#if defined(USE_POCSAG)
m_pocsagSpace = 0U;
#endif
@@ -1154,6 +1183,7 @@ void CModem::clock(unsigned int ms)
m_nxdnSpace--;
}
#if defined(USE_M17)
if (m_m17Space > 1U && !m_txM17Data.isEmpty()) {
unsigned char len = 0U;
m_txM17Data.getData(&len, 1U);
@@ -1181,6 +1211,7 @@ void CModem::clock(unsigned int ms)
m_m17Space--;
}
#endif
#if defined(USE_POCSAG)
if (m_pocsagSpace > 1U && !m_txPOCSAGData.isEmpty()) {
@@ -1365,6 +1396,7 @@ unsigned int CModem::readNXDNData(unsigned char* data)
return len;
}
#if defined(USE_M17)
unsigned int CModem::readM17Data(unsigned char* data)
{
assert(data != NULL);
@@ -1378,6 +1410,7 @@ unsigned int CModem::readM17Data(unsigned char* data)
return len;
}
#endif
#if defined(USE_FM)
unsigned int CModem::readFMData(unsigned char* data)
@@ -1632,6 +1665,7 @@ bool CModem::writeNXDNData(const unsigned char* data, unsigned int length)
return true;
}
#if defined(USE_M17)
bool CModem::hasM17Space() const
{
unsigned int space = m_txM17Data.freeSpace() / (M17_FRAME_LENGTH_BYTES + 4U);
@@ -1672,6 +1706,7 @@ bool CModem::writeM17Data(const unsigned char* data, unsigned int length)
return true;
}
#endif
#if defined(USE_POCSAG)
bool CModem::hasPOCSAGSpace() const
@@ -1945,6 +1980,7 @@ bool CModem::writeNXDNInfo(const char* source, bool group, unsigned int dest, co
return m_port->write(buffer, 31U) != 31;
}
#if defined(USE_M17)
bool CModem::writeM17Info(const char* source, const char* dest, const char* type)
{
assert(m_port != NULL);
@@ -1968,6 +2004,7 @@ bool CModem::writeM17Info(const char* source, const char* dest, const char* type
return m_port->write(buffer, 23U) != 23;
}
#endif
#if defined(USE_POCSAG)
bool CModem::writePOCSAGInfo(unsigned int ric, const std::string& message)
@@ -2083,10 +2120,12 @@ bool CModem::hasNXDN() const
return (m_capabilities1 & CAP1_NXDN) == CAP1_NXDN;
}
#if defined(USE_M17)
bool CModem::hasM17() const
{
return (m_capabilities1 & CAP1_M17) == CAP1_M17;
}
#endif
#if defined(USE_FM)
bool CModem::hasFM() const
@@ -2176,7 +2215,10 @@ bool CModem::readVersion()
#if defined(USE_DSTAR)
m_capabilities1 |= CAP1_DSTAR;
#endif
m_capabilities1 |= CAP1_DMR | CAP1_YSF | CAP1_P25 | CAP1_NXDN | CAP1_M17;
m_capabilities1 |= CAP1_DMR | CAP1_YSF | CAP1_P25 | CAP1_NXDN;
#if defined(USE_M17)
m_capabilities1 |= CAP1_M17;
#endif
#if defined(USE_POCSAG)
m_capabilities2 |= CAP2_POCSAG;
#endif
@@ -2214,8 +2256,10 @@ bool CModem::readVersion()
::strcat(modeText, " P25");
if (hasNXDN())
::strcat(modeText, " NXDN");
#if defined(USE_M17)
if (hasM17())
::strcat(modeText, " M17");
#endif
#if defined(USE_FM)
if (hasFM())
::strcat(modeText, " FM");
@@ -2320,8 +2364,10 @@ bool CModem::setConfig1()
if (m_pocsagEnabled)
buffer[4U] |= 0x20U;
#endif
#if defined(USE_M17)
if (m_m17Enabled)
buffer[4U] |= 0x40U;
#endif
buffer[5U] = m_txDelay / 10U; // In 10ms units
@@ -2366,9 +2412,13 @@ bool CModem::setConfig1()
buffer[23U] = (unsigned char)m_nxdnTXHang;
#if defined(USE_M17)
buffer[24U] = (unsigned char)(m_m17TXLevel * 2.55F + 0.5F);
buffer[25U] = (unsigned char)m_m17TXHang;
#else
buffer[24U] = 0U;
buffer[25U] = 0U;
#endif
// CUtils::dump(1U, "Written", buffer, 26U);
@@ -2448,8 +2498,10 @@ bool CModem::setConfig2()
if (m_fmEnabled)
buffer[4U] |= 0x20U;
#endif
#if defined(USE_M17)
if (m_m17Enabled)
buffer[4U] |= 0x40U;
#endif
buffer[5U] = 0x00U;
#if defined(USE_POCSAG)
@@ -2479,7 +2531,11 @@ bool CModem::setConfig2()
buffer[14U] = (unsigned char)(m_ysfTXLevel * 2.55F + 0.5F);
buffer[15U] = (unsigned char)(m_p25TXLevel * 2.55F + 0.5F);
buffer[16U] = (unsigned char)(m_nxdnTXLevel * 2.55F + 0.5F);
#if defined(USE_M17)
buffer[17U] = (unsigned char)(m_m17TXLevel * 2.55F + 0.5F);
#else
buffer[17U] = 0U;
#endif
#if defined(USE_POCSAG)
buffer[18U] = (unsigned char)(m_pocsagTXLevel * 2.55F + 0.5F);
#else
@@ -2501,7 +2557,11 @@ bool CModem::setConfig2()
buffer[23U] = (unsigned char)m_ysfTXHang;
buffer[24U] = (unsigned char)m_p25TXHang;
buffer[25U] = (unsigned char)m_nxdnTXHang;
#if defined(USE_M17)
buffer[26U] = (unsigned char)m_m17TXHang;
#else
buffer[26U] = 0U;
#endif
buffer[27U] = 0x00U;
buffer[28U] = 0x00U;