correct erroneous log messages; fix remote UDP mode handler (this was mishandling frames in some situations); update hotspot and modem submodules;

pull/86/head
Bryan Biedenkapp 11 months ago
parent 6fd3c68de3
commit 8823fc09b6

@ -353,7 +353,7 @@ void DataHeader::encodeExtAddr(uint8_t* data, bool noTrellis)
header[1U] = m_exSap & 0x3FU; // Service Access Point
header[1U] |= 0xC0U;
header[2U] = m_mfId; // Mfg Id.
//header[2U] = m_mfId; // Mfg Id.
header[3U] = (m_srcLlId >> 16) & 0xFFU; // Source Logical Link ID
header[4U] = (m_srcLlId >> 8) & 0xFFU;

@ -1 +1 @@
Subproject commit c45ec691a04741443f390354a366798db841900c
Subproject commit 718093aea3a5a6c80f7fceb1bbbc940168b8d98c

@ -1 +1 @@
Subproject commit ca0882a6de99c0dc05eac5de14a5e096c77232ff
Subproject commit f8358ed3118c28d35617dc2ba9209b2ed20e541b

@ -1519,6 +1519,10 @@ bool Host::rmtPortModemHandler(Modem* modem, uint32_t ms, modem::RESP_TYPE_DVM r
if (modem->getTrace())
Utils::dump(1U, "TX Remote Data", buffer, len);
// never send less then 3 bytes
if (len < 3U)
return false;
// send entire modem packet over the remote port
m_modemRemotePort->write(buffer, len);
}
@ -1540,10 +1544,24 @@ bool Host::rmtPortModemHandler(Modem* modem, uint32_t ms, modem::RESP_TYPE_DVM r
return true;
}
uint8_t len = data[1U];
int ret = modem->write(data, len);
if (ret != int(len))
LogError(LOG_MODEM, "Error writing remote data");
uint32_t pktLength = 0U;
switch (data[0U]) {
case DVM_SHORT_FRAME_START:
pktLength = data[1U];
break;
case DVM_LONG_FRAME_START:
pktLength = ((data[1U] & 0xFFU) << 8) + (data[2U] & 0xFFU);
break;
default:
LogError(LOG_MODEM, "Invalid start of modem frame!");
break;
}
if (pktLength > 0U) {
int ret = modem->write(data, pktLength);
if (ret != int(pktLength))
LogError(LOG_MODEM, "Error writing remote data");
}
}
// handled modem response

