Merge branch 'mqtt' into mqtt_plus

This commit is contained in:
Jonathan Naylor
2023-09-27 14:43:57 +01:00
3 changed files with 24 additions and 7 deletions

View File

@@ -566,22 +566,30 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
if (m_rfState != RS_RF_DATA || m_rfFrames == 0U) if (m_rfState != RS_RF_DATA || m_rfFrames == 0U)
return false; return false;
char title[80U];
// Regenerate the rate 1/2 payload // Regenerate the rate 1/2 payload
if (dataType == DT_RATE_12_DATA) { if (dataType == DT_RATE_12_DATA) {
CBPTC19696 bptc; CBPTC19696 bptc;
unsigned char payload[12U]; unsigned char payload[12U];
bptc.decode(data + 2U, payload); bptc.decode(data + 2U, payload);
::sprintf(title, "DMR Slot %u, Data 1/2", m_slotNo);
CUtils::dump(1U, title, payload, 12U);
bptc.encode(payload, data + 2U); bptc.encode(payload, data + 2U);
} else if (dataType == DT_RATE_34_DATA) { } else if (dataType == DT_RATE_34_DATA) {
CDMRTrellis trellis; CDMRTrellis trellis;
unsigned char payload[18U]; unsigned char payload[18U];
bool ret = trellis.decode(data + 2U, payload); bool ret = trellis.decode(data + 2U, payload);
if (ret) { if (ret) {
::sprintf(title, "DMR Slot %u, Data 3/4", m_slotNo);
CUtils::dump(1U, title, payload, 18U);
trellis.encode(payload, data + 2U); trellis.encode(payload, data + 2U);
} else { } else {
LogMessage("DMR Slot %u, unfixable RF rate 3/4 data", m_slotNo); LogMessage("DMR Slot %u, unfixable RF rate 3/4 data", m_slotNo);
CUtils::dump(1U, "Data", data + 2U, DMR_FRAME_LENGTH_BYTES); CUtils::dump(1U, "Data", data + 2U, DMR_FRAME_LENGTH_BYTES);
} }
} else {
::sprintf(title, "DMR Slot %u, Data 1/1", m_slotNo);
CUtils::dump(1U, title, data + 2U, 24U);
} }
// Regenerate the Slot Type // Regenerate the Slot Type
@@ -1750,24 +1758,33 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
return; return;
} }
char title[80U];
// Regenerate the rate 1/2 payload // Regenerate the rate 1/2 payload
if (dataType == DT_RATE_12_DATA) { if (dataType == DT_RATE_12_DATA) {
CBPTC19696 bptc; CBPTC19696 bptc;
unsigned char payload[12U]; unsigned char payload[12U];
bptc.decode(data + 2U, payload); bptc.decode(data + 2U, payload);
::sprintf(title, "DMR Slot %u, Data 1/2", m_slotNo);
CUtils::dump(1U, title, payload, 12U);
bptc.encode(payload, data + 2U); bptc.encode(payload, data + 2U);
} else if (dataType == DT_RATE_34_DATA) { } else if (dataType == DT_RATE_34_DATA) {
CDMRTrellis trellis; CDMRTrellis trellis;
unsigned char payload[18U]; unsigned char payload[18U];
bool ret = trellis.decode(data + 2U, payload); bool ret = trellis.decode(data + 2U, payload);
if (ret) { if (ret) {
::sprintf(title, "DMR Slot %u, Data 3/4", m_slotNo);
CUtils::dump(1U, title, payload, 18U);
trellis.encode(payload, data + 2U); trellis.encode(payload, data + 2U);
} else { } else {
LogMessage("DMR Slot %u, unfixable network rate 3/4 data", m_slotNo); LogMessage("DMR Slot %u, unfixable network rate 3/4 data", m_slotNo);
CUtils::dump(1U, "Data", data + 2U, DMR_FRAME_LENGTH_BYTES); CUtils::dump(1U, "Data", data + 2U, DMR_FRAME_LENGTH_BYTES);
} }
} else {
::sprintf(title, "DMR Slot %u, Data 1/1", m_slotNo);
CUtils::dump(1U, title, data + 2U, 24U);
} }
// Regenerate the Slot Type // Regenerate the Slot Type
CDMRSlotType slotType; CDMRSlotType slotType;
slotType.putData(data + 2U); slotType.putData(data + 2U);

View File

@@ -282,12 +282,12 @@ void CDMRTrellis::pointsToDibits(const unsigned char* points, signed char* dibit
void CDMRTrellis::bitsToTribits(const unsigned char* payload, unsigned char* tribits) const void CDMRTrellis::bitsToTribits(const unsigned char* payload, unsigned char* tribits) const
{ {
for (unsigned int i = 0U; i < 48U; i++) { for (unsigned int i = 0U; i < 48U; i++) {
unsigned int n = 143U - i * 3U; unsigned int n = i * 3U;
bool b1 = READ_BIT(payload, n) != 0x00U; bool b1 = READ_BIT(payload, n) != 0x00U;
n--; n++;
bool b2 = READ_BIT(payload, n) != 0x00U; bool b2 = READ_BIT(payload, n) != 0x00U;
n--; n++;
bool b3 = READ_BIT(payload, n) != 0x00U; bool b3 = READ_BIT(payload, n) != 0x00U;
unsigned char tribit = 0U; unsigned char tribit = 0U;
@@ -310,12 +310,12 @@ void CDMRTrellis::tribitsToBits(const unsigned char* tribits, unsigned char* pay
bool b2 = (tribit & 0x02U) == 0x02U; bool b2 = (tribit & 0x02U) == 0x02U;
bool b3 = (tribit & 0x01U) == 0x01U; bool b3 = (tribit & 0x01U) == 0x01U;
unsigned int n = 143U - i * 3U; unsigned int n = i * 3U;
WRITE_BIT(payload, n, b1); WRITE_BIT(payload, n, b1);
n--; n++;
WRITE_BIT(payload, n, b2); WRITE_BIT(payload, n, b2);
n--; n++;
WRITE_BIT(payload, n, b3); WRITE_BIT(payload, n, b3);
} }
} }

View File

@@ -19,6 +19,6 @@
#if !defined(VERSION_H) #if !defined(VERSION_H)
#define VERSION_H #define VERSION_H
const char* VERSION = "20230804"; const char* VERSION = "20230927";
#endif #endif