FreeCalypso > hg > gsm-net-reveng
annotate trau-decode/trau-hr-dump.c @ 96:13d47c9df28b
trau-hr-dump: add -s option for subset sync pattern match
With this option, trau-hr-dump can be used to decode TFO-HRv1
captures that contain embedded TFO messages.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 18 Mar 2025 23:55:29 +0000 |
parents | 7c7ace4999c1 |
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; |
96
13d47c9df28b
trau-hr-dump: add -s option for subset sync pattern match
Mychaela Falconia <falcon@freecalypso.org>
parents:
95
diff
changeset
|
20 static int include_raw, sync_subset; |
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; |
96
13d47c9df28b
trau-hr-dump: add -s option for subset sync pattern match
Mychaela Falconia <falcon@freecalypso.org>
parents:
95
diff
changeset
|
85 if (cand[16] && !sync_subset) |
27
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++) { |
96
13d47c9df28b
trau-hr-dump: add -s option for subset sync pattern match
Mychaela Falconia <falcon@freecalypso.org>
parents:
95
diff
changeset
|
90 if (sync_subset && (n & 1) == 0) |
13d47c9df28b
trau-hr-dump: add -s option for subset sync pattern match
Mychaela Falconia <falcon@freecalypso.org>
parents:
95
diff
changeset
|
91 continue; |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
92 if (!cand[n * 8]) |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 return 0; |
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 return 1; |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 } |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 static void |
73
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
99 dump_raw_frame(frame_bits) |
74
e78c6b1ecb91
trau-decode: refactor trau-hr-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
73
diff
changeset
|
100 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
|
101 { |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
102 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
|
103 unsigned n, m, d; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
104 |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
105 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
|
106 d = 0; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
107 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
|
108 d <<= 1; |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
109 d |= *sp++; |
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 printf("%x", d); |
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 putchar('\n'); |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
114 } |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
115 |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
116 static void |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
117 process_frame(pos) |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
118 unsigned pos; |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 { |
74
e78c6b1ecb91
trau-decode: refactor trau-hr-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
73
diff
changeset
|
120 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
|
121 |
28
9bcdb091c24d
trau-decode: new program trau-hr-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
27
diff
changeset
|
122 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
|
123 if (include_raw) |
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
124 dump_raw_frame(frame); |
74
e78c6b1ecb91
trau-decode: refactor trau-hr-dump
Mychaela Falconia <falcon@freecalypso.org>
parents:
73
diff
changeset
|
125 print_gsmhr_frame(frame); |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 } |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 static void |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
129 process_filebuf() |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 { |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
131 unsigned p, endp; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
132 int sync = 0, match; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
133 |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
134 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
|
135 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
|
136 match = check_sync(p); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
137 if (match != sync) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
138 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
|
139 match ? "Acquired" : "Lost", p); |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 } |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
141 if (match) { |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
142 process_frame(p); |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
143 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
|
144 printf( |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
145 "# 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
|
146 p += 158; |
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 += 160; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
149 } else |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
150 p++; |
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
151 sync = match; |
0
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 } |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 main(argc, argv) |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 char **argv; |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 { |
95
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
158 extern int optind; |
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
159 int c; |
73
06f241846c67
trau-hr-dump: add -r option for raw frame output
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
160 |
96
13d47c9df28b
trau-hr-dump: add -s option for subset sync pattern match
Mychaela Falconia <falcon@freecalypso.org>
parents:
95
diff
changeset
|
161 while ((c = getopt(argc, argv, "rs")) != EOF) { |
95
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
162 switch (c) { |
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
163 case 'r': |
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
164 include_raw = 1; |
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
165 continue; |
96
13d47c9df28b
trau-hr-dump: add -s option for subset sync pattern match
Mychaela Falconia <falcon@freecalypso.org>
parents:
95
diff
changeset
|
166 case 's': |
13d47c9df28b
trau-hr-dump: add -s option for subset sync pattern match
Mychaela Falconia <falcon@freecalypso.org>
parents:
95
diff
changeset
|
167 sync_subset = 1; |
13d47c9df28b
trau-hr-dump: add -s option for subset sync pattern match
Mychaela Falconia <falcon@freecalypso.org>
parents:
95
diff
changeset
|
168 continue; |
95
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
169 default: |
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
170 usage: |
96
13d47c9df28b
trau-hr-dump: add -s option for subset sync pattern match
Mychaela Falconia <falcon@freecalypso.org>
parents:
95
diff
changeset
|
171 fprintf(stderr, "usage: %s [-r] [-s] binfile subslot\n", |
95
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
172 argv[0]); |
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
173 exit(1); |
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
174 } |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 } |
95
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
176 if (argc != optind + 2) |
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
177 goto usage; |
7c7ace4999c1
trau-hr-dump: change code to use getopt
Mychaela Falconia <falcon@freecalypso.org>
parents:
74
diff
changeset
|
178 read_ts_file(argv[optind], argv[optind + 1]); |
27
f508dacf2cf9
trau-decode: new programs dump-1bit and trau-sync8
Mychaela Falconia <falcon@freecalypso.org>
parents:
10
diff
changeset
|
179 process_filebuf(); |
0
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 exit(0); |
131e0f1972bb
beginning of trau-parse program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 } |