annotate trau-decode/parse-hex16.c @ 84:5173515e1cc8

trau-decode: new program trau-parse-hex
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 25 Feb 2025 05:36:25 +0000
parents trau-decode/trau-hr-dump-hex.c@b518ab15b518
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
75
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This program reads a line-based text file in an ad hoc hex format
84
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
3 * where each line represents a TRAU-16k frame. These TRAU-16k frames
75
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * are then decoded.
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 */
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <ctype.h>
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdio.h>
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <stdint.h>
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <stdlib.h>
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <string.h>
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include <strings.h>
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 static int
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 decode_hex_digit(c)
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 {
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 if (isdigit(c))
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 return c - '0';
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 else if (isupper(c))
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 return c - 'A' + 10;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 else
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 return c - 'a' + 10;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 }
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 static void
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 hex2bits(hex, bits)
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 char *hex;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 uint8_t *bits;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 {
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 unsigned n, m, x;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31
84
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
32 for (n = 0; n < 80; n++) {
75
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 x = decode_hex_digit(hex[n]);
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 for (m = 8; m; m >>= 1) {
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 if (x & m)
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 *bits++ = 1;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 else
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 *bits++ = 0;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 }
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 }
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 }
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42
84
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
43 static unsigned
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
44 bits_to_num(bits, nbits)
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
45 uint8_t *bits;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
46 unsigned nbits;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
47 {
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
48 unsigned accum;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
49 unsigned n;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
50
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
51 accum = 0;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
52 for (n = 0; n < nbits; n++) {
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
53 accum <<= 1;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
54 if (*bits)
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
55 accum |= 1;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
56 bits++;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
57 }
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
58 return accum;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
59 }
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
60
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
61 static void
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
62 process_frame(frame_bits)
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
63 uint8_t *frame_bits;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
64 {
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
65 unsigned c1_5, c6_11;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
66
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
67 printf(" C1-C5: %u%u%u%u%u", frame_bits[17], frame_bits[18],
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
68 frame_bits[19], frame_bits[20], frame_bits[21]);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
69 c1_5 = bits_to_num(frame_bits + 17, 5);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
70 switch (c1_5) {
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
71 case 0x02:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
72 fputs(" (FR UL)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
73 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
74 case 0x1C:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
75 fputs(" (FR DL)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
76 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
77 case 0x1A:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
78 fputs(" (EFR)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
79 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
80 case 0x10:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
81 fputs(" (idle UL)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
82 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
83 case 0x0E:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
84 fputs(" (idle DL)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
85 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
86 case 0x08:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
87 fputs(" (data UL)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
88 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
89 case 0x16:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
90 fputs(" (data DL)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
91 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
92 case 0x09:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
93 fputs(" (HR data UL)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
94 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
95 case 0x17:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
96 fputs(" (HR data DL)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
97 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
98 case 0x14:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
99 fputs(" (D144 sync)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
100 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
101 case 0x1F:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
102 fputs(" (E-TRAU)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
103 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
104 case 0x06:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
105 fputs(" (AMR)", stdout);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
106 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
107 }
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
108 putchar('\n');
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
109 switch (c1_5) {
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
110 case 0x02:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
111 case 0x1C:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
112 case 0x1A:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
113 case 0x10:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
114 case 0x0E:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
115 c6_11 = bits_to_num(frame_bits + 22, 6);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
116 printf(" C6-C11: %u\n", c6_11);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
117 printf(" C12=%u C13=%u C14=%u C15=%u\n", frame_bits[28],
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
118 frame_bits[29], frame_bits[30], frame_bits[31]);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
119 print_fr_efr_frame(frame_bits, c1_5);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
120 printf(" C16=%u C17=%u C18=%u C19=%u C20=%u C21=%u\n",
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
121 frame_bits[310], frame_bits[311], frame_bits[312],
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
122 frame_bits[313], frame_bits[314], frame_bits[315]);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
123 printf(" T1=%u T2=%u T3=%u T4=%u\n", frame_bits[316],
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
124 frame_bits[317], frame_bits[318], frame_bits[319]);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
125 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
126 case 0x08:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
127 case 0x09:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
128 case 0x16:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
129 case 0x17:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
130 case 0x14:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
131 print_data_frame(frame_bits);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
132 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
133 case 0x1F:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
134 print_edata_frame(frame_bits);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
135 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
136 case 0x06:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
137 print_amr_frame(frame_bits);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
138 break;
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
139 default:
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
140 printf(" C6-C15: %u%u%u%u%u%u%u%u%u%u\n", frame_bits[22],
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
141 frame_bits[23], frame_bits[24], frame_bits[25],
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
142 frame_bits[26], frame_bits[27], frame_bits[28],
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
143 frame_bits[29], frame_bits[30], frame_bits[31]);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
144 printf(" C16=%u C17=%u C18=%u C19=%u C20=%u C21=%u\n",
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
145 frame_bits[310], frame_bits[311], frame_bits[312],
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
146 frame_bits[313], frame_bits[314], frame_bits[315]);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
147 printf(" T1=%u T2=%u T3=%u T4=%u\n", frame_bits[316],
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
148 frame_bits[317], frame_bits[318], frame_bits[319]);
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
149 }
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
150 }
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
151
75
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 static void
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 process_record(hex_frame, lineno)
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 char *hex_frame;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 {
84
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
156 uint8_t frame_bits[320];
75
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157
84
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
158 printf("line %d:\n%s\n", lineno, hex_frame);
75
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 hex2bits(hex_frame, frame_bits);
84
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
160 process_frame(frame_bits);
75
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 }
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 static void
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 process_line(linebuf, filename, lineno)
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 char *linebuf, *filename;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 {
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 char *cp, *np;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 unsigned n;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 for (cp = linebuf; isspace(*cp); cp++)
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171 ;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 if (*cp == '\0' || *cp == '#')
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173 return;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 np = cp;
84
5173515e1cc8 trau-decode: new program trau-parse-hex
Mychaela Falconia <falcon@freecalypso.org>
parents: 75
diff changeset
175 for (n = 0; n < 80; n++) {
75
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 if (!isxdigit(*cp))
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177 goto inv;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 cp++;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179 }
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180 if (*cp) {
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181 if (!isspace(*cp))
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182 goto inv;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 *cp++ = '\0';
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 }
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 while (isspace(*cp))
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186 cp++;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 if (*cp != '\0' && *cp != '#')
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188 goto inv;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189 process_record(np, lineno);
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 return;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 inv: fprintf(stderr, "%s line %d: invalid syntax\n", filename, lineno);
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193 exit(1);
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 }
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196 main(argc, argv)
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 char **argv;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 {
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 FILE *inf;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 char linebuf[128];
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201 int lineno;
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 if (argc != 2) {
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 fprintf(stderr, "usage: %s hex-file\n", argv[0]);
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205 exit(1);
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 }
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 inf = fopen(argv[1], "r");
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 if (!inf) {
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 perror(argv[1]);
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 exit(1);
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 }
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 for (lineno = 1; fgets(linebuf, sizeof linebuf, inf); lineno++)
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 process_line(linebuf, argv[1], lineno);
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 exit(0);
b518ab15b518 trau-decode: new program trau-hr-dump-hex
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215 }