FreeCalypso > hg > gsm-codec-lib
changeset 511:a5d61331b675
libgsmhr1: generate packed version of DHF
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 25 Aug 2024 02:50:43 +0000 |
parents | 5bf71b091323 |
children | 4f0ab833bec0 |
files | .hgignore libgsmhr1/Makefile libgsmhr1/gen-dhf-pack.c |
diffstat | 3 files changed, 57 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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$
--- 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
--- /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 <stdio.h> +#include <stdint.h> +#include <stdlib.h> +#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 <stdint.h>"); + 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); +}