FreeCalypso > hg > gsm-net-reveng
comparison trau-decode/parse-main.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 | f77a48a01ff0 |
children | 729dbac9df82 |
comparison
equal
deleted
inserted
replaced
75:b518ab15b518 | 76:d4ee42801cdc |
---|---|
23 NOT_D144, | 23 NOT_D144, |
24 D144_SYNC, | 24 D144_SYNC, |
25 D144_EDATA, | 25 D144_EDATA, |
26 } d144_state; | 26 } d144_state; |
27 static unsigned hunt_for_0_count, frame_pos_count; | 27 static unsigned hunt_for_0_count, frame_pos_count; |
28 static uint8_t in_frame_2bit[160], frame_bits[320], d_bits[260]; | 28 static uint8_t in_frame_2bit[160], frame_bits[320]; |
29 | 29 |
30 static void | 30 static void |
31 unpack_dibits() | 31 unpack_dibits() |
32 { | 32 { |
33 int i, inb; | 33 int i, inb; |
61 if (*bits) | 61 if (*bits) |
62 accum |= 1; | 62 accum |= 1; |
63 bits++; | 63 bits++; |
64 } | 64 } |
65 return accum; | 65 return accum; |
66 } | |
67 | |
68 static void | |
69 collect_d_bits() | |
70 { | |
71 bcopy(frame_bits + 33, d_bits, 15); | |
72 bcopy(frame_bits + 49, d_bits + 15, 15); | |
73 bcopy(frame_bits + 65, d_bits + 30, 15); | |
74 bcopy(frame_bits + 81, d_bits + 45, 15); | |
75 bcopy(frame_bits + 97, d_bits + 60, 15); | |
76 bcopy(frame_bits + 113, d_bits + 75, 15); | |
77 bcopy(frame_bits + 129, d_bits + 90, 15); | |
78 bcopy(frame_bits + 145, d_bits + 105, 15); | |
79 bcopy(frame_bits + 161, d_bits + 120, 15); | |
80 bcopy(frame_bits + 177, d_bits + 135, 15); | |
81 bcopy(frame_bits + 193, d_bits + 150, 15); | |
82 bcopy(frame_bits + 209, d_bits + 165, 15); | |
83 bcopy(frame_bits + 225, d_bits + 180, 15); | |
84 bcopy(frame_bits + 241, d_bits + 195, 15); | |
85 bcopy(frame_bits + 257, d_bits + 210, 15); | |
86 bcopy(frame_bits + 273, d_bits + 225, 15); | |
87 bcopy(frame_bits + 289, d_bits + 240, 15); | |
88 bcopy(frame_bits + 305, d_bits + 255, 5); | |
89 } | |
90 | |
91 static void | |
92 print_fr_efr_frame(c1_5) | |
93 unsigned c1_5; | |
94 { | |
95 switch (c1_5) { | |
96 case 0x02: | |
97 case 0x1C: | |
98 collect_d_bits(); | |
99 print_fr_frame(d_bits); | |
100 break; | |
101 case 0x1A: | |
102 collect_d_bits(); | |
103 check_efr_crc(d_bits); | |
104 print_efr_frame(d_bits); | |
105 break; | |
106 } | |
107 } | 66 } |
108 | 67 |
109 static void | 68 static void |
110 print_data_subframe(nf, bits) | 69 print_data_subframe(nf, bits) |
111 uint8_t *bits; | 70 uint8_t *bits; |
211 case 0x0E: | 170 case 0x0E: |
212 c6_11 = bits_to_num(frame_bits + 22, 6); | 171 c6_11 = bits_to_num(frame_bits + 22, 6); |
213 printf(" C6-C11: %u\n", c6_11); | 172 printf(" C6-C11: %u\n", c6_11); |
214 printf(" C12=%u C13=%u C14=%u C15=%u\n", frame_bits[28], | 173 printf(" C12=%u C13=%u C14=%u C15=%u\n", frame_bits[28], |
215 frame_bits[29], frame_bits[30], frame_bits[31]); | 174 frame_bits[29], frame_bits[30], frame_bits[31]); |
216 print_fr_efr_frame(c1_5); | 175 print_fr_efr_frame(frame_bits, c1_5); |
217 printf(" C16=%u C17=%u C18=%u C19=%u C20=%u C21=%u\n", | 176 printf(" C16=%u C17=%u C18=%u C19=%u C20=%u C21=%u\n", |
218 frame_bits[310], frame_bits[311], frame_bits[312], | 177 frame_bits[310], frame_bits[311], frame_bits[312], |
219 frame_bits[313], frame_bits[314], frame_bits[315]); | 178 frame_bits[313], frame_bits[314], frame_bits[315]); |
220 printf(" T1=%u T2=%u T3=%u T4=%u\n", frame_bits[316], | 179 printf(" T1=%u T2=%u T3=%u T4=%u\n", frame_bits[316], |
221 frame_bits[317], frame_bits[318], frame_bits[319]); | 180 frame_bits[317], frame_bits[318], frame_bits[319]); |