From 656fc1397b456706bdddf0e0438a8be792245059 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Sat, 14 Nov 2026 13:56:59 -0500 Subject: [PATCH] cleanup code; --- src/common/p25/lc/MotTalkerAlias.cpp | 46 ++++++++++++---------------- src/common/p25/lc/MotTalkerAlias.h | 14 +++------ tests/p25/UserAlias_Tests.cpp | 12 +++----- 3 files changed, 30 insertions(+), 42 deletions(-) diff --git a/src/common/p25/lc/MotTalkerAlias.cpp b/src/common/p25/lc/MotTalkerAlias.cpp index 4cc74f80..644815ae 100644 --- a/src/common/p25/lc/MotTalkerAlias.cpp +++ b/src/common/p25/lc/MotTalkerAlias.cpp @@ -26,22 +26,22 @@ using namespace p25::lc; // --------------------------------------------------------------------------- static const uint8_t LOOKUP_TABLE[256U] = { - 0xF2U,0x2EU,0x66U,0x90U,0x74U,0x8AU,0x6FU,0x78U,0xBBU,0x53U,0x03U,0x11U,0x68U,0xCDU,0x44U,0x17U, - 0x28U,0x5FU,0x1EU,0x84U,0x75U,0x79U,0x6EU,0x9BU,0x2CU,0xBEU,0x62U,0x2DU,0xF1U,0x7CU,0xB8U,0x83U, - 0xD9U,0x4EU,0x6DU,0x02U,0x61U,0x3DU,0xA8U,0x06U,0xB9U,0xF8U,0x9CU,0x37U,0x3AU,0x23U,0xC1U,0x50U, - 0xEDU,0x9FU,0xAFU,0x3BU,0xBDU,0x82U,0xBAU,0xA0U,0xDFU,0xC2U,0x47U,0x22U,0xF0U,0xEEU,0xA1U,0xFEU, - 0xA2U,0x10U,0x5BU,0x48U,0x57U,0xA3U,0x05U,0x60U,0x7BU,0x0DU,0xF9U,0x6CU,0xB3U,0x56U,0x4CU,0xBCU, - 0x29U,0xA4U,0x0FU,0xECU,0xB6U,0xA5U,0xA6U,0x3CU,0x7FU,0x6BU,0xB4U,0x21U,0xADU,0xAEU,0xC4U,0xC8U, - 0xC5U,0x5DU,0xDEU,0xE0U,0x1DU,0x19U,0x4BU,0xC6U,0x0CU,0x3FU,0x5AU,0xC7U,0xE1U,0x59U,0x55U,0x54U, - 0x4AU,0x43U,0x42U,0xE2U,0xE3U,0xFAU,0x00U,0xE4U,0xE5U,0x18U,0x41U,0x0BU,0x0AU,0xE6U,0xFCU,0xFDU, - 0xD2U,0xF6U,0xD4U,0x2BU,0x63U,0x49U,0x94U,0x5EU,0xA7U,0x5CU,0x70U,0x69U,0xF7U,0x08U,0xB1U,0x7DU, - 0x38U,0xCFU,0xCCU,0xD8U,0x51U,0x8FU,0xD5U,0x93U,0x6AU,0xF3U,0xEFU,0x7EU,0xFBU,0x64U,0xF4U,0x35U, - 0x27U,0x07U,0x31U,0x14U,0x87U,0x98U,0x76U,0x34U,0xCAU,0x92U,0x33U,0x1BU,0x4FU,0x8CU,0x09U,0x40U, - 0x32U,0x36U,0x77U,0x12U,0xD3U,0xC3U,0x01U,0xABU,0x72U,0x81U,0x95U,0xC9U,0xC0U,0xE9U,0x65U,0x52U, - 0x24U,0x30U,0x1CU,0xDBU,0x88U,0xE8U,0x97U,0x9DU,0x58U,0x26U,0x04U,0x39U,0xACU,0x2AU,0x9EU,0xAAU, - 0x25U,0xD7U,0xCEU,0xEBU,0x96U,0xF5U,0x0EU,0x8DU,0xDCU,0xA9U,0x2FU,0xDDU,0x1FU,0xEAU,0x91U,0xB7U, - 0xD6U,0x89U,0x8BU,0xD1U,0xB0U,0x99U,0x13U,0x7AU,0xE7U,0x9AU,0xB5U,0x86U,0xFFU,0x46U,0x85U,0xB2U, - 0x73U,0xDAU,0xBFU,0xD0U,0x71U,0xCBU,0x4DU,0x80U,0x15U,0x67U,0x16U,0x1AU,0x20U,0x8EU,0x45U,0x3EU + 0xF2U, 0x2EU, 0x66U, 0x90U, 0x74U, 0x8AU, 0x6FU, 0x78U, 0xBBU, 0x53U, 0x03U, 0x11U, 0x68U, 0xCDU, 0x44U, 0x17U, + 0x28U, 0x5FU, 0x1EU, 0x84U, 0x75U, 0x79U, 0x6EU, 0x9BU, 0x2CU, 0xBEU, 0x62U, 0x2DU, 0xF1U, 0x7CU, 0xB8U, 0x83U, + 0xD9U, 0x4EU, 0x6DU, 0x02U, 0x61U, 0x3DU, 0xA8U, 0x06U, 0xB9U, 0xF8U, 0x9CU, 0x37U, 0x3AU, 0x23U, 0xC1U, 0x50U, + 0xEDU, 0x9FU, 0xAFU, 0x3BU, 0xBDU, 0x82U, 0xBAU, 0xA0U, 0xDFU, 0xC2U, 0x47U, 0x22U, 0xF0U, 0xEEU, 0xA1U, 0xFEU, + 0xA2U, 0x10U, 0x5BU, 0x48U, 0x57U, 0xA3U, 0x05U, 0x60U, 0x7BU, 0x0DU, 0xF9U, 0x6CU, 0xB3U, 0x56U, 0x4CU, 0xBCU, + 0x29U, 0xA4U, 0x0FU, 0xECU, 0xB6U, 0xA5U, 0xA6U, 0x3CU, 0x7FU, 0x6BU, 0xB4U, 0x21U, 0xADU, 0xAEU, 0xC4U, 0xC8U, + 0xC5U, 0x5DU, 0xDEU, 0xE0U, 0x1DU, 0x19U, 0x4BU, 0xC6U, 0x0CU, 0x3FU, 0x5AU, 0xC7U, 0xE1U, 0x59U, 0x55U, 0x54U, + 0x4AU, 0x43U, 0x42U, 0xE2U, 0xE3U, 0xFAU, 0x00U, 0xE4U, 0xE5U, 0x18U, 0x41U, 0x0BU, 0x0AU, 0xE6U, 0xFCU, 0xFDU, + 0xD2U, 0xF6U, 0xD4U, 0x2BU, 0x63U, 0x49U, 0x94U, 0x5EU, 0xA7U, 0x5CU, 0x70U, 0x69U, 0xF7U, 0x08U, 0xB1U, 0x7DU, + 0x38U, 0xCFU, 0xCCU, 0xD8U, 0x51U, 0x8FU, 0xD5U, 0x93U, 0x6AU, 0xF3U, 0xEFU, 0x7EU, 0xFBU, 0x64U, 0xF4U, 0x35U, + 0x27U, 0x07U, 0x31U, 0x14U, 0x87U, 0x98U, 0x76U, 0x34U, 0xCAU, 0x92U, 0x33U, 0x1BU, 0x4FU, 0x8CU, 0x09U, 0x40U, + 0x32U, 0x36U, 0x77U, 0x12U, 0xD3U, 0xC3U, 0x01U, 0xABU, 0x72U, 0x81U, 0x95U, 0xC9U, 0xC0U, 0xE9U, 0x65U, 0x52U, + 0x24U, 0x30U, 0x1CU, 0xDBU, 0x88U, 0xE8U, 0x97U, 0x9DU, 0x58U, 0x26U, 0x04U, 0x39U, 0xACU, 0x2AU, 0x9EU, 0xAAU, + 0x25U, 0xD7U, 0xCEU, 0xEBU, 0x96U, 0xF5U, 0x0EU, 0x8DU, 0xDCU, 0xA9U, 0x2FU, 0xDDU, 0x1FU, 0xEAU, 0x91U, 0xB7U, + 0xD6U, 0x89U, 0x8BU, 0xD1U, 0xB0U, 0x99U, 0x13U, 0x7AU, 0xE7U, 0x9AU, 0xB5U, 0x86U, 0xFFU, 0x46U, 0x85U, 0xB2U, + 0x73U, 0xDAU, 0xBFU, 0xD0U, 0x71U, 0xCBU, 0x4DU, 0x80U, 0x15U, 0x67U, 0x16U, 0x1AU, 0x20U, 0x8EU, 0x45U, 0x3EU }; static const uint16_t MOT_TALKER_ALIAS_HEADER_CRC_MASK = 0x01AU; @@ -80,9 +80,11 @@ void MotTalkerAlias::reset() m_result = MotTalkerAliasResult(); } -/* Adds one decoded nine-byte Motorola link control word. */ +/* Decodes and assembles an alias. This uses the nine-byte Motorola link control word, + which may be either a header or a data block. The assembler maintains state across multiple calls + until a complete CRC-valid alias is assembled. */ -bool MotTalkerAlias::add(const uint8_t* lc) +bool MotTalkerAlias::decode(const uint8_t* lc, MotTalkerAliasResult& result) { if (lc == nullptr || lc[1U] != MFG_MOT) return false; @@ -130,18 +132,10 @@ bool MotTalkerAlias::add(const uint8_t* lc) } assemble(); - return m_complete; -} - -/* Gets the most recently completed alias. */ - -bool MotTalkerAlias::getResult(MotTalkerAliasResult& result) const -{ if (!m_complete) return false; result = m_result; - return true; } diff --git a/src/common/p25/lc/MotTalkerAlias.h b/src/common/p25/lc/MotTalkerAlias.h index 58c3e530..9d182ee2 100644 --- a/src/common/p25/lc/MotTalkerAlias.h +++ b/src/common/p25/lc/MotTalkerAlias.h @@ -68,18 +68,14 @@ namespace p25 void reset(); /** - * @brief Adds one decoded nine-byte Motorola link control word. + * @brief Decodes and assembles an alias. This uses the nine-byte Motorola link control word, + * which may be either a header or a data block. The assembler maintains state across multiple calls + * until a complete CRC-valid alias is assembled. * @param[in] lc Link control bytes, including LCO and MFId. - * @returns bool True when a complete, CRC-valid alias is available. - */ - bool add(const uint8_t* lc); - - /** - * @brief Gets the most recently completed alias. * @param[out] result Completed talker-alias fields. - * @returns bool True when a completed alias is available. + * @returns bool True when this word completes a CRC-valid alias and result was populated. */ - bool getResult(MotTalkerAliasResult& result) const; + bool decode(const uint8_t* lc, MotTalkerAliasResult& result); /** * @brief Encodes an alias into a header followed by numbered data-block LC words. diff --git a/tests/p25/UserAlias_Tests.cpp b/tests/p25/UserAlias_Tests.cpp index b7fc5d15..925b92c0 100644 --- a/tests/p25/UserAlias_Tests.cpp +++ b/tests/p25/UserAlias_Tests.cpp @@ -71,12 +71,11 @@ TEST_CASE("P25 Motorola talker alias assembly", "[p25][lc][user-alias][motorola] { 0x17U, 0x90U, 0x07U, 0xF9U, 0x4BU, 0x30U, 0x00U, 0x00U, 0x00U } }; + MotTalkerAliasResult result; for (std::size_t i = 0U; i + 1U < sizeof(words) / sizeof(words[0U]); ++i) - REQUIRE_FALSE(assembler.add(words[i])); - REQUIRE(assembler.add(words[7U])); + REQUIRE_FALSE(assembler.decode(words[i], result)); + REQUIRE(assembler.decode(words[7U], result)); - MotTalkerAliasResult result; - REQUIRE(assembler.getResult(result)); REQUIRE(result.netId == 0xBEE00U); REQUIRE(result.sysId == 0x2AEU); REQUIRE(result.srcId == 0xE67852U); @@ -92,11 +91,10 @@ TEST_CASE("P25 Motorola talker alias encoding round trip", "[p25][lc][user-alias REQUIRE(words.size() > 1U); MotTalkerAlias assembler; + MotTalkerAliasResult result; for (std::size_t i = 0U; i < words.size(); ++i) - REQUIRE(assembler.add(words[i].data()) == (i + 1U == words.size())); + REQUIRE(assembler.decode(words[i].data(), result) == (i + 1U == words.size())); - MotTalkerAliasResult result; - REQUIRE(assembler.getResult(result)); REQUIRE(result.netId == 0xBB800U); REQUIRE(result.sysId == 0x123U); REQUIRE(result.srcId == 0x456789U);