diff --git a/DMRDefines.h b/DMRDefines.h index 92a1ab0..f9eafbf 100644 --- a/DMRDefines.h +++ b/DMRDefines.h @@ -70,6 +70,7 @@ const unsigned char PAYLOAD_RIGHT_MASK[] = {0x0FU, 0xFFU, 0xFFU, 0xFFU, 0xF const unsigned char VOICE_LC_HEADER_CRC_MASK[] = {0x96U, 0x96U, 0x96U}; const unsigned char TERMINATOR_WITH_LC_CRC_MASK[] = {0x99U, 0x99U, 0x99U}; +const unsigned char PI_HEADER_CRC_MASK[] = {0x69U, 0x69U}; const unsigned char DATA_HEADER_CRC_MASK[] = {0xCCU, 0xCCU}; const unsigned char CSBK_CRC_MASK[] = {0xA5U, 0xA5U}; diff --git a/DMRSlot.cpp b/DMRSlot.cpp index c992aef..c63b8bb 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -162,6 +162,12 @@ void CDMRSlot::writeModem(unsigned char *data) // Convert the Data Sync to be from the BS CSync::addDMRDataSync(data + 2U); + // Regenerate the payload + CBPTC19696 bptc; + unsigned char payload[12U]; + bptc.decode(data + 2U, payload); + bptc.encode(payload, data + 2U); + data[0U] = TAG_DATA; data[1U] = 0x00U; @@ -667,6 +673,12 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) // Convert the Data Sync to be from the BS CSync::addDMRDataSync(data + 2U); + // Regenerate the payload + CBPTC19696 bptc; + unsigned char payload[12U]; + bptc.decode(data + 2U, payload); + bptc.encode(payload, data + 2U); + data[0U] = TAG_DATA; data[1U] = 0x00U;