# HG changeset patch # User Mychaela Falconia # Date 1669345563 0 # Node ID edd2e20e709019d3d062fca64e3f3b6708ab1fa9 # Parent 4ae1dd43e3324699b2b531ed4f6bee50e895c8e3 gsmrec-dump: decode EFR frames diff -r 4ae1dd43e332 -r edd2e20e7090 Makefile --- a/Makefile Fri Nov 25 02:40:21 2022 +0000 +++ b/Makefile Fri Nov 25 03:06:03 2022 +0000 @@ -10,7 +10,7 @@ all: ${SUBDIR} frtest: libgsmfrp libtest -miscutil: libtest +miscutil: libgsmefr libtest ${SUBDIR}: FRC cd $@; ${MAKE} ${MFLAGS} CC=${CC} CFLAGS="${CFLAGS}" diff -r 4ae1dd43e332 -r edd2e20e7090 miscutil/Makefile --- a/miscutil/Makefile Fri Nov 25 02:40:21 2022 +0000 +++ b/miscutil/Makefile Fri Nov 25 03:06:03 2022 +0000 @@ -1,13 +1,14 @@ CC= gcc CFLAGS= -O2 PROGS= gsmrec-dump +LIBEFR= ../libgsmefr/libgsmefr.a LIBTEST=../libtest/libtest.a INSTBIN=/opt/freecalypso/bin all: ${PROGS} -gsmrec-dump: gsmrec-dump.o ${LIBTEST} - ${CC} ${CFLAGS} -o $@ gsmrec-dump.o ${LIBTEST} -lgsm +gsmrec-dump: gsmrec-dump.o ${LIBTEST} ${LIBEFR} + ${CC} ${CFLAGS} -o $@ gsmrec-dump.o ${LIBTEST} ${LIBEFR} -lgsm install: mkdir -p ${INSTBIN} diff -r 4ae1dd43e332 -r edd2e20e7090 miscutil/gsmrec-dump.c --- a/miscutil/gsmrec-dump.c Fri Nov 25 02:40:21 2022 +0000 +++ b/miscutil/gsmrec-dump.c Fri Nov 25 03:06:03 2022 +0000 @@ -7,6 +7,7 @@ #include #include #include +#include "../libgsmefr/gsm_efr.h" #include "../libtest/binreader.h" main(argc, argv) @@ -16,7 +17,7 @@ gsm dummy_state; unsigned frame_index; uint8_t frame[BINFILE_MAX_FRAME]; - gsm_signal fr_params[76]; + gsm_signal params[76]; int rc, i, j, n; if (argc != 2) { @@ -47,19 +48,30 @@ printf("BFI TAF=%u\n", frame[1] & 1); break; case 0xC0: - puts("EFR (decoding not implemented)"); + printf("EFR SID=%d LPC", EFR_sid_classify(frame)); + EFR_frame2params(frame, params); + n = 0; + for (i = 0; i < 5; i++) + printf(" %u", params[n++]); + putchar('\n'); + for (i = 0; i < 4; i++) { + putchar(' '); + for (j = 0; j < 13; j++) + printf(" %u", params[n++]); + putchar('\n'); + } break; case 0xD0: fputs("FR", stdout); - gsm_explode(dummy_state, frame, fr_params); + gsm_explode(dummy_state, frame, params); n = 0; for (i = 0; i < 8; i++) - printf(" %u", fr_params[n++]); + printf(" %u", params[n++]); putchar('\n'); for (i = 0; i < 4; i++) { putchar(' '); for (j = 0; j < 17; j++) - printf(" %u", fr_params[n++]); + printf(" %u", params[n++]); putchar('\n'); } break;