27 LARc[0] = sr & 0x3f; sr >>= 6;
28 sr |= (
uword)*c++ << 2;
29 LARc[1] = sr & 0x3f; sr >>= 6;
30 sr |= (
uword)*c++ << 4;
31 LARc[2] = sr & 0x1f; sr >>= 5;
32 LARc[3] = sr & 0x1f; sr >>= 5;
33 sr |= (
uword)*c++ << 2;
34 LARc[4] = sr & 0xf; sr >>= 4;
35 LARc[5] = sr & 0xf; sr >>= 4;
36 sr |= (
uword)*c++ << 2;
37 LARc[6] = sr & 0x7; sr >>= 3;
38 LARc[7] = sr & 0x7; sr >>= 3;
39 sr |= (
uword)*c++ << 4;
40 Nc[0] = sr & 0x7f; sr >>= 7;
41 bc[0] = sr & 0x3; sr >>= 2;
42 Mc[0] = sr & 0x3; sr >>= 2;
43 sr |= (
uword)*c++ << 1;
44 xmaxc[0] = sr & 0x3f; sr >>= 6;
45 xmc[0] = sr & 0x7; sr >>= 3;
47 xmc[1] = sr & 0x7; sr >>= 3;
48 xmc[2] = sr & 0x7; sr >>= 3;
49 sr |= (
uword)*c++ << 2;
50 xmc[3] = sr & 0x7; sr >>= 3;
51 xmc[4] = sr & 0x7; sr >>= 3;
52 xmc[5] = sr & 0x7; sr >>= 3;
53 sr |= (
uword)*c++ << 1;
54 xmc[6] = sr & 0x7; sr >>= 3;
55 xmc[7] = sr & 0x7; sr >>= 3;
56 xmc[8] = sr & 0x7; sr >>= 3;
58 xmc[9] = sr & 0x7; sr >>= 3;
59 xmc[10] = sr & 0x7; sr >>= 3;
60 sr |= (
uword)*c++ << 2;
61 xmc[11] = sr & 0x7; sr >>= 3;
62 xmc[12] = sr & 0x7; sr >>= 3;
63 sr |= (
uword)*c++ << 4;
64 Nc[1] = sr & 0x7f; sr >>= 7;
65 bc[1] = sr & 0x3; sr >>= 2;
66 Mc[1] = sr & 0x3; sr >>= 2;
67 sr |= (
uword)*c++ << 1;
68 xmaxc[1] = sr & 0x3f; sr >>= 6;
69 xmc[13] = sr & 0x7; sr >>= 3;
71 xmc[14] = sr & 0x7; sr >>= 3;
72 xmc[15] = sr & 0x7; sr >>= 3;
73 sr |= (
uword)*c++ << 2;
74 xmc[16] = sr & 0x7; sr >>= 3;
75 xmc[17] = sr & 0x7; sr >>= 3;
76 xmc[18] = sr & 0x7; sr >>= 3;
77 sr |= (
uword)*c++ << 1;
78 xmc[19] = sr & 0x7; sr >>= 3;
79 xmc[20] = sr & 0x7; sr >>= 3;
80 xmc[21] = sr & 0x7; sr >>= 3;
82 xmc[22] = sr & 0x7; sr >>= 3;
83 xmc[23] = sr & 0x7; sr >>= 3;
84 sr |= (
uword)*c++ << 2;
85 xmc[24] = sr & 0x7; sr >>= 3;
86 xmc[25] = sr & 0x7; sr >>= 3;
87 sr |= (
uword)*c++ << 4;
88 Nc[2] = sr & 0x7f; sr >>= 7;
89 bc[2] = sr & 0x3; sr >>= 2;
90 Mc[2] = sr & 0x3; sr >>= 2;
91 sr |= (
uword)*c++ << 1;
92 xmaxc[2] = sr & 0x3f; sr >>= 6;
93 xmc[26] = sr & 0x7; sr >>= 3;
95 xmc[27] = sr & 0x7; sr >>= 3;
96 xmc[28] = sr & 0x7; sr >>= 3;
97 sr |= (
uword)*c++ << 2;
98 xmc[29] = sr & 0x7; sr >>= 3;
99 xmc[30] = sr & 0x7; sr >>= 3;
100 xmc[31] = sr & 0x7; sr >>= 3;
101 sr |= (
uword)*c++ << 1;
102 xmc[32] = sr & 0x7; sr >>= 3;
103 xmc[33] = sr & 0x7; sr >>= 3;
104 xmc[34] = sr & 0x7; sr >>= 3;
106 xmc[35] = sr & 0x7; sr >>= 3;
107 xmc[36] = sr & 0x7; sr >>= 3;
108 sr |= (
uword)*c++ << 2;
109 xmc[37] = sr & 0x7; sr >>= 3;
110 xmc[38] = sr & 0x7; sr >>= 3;
111 sr |= (
uword)*c++ << 4;
112 Nc[3] = sr & 0x7f; sr >>= 7;
113 bc[3] = sr & 0x3; sr >>= 2;
114 Mc[3] = sr & 0x3; sr >>= 2;
115 sr |= (
uword)*c++ << 1;
116 xmaxc[3] = sr & 0x3f; sr >>= 6;
117 xmc[39] = sr & 0x7; sr >>= 3;
119 xmc[40] = sr & 0x7; sr >>= 3;
120 xmc[41] = sr & 0x7; sr >>= 3;
121 sr |= (
uword)*c++ << 2;
122 xmc[42] = sr & 0x7; sr >>= 3;
123 xmc[43] = sr & 0x7; sr >>= 3;
124 xmc[44] = sr & 0x7; sr >>= 3;
125 sr |= (
uword)*c++ << 1;
126 xmc[45] = sr & 0x7; sr >>= 3;
127 xmc[46] = sr & 0x7; sr >>= 3;
128 xmc[47] = sr & 0x7; sr >>= 3;
130 xmc[48] = sr & 0x7; sr >>= 3;
131 xmc[49] = sr & 0x7; sr >>= 3;
132 sr |= (
uword)*c++ << 2;
133 xmc[50] = sr & 0x7; sr >>= 3;
134 xmc[51] = sr & 0x7; sr >>= 3;
140 sr |= (
uword)*c++ << 4;
141 LARc[0] = sr & 0x3f; sr >>= 6;
142 LARc[1] = sr & 0x3f; sr >>= 6;
144 LARc[2] = sr & 0x1f; sr >>= 5;
145 sr |= (
uword)*c++ << 3;
146 LARc[3] = sr & 0x1f; sr >>= 5;
147 LARc[4] = sr & 0xf; sr >>= 4;
148 sr |= (
uword)*c++ << 2;
149 LARc[5] = sr & 0xf; sr >>= 4;
150 LARc[6] = sr & 0x7; sr >>= 3;
151 LARc[7] = sr & 0x7; sr >>= 3;
153 Nc[0] = sr & 0x7f; sr >>= 7;
154 sr |= (
uword)*c++ << 1;
155 bc[0] = sr & 0x3; sr >>= 2;
156 Mc[0] = sr & 0x3; sr >>= 2;
157 sr |= (
uword)*c++ << 5;
158 xmaxc[0] = sr & 0x3f; sr >>= 6;
159 xmc[0] = sr & 0x7; sr >>= 3;
160 xmc[1] = sr & 0x7; sr >>= 3;
161 sr |= (
uword)*c++ << 1;
162 xmc[2] = sr & 0x7; sr >>= 3;
163 xmc[3] = sr & 0x7; sr >>= 3;
164 xmc[4] = sr & 0x7; sr >>= 3;
166 xmc[5] = sr & 0x7; sr >>= 3;
167 xmc[6] = sr & 0x7; sr >>= 3;
168 sr |= (
uword)*c++ << 2;
169 xmc[7] = sr & 0x7; sr >>= 3;
170 xmc[8] = sr & 0x7; sr >>= 3;
171 xmc[9] = sr & 0x7; sr >>= 3;
172 sr |= (
uword)*c++ << 1;
173 xmc[10] = sr & 0x7; sr >>= 3;
174 xmc[11] = sr & 0x7; sr >>= 3;
175 xmc[12] = sr & 0x7; sr >>= 3;
177 Nc[1] = sr & 0x7f; sr >>= 7;
178 sr |= (
uword)*c++ << 1;
179 bc[1] = sr & 0x3; sr >>= 2;
180 Mc[1] = sr & 0x3; sr >>= 2;
181 sr |= (
uword)*c++ << 5;
182 xmaxc[1] = sr & 0x3f; sr >>= 6;
183 xmc[13] = sr & 0x7; sr >>= 3;
184 xmc[14] = sr & 0x7; sr >>= 3;
185 sr |= (
uword)*c++ << 1;
186 xmc[15] = sr & 0x7; sr >>= 3;
187 xmc[16] = sr & 0x7; sr >>= 3;
188 xmc[17] = sr & 0x7; sr >>= 3;
190 xmc[18] = sr & 0x7; sr >>= 3;
191 xmc[19] = sr & 0x7; sr >>= 3;
192 sr |= (
uword)*c++ << 2;
193 xmc[20] = sr & 0x7; sr >>= 3;
194 xmc[21] = sr & 0x7; sr >>= 3;
195 xmc[22] = sr & 0x7; sr >>= 3;
196 sr |= (
uword)*c++ << 1;
197 xmc[23] = sr & 0x7; sr >>= 3;
198 xmc[24] = sr & 0x7; sr >>= 3;
199 xmc[25] = sr & 0x7; sr >>= 3;
201 Nc[2] = sr & 0x7f; sr >>= 7;
202 sr |= (
uword)*c++ << 1;
203 bc[2] = sr & 0x3; sr >>= 2;
204 Mc[2] = sr & 0x3; sr >>= 2;
205 sr |= (
uword)*c++ << 5;
206 xmaxc[2] = sr & 0x3f; sr >>= 6;
207 xmc[26] = sr & 0x7; sr >>= 3;
208 xmc[27] = sr & 0x7; sr >>= 3;
209 sr |= (
uword)*c++ << 1;
210 xmc[28] = sr & 0x7; sr >>= 3;
211 xmc[29] = sr & 0x7; sr >>= 3;
212 xmc[30] = sr & 0x7; sr >>= 3;
214 xmc[31] = sr & 0x7; sr >>= 3;
215 xmc[32] = sr & 0x7; sr >>= 3;
216 sr |= (
uword)*c++ << 2;
217 xmc[33] = sr & 0x7; sr >>= 3;
218 xmc[34] = sr & 0x7; sr >>= 3;
219 xmc[35] = sr & 0x7; sr >>= 3;
220 sr |= (
uword)*c++ << 1;
221 xmc[36] = sr & 0x7; sr >>= 3;
222 xmc[37] = sr & 0x7; sr >>= 3;
223 xmc[38] = sr & 0x7; sr >>= 3;
225 Nc[3] = sr & 0x7f; sr >>= 7;
226 sr |= (
uword)*c++ << 1;
227 bc[3] = sr & 0x3; sr >>= 2;
228 Mc[3] = sr & 0x3; sr >>= 2;
229 sr |= (
uword)*c++ << 5;
230 xmaxc[3] = sr & 0x3f; sr >>= 6;
231 xmc[39] = sr & 0x7; sr >>= 3;
232 xmc[40] = sr & 0x7; sr >>= 3;
233 sr |= (
uword)*c++ << 1;
234 xmc[41] = sr & 0x7; sr >>= 3;
235 xmc[42] = sr & 0x7; sr >>= 3;
236 xmc[43] = sr & 0x7; sr >>= 3;
238 xmc[44] = sr & 0x7; sr >>= 3;
239 xmc[45] = sr & 0x7; sr >>= 3;
240 sr |= (
uword)*c++ << 2;
241 xmc[46] = sr & 0x7; sr >>= 3;
242 xmc[47] = sr & 0x7; sr >>= 3;
243 xmc[48] = sr & 0x7; sr >>= 3;
244 sr |= (
uword)*c++ << 1;
245 xmc[49] = sr & 0x7; sr >>= 3;
246 xmc[50] = sr & 0x7; sr >>= 3;
247 xmc[51] = sr & 0x7; sr >>= 3;
255 if (((*c >> 4) & 0x0F) !=
GSM_MAGIC)
return -1;
257 LARc[0] = (*c++ & 0xF) << 2;
258 LARc[0] |= (*c >> 6) & 0x3;
259 LARc[1] = *c++ & 0x3F;
260 LARc[2] = (*c >> 3) & 0x1F;
261 LARc[3] = (*c++ & 0x7) << 2;
262 LARc[3] |= (*c >> 6) & 0x3;
263 LARc[4] = (*c >> 2) & 0xF;
264 LARc[5] = (*c++ & 0x3) << 2;
265 LARc[5] |= (*c >> 6) & 0x3;
266 LARc[6] = (*c >> 3) & 0x7;
267 LARc[7] = *c++ & 0x7;
268 Nc[0] = (*c >> 1) & 0x7F;
269 bc[0] = (*c++ & 0x1) << 1;
270 bc[0] |= (*c >> 7) & 0x1;
271 Mc[0] = (*c >> 5) & 0x3;
272 xmaxc[0] = (*c++ & 0x1F) << 1;
273 xmaxc[0] |= (*c >> 7) & 0x1;
274 xmc[0] = (*c >> 4) & 0x7;
275 xmc[1] = (*c >> 1) & 0x7;
276 xmc[2] = (*c++ & 0x1) << 2;
277 xmc[2] |= (*c >> 6) & 0x3;
278 xmc[3] = (*c >> 3) & 0x7;
280 xmc[5] = (*c >> 5) & 0x7;
281 xmc[6] = (*c >> 2) & 0x7;
282 xmc[7] = (*c++ & 0x3) << 1;
283 xmc[7] |= (*c >> 7) & 0x1;
284 xmc[8] = (*c >> 4) & 0x7;
285 xmc[9] = (*c >> 1) & 0x7;
286 xmc[10] = (*c++ & 0x1) << 2;
287 xmc[10] |= (*c >> 6) & 0x3;
288 xmc[11] = (*c >> 3) & 0x7;
289 xmc[12] = *c++ & 0x7;
290 Nc[1] = (*c >> 1) & 0x7F;
291 bc[1] = (*c++ & 0x1) << 1;
292 bc[1] |= (*c >> 7) & 0x1;
293 Mc[1] = (*c >> 5) & 0x3;
294 xmaxc[1] = (*c++ & 0x1F) << 1;
295 xmaxc[1] |= (*c >> 7) & 0x1;
296 xmc[13] = (*c >> 4) & 0x7;
297 xmc[14] = (*c >> 1) & 0x7;
298 xmc[15] = (*c++ & 0x1) << 2;
299 xmc[15] |= (*c >> 6) & 0x3;
300 xmc[16] = (*c >> 3) & 0x7;
301 xmc[17] = *c++ & 0x7;
302 xmc[18] = (*c >> 5) & 0x7;
303 xmc[19] = (*c >> 2) & 0x7;
304 xmc[20] = (*c++ & 0x3) << 1;
305 xmc[20] |= (*c >> 7) & 0x1;
306 xmc[21] = (*c >> 4) & 0x7;
307 xmc[22] = (*c >> 1) & 0x7;
308 xmc[23] = (*c++ & 0x1) << 2;
309 xmc[23] |= (*c >> 6) & 0x3;
310 xmc[24] = (*c >> 3) & 0x7;
311 xmc[25] = *c++ & 0x7;
312 Nc[2] = (*c >> 1) & 0x7F;
313 bc[2] = (*c++ & 0x1) << 1;
314 bc[2] |= (*c >> 7) & 0x1;
315 Mc[2] = (*c >> 5) & 0x3;
316 xmaxc[2] = (*c++ & 0x1F) << 1;
317 xmaxc[2] |= (*c >> 7) & 0x1;
318 xmc[26] = (*c >> 4) & 0x7;
319 xmc[27] = (*c >> 1) & 0x7;
320 xmc[28] = (*c++ & 0x1) << 2;
321 xmc[28] |= (*c >> 6) & 0x3;
322 xmc[29] = (*c >> 3) & 0x7;
323 xmc[30] = *c++ & 0x7;
324 xmc[31] = (*c >> 5) & 0x7;
325 xmc[32] = (*c >> 2) & 0x7;
326 xmc[33] = (*c++ & 0x3) << 1;
327 xmc[33] |= (*c >> 7) & 0x1;
328 xmc[34] = (*c >> 4) & 0x7;
329 xmc[35] = (*c >> 1) & 0x7;
330 xmc[36] = (*c++ & 0x1) << 2;
331 xmc[36] |= (*c >> 6) & 0x3;
332 xmc[37] = (*c >> 3) & 0x7;
333 xmc[38] = *c++ & 0x7;
334 Nc[3] = (*c >> 1) & 0x7F;
335 bc[3] = (*c++ & 0x1) << 1;
336 bc[3] |= (*c >> 7) & 0x1;
337 Mc[3] = (*c >> 5) & 0x3;
338 xmaxc[3] = (*c++ & 0x1F) << 1;
339 xmaxc[3] |= (*c >> 7) & 0x1;
340 xmc[39] = (*c >> 4) & 0x7;
341 xmc[40] = (*c >> 1) & 0x7;
342 xmc[41] = (*c++ & 0x1) << 2;
343 xmc[41] |= (*c >> 6) & 0x3;
344 xmc[42] = (*c >> 3) & 0x7;
345 xmc[43] = *c++ & 0x7;
346 xmc[44] = (*c >> 5) & 0x7;
347 xmc[45] = (*c >> 2) & 0x7;
348 xmc[46] = (*c++ & 0x3) << 1;
349 xmc[46] |= (*c >> 7) & 0x1;
350 xmc[47] = (*c >> 4) & 0x7;
351 xmc[48] = (*c >> 1) & 0x7;
352 xmc[49] = (*c++ & 0x1) << 2;
353 xmc[49] |= (*c >> 6) & 0x3;
354 xmc[50] = (*c >> 3) & 0x7;
358 Gsm_Decoder(s, LARc, Nc, bc, Mc, xmaxc, xmc, target);
unsigned char frame_index
int gsm_decode P3((s, c, target), gsm s, gsm_byte *c, gsm_signal *target)
unsigned char frame_chain