# HG changeset patch # User Mychaela Falconia # Date 1724554243 0 # Node ID a5d61331b6753be5b4ec5a5ec7e20fe4d4e3a31b # Parent 5bf71b0913238c47cbcd96d8a3bd4464b1422286 libgsmhr1: generate packed version of DHF diff -r 5bf71b091323 -r a5d61331b675 .hgignore --- a/.hgignore Sun Aug 25 02:19:37 2024 +0000 +++ b/.hgignore Sun Aug 25 02:50:43 2024 +0000 @@ -72,7 +72,10 @@ ^frtest/gsmfr-encode-r$ ^frtest/gsmfr-preproc$ +^libgsmhr1/dhf_packed\.c$ +^libgsmhr1/gen-dhf-pack$ ^libgsmhr1/namespace\.h$ + ^libtwamr/namespace\.h$ ^miscutil/amrts-pcm8-compact$ diff -r 5bf71b091323 -r a5d61331b675 libgsmhr1/Makefile --- a/libgsmhr1/Makefile Sun Aug 25 02:19:37 2024 +0000 +++ b/libgsmhr1/Makefile Sun Aug 25 02:50:43 2024 +0000 @@ -1,17 +1,25 @@ -OBJS= dhf_params.o enc_out_order.o mathdp31.o mathhalf.o pack_frame.o \ - rtp_in.o rtp_in_direct.o sid_detect.o sid_reset.o sp_rom.o twts002_in.o\ - twts002_out.o unpack_frame.o +OBJS= dhf_packed.o dhf_params.o enc_out_order.o mathdp31.o mathhalf.o \ + pack_frame.o rtp_in.o rtp_in_direct.o sid_detect.o sid_reset.o sp_rom.o\ + twts002_in.o twts002_out.o unpack_frame.o HDRS= enc_out_order.h mathdp31.h mathhalf.h namespace.h sp_rom.h tw_gsmhr.h \ typedefs.h LIB= libgsmhr1.a include ../config.defs +DHF_PACK_OBJS= gen-dhf-pack.o dhf_params.o pack_frame.o + all: ${LIB} namespace.h: namespace.awk namespace.list awk -f namespace.awk namespace.list > $@ +gen-dhf-pack: ${DHF_PACK_OBJS} + ${CC} ${CFLAGS} -o $@ ${DHF_PACK_OBJS} + +dhf_packed.c: gen-dhf-pack + ./gen-dhf-pack > $@ + ${OBJS}: ${HDRS} ${LIB}: ${OBJS} @@ -25,4 +33,4 @@ # install -c -m 444 ${LIB} ${DESTDIR}${libdir} clean: - rm -f *.[oa] namespace.h errs + rm -f *.[oa] namespace.h dhf_packed.c gen-dhf-pack errs diff -r 5bf71b091323 -r a5d61331b675 libgsmhr1/gen-dhf-pack.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libgsmhr1/gen-dhf-pack.c Sun Aug 25 02:50:43 2024 +0000 @@ -0,0 +1,42 @@ +/* + * This helper program is built and executed during libgsmhr1 compilation + * process. It converts the spec-fixed decoder homing frame (DHF) + * from array-of-parameters form into the packed format of TS 101 318. + */ + +#include +#include +#include +#include "tw_gsmhr.h" + +static void emit_frame_body(const uint8_t *frame) +{ + int i; + + for (i = 0; i < GSMHR_FRAME_LEN_RPF; i++) { + if (i == 0 || i == 7) + putchar('\t'); + else + putchar(' '); + printf("0x%02X,", frame[i]); + if (i == 6 || i == 13) + putchar('\n'); + } +} + +int main(int argc, char **argv) +{ + uint8_t frame[GSMHR_FRAME_LEN_RPF]; + + gsmhr_pack_ts101318(gsmhr_dhf_params, frame); + + puts("/* This C module is auto-generated - do not edit! */"); + putchar('\n'); + puts("#include "); + puts("#include \"tw_gsmhr.h\""); + putchar('\n'); + puts("const uint8_t gsmhr_dhf_ts101318[GSMHR_FRAME_LEN_RPF] = {"); + emit_frame_body(frame); + puts("};"); + exit(0); +}