FreeCalypso > hg > gsm-net-reveng
comparison trau-decode/parse-amr.c @ 90:31e17dd64fc1
trau-parse AMR: invalidate saved mode if CRC1 is bad
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 05 Mar 2025 00:40:43 +0000 |
parents | 865b104ffbab |
children | bbb28d5447f9 |
comparison
equal
deleted
inserted
replaced
89:865b104ffbab | 90:31e17dd64fc1 |
---|---|
74 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, d_bits + 135, 2, | 74 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, d_bits + 135, 2, |
75 d_bits + 148); | 75 d_bits + 148); |
76 printf(" CRC %s %s %s %s\n", | 76 printf(" CRC %s %s %s %s\n", |
77 crc1 ? "bad" : "good", crc2 ? "bad" : "good", | 77 crc1 ? "bad" : "good", crc2 ? "bad" : "good", |
78 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); | 78 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); |
79 if (crc1) | |
80 saved_mode_valid = 0; | |
79 } | 81 } |
80 | 82 |
81 static void | 83 static void |
82 decode_mode_1(c_bits, d_bits) | 84 decode_mode_1(c_bits, d_bits) |
83 ubit_t *c_bits, *d_bits; | 85 ubit_t *c_bits, *d_bits; |
104 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, | 106 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, |
105 d_bits + 158); | 107 d_bits + 158); |
106 printf(" CRC %s %s %s %s\n", | 108 printf(" CRC %s %s %s %s\n", |
107 crc1 ? "bad" : "good", crc2 ? "bad" : "good", | 109 crc1 ? "bad" : "good", crc2 ? "bad" : "good", |
108 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); | 110 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); |
111 if (crc1) | |
112 saved_mode_valid = 0; | |
109 } | 113 } |
110 | 114 |
111 static void | 115 static void |
112 decode_mode_2(c_bits, d_bits) | 116 decode_mode_2(c_bits, d_bits) |
113 ubit_t *c_bits, *d_bits; | 117 ubit_t *c_bits, *d_bits; |
134 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, | 138 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, |
135 d_bits + 168); | 139 d_bits + 168); |
136 printf(" CRC %s %s %s %s\n", | 140 printf(" CRC %s %s %s %s\n", |
137 crc1 ? "bad" : "good", crc2 ? "bad" : "good", | 141 crc1 ? "bad" : "good", crc2 ? "bad" : "good", |
138 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); | 142 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); |
143 if (crc1) | |
144 saved_mode_valid = 0; | |
139 } | 145 } |
140 | 146 |
141 static void | 147 static void |
142 decode_mode_3(c_bits, d_bits) | 148 decode_mode_3(c_bits, d_bits) |
143 ubit_t *c_bits, *d_bits; | 149 ubit_t *c_bits, *d_bits; |
166 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 9, | 172 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 9, |
167 d_bits + 180); | 173 d_bits + 180); |
168 printf(" CRC %s %s %s %s\n", | 174 printf(" CRC %s %s %s %s\n", |
169 crc1 ? "bad" : "good", crc2 ? "bad" : "good", | 175 crc1 ? "bad" : "good", crc2 ? "bad" : "good", |
170 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); | 176 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); |
177 if (crc1) | |
178 saved_mode_valid = 0; | |
171 } | 179 } |
172 | 180 |
173 static void | 181 static void |
174 decode_mode_4(c_bits, d_bits) | 182 decode_mode_4(c_bits, d_bits) |
175 ubit_t *c_bits, *d_bits; | 183 ubit_t *c_bits, *d_bits; |
201 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, | 209 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 7, |
202 d_bits + 191); | 210 d_bits + 191); |
203 printf(" CRC %s %s %s %s\n", | 211 printf(" CRC %s %s %s %s\n", |
204 crc1 ? "bad" : "good", crc2 ? "bad" : "good", | 212 crc1 ? "bad" : "good", crc2 ? "bad" : "good", |
205 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); | 213 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); |
214 if (crc1) | |
215 saved_mode_valid = 0; | |
206 } | 216 } |
207 | 217 |
208 static void | 218 static void |
209 decode_mode_5(c_bits, d_bits) | 219 decode_mode_5(c_bits, d_bits) |
210 ubit_t *c_bits, *d_bits; | 220 ubit_t *c_bits, *d_bits; |
235 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 10, | 245 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 10, |
236 d_bits + 199); | 246 d_bits + 199); |
237 printf(" CRC %s %s %s %s\n", | 247 printf(" CRC %s %s %s %s\n", |
238 crc1 ? "bad" : "good", crc2 ? "bad" : "good", | 248 crc1 ? "bad" : "good", crc2 ? "bad" : "good", |
239 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); | 249 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); |
250 if (crc1) | |
251 saved_mode_valid = 0; | |
240 } | 252 } |
241 | 253 |
242 static void | 254 static void |
243 decode_mode_6(c_bits, d_bits) | 255 decode_mode_6(c_bits, d_bits) |
244 ubit_t *c_bits, *d_bits; | 256 ubit_t *c_bits, *d_bits; |
270 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 28, | 282 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 28, |
271 d_bits + 253); | 283 d_bits + 253); |
272 printf(" CRC %s %s %s %s\n", | 284 printf(" CRC %s %s %s %s\n", |
273 crc1 ? "bad" : "good", crc2 ? "bad" : "good", | 285 crc1 ? "bad" : "good", crc2 ? "bad" : "good", |
274 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); | 286 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); |
287 if (crc1) | |
288 saved_mode_valid = 0; | |
275 } | 289 } |
276 | 290 |
277 static void | 291 static void |
278 decode_mode_7(c_bits, d_bits) | 292 decode_mode_7(c_bits, d_bits) |
279 ubit_t *c_bits, *d_bits; | 293 ubit_t *c_bits, *d_bits; |
301 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 11, | 315 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 11, |
302 d_bits + 253); | 316 d_bits + 253); |
303 printf(" CRC %s %s %s %s\n", | 317 printf(" CRC %s %s %s %s\n", |
304 crc1 ? "bad" : "good", crc2 ? "bad" : "good", | 318 crc1 ? "bad" : "good", crc2 ? "bad" : "good", |
305 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); | 319 crc3 ? "bad" : "good", crc4 ? "bad" : "good"); |
320 if (crc1) | |
321 saved_mode_valid = 0; | |
306 } | 322 } |
307 | 323 |
308 static void (*per_mode_decode[8])() = { | 324 static void (*per_mode_decode[8])() = { |
309 decode_mode_0, | 325 decode_mode_0, |
310 decode_mode_1, | 326 decode_mode_1, |