FreeCalypso > hg > gsm-codec-lib
annotate hrutil/hex2dec.c @ 567:2fcb6b27ee9b
hrutil: new program gsmhr-rpf2hex
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 12 Feb 2025 02:32:21 +0000 |
parents | ec146b5b9c91 |
children |
rev | line source |
---|---|
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
2 * This program reads a TW-TS-005 Annex B hexadecimal file and converts it |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
3 * to ETSI *.dec GSM-HR decoder input format. |
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 */ |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <stdio.h> |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdint.h> |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <stdlib.h> |
471
b5f8ea41362b
gsmrec-dump: report DHF matches
Mychaela Falconia <falcon@freecalypso.org>
parents:
293
diff
changeset
|
9 #include <string.h> |
b5f8ea41362b
gsmrec-dump: report DHF matches
Mychaela Falconia <falcon@freecalypso.org>
parents:
293
diff
changeset
|
10 #include <strings.h> |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
11 #include <unistd.h> |
559
707d6f7a54dc
hrutil: new program tw5b-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
523
diff
changeset
|
12 #include "../libgsmhr1/tw_gsmhr.h" |
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
13 #include "../libtest/tw5reader.h" |
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
14 |
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 main(argc, argv) |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 char **argv; |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 { |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
18 char *infname, *outfname; |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
19 FILE *inf, *outf; |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
20 int opt, rc, allow_bfi_nodata = 0; |
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
21 unsigned lineno; |
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
22 uint8_t frame[TWTS005_MAX_FRAME]; |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
23 unsigned frame_len; |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
24 int16_t params[GSMHR_NUM_PARAMS_DEC]; |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
25 extern int optind; |
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
27 while ((opt = getopt(argc, argv, "f")) != EOF) { |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
28 switch (opt) { |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
29 case 'f': |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
30 allow_bfi_nodata = 1; |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
31 continue; |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
32 default: |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
33 usage: |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
34 fprintf(stderr, "usage: %s [-f] input.hex output.dec\n", |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
35 argv[0]); |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
36 exit(1); |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
37 } |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
38 } |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
39 if (argc != optind + 2) |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
40 goto usage; |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
41 infname = argv[optind]; |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
42 outfname = argv[optind+1]; |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
43 |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
44 inf = fopen(infname, "r"); |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
45 if (!inf) { |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
46 perror(infname); |
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 exit(1); |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 } |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
49 outf = fopen(outfname, "w"); |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
50 if (!outf) { |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
51 perror(outfname); |
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 exit(1); |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 } |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
54 |
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
55 lineno = 0; |
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
56 for (;;) { |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
57 rc = twts005_read_frame(inf, &lineno, frame, &frame_len); |
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 if (rc < 0) { |
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
59 fprintf(stderr, "%s line %u: not valid TW-TS-005\n", |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
60 infname, lineno); |
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 exit(1); |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 } |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 if (!rc) |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 break; |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
65 rc = gsmhr_rtp_in_direct(frame, frame_len, params); |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
66 if (rc < 0) { |
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
67 fprintf(stderr, |
559
707d6f7a54dc
hrutil: new program tw5b-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
523
diff
changeset
|
68 "%s line %u: not a valid GSM-HR frame\n", |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
69 infname, lineno); |
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
70 exit(1); |
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 } |
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
72 if (params[18] == 2 && !allow_bfi_nodata) { |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
73 fprintf(stderr, "%s line %u: BFI-no-data not allowed\n", |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
74 infname, lineno); |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
75 exit(1); |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
76 } |
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
77 fwrite(params, 2, GSMHR_NUM_PARAMS_DEC, outf); |
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 } |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 exit(0); |
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 } |