From 82138f20243f730901ea2b980de1eade87cd21b8 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Thu, 29 Sep 2022 15:56:05 -0400 Subject: [PATCH] fix issue where channel ID was excluded from AMBT broadcast messages; --- p25/lc/TSBK.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/p25/lc/TSBK.cpp b/p25/lc/TSBK.cpp index e03d982d..5559142e 100644 --- a/p25/lc/TSBK.cpp +++ b/p25/lc/TSBK.cpp @@ -398,10 +398,12 @@ void TSBK::encodeMBT(data::DataHeader& dataHeader, uint8_t* pduUserData) /** Block 1 */ pduUserData[0U] = (m_siteData.rfssId()) & 0xFFU; // RF Sub-System ID pduUserData[1U] = (m_siteData.siteId()) & 0xFFU; // Site ID - pduUserData[2U] = (m_siteData.channelNo() >> 8) & 0xFFU; // Transmit Channel Number - pduUserData[3U] = (m_siteData.channelNo() >> 0) & 0xFFU; - pduUserData[4U] = (m_siteData.channelNo() >> 8) & 0xFFU; // Receive Channel Number - pduUserData[5U] = (m_siteData.channelNo() >> 0) & 0xFFU; + pduUserData[2U] = ((m_siteData.channelId() & 0x0FU) << 4) + // Transmit Channel ID & Channel Number MSB + ((m_siteData.channelNo() >> 8) & 0xFFU); + pduUserData[3U] = (m_siteData.channelNo() >> 0) & 0xFFU; // Transmit Channel Number LSB + pduUserData[4U] = ((m_siteData.channelId() & 0x0FU) << 4) + // Receive Channel ID & Channel Number MSB + ((m_siteData.channelNo() >> 8) & 0xFFU); + pduUserData[5U] = (m_siteData.channelNo() >> 0) & 0xFFU; // Receive Channel Number LSB pduUserData[6U] = m_siteData.serviceClass(); // System Service Class } break; @@ -416,10 +418,12 @@ void TSBK::encodeMBT(data::DataHeader& dataHeader, uint8_t* pduUserData) pduUserData[0U] = (m_siteData.netId() >> 12) & 0xFFU; // Network ID (b19-12) pduUserData[1U] = (m_siteData.netId() >> 4) & 0xFFU; // Network ID (b11-b4) pduUserData[2U] = (m_siteData.netId() & 0x0FU) << 4; // Network ID (b3-b0) - pduUserData[3U] = (m_siteData.channelNo() >> 8) & 0xFFU; // Transmit Channel Number - pduUserData[4U] = (m_siteData.channelNo() >> 0) & 0xFFU; - pduUserData[5U] = (m_siteData.channelNo() >> 8) & 0xFFU; // Receive Channel Number - pduUserData[6U] = (m_siteData.channelNo() >> 0) & 0xFFU; + pduUserData[3U] = ((m_siteData.channelId() & 0x0FU) << 4) + // Transmit Channel ID & Channel Number MSB + ((m_siteData.channelNo() >> 8) & 0xFFU); + pduUserData[4U] = (m_siteData.channelNo() >> 0) & 0xFFU; // Transmit Channel Number LSB + pduUserData[5U] = ((m_siteData.channelId() & 0x0FU) << 4) + // Receive Channel ID & Channel Number MSB + ((m_siteData.channelNo() >> 8) & 0xFFU); + pduUserData[6U] = (m_siteData.channelNo() >> 0) & 0xFFU; // Receive Channel Number LSB pduUserData[7U] = m_siteData.serviceClass(); // System Service Class } break; @@ -440,10 +444,12 @@ void TSBK::encodeMBT(data::DataHeader& dataHeader, uint8_t* pduUserData) dataHeader.setAMBTField9(m_adjSiteId); // Site ID /** Block 1 */ - pduUserData[0U] = (m_adjChannelNo >> 8) & 0xFFU; // Transmit Channel Number - pduUserData[1U] = (m_adjChannelNo >> 0) & 0xFFU; - pduUserData[2U] = (m_adjChannelNo >> 8) & 0xFFU; // Receive Channel Number - pduUserData[3U] = (m_adjChannelNo >> 0) & 0xFFU; + pduUserData[0U] = ((m_adjChannelId & 0x0FU) << 4) + // Transmit Channel ID & Channel Number MSB + ((m_adjChannelNo >> 8) & 0xFFU); + pduUserData[1U] = (m_adjChannelNo >> 0) & 0xFFU; // Transmit Channel Number LSB + pduUserData[2U] = ((m_adjChannelId & 0x0FU) << 4) + // Receive Channel ID & Channel Number MSB + ((m_adjChannelNo >> 8) & 0xFFU); + pduUserData[3U] = (m_adjChannelNo >> 0) & 0xFFU; // Receive Channel Number LSB pduUserData[4U] = m_adjServiceClass; // System Service Class pduUserData[5U] = (m_siteData.netId() >> 12) & 0xFFU; // Network ID (b19-12) pduUserData[6U] = (m_siteData.netId() >> 4) & 0xFFU; // Network ID (b11-b4)