# HG changeset patch # User Mychaela Falconia # Date 1741131712 0 # Node ID 9cd468f6872c5ad5cbdc88a68c24f9393c1a4e5d # Parent 8b7ba6f4a85ed00b69641bb41a297d56e550eb93 trau-parse: AMR 5k90 CRC diff -r 8b7ba6f4a85e -r 9cd468f6872c trau-decode/parse-amr.c --- a/trau-decode/parse-amr.c Tue Mar 04 22:44:37 2025 +0000 +++ b/trau-decode/parse-amr.c Tue Mar 04 23:41:52 2025 +0000 @@ -67,6 +67,30 @@ decode_mode_2(c_bits, d_bits) ubit_t *c_bits, *d_bits; { + ubit_t crc_collect[54]; + int crc1, crc2, crc3, crc4; + + bcopy(c_bits, crc_collect, 25); + bcopy(d_bits + 41, crc_collect + 25, 17); + bcopy(d_bits + 67, crc_collect + 42, 8); + bcopy(d_bits + 88, crc_collect + 50, 4); + crc1 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 54, + d_bits + 92); + bcopy(d_bits + 95, crc_collect, 3); + bcopy(d_bits + 112, crc_collect + 3, 4); + crc2 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, + d_bits + 116); + bcopy(d_bits + 119, crc_collect, 8); + bcopy(d_bits + 140, crc_collect + 8, 4); + crc3 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 12, + d_bits + 144); + bcopy(d_bits + 147, crc_collect, 3); + bcopy(d_bits + 164, crc_collect + 3, 4); + crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, + d_bits + 168); + printf(" CRC %s %s %s %s\n", + crc1 ? "bad" : "good", crc2 ? "bad" : "good", + crc3 ? "bad" : "good", crc4 ? "bad" : "good"); } static void