FreeCalypso > hg > gsm-net-reveng
annotate trau-decode/trau-hr-dump.c @ 84:5173515e1cc8 default tip
trau-decode: new program trau-parse-hex
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 25 Feb 2025 05:36:25 +0000 |
parents | e78c6b1ecb91 |
children |
rev | line source |
---|---|
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This program reads a 64 kbit/s timeslot recording file, examines one |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
3 * of the eight 8 kbit/s subslots (selected), looks for the sync pattern of |
28
9bcdb091c24d
trau-decode: new program trau-hr-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
27
diff
changeset
|
4 * GSM 08.61, decodes each frame as HRv1 speech and dumps everything it |
9bcdb091c24d
trau-decode: new program trau-hr-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
27
diff
changeset
|
5 * decodes. |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 */ |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
8 #include <sys/types.h> |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
9 #include <sys/file.h> |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
10 #include <sys/stat.h> |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #include <stdio.h> |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #include <stdint.h> |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #include <stdlib.h> |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 #include <string.h> |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 #include <strings.h> |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
16 #include <unistd.h> |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
18 static uint8_t *filebuf; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
19 static unsigned total_size; |
73
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
20 static int include_raw; |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 static void |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
23 read_ts_file(filename, subslot_arg) |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
24 char *filename, *subslot_arg; |
2
b2ef2c80fef1
trau-parse: add FR decoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
1
diff
changeset
|
25 { |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
26 FILE *inf; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
27 struct stat st; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
28 int subslot, right_shift; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
29 unsigned n; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
30 uint8_t *dp; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
31 int b; |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
33 inf = fopen(filename, "r"); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
34 if (!inf) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
35 perror(filename); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
36 exit(1); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
37 } |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
38 fstat(fileno(inf), &st); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
39 if (!S_ISREG(st.st_mode)) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
40 fprintf(stderr, "error: %s is not a regular file\n", filename); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
41 exit(1); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
42 } |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
43 total_size = st.st_size; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
44 if (total_size < 160) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
45 fprintf(stderr, "error: %s is too short\n", filename); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
46 exit(1); |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 } |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
48 filebuf = malloc(total_size); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
49 if (!filebuf) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
50 perror("malloc of file size"); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
51 exit(1); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
52 } |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
53 subslot = atoi(subslot_arg); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
54 if (subslot < 0 || subslot > 7) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
55 fprintf(stderr, "error: invalid subslot argument\n"); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
56 exit(1); |
2
b2ef2c80fef1
trau-parse: add FR decoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
1
diff
changeset
|
57 } |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
58 right_shift = 7 - subslot; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
59 dp = filebuf; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
60 for (n = 0; n < total_size; n++) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
61 b = getc(inf); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
62 if (b < 0) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
63 fprintf(stderr, |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
64 "error: getc() returned EOF contrary to st_size\n"); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
65 exit(1); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
66 } |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
67 *dp++ = (b >> right_shift) & 1; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
68 } |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
69 fclose(inf); |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 } |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 static int |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
73 check_sync(pos) |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
74 unsigned pos; |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 { |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
76 uint8_t *cand = filebuf + pos; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
77 unsigned n; |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
79 for (n = 0; n < 8; n++) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
80 if (cand[n]) |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 return 0; |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 } |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
83 if (!cand[8]) |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
84 return 0; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
85 if (cand[16]) |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
86 return 0; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
87 if (!cand[17]) |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
88 return 0; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
89 for (n = 3; n < 20; n++) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
90 if (!cand[n * 8]) |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 return 0; |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 } |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 return 1; |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 } |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 static void |
73
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
97 dump_raw_frame(frame_bits) |
74
e78c6b1ecb91
trau-decode: refactor trau-hr-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
73
diff
changeset
|
98 uint8_t *frame_bits; |
73
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
99 { |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
100 uint8_t *sp = frame_bits; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
101 unsigned n, m, d; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
102 |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
103 for (n = 0; n < 40; n++) { |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
104 d = 0; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
105 for (m = 0; m < 4; m++) { |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
106 d <<= 1; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
107 d |= *sp++; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
108 } |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
109 printf("%x", d); |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
110 } |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
111 putchar('\n'); |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
112 } |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
113 |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
114 static void |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
115 process_frame(pos) |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
116 unsigned pos; |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 { |
74
e78c6b1ecb91
trau-decode: refactor trau-hr-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
73
diff
changeset
|
118 uint8_t *frame = filebuf + pos; |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
119 |
28
9bcdb091c24d
trau-decode: new program trau-hr-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
27
diff
changeset
|
120 printf("Frame at 0x%x:\n", pos); |
73
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
121 if (include_raw) |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
122 dump_raw_frame(frame); |
74
e78c6b1ecb91
trau-decode: refactor trau-hr-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
73
diff
changeset
|
123 print_gsmhr_frame(frame); |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 } |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 static void |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
127 process_filebuf() |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 { |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
129 unsigned p, endp; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
130 int sync = 0, match; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
131 |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
132 endp = total_size - 160; |
42
61181373875d
trau-hr-dump: off-by-one error in file end limit
Mychaela Falconia <falcon@freecalypso.org>
parents:
28
diff
changeset
|
133 for (p = 0; p <= endp; ) { |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
134 match = check_sync(p); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
135 if (match != sync) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
136 printf("# %s frame sync at file offset 0x%x\n", |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
137 match ? "Acquired" : "Lost", p); |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 } |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
139 if (match) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
140 process_frame(p); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
141 if (!filebuf[p+158] && !filebuf[p+159]) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
142 printf( |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
143 "# both T bits equal 0, shifting frame alignment\n"); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
144 p += 158; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
145 } else |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
146 p += 160; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
147 } else |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
148 p++; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
149 sync = match; |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 } |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 } |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 main(argc, argv) |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 char **argv; |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 { |
73
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
156 char *filename, *subslot_arg; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
157 |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
158 switch (argc) { |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
159 case 3: |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
160 if (argv[1][0] == '-') |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
161 goto usage; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
162 filename = argv[1]; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
163 subslot_arg = argv[2]; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
164 include_raw = 0; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
165 break; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
166 case 4: |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
167 if (strcmp(argv[1], "-r")) |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
168 goto usage; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
169 if (argv[2][0] == '-') |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
170 goto usage; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
171 filename = argv[2]; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
172 subslot_arg = argv[3]; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
173 include_raw = 1; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
174 break; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
175 default: |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
176 usage: |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
177 fprintf(stderr, "usage: %s [-r] binfile subslot\n", argv[0]); |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 exit(1); |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 } |
73
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
180 read_ts_file(filename, subslot_arg); |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
181 process_filebuf(); |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 exit(0); |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 } |