FreeCalypso > hg > gsm-net-reveng
comparison trau-decode/parse-tfo16.c @ 76:d4ee42801cdc
trau-decode: factor out parse-fr-common.c
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 08 Feb 2025 04:57:15 +0000 |
parents | 5f98c5cae4ea |
children |
comparison
equal
deleted
inserted
replaced
75:b518ab15b518 | 76:d4ee42801cdc |
---|---|
16 HUNT_FOUND_0, | 16 HUNT_FOUND_0, |
17 GOT_8_ZEROS, | 17 GOT_8_ZEROS, |
18 SYNCED | 18 SYNCED |
19 } state; | 19 } state; |
20 static unsigned hunt_for_0_count, frame_pos_count; | 20 static unsigned hunt_for_0_count, frame_pos_count; |
21 static uint8_t in_frame_2bit[160], frame_bits[320], d_bits[260]; | 21 static uint8_t in_frame_2bit[160], frame_bits[320]; |
22 | 22 |
23 static void | 23 static void |
24 unpack_dibits() | 24 unpack_dibits() |
25 { | 25 { |
26 int i, inb; | 26 int i, inb; |
57 } | 57 } |
58 return accum; | 58 return accum; |
59 } | 59 } |
60 | 60 |
61 static void | 61 static void |
62 collect_d_bits() | |
63 { | |
64 bcopy(frame_bits + 33, d_bits, 15); | |
65 bcopy(frame_bits + 49, d_bits + 15, 15); | |
66 bcopy(frame_bits + 65, d_bits + 30, 15); | |
67 bcopy(frame_bits + 81, d_bits + 45, 15); | |
68 bcopy(frame_bits + 97, d_bits + 60, 15); | |
69 bcopy(frame_bits + 113, d_bits + 75, 15); | |
70 bcopy(frame_bits + 129, d_bits + 90, 15); | |
71 bcopy(frame_bits + 145, d_bits + 105, 15); | |
72 bcopy(frame_bits + 161, d_bits + 120, 15); | |
73 bcopy(frame_bits + 177, d_bits + 135, 15); | |
74 bcopy(frame_bits + 193, d_bits + 150, 15); | |
75 bcopy(frame_bits + 209, d_bits + 165, 15); | |
76 bcopy(frame_bits + 225, d_bits + 180, 15); | |
77 bcopy(frame_bits + 241, d_bits + 195, 15); | |
78 bcopy(frame_bits + 257, d_bits + 210, 15); | |
79 bcopy(frame_bits + 273, d_bits + 225, 15); | |
80 bcopy(frame_bits + 289, d_bits + 240, 15); | |
81 bcopy(frame_bits + 305, d_bits + 255, 5); | |
82 } | |
83 | |
84 static void | |
85 process_frame() | 62 process_frame() |
86 { | 63 { |
87 unsigned c1_5eq, c6_11; | 64 unsigned c1_5eq, c6_11; |
88 | 65 |
89 printf("Frame at 0x%x:\n", file_offset - 159); | 66 printf("Frame at 0x%x:\n", file_offset - 159); |
110 putchar('\n'); | 87 putchar('\n'); |
111 c6_11 = bits_to_num(frame_bits + 22, 6); | 88 c6_11 = bits_to_num(frame_bits + 22, 6); |
112 printf(" C6-C11: %u\n", c6_11); | 89 printf(" C6-C11: %u\n", c6_11); |
113 printf(" C12=%u C13=%u C14=%u C15=%u\n", frame_bits[28], | 90 printf(" C12=%u C13=%u C14=%u C15=%u\n", frame_bits[28], |
114 frame_bits[29], frame_bits[30], frame_bits[31]); | 91 frame_bits[29], frame_bits[30], frame_bits[31]); |
115 switch (c1_5eq) { | 92 print_fr_efr_frame(frame_bits, c1_5eq); |
116 case 0x02: | |
117 case 0x1C: | |
118 collect_d_bits(); | |
119 print_fr_frame(d_bits); | |
120 break; | |
121 case 0x1A: | |
122 collect_d_bits(); | |
123 check_efr_crc(d_bits); | |
124 print_efr_frame(d_bits); | |
125 break; | |
126 } | |
127 printf(" C16=%u C17=%u C18=%u C19=%u C20=%u C21=%u\n", | 93 printf(" C16=%u C17=%u C18=%u C19=%u C20=%u C21=%u\n", |
128 frame_bits[310], frame_bits[311], frame_bits[312], | 94 frame_bits[310], frame_bits[311], frame_bits[312], |
129 frame_bits[313], frame_bits[314], frame_bits[315]); | 95 frame_bits[313], frame_bits[314], frame_bits[315]); |
130 printf(" T1=%u T2=%u T3=%u T4=%u\n", frame_bits[316], frame_bits[317], | 96 printf(" T1=%u T2=%u T3=%u T4=%u\n", frame_bits[316], frame_bits[317], |
131 frame_bits[318], frame_bits[319]); | 97 frame_bits[318], frame_bits[319]); |