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);
+}