FreeCalypso > hg > gsm-net-reveng
diff trau-decode/parse-data.c @ 77:729dbac9df82
trau-decode: factor out parse-data.c
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 08 Feb 2025 05:16:35 +0000 |
parents | trau-decode/parse-main.c@d4ee42801cdc |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trau-decode/parse-data.c Sat Feb 08 05:16:35 2025 +0000 @@ -0,0 +1,67 @@ +/* + * This module contains a bit of code that has been factored out of + * trau-parse program; it handles data frames. + */ + +#include <stdio.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> + +static unsigned +bits_to_num(bits, nbits) + uint8_t *bits; + unsigned nbits; +{ + unsigned accum; + unsigned n; + + accum = 0; + for (n = 0; n < nbits; n++) { + accum <<= 1; + if (*bits) + accum |= 1; + bits++; + } + return accum; +} + +static void +print_data_subframe(nf, bits) + uint8_t *bits; +{ + unsigned nb; + + printf(" Data frame %d:", nf); + for (nb = 0; nb < 9; nb++) { + printf(" %02X", bits_to_num(bits, 8)); + bits += 8; + } + putchar('\n'); +} + +void +print_data_frame(frame_bits) + uint8_t *frame_bits; +{ + printf(" C6-C15: %u%u%u%u%u%u%u%u%u%u\n", frame_bits[22], + frame_bits[23], frame_bits[24], frame_bits[25], + frame_bits[26], frame_bits[27], frame_bits[28], + frame_bits[29], frame_bits[30], frame_bits[31]); + print_data_subframe(0, frame_bits + 4 * 8); + print_data_subframe(1, frame_bits + 13 * 8); + print_data_subframe(2, frame_bits + 22 * 8); + print_data_subframe(3, frame_bits + 31 * 8); +} + +void +print_edata_frame(frame_bits) + uint8_t *frame_bits; +{ + printf(" C6-C13: %u%u%u%u%u%u%u%u\n", frame_bits[22], + frame_bits[23], frame_bits[24], frame_bits[25], + frame_bits[26], frame_bits[27], frame_bits[28], + frame_bits[29]); + printf(" M1=%u M2=%u\n", frame_bits[30], frame_bits[31]); +}