@ -1381,8 +1381,8 @@ bool Modem::writeDMRFrame1(const uint8_t* data, uint32_t length)
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
return false;
if (length > MAX_LENGTH) {
LogError(LOG_MODEM, "Modem::writeDMRData1(); request data to write >%u?, len = %u", MAX_LENGTH, length);
Utils::dump(1U, "[Modem::writeDMRData1()] Attmpted Data", data, length);
LogError(LOG_MODEM, "Modem::writeDMRFrame1(); request data to write >%u?, len = %u", MAX_LENGTH, length);
Utils::dump(1U, "[Modem::writeDMRFrame1()] Attmpted Data", data, length);
return false;
}
@ -1399,9 +1399,9 @@ bool Modem::writeDMRFrame1(const uint8_t* data, uint32_t length)
// write or buffer DMR slot 1 data to air interface
if (m_dmrSpace1 >= length) {
if (m_debug)
LogDebugEx(LOG_MODEM, "Modem::writeDMRData1()", "immediate write (len %u)", length);
LogDebugEx(LOG_MODEM, "Modem::writeDMRFrame1()", "immediate write (len %u)", length);
if (m_trace)
Utils::dump(1U, "[Modem::writeDMRData1()] Immediate TX DMR Data 1", buffer + 3U, length - 1U);
Utils::dump(1U, "[Modem::writeDMRFrame1()] Immediate TX DMR Data 1", buffer + 3U, length - 1U);
int ret = write(buffer, len);
if (ret != int(len)) {
@ -1435,8 +1435,8 @@ bool Modem::writeDMRFrame2(const uint8_t* data, uint32_t length)
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
return false;
if (length > MAX_LENGTH) {
LogError(LOG_MODEM, "Modem::writeDMRData2(); request data to write >%u?, len = %u", MAX_LENGTH, length);
Utils::dump(1U, "Modem::writeDMRData2(); Attmpted Data", data, length);
LogError(LOG_MODEM, "Modem::writeDMRFrame2(); request data to write >%u?, len = %u", MAX_LENGTH, length);
Utils::dump(1U, "Modem::writeDMRFrame2(); Attmpted Data", data, length);
return false;
}
@ -1453,9 +1453,9 @@ bool Modem::writeDMRFrame2(const uint8_t* data, uint32_t length)
// write or buffer DMR slot 2 data to air interface
if (m_dmrSpace2 >= length) {
if (m_debug)
LogDebugEx(LOG_MODEM, "Modem::writeDMRData2()", "immediate write (len %u)", length);
LogDebugEx(LOG_MODEM, "Modem::writeDMRFrame2()", "immediate write (len %u)", length);
if (m_trace)
Utils::dump(1U, "[Modem::writeDMRData2()] Immediate TX DMR Data 2", buffer + 3U, length - 1U);
Utils::dump(1U, "[Modem::writeDMRFrame2()] Immediate TX DMR Data 2", buffer + 3U, length - 1U);
int ret = write(buffer, len);
if (ret != int(len)) {
@ -1492,8 +1492,8 @@ bool Modem::writeP25Frame(const uint8_t* data, uint32_t length)
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
return false;
if (length > MAX_LENGTH) {
LogError(LOG_MODEM, "Modem::writeP25Data(); request data to write >%u?, len = %u", MAX_LENGTH, length);
Utils::dump(1U, "[Modem::writeP25Data()] Attmpted Data", data, length);
LogError(LOG_MODEM, "Modem::writeP25Frame(); request data to write >%u?, len = %u", MAX_LENGTH, length);
Utils::dump(1U, "[Modem::writeP25Frame()] Attmpted Data", data, length);
return false;
}
@ -1514,14 +1514,14 @@ bool Modem::writeP25Frame(const uint8_t* data, uint32_t length)
::memcpy(buffer + 4U, data + 1U, length - 1U);
}
uint8_t len = length + 2U;
uint32_t len = length + 2U;
// write or buffer P25 data to air interface
if (m_p25Space >= length) {
if (m_debug)
LogDebugEx(LOG_MODEM, "Modem::writeP25Data()", "immediate write (len %u)", length);
LogDebugEx(LOG_MODEM, "Modem::writeP25Frame()", "immediate write (len %u)", length);
if (m_trace)
Utils::dump(1U, "[Modem::writeP25Data()] Immediate TX P25 Data", buffer + 3U, length - 3U);
Utils::dump(1U, "[Modem::writeP25Frame()] Immediate TX P25 Data", buffer + 3U, length - 3U);
int ret = write(buffer, len);
if (ret != int(len)) {
@ -1555,8 +1555,8 @@ bool Modem::writeNXDNFrame(const uint8_t* data, uint32_t length)
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
return false;
if (length > MAX_LENGTH) {
LogError(LOG_MODEM, "Modem::writeNXDNData(); request data to write >%u?, len = %u", MAX_LENGTH, length);
Utils::dump(1U, "[Modem::writeNXDNData()] Attmpted Data", data, length);
LogError(LOG_MODEM, "Modem::writeNXDNFrame(); request data to write >%u?, len = %u", MAX_LENGTH, length);
Utils::dump(1U, "[Modem::writeNXDNFrame()] Attmpted Data", data, length);
return false;
}
@ -1573,9 +1573,9 @@ bool Modem::writeNXDNFrame(const uint8_t* data, uint32_t length)
// write or buffer NXDN data to air interface
if (m_nxdnSpace >= length) {
if (m_debug)
LogDebugEx(LOG_MODEM, "Modem::writeNXDNData()", "immediate write (len %u)", length);
LogDebugEx(LOG_MODEM, "Modem::writeNXDNFrame()", "immediate write (len %u)", length);
if (m_trace)
Utils::dump(1U, "[Modem::writeNXDNData()] Immediate TX NXDN Data", buffer + 3U, length - 1U);
Utils::dump(1U, "[Modem::writeNXDNFrame()] Immediate TX NXDN Data", buffer + 3U, length - 1U);
int ret = write(buffer, len);
if (ret != int(len)) {

Loading…
Cancel
Save

Powered by TurnKey Linux.