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 <jpmetal@freemail.gr>
This commit is contained in:
jpmetal
2026-11-15 10:46:24 +02:00
committed by GitHub
parent 9deabd0dcc
commit 26a24fc6ad

View File

@@ -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<Integer> WORD_SET = new HashSet<>();
static