From c6f5a21a27c920daf86ef11f90b5121b42cce4b3 Mon Sep 17 00:00:00 2001 From: Randy Hall Date: Sun, 7 Mar 2021 07:27:34 -0800 Subject: [PATCH] Proposed fix for #683 Adding 2 byte offset to the data pointer passed to CDMRTA::add() in the "RF" section of CDMRSlot.cpp::writeModem(). Fixes the bug that incorrectly decodes talker alias coming in over RF. --- DMRSlot.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DMRSlot.cpp b/DMRSlot.cpp index c21f4ca..f374b48 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -656,7 +656,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) if (!(m_rfTalkerId & TALKER_ID_HEADER)) { if (m_rfTalkerId == TALKER_ID_NONE) m_rfTalkerAlias.reset(); - m_rfTalkerAlias.add(0, data, 7U); + m_rfTalkerAlias.add(0, data + 2U, 7U); m_display->writeDMRTA(m_slotNo, (unsigned char*)m_rfTalkerAlias.get(), "R"); if (m_dumpTAData) { @@ -675,7 +675,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) if (!(m_rfTalkerId & TALKER_ID_BLOCK1)) { if (m_rfTalkerId == TALKER_ID_NONE) m_rfTalkerAlias.reset(); - m_rfTalkerAlias.add(1, data, 7U); + m_rfTalkerAlias.add(1, data + 2U, 7U); m_display->writeDMRTA(m_slotNo, (unsigned char*)m_rfTalkerAlias.get(), "R"); if (m_dumpTAData) { @@ -694,7 +694,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) if (!(m_rfTalkerId & TALKER_ID_BLOCK2)) { if (m_rfTalkerId == TALKER_ID_NONE) m_rfTalkerAlias.reset(); - m_rfTalkerAlias.add(2, data, 7U); + m_rfTalkerAlias.add(2, data + 2U, 7U); m_display->writeDMRTA(m_slotNo, (unsigned char*)m_rfTalkerAlias.get(), "R"); if (m_dumpTAData) { @@ -713,7 +713,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) if (!(m_rfTalkerId & TALKER_ID_BLOCK3)) { if (m_rfTalkerId == TALKER_ID_NONE) m_rfTalkerAlias.reset(); - m_rfTalkerAlias.add(3, data, 7U); + m_rfTalkerAlias.add(3, data + 2U, 7U); m_display->writeDMRTA(m_slotNo, (unsigned char*)m_rfTalkerAlias.get(), "R"); if (m_dumpTAData) {