Merge branch 'M17_AX25_FM' into I2C

This commit is contained in:
Jonathan Naylor
2021-04-08 19:03:10 +01:00
69 changed files with 1281 additions and 738 deletions

102
Modem.cpp
View File

@@ -74,9 +74,10 @@ const unsigned char MMDVM_P25_LOST = 0x32U;
const unsigned char MMDVM_NXDN_DATA = 0x40U;
const unsigned char MMDVM_NXDN_LOST = 0x41U;
const unsigned char MMDVM_M17_HEADER = 0x45U;
const unsigned char MMDVM_M17_DATA = 0x46U;
const unsigned char MMDVM_M17_LOST = 0x47U;
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_POCSAG_DATA = 0x50U;
@@ -471,7 +472,7 @@ void CModem::clock(unsigned int ms)
unsigned char data = m_length - m_offset + 1U;
m_rxDStarData.addData(&data, 1U);
data = TAG_DATA;
data = TAG_DATA1;
m_rxDStarData.addData(&data, 1U);
m_rxDStarData.addData(m_buffer + m_offset, m_length - m_offset);
@@ -512,7 +513,7 @@ void CModem::clock(unsigned int ms)
if (m_buffer[3U] == (DMR_SYNC_DATA | DT_TERMINATOR_WITH_LC))
data = TAG_EOT;
else
data = TAG_DATA;
data = TAG_DATA1;
m_rxDMRData1.addData(&data, 1U);
m_rxDMRData1.addData(m_buffer + m_offset, m_length - m_offset);
@@ -529,7 +530,7 @@ void CModem::clock(unsigned int ms)
if (m_buffer[3U] == (DMR_SYNC_DATA | DT_TERMINATOR_WITH_LC))
data = TAG_EOT;
else
data = TAG_DATA;
data = TAG_DATA1;
m_rxDMRData2.addData(&data, 1U);
m_rxDMRData2.addData(m_buffer + m_offset, m_length - m_offset);
@@ -567,7 +568,7 @@ void CModem::clock(unsigned int ms)
unsigned char data = m_length - m_offset + 1U;
m_rxYSFData.addData(&data, 1U);
data = TAG_DATA;
data = TAG_DATA1;
m_rxYSFData.addData(&data, 1U);
m_rxYSFData.addData(m_buffer + m_offset, m_length - m_offset);
@@ -607,7 +608,7 @@ void CModem::clock(unsigned int ms)
unsigned char data = m_length - m_offset + 1U;
m_rxP25Data.addData(&data, 1U);
data = TAG_DATA;
data = TAG_DATA1;
m_rxP25Data.addData(&data, 1U);
m_rxP25Data.addData(m_buffer + m_offset, m_length - m_offset);
@@ -633,7 +634,7 @@ void CModem::clock(unsigned int ms)
unsigned char data = m_length - m_offset + 1U;
m_rxNXDNData.addData(&data, 1U);
data = TAG_DATA;
data = TAG_DATA1;
m_rxNXDNData.addData(&data, 1U);
m_rxNXDNData.addData(m_buffer + m_offset, m_length - m_offset);
@@ -652,9 +653,9 @@ void CModem::clock(unsigned int ms)
}
break;
case MMDVM_M17_HEADER: {
case MMDVM_M17_LINK_SETUP: {
if (m_trace)
CUtils::dump(1U, "RX M17 Header", m_buffer, m_length);
CUtils::dump(1U, "RX M17 Link Setup", m_buffer, m_length);
unsigned char data = m_length - 2U;
m_rxM17Data.addData(&data, 1U);
@@ -666,14 +667,28 @@ void CModem::clock(unsigned int ms)
}
break;
case MMDVM_M17_DATA: {
case MMDVM_M17_STREAM: {
if (m_trace)
CUtils::dump(1U, "RX M17 Data", m_buffer, m_length);
CUtils::dump(1U, "RX M17 Stream Data", m_buffer, m_length);
unsigned char data = m_length - 2U;
m_rxM17Data.addData(&data, 1U);
data = TAG_DATA;
data = TAG_DATA1;
m_rxM17Data.addData(&data, 1U);
m_rxM17Data.addData(m_buffer + 3U, m_length - 3U);
}
break;
case MMDVM_M17_PACKET: {
if (m_trace)
CUtils::dump(1U, "RX M17 Packet Data", m_buffer, m_length);
unsigned char data = m_length - 2U;
m_rxM17Data.addData(&data, 1U);
data = TAG_DATA2;
m_rxM17Data.addData(&data, 1U);
m_rxM17Data.addData(m_buffer + 3U, m_length - 3U);
@@ -699,7 +714,7 @@ void CModem::clock(unsigned int ms)
unsigned int data1 = m_length - m_offset + 1U;
m_rxFMData.addData((unsigned char*)&data1, sizeof(unsigned int));
unsigned char data2 = TAG_DATA;
unsigned char data2 = TAG_DATA1;
m_rxFMData.addData(&data2, 1U);
m_rxFMData.addData(m_buffer + m_offset, m_length - m_offset);
@@ -1023,10 +1038,17 @@ void CModem::clock(unsigned int ms)
m_txM17Data.getData(m_buffer, len);
if (m_trace) {
if (m_buffer[2U] == MMDVM_M17_HEADER)
CUtils::dump(1U, "TX M17 Header", m_buffer, len);
else
CUtils::dump(1U, "TX M17 Data", m_buffer, len);
switch (m_buffer[2U]) {
case MMDVM_M17_LINK_SETUP:
CUtils::dump(1U, "TX M17 Link Setup", m_buffer, len);
break;
case MMDVM_M17_STREAM:
CUtils::dump(1U, "TX M17 Stream Data", m_buffer, len);
break;
case MMDVM_M17_PACKET:
CUtils::dump(1U, "TX M17 Packet Data", m_buffer, len);
break;
}
}
int ret = m_port->write(m_buffer, len);
@@ -1060,8 +1082,12 @@ void CModem::clock(unsigned int ms)
m_txFMData.getData((unsigned char*)&len, sizeof(unsigned int));
m_txFMData.getData(m_buffer, len);
if (m_trace)
CUtils::dump(1U, "TX FM Data", m_buffer, len);
if (m_trace) {
if (m_buffer[2U] == MMDVM_FM_CONTROL)
CUtils::dump(1U, "TX FM Control", m_buffer, len);
else
CUtils::dump(1U, "TX FM Data", m_buffer, len);
}
int ret = m_port->write(m_buffer, len);
if (ret != int(len))
@@ -1300,7 +1326,7 @@ bool CModem::writeDStarData(const unsigned char* data, unsigned int length)
case TAG_HEADER:
buffer[2U] = MMDVM_DSTAR_HEADER;
break;
case TAG_DATA:
case TAG_DATA1:
buffer[2U] = MMDVM_DSTAR_DATA;
break;
case TAG_EOT:
@@ -1339,7 +1365,7 @@ bool CModem::writeDMRData1(const unsigned char* data, unsigned int length)
assert(data != NULL);
assert(length > 0U);
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
if (data[0U] != TAG_DATA1 && data[0U] != TAG_EOT)
return false;
unsigned char buffer[40U];
@@ -1362,7 +1388,7 @@ bool CModem::writeDMRData2(const unsigned char* data, unsigned int length)
assert(data != NULL);
assert(length > 0U);
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
if (data[0U] != TAG_DATA1 && data[0U] != TAG_EOT)
return false;
unsigned char buffer[40U];
@@ -1392,7 +1418,7 @@ bool CModem::writeYSFData(const unsigned char* data, unsigned int length)
assert(data != NULL);
assert(length > 0U);
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
if (data[0U] != TAG_DATA1 && data[0U] != TAG_EOT)
return false;
unsigned char buffer[130U];
@@ -1422,7 +1448,7 @@ bool CModem::writeP25Data(const unsigned char* data, unsigned int length)
assert(data != NULL);
assert(length > 0U);
if (data[0U] != TAG_HEADER && data[0U] != TAG_DATA && data[0U] != TAG_EOT)
if (data[0U] != TAG_HEADER && data[0U] != TAG_DATA1 && data[0U] != TAG_EOT)
return false;
unsigned char buffer[250U];
@@ -1452,7 +1478,7 @@ bool CModem::writeNXDNData(const unsigned char* data, unsigned int length)
assert(data != NULL);
assert(length > 0U);
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
if (data[0U] != TAG_DATA1 && data[0U] != TAG_EOT)
return false;
unsigned char buffer[130U];
@@ -1482,7 +1508,7 @@ bool CModem::writeM17Data(const unsigned char* data, unsigned int length)
assert(data != NULL);
assert(length > 0U);
if (data[0U] != TAG_HEADER && data[0U] != TAG_DATA && data[0U] != TAG_EOT)
if (data[0U] != TAG_HEADER && data[0U] != TAG_DATA1 && data[0U] != TAG_EOT)
return false;
unsigned char buffer[130U];
@@ -1491,9 +1517,9 @@ bool CModem::writeM17Data(const unsigned char* data, unsigned int length)
buffer[1U] = length + 2U;
if (data[0U] == TAG_HEADER)
buffer[2U] = MMDVM_M17_HEADER;
buffer[2U] = MMDVM_M17_LINK_SETUP;
else
buffer[2U] = MMDVM_M17_DATA;
buffer[2U] = MMDVM_M17_STREAM;
::memcpy(buffer + 3U, data + 1U, length - 1U);
@@ -1845,7 +1871,7 @@ bool CModem::writePOCSAGInfo(unsigned int ric, const std::string& message)
unsigned char buffer[250U];
buffer[0U] = MMDVM_FRAME_START;
buffer[1U] = length + 11U;
buffer[1U] = (unsigned char)length + 11U;
buffer[2U] = MMDVM_QSO_INFO;
buffer[3U] = MODE_POCSAG;
@@ -1854,7 +1880,7 @@ bool CModem::writePOCSAGInfo(unsigned int ric, const std::string& message)
::memcpy(buffer + 11U, message.c_str(), length);
int ret = m_port->write(buffer, length + 11U);
int ret = m_port->write(buffer, (unsigned int)length + 11U);
return ret != int(length + 11U);
}
@@ -1868,14 +1894,14 @@ bool CModem::writeIPInfo(const std::string& address)
unsigned char buffer[25U];
buffer[0U] = MMDVM_FRAME_START;
buffer[1U] = length + 4U;
buffer[1U] = (unsigned char)length + 4U;
buffer[2U] = MMDVM_QSO_INFO;
buffer[3U] = 250U;
::memcpy(buffer + 4U, address.c_str(), length);
int ret = m_port->write(buffer, length + 4U);
int ret = m_port->write(buffer, (unsigned int)length + 4U);
return ret != int(length + 4U);
}
@@ -2507,7 +2533,7 @@ bool CModem::sendCWId(const std::string& callsign)
{
assert(m_port != NULL);
unsigned int length = callsign.length();
unsigned int length = (unsigned int)callsign.length();
if (length > 200U)
length = 200U;
@@ -2653,7 +2679,7 @@ bool CModem::setFMCallsignParams()
assert(m_port != NULL);
unsigned char buffer[80U];
unsigned char len = 10U + m_fmCallsign.size();
unsigned char len = 10U + (unsigned char)m_fmCallsign.size();
buffer[0U] = MMDVM_FRAME_START;
buffer[1U] = len;
@@ -2714,7 +2740,7 @@ bool CModem::setFMAckParams()
assert(m_port != NULL);
unsigned char buffer[80U];
unsigned char len = 8U + m_fmRfAck.size();
unsigned char len = 8U + (unsigned char)m_fmRfAck.size();
buffer[0U] = MMDVM_FRAME_START;
buffer[1U] = len;
@@ -2833,7 +2859,7 @@ bool CModem::setFMExtParams()
assert(m_port != NULL);
unsigned char buffer[80U];
unsigned char len = 7U + m_fmExtAck.size();
unsigned char len = 7U + (unsigned char)m_fmExtAck.size();
buffer[0U] = MMDVM_FRAME_START;
buffer[1U] = len;