mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-21 23:45:49 +08:00
Merge branch 'mqtt' into mqtt_plus
This commit is contained in:
17
DMRSlot.cpp
17
DMRSlot.cpp
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user