changeset 51:914eeb3ab866

efr-sid OS#6538: generate test frames in hex form
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 12 Aug 2024 03:06:17 +0000
parents 0db059f4632d
children fd498c6898a8
files .hgignore Makefile efr-sid/Makefile utils/Makefile utils/gen-hex-lines.c
diffstat 5 files changed, 64 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Mon Aug 12 02:49:28 2024 +0000
+++ b/.hgignore	Mon Aug 12 03:06:17 2024 +0000
@@ -2,6 +2,7 @@
 
 \.[oa]$
 \.bin$
+\.hex$
 \.inc$
 \.gsm$
 \.gsmx$
@@ -60,3 +61,4 @@
 ^ul-test/fr-uplink\.
 
 ^utils/gen-hex-c$
+^utils/gen-hex-lines$
--- a/Makefile	Mon Aug 12 02:49:28 2024 +0000
+++ b/Makefile	Mon Aug 12 03:06:17 2024 +0000
@@ -4,6 +4,7 @@
 all:	${SUBDIR}
 
 ae-dec-dhf:	ul-test
+efr-sid:	utils
 pcma2efr:	utils
 pcmu2efr:	utils
 ringing:	utils
--- a/efr-sid/Makefile	Mon Aug 12 02:49:28 2024 +0000
+++ b/efr-sid/Makefile	Mon Aug 12 03:06:17 2024 +0000
@@ -6,7 +6,8 @@
 INPUT=	dtx01-frame71.cod
 OUT1=	efr-sid-test.gsmx
 OUT2=	efr-sid-test2.gsmx
-OUTPUTS=${OUT1} ${OUT2}
+OUT2H=	efr-sid-test2.hex
+OUTPUTS=${OUT1} ${OUT2} ${OUT2H}
 
 all:	${PROGS} ${OUTPUTS}
 
@@ -22,5 +23,8 @@
 ${OUT2}:	${PROG2} ${INPUT}
 	./${PROG2} ${INPUT} $@
 
+${OUT2H}:	${OUT2}
+	../utils/gen-hex-lines ${OUT2} $@ 31
+
 clean:
-	rm -f ${PROGS} *.o *.gsmx
+	rm -f ${PROGS} *.o *.gsmx *.hex
--- a/utils/Makefile	Mon Aug 12 02:49:28 2024 +0000
+++ b/utils/Makefile	Mon Aug 12 03:06:17 2024 +0000
@@ -1,11 +1,14 @@
 CC=	gcc
 CFLAGS=	-O2
-PROG=	gen-hex-c
+PROGS=	gen-hex-c gen-hex-lines
+
+all:	${PROGS}
 
-all:	${PROG}
+gen-hex-c:	gen-hex-c.c
+	${CC} ${CFLAGS} -o $@ $@.c
 
-${PROG}:	${PROG}.c
+gen-hex-lines:	gen-hex-lines.c
 	${CC} ${CFLAGS} -o $@ $@.c
 
 clean:
-	rm -f *.o ${PROG}
+	rm -f *.o ${PROGS}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utils/gen-hex-lines.c	Mon Aug 12 03:06:17 2024 +0000
@@ -0,0 +1,48 @@
+/*
+ * This program reads an arbitrary binary file and converts it into ASCII hex
+ * output with a specified number of bytes per line.  The intended purpose
+ * is to convert gsmx files (FR or EFR) into hex files with one frame per line.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+main(argc, argv)
+	char **argv;
+{
+	FILE *inf, *outf;
+	int c, lcnt, bpl;
+
+	if (argc != 4) {
+		fprintf(stderr,
+			"usage: %s input.bin output.hex bytes-per-line\n",
+			argv[0]);
+		exit(1);
+	}
+	inf = fopen(argv[1], "r");
+	if (!inf) {
+		perror(argv[1]);
+		exit(1);
+	}
+	outf = fopen(argv[2], "w");
+	if (!outf) {
+		perror(argv[2]);
+		exit(1);
+	}
+	bpl = atoi(argv[3]);
+	lcnt = 0;
+	for (;;) {
+		c = getc(inf);
+		if (c < 0)
+			break;
+		fprintf(outf, "%02X", c);
+		lcnt++;
+		if (lcnt >= bpl) {
+			putc('\n', outf);
+			lcnt = 0;
+		}
+	}
+	if (lcnt)
+		putc('\n', outf);
+	exit(0);
+}