From f29f48503eeb4692db80cd29200f7fdffb233264 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Wed, 24 Feb 2016 07:37:58 +0000 Subject: [PATCH] Regenerate the rate 1/2 data payload. --- DMRSlot.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/DMRSlot.cpp b/DMRSlot.cpp index 6e60590..908a7cb 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -15,6 +15,7 @@ #include "DMRSlotType.h" #include "DMRShortLC.h" #include "DMRFullLC.h" +#include "BPTC19696.h" #include "DMRSlot.h" #include "DMRCSBK.h" #include "Utils.h" @@ -298,6 +299,14 @@ void CDMRSlot::writeModem(unsigned char *data) if (m_state != RS_RELAYING_RF_DATA) return; + // Regenerate the payload if possible + if (dataType == DT_RATE_12_DATA) { + CBPTC19696 bptc; + unsigned char payload[12U]; + bptc.decode(data + 2U, payload); + bptc.encode(payload, data + 2U); + } + // Regenerate the Slot Type slotType.getData(data + 2U); @@ -356,6 +365,14 @@ void CDMRSlot::writeModem(unsigned char *data) unsigned char dataType = slotType.getDataType(); if (dataType == DT_RATE_12_DATA || dataType == DT_RATE_34_DATA || dataType == DT_RATE_1_DATA) { + // Regenerate the payload if possible + if (dataType == DT_RATE_12_DATA) { + CBPTC19696 bptc; + unsigned char payload[12U]; + bptc.decode(data + 2U, payload); + bptc.encode(payload, data + 2U); + } + // Regenerate the Slot Type slotType.getData(data + 2U); @@ -875,6 +892,14 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) if (m_state != RS_RELAYING_NETWORK_DATA) return; + // Regenerate the payload if possible + if (dataType == DT_RATE_12_DATA) { + CBPTC19696 bptc; + unsigned char payload[12U]; + bptc.decode(data + 2U, payload); + bptc.encode(payload, data + 2U); + } + // Regenerate the Slot Type CDMRSlotType slotType; slotType.putData(data + 2U);