FreeCalypso > hg > gsm-net-reveng
changeset 80:58dfdb2fc6df
trau-parse: AMR 12k2 CRC
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 08 Feb 2025 18:26:48 +0000 |
parents | 8c1f20e845a1 |
children | 9eff2af191d5 |
files | trau-decode/parse-amr.c |
diffstat | 1 files changed, 25 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/trau-decode/parse-amr.c Sat Feb 08 09:13:30 2025 +0000 +++ b/trau-decode/parse-amr.c Sat Feb 08 18:26:48 2025 +0000 @@ -97,6 +97,31 @@ decode_mode_7(c_bits, d_bits) ubit_t *c_bits, *d_bits; { + ubit_t crc_collect[69]; + int crc1, crc2, crc3, crc4; + + bcopy(c_bits, crc_collect, 25); + bcopy(d_bits, crc_collect + 25, 29); + bcopy(d_bits + 38, crc_collect + 54, 12); + bcopy(d_bits + 86, crc_collect + 66, 3); + crc1 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 69, + d_bits + 91); + bcopy(d_bits + 94, crc_collect, 9); + bcopy(d_bits + 139, crc_collect + 9, 3); + crc2 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 12, + d_bits + 144); + bcopy(d_bits + 147, crc_collect, 12); + bcopy(d_bits + 195, crc_collect + 12, 3); + crc3 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 15, + d_bits + 200); + bcopy(d_bits + 203, crc_collect, 5); + bcopy(d_bits + 209, crc_collect + 5, 3); + bcopy(d_bits + 248, crc_collect + 8, 3); + crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 11, + d_bits + 253); + printf(" CRC %s %s %s %s\n", + crc1 ? "bad" : "good", crc2 ? "bad" : "good", + crc3 ? "bad" : "good", crc4 ? "bad" : "good"); } static void (*per_mode_decode[8])() = {