# HG changeset patch # User Mychaela Falconia # Date 1738991795 0 # Node ID 729dbac9df82963d39eb8f77c30f8b56e6b603a1 # Parent d4ee42801cdc650c0396b89b1df79c65a6c799c0 trau-decode: factor out parse-data.c diff -r d4ee42801cdc -r 729dbac9df82 trau-decode/Makefile --- a/trau-decode/Makefile Sat Feb 08 04:57:15 2025 +0000 +++ b/trau-decode/Makefile Sat Feb 08 05:16:35 2025 +0000 @@ -20,7 +20,8 @@ trau-hr-dump-hex: crc8gen.o gsmhr_unpack.o hr-guts.o trau-hr-dump-hex.o ${CC} ${CFLAGS} -o $@ $^ -trau-parse: crc8gen.o parse-fr.o parse-fr-common.o parse-efr.o parse-main.o +trau-parse: crc8gen.o parse-data.o parse-fr.o parse-fr-common.o parse-efr.o\ + parse-main.o ${CC} ${CFLAGS} -o $@ $^ -lgsmfr2 -lgsmefr trau-sync8: trau-sync8.c diff -r d4ee42801cdc -r 729dbac9df82 trau-decode/parse-data.c --- /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 +#include +#include +#include +#include + +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]); +} diff -r d4ee42801cdc -r 729dbac9df82 trau-decode/parse-main.c --- a/trau-decode/parse-main.c Sat Feb 08 04:57:15 2025 +0000 +++ b/trau-decode/parse-main.c Sat Feb 08 05:16:35 2025 +0000 @@ -66,29 +66,6 @@ } 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'); -} - -static void -print_data_frame() -{ - 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); -} - -static void dump_raw_frame() { uint8_t *sp = frame_bits; @@ -184,18 +161,10 @@ case 0x16: case 0x17: case 0x14: - 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_frame(); + print_data_frame(frame_bits); break; case 0x1F: - 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]); + print_edata_frame(frame_bits); break; case 0x06: c6_11 = bits_to_num(frame_bits + 22, 6);