annotate hrutil/tfo-xfrm-dc.c @ 609:a2b2ca082dd7

hrutil: new program gsmhr-tfo-xfrm-dc
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 24 Feb 2026 04:16:57 +0000
parents hrutil/tfo-xfrm.c@fc7a59deb3c3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
546
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This program exercises our ThemWi implementation of TFO transform for
609
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
3 * GSM-HR. The present variant reads radio leg A Rx frames from an
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
4 * ETSI-format *.dec file and writes the "pristine" stream intended for
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
5 * radio leg B Tx into an ETSI-format *.cod file. This variant exercises
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
6 * libgsmhr1 TFO transform function in its most native form.
546
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 */
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <stdio.h>
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <stdint.h>
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <stdlib.h>
584
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
12 #include <unistd.h>
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
13 #include "../libgsmhr1/tw_gsmhr.h"
609
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
14 #include "../libtest/local_endian.h"
546
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 main(argc, argv)
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 char **argv;
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 {
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 char *infname, *outfname;
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 FILE *inf, *outf;
609
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
21 int big_endian;
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
22 unsigned frame_no;
584
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
23 struct gsmhr_rxfe_state *state;
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
24 int16_t prm_in[GSMHR_NUM_PARAMS_DEC], prm_out[GSMHR_NUM_PARAMS_ENC];
609
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
25 int opt, rc, dtxd = 0;
584
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
26 extern int optind;
546
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27
609
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
28 big_endian = is_native_big_endian();
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
29 while ((opt = getopt(argc, argv, "bdl")) != EOF) {
584
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
30 switch (opt) {
609
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
31 case 'b':
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
32 big_endian = 1;
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
33 continue;
584
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
34 case 'd':
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
35 dtxd = 1;
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
36 continue;
609
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
37 case 'l':
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
38 big_endian = 0;
584
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
39 continue;
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
40 default:
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
41 usage:
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
42 fprintf(stderr,
609
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
43 "usage: %s [-b|-l] [-d] input.dec output.cod\n",
584
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
44 argv[0]);
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
45 exit(1);
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
46 }
546
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 }
584
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
48 if (argc != optind + 2)
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
49 goto usage;
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
50 infname = argv[optind];
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
51 outfname = argv[optind+1];
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
52
546
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 inf = fopen(infname, "r");
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 if (!inf) {
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 perror(infname);
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 exit(1);
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 }
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 outf = fopen(outfname, "w");
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 if (!outf) {
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 perror(outfname);
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 exit(1);
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 }
584
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
63 state = gsmhr_rxfe_create();
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
64 if (!state) {
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
65 fprintf(stderr, "gsmhr_rxfe_create() failed!\n");
546
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 exit(1);
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 }
609
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
68 for (frame_no = 0; ; frame_no++) {
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
69 rc = read_dec_frame(inf, big_endian, prm_in, infname, frame_no);
546
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 if (!rc)
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 break;
584
fc7a59deb3c3 hrutil: new program gsmhr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents: 546
diff changeset
72 gsmhr_tfo_xfrm(state, dtxd, prm_in, prm_out);
609
a2b2ca082dd7 hrutil: new program gsmhr-tfo-xfrm-dc
Mychaela Falconia <falcon@freecalypso.org>
parents: 584
diff changeset
73 emit_cod_to_endian(outf, prm_out, big_endian);
546
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 }
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 fclose(outf);
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 exit(0);
b26df31124a4 frtest: new program gsmfr-tfo-xfrm
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 }