From 26a24fc6ad8bc409f46757e0d9a7f5330c37bead Mon Sep 17 00:00:00 2001 From: jpmetal <64759156+jpmetal@users.noreply.github.com> Date: Sun, 15 Nov 2026 10:46:24 +0200 Subject: [PATCH] Fix the DMR EMB QR(16,7,6) codeword table (#2645) All 64 entries with bit 15 set differed by an XOR of 0x0060 from the codewords derived from the generator matrix in TS 102 361-1 table B.12, so error-free EMBs for colour codes 8-15 were flagged invalid by the hard decoder and "corrected" by the soft decoder. Single bit errors in those codewords, though within the correction capability, were reported as uncorrectable for 13 of the 15 bit positions (87 %). Co-authored-by: modificaz --- .../module/decode/dmr/message/voice/EMB.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/github/dsheirer/module/decode/dmr/message/voice/EMB.java b/src/main/java/io/github/dsheirer/module/decode/dmr/message/voice/EMB.java index 01042299..59fa9dd8 100644 --- a/src/main/java/io/github/dsheirer/module/decode/dmr/message/voice/EMB.java +++ b/src/main/java/io/github/dsheirer/module/decode/dmr/message/voice/EMB.java @@ -36,12 +36,12 @@ public class EMB 0x1CCE, 0x1EBD, 0x21B7, 0x23C4, 0x2552, 0x2721, 0x287E, 0x2A0D, 0x2C9B, 0x2EE8, 0x3055, 0x3226, 0x34B0, 0x36C3, 0x399C, 0x3BEF, 0x3D79, 0x3F0A, 0x411E, 0x436D, 0x45FB, 0x4788, 0x48D7, 0x4AA4, 0x4C32, 0x4E41, 0x50FC, 0x528F, 0x5419, 0x566A, 0x5935, 0x5B46, 0x5DD0, 0x5FA3, 0x60A9, 0x62DA, 0x644C, 0x663F, 0x6960, 0x6B13, 0x6D85, 0x6FF6, - 0x714B, 0x7338, 0x75AE, 0x77DD, 0x7882, 0x7AF1, 0x7C67, 0x7E14, 0x802F, 0x825C, 0x84CA, 0x86B9, 0x89E6, 0x8B95, - 0x8D03, 0x8F70, 0x91CD, 0x93BE, 0x9528, 0x975B, 0x9804, 0x9A77, 0x9CE1, 0x9E92, 0xA198, 0xA3EB, 0xA57D, 0xA70E, - 0xA851, 0xAA22, 0xACB4, 0xAEC7, 0xB07A, 0xB209, 0xB49F, 0xB6EC, 0xB9B3, 0xBBC0, 0xBD56, 0xBF25, 0xC131, 0xC342, - 0xC5D4, 0xC7A7, 0xC8F8, 0xCA8B, 0xCC1D, 0xCE6E, 0xD0D3, 0xD2A0, 0xD436, 0xD645, 0xD91A, 0xDB69, 0xDDFF, 0xDF8C, - 0xE086, 0xE2F5, 0xE463, 0xE610, 0xE94F, 0xEB3C, 0xEDAA, 0xEFD9, 0xF164, 0xF317, 0xF581, 0xF7F2, 0xF8AD, 0xFADE, - 0xFC48, 0xFE3B}; + 0x714B, 0x7338, 0x75AE, 0x77DD, 0x7882, 0x7AF1, 0x7C67, 0x7E14, 0x804F, 0x823C, 0x84AA, 0x86D9, 0x8986, 0x8BF5, + 0x8D63, 0x8F10, 0x91AD, 0x93DE, 0x9548, 0x973B, 0x9864, 0x9A17, 0x9C81, 0x9EF2, 0xA1F8, 0xA38B, 0xA51D, 0xA76E, + 0xA831, 0xAA42, 0xACD4, 0xAEA7, 0xB01A, 0xB269, 0xB4FF, 0xB68C, 0xB9D3, 0xBBA0, 0xBD36, 0xBF45, 0xC151, 0xC322, + 0xC5B4, 0xC7C7, 0xC898, 0xCAEB, 0xCC7D, 0xCE0E, 0xD0B3, 0xD2C0, 0xD456, 0xD625, 0xD97A, 0xDB09, 0xDD9F, 0xDFEC, + 0xE0E6, 0xE295, 0xE403, 0xE670, 0xE92F, 0xEB5C, 0xEDCA, 0xEFB9, 0xF104, 0xF377, 0xF5E1, 0xF792, 0xF8CD, 0xFABE, + 0xFC28, 0xFE5B}; private static final HashSet WORD_SET = new HashSet<>(); static