mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-29 06:25:41 +08:00
Merge branch 'M17_AX25_FM' into I2C
This commit is contained in:
102
Modem.cpp
102
Modem.cpp
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user