correct DMR ACK_RSP dstId truncation;

pull/133/head
Bryan Biedenkapp 1 month ago
parent b533ea178b
commit dbc30e97b4

@ -45,7 +45,7 @@ bool CSBK_ACK_RSP::decode(const uint8_t* data)
m_GI = (((csbkValue >> 56) & 0xFFU) & 0x40U) == 0x40U; // Group/Individual Flag
m_reason = (uint8_t)((csbkValue >> 33) & 0xFFU); // Reason Code
m_dstId = (uint32_t)((csbkValue >> 24) & 0xFFFFU); // Target Radio Address
m_dstId = (uint32_t)((csbkValue >> 24) & 0xFFFFFFU); // Target Radio Address
m_srcId = (uint32_t)(csbkValue & 0xFFFFFFU); // Source Radio Address
return true;

@ -10,6 +10,7 @@
#include "host/Defines.h"
#include "common/dmr/DMRDefines.h"
#include "common/dmr/lc/csbk/CSBK_ACK_RSP.h"
#include "common/dmr/lc/csbk/CSBK_MAINT.h"
#include "common/dmr/lc/csbk/CSBK_P_CLEAR.h"
#include "common/lookups/ChannelLookup.h"
@ -20,6 +21,25 @@
using namespace dmr::defines;
using namespace dmr::lc::csbk;
TEST_CASE("DMR Tier III acknowledgement preserves 24-bit target addresses", "[dmr][tier3][csbk]")
{
CSBK_ACK_RSP encoded;
encoded.setLastBlock(true);
encoded.setReason(ReasonCode::TS_ACK_RSN_MSG);
encoded.setResponse(0x55U);
encoded.setDstId(0xABCDEFU);
encoded.setSrcId(WUID_TSI);
uint8_t burst[DMR_FRAME_LENGTH_BYTES] = { 0U };
encoded.encode(burst);
CSBK_ACK_RSP decoded;
decoded.setDataType(DataType::CSBK);
REQUIRE(decoded.decode(burst));
CHECK(decoded.getDstId() == 0xABCDEFU);
CHECK(decoded.getSrcId() == WUID_TSI);
}
TEST_CASE("DMR Tier III maintenance preserves 24-bit addresses", "[dmr][tier3][csbk]")
{
CSBK_MAINT encoded;

Loading…
Cancel
Save

Powered by TurnKey Linux.