FreeCalypso > hg > gsm-codec-lib
annotate hrutil/hex2rpf.c @ 606:bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Thu, 04 Dec 2025 21:36:51 +0000 |
| parents | 62fe499ffc15 |
| children |
| rev | line source |
|---|---|
|
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
566
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
2 * This program reads a TW-TS-005 Annex B hexadecimal file and converts it to |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
3 * ETSI TS 101 318 raw packed format (good frames only, 14 bytes per frame). |
|
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> |
|
559
707d6f7a54dc
hrutil: new program tw5b-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
523
diff
changeset
|
11 #include "../libgsmhr1/tw_gsmhr.h" |
|
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
12 #include "../libtest/tw5reader.h" |
|
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
13 |
|
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 main(argc, argv) |
|
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 char **argv; |
|
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 { |
|
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
17 FILE *inf, *outf; |
|
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
18 unsigned lineno; |
|
566
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
19 uint8_t frame[TWTS005_MAX_FRAME], canon[GSMHR_FRAME_LEN_5993]; |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
20 unsigned frame_len, ft; |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
21 int rc; |
|
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
|
566
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
23 if (argc != 3) { |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
24 fprintf(stderr, "usage: %s input.hex output.hrpf\n", argv[0]); |
|
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 exit(1); |
|
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 } |
|
566
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
27 inf = fopen(argv[1], "r"); |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
28 if (!inf) { |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
29 perror(argv[1]); |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
30 exit(1); |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
31 } |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
32 outf = fopen(argv[2], "w"); |
|
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
33 if (!outf) { |
|
566
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
34 perror(argv[2]); |
|
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 exit(1); |
|
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 } |
|
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
37 |
|
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
38 lineno = 0; |
|
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
39 for (;;) { |
|
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
40 rc = twts005_read_frame(inf, &lineno, frame, &frame_len); |
|
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 if (rc < 0) { |
|
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
42 fprintf(stderr, "%s line %u: not valid TW-TS-005\n", |
|
566
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
43 argv[1], lineno); |
|
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 exit(1); |
|
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 } |
|
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 if (!rc) |
|
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 break; |
|
566
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
48 rc = gsmhr_rtp_in_preen(frame, frame_len, canon); |
|
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
49 if (rc < 0) { |
|
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
50 fprintf(stderr, |
|
559
707d6f7a54dc
hrutil: new program tw5b-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
523
diff
changeset
|
51 "%s line %u: not a valid GSM-HR frame\n", |
|
566
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
52 argv[1], lineno); |
|
523
86d4ec69b36c
miscutil: new program tw5a-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
471
diff
changeset
|
53 exit(1); |
|
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 } |
|
566
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
55 ft = canon[0] >> 4; |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
56 switch (ft) { |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
57 case 0: |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
58 break; |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
59 case 2: |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
60 gsmhr_ts101318_set_sid_codeword(canon + 1); |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
61 break; |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
62 default: |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
63 fprintf(stderr, |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
64 "%s line %u: frame type %u not valid for RPF\n", |
|
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
65 argv[1], lineno, ft); |
|
565
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
66 exit(1); |
|
ec146b5b9c91
hrutil: new program gsmhr-hex2dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
559
diff
changeset
|
67 } |
|
566
62fe499ffc15
hrutil: new program gsmhr-hex2rpf
Mychaela Falconia <falcon@freecalypso.org>
parents:
565
diff
changeset
|
68 fwrite(canon + 1, 1, GSMHR_FRAME_LEN_RPF, outf); |
|
23
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 } |
|
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 exit(0); |
|
baadb1cb744d
new debug utility gsmrec-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 } |
