# HG changeset patch # User Mychaela Falconia # Date 1741133155 0 # Node ID cec24988550a76ce6163fc78d83608dd316d388f # Parent 9cd468f6872c5ad5cbdc88a68c24f9393c1a4e5d trau-parse: AMR 5k15 CRC diff -r 9cd468f6872c -r cec24988550a trau-decode/parse-amr.c --- a/trau-decode/parse-amr.c Tue Mar 04 23:41:52 2025 +0000 +++ b/trau-decode/parse-amr.c Wed Mar 05 00:05:55 2025 +0000 @@ -61,6 +61,30 @@ decode_mode_1(c_bits, d_bits) ubit_t *c_bits, *d_bits; { + ubit_t crc_collect[57]; + int crc1, crc2, crc3, crc4; + + bcopy(c_bits, crc_collect, 25); + bcopy(d_bits + 46, crc_collect + 25, 16); + bcopy(d_bits + 64, crc_collect + 41, 11); + bcopy(d_bits + 87, crc_collect + 52, 5); + crc1 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 57, + d_bits + 92); + bcopy(d_bits + 95, crc_collect, 2); + bcopy(d_bits + 109, crc_collect + 2, 5); + crc2 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, + d_bits + 114); + bcopy(d_bits + 117, crc_collect, 2); + bcopy(d_bits + 131, crc_collect + 2, 5); + crc3 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, + d_bits + 136); + bcopy(d_bits + 139, crc_collect, 2); + bcopy(d_bits + 153, crc_collect + 2, 5); + crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, + d_bits + 158); + printf(" CRC %s %s %s %s\n", + crc1 ? "bad" : "good", crc2 ? "bad" : "good", + crc3 ? "bad" : "good", crc4 ? "bad" : "good"); } static void