FreeCalypso > hg > gsm-codec-lib
diff libgsmhr1/gen-dhf-pack.c @ 511:a5d61331b675
libgsmhr1: generate packed version of DHF
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 25 Aug 2024 02:50:43 +0000 |
parents | |
children |
line wrap: on
line diff
--- /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); +}