FreeCalypso > hg > fc-tourmaline
comparison src/g23m-gsm/alr2/alr_test/alr_dedicated_constraints.cpp @ 2:3a14ee9a9843
src/g23m-gsm: same alr2 & alr3 structure as in Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:29:12 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1:fa8dc04885d8 | 2:3a14ee9a9843 |
---|---|
1 /* | |
2 +------------------------------------------------------------------------------ | |
3 | File: alr_dedicated_constraints.cpp | |
4 +------------------------------------------------------------------------------ | |
5 | Copyright 2003 Texas Instruments | |
6 | All rights reserved. | |
7 | | |
8 | This file is confidential and a trade secret of Texas Instruments. | |
9 | The receipt of or possession of this file does not convey | |
10 | any rights to reproduce or disclose its contents or to | |
11 | manufacture, use, or sell anything it may describe, in | |
12 | whole, or in part, without the specific written consent of | |
13 | Texas Instruments. | |
14 +------------------------------------------------------------------------------ | |
15 | Purpose: Contains test constraints for alr | |
16 | | |
17 +------------------------------------------------------------------------------ | |
18 */ | |
19 #include "alr_constraints.h" | |
20 | |
21 const U16 CHLIST_14_23_69_115_FFFF_elements[5] = { | |
22 ARFCN_14, | |
23 ARFCN_23, | |
24 ARFCN_69, | |
25 ARFCN_115, | |
26 NOT_PRESENT_16BIT | |
27 }; | |
28 T_ARRAY<U16> CHLIST_14_23_69_115_FFFF(CHLIST_14_23_69_115_FFFF_elements, SKIP_TO_END); | |
29 | |
30 T_start starting_time() | |
31 { | |
32 T_start pstruct; | |
33 pstruct->v_start = 1; | |
34 pstruct->t1 = 11; | |
35 pstruct->t2 = 22; | |
36 pstruct->t3 = 33; | |
37 return pstruct; | |
38 } | |
39 T_starting_time s_time_mphc() | |
40 { | |
41 T_starting_time pstruct; | |
42 pstruct->start_time_present = 1; | |
43 pstruct->start_time.t1=11; | |
44 pstruct->start_time.t2=22; | |
45 pstruct->start_time.t3=33; | |
46 return pstruct; | |
47 } | |
48 T_starting_time s_time_t1() | |
49 { | |
50 T_starting_time pstruct; | |
51 pstruct->start_time_present = 1; | |
52 pstruct->start_time.t1 = 11; | |
53 pstruct->start_time.t2 = 22; | |
54 pstruct->start_time.t3 = 33; | |
55 return pstruct; | |
56 } | |
57 T_ch_type ch_type_tch2() | |
58 { | |
59 T_ch_type pstruct; | |
60 pstruct->ch = 0x01; | |
61 pstruct->tn = 1; | |
62 pstruct->tsc = 0; | |
63 pstruct->h = 1; | |
64 pstruct->arfcn = 0; | |
65 pstruct->maio = 1; | |
66 pstruct->hsn = 0; | |
67 pstruct->ma = CHLIST_14_23_69_115_FFFF; | |
68 return pstruct; | |
69 } | |
70 T_ch_type ch_type_tch3() | |
71 { | |
72 T_ch_type pstruct; | |
73 pstruct->ch = 0x01; | |
74 pstruct->tn = 3; | |
75 pstruct->tsc = 0; | |
76 pstruct->h = 1; | |
77 pstruct->arfcn = 0; | |
78 pstruct->maio = 1; | |
79 pstruct->hsn = 0; | |
80 pstruct->ma = CHLIST_14_23_69_115_FFFF; | |
81 return pstruct; | |
82 } | |
83 T_ho_param ho_param() | |
84 { | |
85 T_ho_param pstruct; | |
86 pstruct->ho_ref = NCI_TA_OUT_OF_RANGE_OK; | |
87 pstruct->ho_pow = 0; | |
88 pstruct->ho_acc_type = 0; | |
89 pstruct->ho_nci = 0; | |
90 return pstruct; | |
91 } | |
92 T_ho_param ho_param_1() | |
93 { | |
94 T_ho_param pstruct; | |
95 pstruct->ho_ref = HO_REF; | |
96 pstruct->ho_pow = HO_POW; | |
97 pstruct->ho_acc_type = 0; | |
98 pstruct->ho_nci = 0; | |
99 return pstruct; | |
100 } | |
101 T_tr_para tr_param() | |
102 { | |
103 T_tr_para pstruct; | |
104 pstruct->power = 10; | |
105 pstruct->dtx = DTX_NOT_USED; | |
106 pstruct->rlt = 5; | |
107 pstruct->tav = 30; | |
108 pstruct->pwrc = PWRC_NOT_SET; | |
109 pstruct->mode = MODE_SPEECH_VER1; | |
110 return pstruct; | |
111 } | |
112 T_ciph ciph_param() | |
113 { | |
114 const U8 CIPH_PARAM_KC[8] = { | |
115 0,1,2,3,4,5,6,7 | |
116 }; | |
117 | |
118 T_ciph pstruct; | |
119 pstruct->stat = STAT_CIPH_OFF; | |
120 pstruct->algo = ALGO_A5_1; | |
121 pstruct->kc = CIPH_PARAM_KC; | |
122 return pstruct; | |
123 } | |
124 T_channel_desc channel_desc_2_tch() | |
125 { | |
126 T_channel_desc pstruct; | |
127 pstruct->chan_sel.h = 1; | |
128 pstruct->chan_sel.rf_channel.maio = 1; | |
129 pstruct->chan_sel.rf_channel.hsn = 0; | |
130 pstruct->channel_type = 0x01; | |
131 pstruct->sub_channel = 0; | |
132 pstruct->timeslot_no = 1; | |
133 pstruct->tsc = 0; | |
134 return pstruct; | |
135 } | |
136 T_channel_desc channel_desc_3_tch() | |
137 { | |
138 T_channel_desc pstruct; | |
139 pstruct->chan_sel.h = 1; | |
140 pstruct->chan_sel.rf_channel.maio = 1; | |
141 pstruct->chan_sel.rf_channel.hsn = 0; | |
142 pstruct->channel_type = 0x01; | |
143 pstruct->sub_channel = 0; | |
144 pstruct->timeslot_no = 3; | |
145 pstruct->tsc = 0; | |
146 return pstruct; | |
147 } | |
148 T_cell_description cell_description_2() | |
149 { | |
150 T_cell_description pstruct; | |
151 pstruct->ncc = 0; | |
152 pstruct->bcc = 1; | |
153 pstruct->bcch_carrier = 14; | |
154 return pstruct; | |
155 } | |
156 T_channel_desc channel_desc_ia() | |
157 { | |
158 T_channel_desc pstruct; | |
159 pstruct->chan_sel.h = 1; | |
160 pstruct->chan_sel.rf_channel.maio = 0; | |
161 pstruct->chan_sel.rf_channel.hsn = 1; | |
162 pstruct->channel_type = CH_TCH_F; | |
163 pstruct->sub_channel = 0; | |
164 pstruct->timeslot_no = 1; | |
165 pstruct->tsc = 5; | |
166 return pstruct; | |
167 } | |
168 T_amr_conf s_amr_conf_4_icmi() | |
169 { | |
170 T_amr_conf pstruct; | |
171 pstruct->nscb = NSCB; | |
172 pstruct->icmi = ICMI_S; | |
173 pstruct->st_mode = ST_MODE_1; | |
174 pstruct->acs = ACS_4; | |
175 pstruct->v_cod_prop = V_COD_PROP; | |
176 pstruct->c_cod_prop = C_COD_PROP_4; | |
177 pstruct->cod_prop[0].codec_hyst = 0x01; | |
178 pstruct->cod_prop[0].codec_thr = 0x01; | |
179 pstruct->cod_prop[1].codec_hyst = 0x03; | |
180 pstruct->cod_prop[1].codec_thr = 0x03; | |
181 pstruct->cod_prop[2].codec_hyst = 0x05; | |
182 pstruct->cod_prop[2].codec_thr = 0x05; | |
183 // = sa_cod_prop_4(); | |
184 return pstruct; | |
185 } | |
186 T_amr_configuration s_amr_configuration() | |
187 { | |
188 T_amr_configuration pstruct; | |
189 pstruct->noise_suppression_control_bit = NSCB; | |
190 pstruct->initial_codec_mode_indicator = ICMI_S; | |
191 pstruct->initial_codec_mode = ST_MODE_1; | |
192 pstruct->active_codec_set = ACS_4; | |
193 pstruct->threshold [0] = 0x01; | |
194 pstruct->threshold [1] = 0x03; | |
195 pstruct->threshold [2] = 0x05; | |
196 pstruct->hysteresis[0] = 0x01; | |
197 pstruct->hysteresis[1] = 0x03; | |
198 pstruct->hysteresis[2] = 0x05; | |
199 return pstruct; | |
200 } | |
201 T_frequency_list freq_list_ia() | |
202 { | |
203 const U16 FREQ_LIST_IA_FREQ_elements[5] = { | |
204 26, 34, 42, 52, 59 | |
205 }; | |
206 T_ARRAY<U16> FREQ_LIST_IA_FREQ(FREQ_LIST_IA_FREQ_elements, SKIP_TO_END); | |
207 | |
208 T_frequency_list pstruct; | |
209 pstruct->rf_chan_cnt = 5; | |
210 pstruct->rf_chan_no.radio_freq = FREQ_LIST_IA_FREQ; | |
211 return pstruct; | |
212 } | |
213 T_channel_desc channel_desc_fr() | |
214 { | |
215 T_channel_desc pstruct; | |
216 pstruct->chan_sel.h = 1; | |
217 pstruct->chan_sel.rf_channel.maio = 1; | |
218 pstruct->chan_sel.rf_channel.hsn = 1; | |
219 pstruct->channel_type = CH_TCH_F; | |
220 pstruct->sub_channel = 0; | |
221 pstruct->timeslot_no = 1; | |
222 pstruct->tsc = 5; | |
223 return pstruct; | |
224 } | |
225 T_frequency_list freq_list_fr() | |
226 { | |
227 const U16 CHLIST_10_52_59_73_108_114_elements[6] = { | |
228 ARFCN_10, | |
229 ARFCN_52, | |
230 ARFCN_59, | |
231 ARFCN_73, | |
232 ARFCN_108, | |
233 ARFCN_114 | |
234 }; | |
235 T_ARRAY<U16> CHLIST_10_52_59_73_108_114(CHLIST_10_52_59_73_108_114_elements, SKIP_TO_END); | |
236 | |
237 T_frequency_list pstruct; | |
238 pstruct->rf_chan_cnt = 6; | |
239 pstruct->rf_chan_no.radio_freq = CHLIST_10_52_59_73_108_114; | |
240 return pstruct; | |
241 } | |
242 | |
243 T_PRIMITIVE_UNION mph_dedicated_req_1() | |
244 { | |
245 const U16 CHLIST_0_elements[1] = { | |
246 0x00 | |
247 }; | |
248 T_ARRAY<U16> CHLIST_0(CHLIST_0_elements, SKIP_TO_END); | |
249 T_MPH_DEDICATED_REQ prim; | |
250 prim->mod = MODE_IMM_ASSIGN; | |
251 prim->start = starting_time(); | |
252 // prim->ch_type = ch_type_hop(); | |
253 prim->ch_type.ch = CH_SDCCH_8_0; | |
254 prim->ch_type.tn = 0; | |
255 prim->ch_type.tsc = 0; | |
256 prim->ch_type.h = 1; | |
257 prim->ch_type.arfcn = 0; | |
258 prim->ch_type.maio = 1; | |
259 prim->ch_type.hsn = 0; | |
260 prim->ch_type.ma = CHLIST_14_23_69_115_FFFF; | |
261 // prim->ch_type2. = ch_type2(); | |
262 prim->ch_type2.ch = 0x00; | |
263 prim->ch_type2.tn = 3; | |
264 prim->ch_type2.tsc = 6; | |
265 prim->ch_type2.h = 0; | |
266 prim->ch_type2.arfcn = 0; | |
267 prim->ch_type2.maio = 0; | |
268 prim->ch_type2.hsn = 0; | |
269 prim->ch_type2.ma = CHLIST_0; | |
270 prim->arfcn = ARFCN_23; | |
271 prim->bsic = BSIC_1; | |
272 prim->ho_param = ho_param(); | |
273 prim->tr_para = tr_param(); | |
274 prim->ciph = ciph_param(); | |
275 prim->amr_conf._skip; | |
276 return prim; | |
277 } | |
278 T_PRIMITIVE_UNION mph_dedicated_req_2() | |
279 { | |
280 T_MPH_DEDICATED_REQ prim; | |
281 prim->mod = MODE_ASYNC_HANDOVER; | |
282 prim->start._skip; | |
283 prim->ch_type = ch_type_tch2(); | |
284 prim->ch_type2._skip; | |
285 prim->arfcn = ARFCN_14; | |
286 prim->bsic = BSIC_1; | |
287 prim->ho_param = ho_param_1(); | |
288 prim->tr_para = tr_param(); | |
289 prim->ciph = ciph_param(); | |
290 prim->amr_conf._skip; | |
291 return prim; | |
292 } | |
293 T_PRIMITIVE_UNION mph_dedicated_req_3() | |
294 { | |
295 const U16 CHLIST_26_34_42_52_59_FFFF_elements[6] = { | |
296 ARFCN_26, | |
297 ARFCN_34, | |
298 ARFCN_42, | |
299 ARFCN_52, | |
300 ARFCN_59, | |
301 NOT_PRESENT_16BIT | |
302 }; | |
303 T_ARRAY<U16> CHLIST_26_34_42_52_59_FFFF(CHLIST_26_34_42_52_59_FFFF_elements, SKIP_TO_END); | |
304 | |
305 T_MPH_DEDICATED_REQ prim; | |
306 prim->mod = MODE_IMM_ASSIGN; | |
307 prim->start.v_start=0; | |
308 prim->start.t1._skip; | |
309 prim->start.t2._skip; | |
310 prim->start.t3._skip; | |
311 // prim->ch_type. = ch_type_imm_ass(); | |
312 prim->ch_type.ch = CH_TCH_F; | |
313 prim->ch_type.tn = 1; | |
314 prim->ch_type.tsc = 5; | |
315 prim->ch_type.h = H_FREQ; | |
316 prim->ch_type.arfcn = 0; | |
317 prim->ch_type.maio = 0; | |
318 prim->ch_type.hsn = 1; | |
319 prim->ch_type.ma = CHLIST_26_34_42_52_59_FFFF; | |
320 prim->ch_type2._skip; | |
321 prim->arfcn = ARFCN_14; | |
322 prim->bsic = BSIC_1; | |
323 prim->ho_param = ho_param(); | |
324 prim->tr_para = tr_param(); | |
325 prim->ciph = ciph_param(); | |
326 prim->amr_conf._skip; | |
327 return prim; | |
328 } | |
329 T_PRIMITIVE_UNION mph_dedicated_req_4() | |
330 { | |
331 const U16 CHLIST_73_74_75_76_FFFF_elements[5] = { | |
332 ARFCN_73, | |
333 ARFCN_74, | |
334 ARFCN_75, | |
335 ARFCN_76, | |
336 NOT_PRESENT_16BIT | |
337 }; | |
338 T_ARRAY<U16> CHLIST_73_74_75_76_FFFF(CHLIST_73_74_75_76_FFFF_elements, SKIP_TO_END); | |
339 const U16 CHLIST_46_52_59_66_73_74_FFFF_elements[7] = { | |
340 ARFCN_46, | |
341 ARFCN_52, | |
342 ARFCN_59, | |
343 ARFCN_66, | |
344 ARFCN_73, | |
345 ARFCN_74, | |
346 NOT_PRESENT_16BIT | |
347 }; | |
348 T_ARRAY<U16> CHLIST_46_52_59_66_73_74_FFFF(CHLIST_46_52_59_66_73_74_FFFF_elements, SKIP_TO_END); | |
349 | |
350 T_MPH_DEDICATED_REQ prim; | |
351 prim->mod = MODE_CHAN_ASSIGN; | |
352 prim->start.v_start = 1; | |
353 prim->start.t1 = 45; | |
354 prim->start.t2 = 22; | |
355 prim->start.t3 = 33; | |
356 prim->ch_type.ch = CH_TCH_F; | |
357 prim->ch_type.tn = 0; | |
358 prim->ch_type.tsc = 5; | |
359 prim->ch_type.h = H_FREQ; | |
360 prim->ch_type.arfcn = 0; | |
361 prim->ch_type.maio = 0; | |
362 prim->ch_type.hsn = 1; | |
363 prim->ch_type.ma = CHLIST_73_74_75_76_FFFF; | |
364 /* before time */ | |
365 prim->ch_type2.ch = CH_TCH_F; | |
366 prim->ch_type2.tn = 0; | |
367 prim->ch_type2.tsc = 5; | |
368 prim->ch_type2.h = H_FREQ; | |
369 prim->ch_type2.arfcn = 0; | |
370 prim->ch_type2.maio = 1; | |
371 prim->ch_type2.hsn = 7; | |
372 prim->ch_type2.ma = CHLIST_46_52_59_66_73_74_FFFF; | |
373 prim->arfcn = ARFCN_14; | |
374 prim->bsic = BSIC_1; | |
375 prim->ho_param._skip; | |
376 prim->tr_para = tr_param(); | |
377 prim->ciph = ciph_param(); | |
378 prim->amr_conf._skip; | |
379 return prim; | |
380 } | |
381 T_PRIMITIVE_UNION mph_dedicated_req_5() | |
382 { | |
383 T_MPH_DEDICATED_REQ prim; | |
384 prim->mod = MODE_ASYNC_HANDOVER; | |
385 prim->start = starting_time(); | |
386 prim->ch_type = ch_type_tch2(); | |
387 prim->ch_type2 = ch_type_tch3(); | |
388 prim->arfcn = ARFCN_14; | |
389 prim->bsic = BSIC_1; | |
390 prim->ho_param = ho_param_1(); | |
391 prim->tr_para = tr_param(); | |
392 prim->ciph = ciph_param(); | |
393 prim->amr_conf._skip; | |
394 return prim; | |
395 } | |
396 T_PRIMITIVE_UNION mph_dedicated_req_6(CHAR variant) | |
397 { | |
398 T_MPH_DEDICATED_REQ prim; | |
399 prim->mod = MODE_ASYNC_HANDOVER; | |
400 prim->start = starting_time(); | |
401 prim->ch_type = ch_type_tch2(); | |
402 prim->ch_type2 = ch_type_tch3(); | |
403 if (variant == 'A') prim->arfcn = ARFCN_23; | |
404 if (variant == 'B') prim->arfcn = ARFCN_23; | |
405 if (variant == 'C') prim->arfcn = ARFCN_14; | |
406 if (variant == 'D') prim->arfcn = ARFCN_1; | |
407 if (variant == 'E') prim->arfcn = ARFCN_124; | |
408 prim->bsic = BSIC_1; | |
409 prim->ho_param = ho_param_1(); | |
410 prim->tr_para = tr_param(); | |
411 prim->ciph = ciph_param(); | |
412 if (variant == 'A') prim->amr_conf._skip; | |
413 if (variant == 'B') prim->amr_conf = s_amr_conf_4_icmi(); | |
414 if (variant == 'C') prim->amr_conf._skip; | |
415 if (variant == 'D') prim->amr_conf._skip; | |
416 if (variant == 'E') prim->amr_conf._skip; | |
417 return prim; | |
418 } | |
419 | |
420 | |
421 | |
422 T_PRIMITIVE_UNION mphc_immed_assign_req_1() | |
423 { | |
424 T_MPHC_IMMED_ASSIGN_REQ prim; | |
425 //prim->channel_desc. = channel_desc_1(); | |
426 prim->channel_desc.chan_sel.h = 1; | |
427 prim->channel_desc.chan_sel.rf_channel.maio = 1; | |
428 prim->channel_desc.chan_sel.rf_channel.hsn = 0; | |
429 prim->channel_desc.channel_type = 0x04; | |
430 prim->channel_desc.sub_channel = 0; | |
431 prim->channel_desc.timeslot_no = 0; | |
432 prim->channel_desc.tsc = 0; | |
433 | |
434 prim->timing_advance = TIMING_ADVANCE; | |
435 prim->frequency_list = freq_list(); | |
436 prim->starting_time = s_time_mphc(); | |
437 prim->frequency_list_bef_sti._skip; | |
438 prim->maio_bef_sti._skip; | |
439 prim->dtx_allowed._skip; | |
440 prim->bcch_allocation._skip; | |
441 prim->ba_id._skip; | |
442 prim->pwrc._skip; | |
443 return prim; | |
444 } | |
445 T_PRIMITIVE_UNION mphc_immed_assign_req_2() | |
446 { | |
447 T_MPHC_IMMED_ASSIGN_REQ prim; | |
448 prim->channel_desc = channel_desc_ia(); | |
449 prim->timing_advance = TIMING_ADVANCE; | |
450 prim->frequency_list = freq_list_ia(); | |
451 prim->starting_time.start_time_present = 0; | |
452 prim->starting_time.start_time._skip; | |
453 prim->frequency_list_bef_sti._skip; | |
454 prim->maio_bef_sti._skip; | |
455 prim->dtx_allowed._skip; | |
456 prim->bcch_allocation._skip; | |
457 prim->ba_id._skip; | |
458 prim->pwrc._skip; | |
459 return prim; | |
460 } | |
461 | |
462 T_PRIMITIVE_UNION mphc_immed_assign_con_1() | |
463 { | |
464 T_MPHC_IMMED_ASSIGN_CON prim; | |
465 prim->param._skip; | |
466 return prim; | |
467 } | |
468 | |
469 T_PRIMITIVE_UNION mph_dedicated_cnf_1(CHAR success) | |
470 { | |
471 T_MPH_DEDICATED_CNF prim; | |
472 prim->dedi_res = success; | |
473 return prim; | |
474 } | |
475 | |
476 T_PRIMITIVE_UNION mphc_async_ho_req_1(U8 ho_type) | |
477 { | |
478 T_MPHC_ASYNC_HO_REQ prim; | |
479 //prim->handover_command. = async_ho_cmd(); | |
480 prim->handover_command.cell_description = cell_description_2(); | |
481 prim->handover_command.channel_desc_1 = channel_desc_2_tch(); | |
482 prim->handover_command.channel_mode_1 = MODE_SPEECH_VER1; | |
483 prim->handover_command.starting_time._skip; | |
484 prim->handover_command.ho_acc = HO_REF; | |
485 prim->handover_command.txpwr = HO_POW; | |
486 prim->handover_command.report_time_diff._skip; | |
487 prim->handover_command.frequency_list = freq_list(); | |
488 prim->handover_command.channel_desc_2._skip; | |
489 prim->handover_command.channel_mode_2._skip; | |
490 prim->handover_command.frequency_list_bef_sti._skip; | |
491 prim->handover_command.channel_desc_1_bef_sti._skip; | |
492 prim->handover_command.channel_desc_2_bef_sti._skip; | |
493 prim->handover_command.cipher_mode._skip; | |
494 prim->handover_command.a5_algorithm._skip; | |
495 | |
496 prim->fn_offset._skip; | |
497 prim->time_alignmnt._skip; | |
498 prim->cipher_key._skip; | |
499 prim->amr_configuration._skip; | |
500 #ifdef FF_EGPRS | |
501 prim->handover_type = ho_type; | |
502 #endif // FF_EGPRS | |
503 return prim; | |
504 } | |
505 T_PRIMITIVE_UNION mphc_async_ho_req_2() | |
506 { | |
507 T_MPHC_ASYNC_HO_REQ prim; | |
508 // prim->handover_command. = async_ho_cmd_2(); | |
509 prim->handover_command.cell_description = cell_description_2(); | |
510 prim->handover_command.channel_desc_1 = channel_desc_2_tch(); | |
511 prim->handover_command.channel_mode_1 = MODE_SPEECH_VER1; | |
512 prim->handover_command.starting_time = s_time_mphc(); | |
513 prim->handover_command.ho_acc = HO_REF; | |
514 prim->handover_command.txpwr = HO_POW; | |
515 prim->handover_command.report_time_diff._skip; | |
516 prim->handover_command.frequency_list = freq_list(); | |
517 prim->handover_command.channel_desc_2._skip; | |
518 prim->handover_command.channel_mode_2._skip; | |
519 prim->handover_command.frequency_list_bef_sti = freq_list(); | |
520 prim->handover_command.channel_desc_1_bef_sti = channel_desc_3_tch(); | |
521 prim->handover_command.channel_desc_2_bef_sti._skip; | |
522 prim->handover_command.cipher_mode._skip; | |
523 prim->handover_command.a5_algorithm._skip; | |
524 | |
525 prim->fn_offset._skip; | |
526 prim->time_alignmnt._skip; | |
527 prim->cipher_key._skip; | |
528 prim->amr_configuration._skip; | |
529 #ifdef FF_EGPRS | |
530 prim->handover_type = HOT_REGULAR; | |
531 #endif // FF_EGPRS | |
532 return prim; | |
533 } | |
534 T_PRIMITIVE_UNION mphc_async_ho_req_3(CHAR variant) | |
535 { | |
536 T_MPHC_ASYNC_HO_REQ prim; | |
537 //prim->handover_command. = async_ho_cmd_3(); | |
538 prim->handover_command.cell_description.ncc = 0; | |
539 prim->handover_command.cell_description.bcc = 1; | |
540 if (variant == 'A' || variant == 'B') | |
541 prim->handover_command.cell_description.bcch_carrier = ARFCN_23; | |
542 else if (variant == 'E') | |
543 prim->handover_command.cell_description.bcch_carrier = ARFCN_124; | |
544 else if (variant == 'D') | |
545 prim->handover_command.cell_description.bcch_carrier = ARFCN_1; | |
546 else | |
547 prim->handover_command.cell_description.bcch_carrier = ARFCN_14; | |
548 prim->handover_command.channel_desc_1 = channel_desc_2_tch(); | |
549 prim->handover_command.channel_mode_1 = MODE_SPEECH_VER1; | |
550 prim->handover_command.starting_time = s_time_mphc(); | |
551 prim->handover_command.ho_acc = HO_REF; | |
552 prim->handover_command.txpwr = HO_POW; | |
553 prim->handover_command.report_time_diff._skip; | |
554 prim->handover_command.frequency_list = freq_list(); | |
555 prim->handover_command.channel_desc_2._skip; | |
556 prim->handover_command.channel_mode_2._skip; | |
557 prim->handover_command.frequency_list_bef_sti = freq_list(); | |
558 prim->handover_command.channel_desc_1_bef_sti = channel_desc_3_tch(); | |
559 prim->handover_command.channel_desc_2_bef_sti._skip; | |
560 prim->handover_command.cipher_mode._skip; | |
561 prim->handover_command.a5_algorithm._skip; | |
562 | |
563 prim->fn_offset._skip; | |
564 prim->time_alignmnt._skip; | |
565 prim->cipher_key._skip; | |
566 if (variant == 'A') prim->amr_configuration._skip; | |
567 if (variant == 'B') prim->amr_configuration = s_amr_configuration(); | |
568 #ifdef FF_EGPRS | |
569 if (variant == 'D') | |
570 prim->handover_type = HOT_BLIND; | |
571 else | |
572 prim->handover_type = HOT_REGULAR; | |
573 #endif // FF_EGPRS | |
574 return prim; | |
575 } | |
576 | |
577 | |
578 | |
579 | |
580 T_PRIMITIVE_UNION mph_freq_redef_req_1() | |
581 { | |
582 const U16 CHLIST_10_52_59_73_108_114_FFFF_elements[7] = { | |
583 ARFCN_10, | |
584 ARFCN_52, | |
585 ARFCN_59, | |
586 ARFCN_73, | |
587 ARFCN_108, | |
588 ARFCN_114, | |
589 NOT_PRESENT_16BIT | |
590 }; | |
591 T_ARRAY<U16> CHLIST_10_52_59_73_108_114_FFFF(CHLIST_10_52_59_73_108_114_FFFF_elements, SKIP_TO_END); | |
592 | |
593 T_MPH_FREQ_REDEF_REQ prim; | |
594 prim->start.v_start = 1; | |
595 prim->start.t1 = 11; | |
596 prim->start.t2 = 22; | |
597 prim->start.t3 = 33; | |
598 // prim->ch_type. = ch_type_freq_redef(); | |
599 prim->ch_type.ch = CH_TCH_F; | |
600 prim->ch_type.tn = 1; | |
601 prim->ch_type.tsc = 5; | |
602 prim->ch_type.h = H_FREQ; | |
603 prim->ch_type.arfcn = 0; | |
604 prim->ch_type.maio = 1; | |
605 prim->ch_type.hsn = 1; | |
606 prim->ch_type.ma = CHLIST_10_52_59_73_108_114_FFFF; | |
607 return prim; | |
608 } | |
609 T_PRIMITIVE_UNION mph_freq_redef_req_2() | |
610 { | |
611 T_MPH_FREQ_REDEF_REQ prim; | |
612 prim->start = starting_time(); | |
613 //prim->ch_type. = ch_type_sdcch4(); | |
614 prim->ch_type.ch = CH_SDCCH_8_0; | |
615 prim->ch_type.tn = 4; | |
616 prim->ch_type.tsc = 0; | |
617 prim->ch_type.h = 1; | |
618 prim->ch_type.arfcn = 0; | |
619 prim->ch_type.maio = 1; | |
620 prim->ch_type.hsn = 0; | |
621 prim->ch_type.ma = CHLIST_14_23_69_115_FFFF; | |
622 return prim; | |
623 } | |
624 | |
625 | |
626 T_PRIMITIVE_UNION mphc_change_frequency_1() | |
627 { | |
628 T_MPHC_CHANGE_FREQUENCY prim; | |
629 prim->channel_desc = channel_desc_fr(); | |
630 prim->frequency_list = freq_list_fr(); | |
631 prim->starting_time = s_time_t1(); | |
632 return prim; | |
633 } | |
634 T_PRIMITIVE_UNION mphc_change_frequency_2() | |
635 { | |
636 T_MPHC_CHANGE_FREQUENCY prim; | |
637 //prim->channel_desc. = channel_desc_4(); | |
638 prim->channel_desc.chan_sel.h = 1; | |
639 prim->channel_desc.chan_sel.rf_channel.maio = 1; | |
640 prim->channel_desc.chan_sel.rf_channel.hsn = 0; | |
641 prim->channel_desc.channel_type = 0x04; | |
642 prim->channel_desc.sub_channel = 0; | |
643 prim->channel_desc.timeslot_no = 4; | |
644 prim->channel_desc.tsc = 0; | |
645 | |
646 prim->frequency_list = freq_list(); | |
647 prim->starting_time = s_time_mphc(); | |
648 return prim; | |
649 } | |
650 | |
651 | |
652 T_PRIMITIVE_UNION mphc_channel_assign_req_1() | |
653 { | |
654 | |
655 T_MPHC_CHANNEL_ASSIGN_REQ prim; | |
656 prim->channel_desc_1.chan_sel.h = 1; | |
657 prim->channel_desc_1.chan_sel.rf_channel.maio = 0; | |
658 prim->channel_desc_1.chan_sel.rf_channel.hsn = 1; | |
659 prim->channel_desc_1.channel_type = CH_TCH_F; | |
660 prim->channel_desc_1.sub_channel = 0; | |
661 prim->channel_desc_1.timeslot_no = 0; | |
662 prim->channel_desc_1.tsc = 5; | |
663 | |
664 const U16 CHLIST_73_74_75_76_elements[4] = { | |
665 ARFCN_73, | |
666 ARFCN_74, | |
667 ARFCN_75, | |
668 ARFCN_76 | |
669 }; | |
670 T_ARRAY<U16> CHLIST_73_74_75_76(CHLIST_73_74_75_76_elements, SKIP_TO_END); | |
671 | |
672 prim->channel_mode_1._skip; | |
673 prim->txpwr = TXPWR0; | |
674 prim->frequency_list.rf_chan_cnt = 4; | |
675 prim->frequency_list.rf_chan_no.radio_freq = CHLIST_73_74_75_76; | |
676 prim->starting_time.start_time_present = 1; | |
677 prim->starting_time.start_time.t1 = 45; | |
678 prim->starting_time.start_time.t2 = 22; | |
679 prim->starting_time.start_time.t3 = 33; | |
680 | |
681 const U16 CHLIST_46_52_59_66_73_74_elements[6] = { | |
682 ARFCN_46, | |
683 ARFCN_52, | |
684 ARFCN_59, | |
685 ARFCN_66, | |
686 ARFCN_73, | |
687 ARFCN_74 | |
688 }; | |
689 T_ARRAY<U16> CHLIST_46_52_59_66_73_74(CHLIST_46_52_59_66_73_74_elements, SKIP_TO_END); | |
690 | |
691 prim->channel_desc_2._skip; | |
692 prim->channel_mode_2._skip; | |
693 prim->frequency_list_bef_sti.rf_chan_cnt = 6; | |
694 prim->frequency_list_bef_sti.rf_chan_no.radio_freq = CHLIST_46_52_59_66_73_74; | |
695 prim->channel_desc_1_bef_sti.chan_sel.h = 1; | |
696 prim->channel_desc_1_bef_sti.chan_sel.rf_channel.maio = 1; | |
697 prim->channel_desc_1_bef_sti.chan_sel.rf_channel.hsn = 7; | |
698 prim->channel_desc_1_bef_sti.channel_type = CH_TCH_F; | |
699 prim->channel_desc_1_bef_sti.sub_channel = 0; | |
700 prim->channel_desc_1_bef_sti.timeslot_no = 0; | |
701 prim->channel_desc_1_bef_sti.tsc = 5; | |
702 | |
703 prim->channel_desc_2_bef_sti._skip; | |
704 prim->cipher_mode._skip; | |
705 prim->a5_algorithm._skip; | |
706 prim->cipher_key._skip; | |
707 prim->dtx_allowed._skip; | |
708 prim->amr_configuration._skip; | |
709 return prim; | |
710 } | |
711 T_PRIMITIVE_UNION mphc_channel_assign_req_2() | |
712 { | |
713 T_MPHC_CHANNEL_ASSIGN_REQ prim; | |
714 prim->channel_desc_1 = channel_desc_fr(); | |
715 prim->channel_mode_1._skip; | |
716 prim->txpwr = POWER_12; | |
717 prim->frequency_list = freq_list_fr(); | |
718 prim->starting_time = s_time_t1(); | |
719 prim->channel_desc_2._skip; | |
720 prim->channel_mode_2._skip; | |
721 prim->frequency_list_bef_sti = freq_list_ia(); | |
722 prim->channel_desc_1_bef_sti = channel_desc_ia(); | |
723 prim->channel_desc_2_bef_sti._skip; | |
724 prim->cipher_mode._skip; | |
725 prim->a5_algorithm._skip; | |
726 prim->cipher_key._skip; | |
727 prim->dtx_allowed._skip; | |
728 prim->amr_configuration._skip; | |
729 return prim; | |
730 } | |
731 | |
732 T_PRIMITIVE_UNION mphc_channel_assign_con_1() | |
733 { | |
734 T_MPHC_CHANNEL_ASSIGN_CON prim; | |
735 prim->param._skip; | |
736 return prim; | |
737 } | |
738 | |
739 T_PRIMITIVE_UNION mph_dedicated_fail_req_1() | |
740 { | |
741 T_MPH_DEDICATED_FAIL_REQ prim; | |
742 prim->param._skip; | |
743 return prim; | |
744 } | |
745 | |
746 | |
747 T_PRIMITIVE_UNION mph_dedicated_fail_cnf_1() | |
748 { | |
749 T_MPH_DEDICATED_FAIL_CNF prim; | |
750 prim->param._skip; | |
751 return prim; | |
752 } | |
753 | |
754 | |
755 T_PRIMITIVE_UNION mphc_async_ho_con_1() | |
756 { | |
757 T_MPHC_ASYNC_HO_CON prim; | |
758 prim->param._skip; | |
759 return prim; | |
760 } | |
761 | |
762 T_PRIMITIVE_UNION mphc_handover_finished_1(CHAR success) | |
763 { | |
764 T_MPHC_HANDOVER_FINISHED prim; | |
765 prim->cause = success; | |
766 #ifdef FF_EGPRS | |
767 /*valid only for BHO*/ | |
768 prim->fn_offset = FN_OFF_ARFCN_1; | |
769 prim->time_alignment = TIME_ALIGNMT_1; | |
770 #endif // FF_EGPRS | |
771 return prim; | |
772 } | |
773 | |
774 T_PRIMITIVE_UNION mphc_handover_fail_req_1() | |
775 { | |
776 T_MPHC_HANDOVER_FAIL_REQ prim; | |
777 prim->param._skip; | |
778 return prim; | |
779 } | |
780 | |
781 T_PRIMITIVE_UNION mphc_handover_fail_con_1() | |
782 { | |
783 T_MPHC_HANDOVER_FAIL_CON prim; | |
784 prim->param._skip; | |
785 return prim; | |
786 } | |
787 | |
788 T_PRIMITIVE_UNION mphc_change_frequency_con_1() | |
789 { | |
790 T_MPHC_CHANGE_FREQUENCY_CON prim; | |
791 prim->param._skip; | |
792 return prim; | |
793 } | |
794 | |
795 T_RADIO_FRAME copy_array_to_l2_frame(U8 ch_type, const U8 const array[]) | |
796 { | |
797 T_RADIO_FRAME l2_frame; | |
798 U16 sdu_len = (array[0] + (array[1] << 8)) >> 3; /* sdu length in bytes */ | |
799 U8 l2_header_off = (ch_type == L2_CHANNEL_SACCH) ? 6 : 4; | |
800 U8 l2_len = array[l2_header_off+2] >> 2; /* length in bytes from l2 header */ | |
801 | |
802 tdc_usi_trace ("copy_array_to_l2_frame(): sdu_len=%u l2_len=%u", sdu_len, l2_len); | |
803 /* | |
804 * Due to the incorrect SDU lengths in some message sdu“s, we use the length | |
805 * indicator field of the layer 2 header instead. The remain of the | |
806 * information will be filled with fill bytes. Please note the layer 1 header | |
807 * in frames on SACCH. | |
808 */ | |
809 l2_len += 3/*l2 header*/ + (l2_header_off-4)/*l1 header*/; | |
810 for (int i = 0; i < l2_len;i++) /* without sdu length and sdu offset */ | |
811 { | |
812 l2_frame->A[i] = array[i+4]; | |
813 } | |
814 for (; i < 23; i++) | |
815 { | |
816 l2_frame->A[i] = 0x2b; /* fill bytes */ | |
817 } | |
818 | |
819 return l2_frame; | |
820 } | |
821 | |
822 T_PRIMITIVE_UNION ph_data_ind_1() | |
823 { | |
824 const U8 I_SMS[27] = { | |
825 0xA8, 0x00, | |
826 0x10, 0x00, | |
827 0xFF, 0xAA, | |
828 0x0F, | |
829 0x02, | |
830 0x19, | |
831 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, | |
832 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, | |
833 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B | |
834 }; | |
835 T_PH_DATA_IND prim; | |
836 | |
837 prim->rf_chan_num._skip; | |
838 prim->l2_channel_type= L2_CHANNEL_SACCH; | |
839 prim->l2_frame = copy_array_to_l2_frame (L2_CHANNEL_SACCH, I_SMS); | |
840 prim->error_cause = VALID_BLOCK; | |
841 prim->bsic._skip; | |
842 prim->tc._skip; | |
843 | |
844 return prim; | |
845 } | |
846 | |
847 T_PRIMITIVE_UNION mph_channel_mode_req_1() | |
848 { | |
849 T_MPH_CHANNEL_MODE_REQ prim; | |
850 prim->mode = CHANNEL_MODE_AMR; | |
851 prim->ch = CHANNEL_0; | |
852 prim->amr_conf = s_amr_conf_4_icmi(); | |
853 return prim; | |
854 } | |
855 | |
856 T_PRIMITIVE_UNION mphc_channel_mode_modify_req_1() | |
857 { | |
858 T_MPHC_CHANNEL_MODE_MODIFY_REQ prim; | |
859 prim->sub_channel = CHANNEL_0; | |
860 prim->channel_mode = CHM_AHS; | |
861 prim->amr_configuration = s_amr_configuration(); | |
862 return prim; | |
863 } | |
864 | |
865 T_PRIMITIVE_UNION mphc_channel_mode_modify_con_1() | |
866 { | |
867 T_MPHC_CHANNEL_MODE_MODIFY_CON prim; | |
868 prim->param._skip; | |
869 return prim; | |
870 } | |
871 T_PRIMITIVE_UNION mphc_stop_dedicated_req() | |
872 { | |
873 T_MPHC_STOP_DEDICATED_REQ prim; | |
874 prim->param._skip; | |
875 return prim; | |
876 } | |
877 T_PRIMITIVE_UNION mphc_stop_dedicated_con() | |
878 { | |
879 T_MPHC_STOP_DEDICATED_CON prim; | |
880 prim->param._skip; | |
881 return prim; | |
882 } | |
883 T_PRIMITIVE_UNION mph_stop_dedicated_req() | |
884 { | |
885 T_MPH_STOP_DEDICATED_REQ prim; | |
886 prim->param._skip; | |
887 return prim; | |
888 } | |
889 T_PRIMITIVE_UNION mph_stop_dedicated_cnf() | |
890 { | |
891 T_MPH_STOP_DEDICATED_CNF prim; | |
892 prim->param._skip; | |
893 return prim; | |
894 } | |
895 T_PRIMITIVE_UNION mph_dedicated_req_2g() | |
896 { | |
897 T_MPH_DEDICATED_REQ prim; | |
898 prim->mod = MODE_PDCH_ASSIGN; | |
899 prim->start._skip; | |
900 prim->ch_type._skip; | |
901 prim->ch_type2._skip; | |
902 prim->arfcn._skip; | |
903 prim->bsic._skip; | |
904 prim->ho_param._skip; | |
905 prim->tr_para._skip; | |
906 prim->ciph._skip; | |
907 prim->amr_conf._skip; | |
908 return prim; | |
909 } | |
910 T_PRIMITIVE_UNION mph_dedicated_fail_req_1g() | |
911 { | |
912 T_MPH_DEDICATED_FAIL_REQ prim; | |
913 prim->param._skip; | |
914 return prim; | |
915 } | |
916 #if 0 | |
917 T_PRIMITIVE_UNION mphc_immed_assign_req_2g() | |
918 { | |
919 T_MPHC_IMMED_ASSIGN_REQ prim; | |
920 prim->channel_desc = channel_desc_1(); | |
921 prim->timing_advance = TIMING_ADVANCE; | |
922 prim->frequency_list = freq_list(); | |
923 prim->starting_time._skip; | |
924 prim->frequency_list_bef_sti._skip; | |
925 prim->maio_bef_sti._skip; | |
926 prim->dtx_allowed._skip; | |
927 prim->bcch_allocation._skip; | |
928 prim->ba_id._skip; | |
929 prim->pwrc._skip; | |
930 return prim; | |
931 } | |
932 #endif | |
933 T_PRIMITIVE_UNION mphc_channel_assign_req_1g() | |
934 { | |
935 T_MPHC_CHANNEL_ASSIGN_REQ prim; | |
936 prim->channel_desc_1._skip; | |
937 prim->channel_mode_1._skip; | |
938 prim->txpwr._skip; | |
939 prim->frequency_list._skip; | |
940 prim->starting_time._skip; | |
941 prim->channel_desc_2._skip; | |
942 prim->channel_mode_2._skip; | |
943 prim->frequency_list_bef_sti._skip; | |
944 prim->channel_desc_1_bef_sti._skip; | |
945 prim->channel_desc_2_bef_sti._skip; | |
946 prim->cipher_mode._skip; | |
947 prim->a5_algorithm._skip; | |
948 prim->cipher_key._skip; | |
949 prim->dtx_allowed._skip; | |
950 prim->amr_configuration._skip; | |
951 return prim; | |
952 } | |
953 | |
954 T_PRIMITIVE_UNION mphc_channel_assign_con_1g() | |
955 { | |
956 T_MPHC_CHANNEL_ASSIGN_CON prim; | |
957 prim->param._skip; | |
958 return prim; | |
959 } | |
960 | |
961 T_PRIMITIVE_UNION mph_dedicated_fail_cnf_1g() | |
962 { | |
963 T_MPH_DEDICATED_FAIL_CNF prim; | |
964 prim->param._skip; | |
965 return prim; | |
966 } | |
967 | |
968 | |
969 T_PRIMITIVE_UNION mph_dedicated_req_fn(U8 mode, U16 arfcn, U8 bsic) | |
970 { | |
971 T_MPH_DEDICATED_REQ prim; | |
972 prim->mod = mode; | |
973 prim->start._skip; | |
974 prim->ch_type = ch_type_tch2(); | |
975 prim->ch_type2._skip; | |
976 prim->arfcn = arfcn; | |
977 prim->bsic = bsic; | |
978 prim->ho_param = ho_param_1(); | |
979 prim->tr_para = tr_param(); | |
980 prim->ciph = ciph_param(); | |
981 prim->amr_conf._skip; | |
982 return prim; | |
983 } | |
984 | |
985 T_PRIMITIVE_UNION mphc_async_ho_req_ho_type_fn(U8 ho_type, U32 fn_offset, U32 time_alignment) | |
986 { | |
987 T_MPHC_ASYNC_HO_REQ prim; | |
988 prim->handover_command._skip; | |
989 prim->fn_offset = fn_offset; | |
990 prim->time_alignmnt = time_alignment; | |
991 prim->cipher_key._skip; | |
992 prim->amr_configuration._skip; | |
993 #ifdef FF_EGPRS | |
994 prim->handover_type = ho_type; | |
995 #endif // FF_EGPRS | |
996 return prim; | |
997 } | |
998 | |
999 T_PRIMITIVE_UNION mphc_sync_ho_req_ho_type_fn(U8 ho_type, U32 fn_offset, U32 time_alignment) | |
1000 { | |
1001 T_MPHC_SYNC_HO_REQ prim; | |
1002 prim->handover_command._skip; | |
1003 prim->fn_offset = fn_offset; | |
1004 prim->time_alignmnt = time_alignment; | |
1005 prim->cipher_key._skip; | |
1006 prim->amr_configuration._skip; | |
1007 #ifdef FF_EGPRS | |
1008 prim->handover_type = ho_type; | |
1009 #endif // FF_EGPRS | |
1010 return prim; | |
1011 } | |
1012 | |
1013 T_PRIMITIVE_UNION mphc_presync_ho_req_ho_type_fn(U8 ho_type, U32 fn_offset, U32 time_alignment) | |
1014 { | |
1015 T_MPHC_PRE_SYNC_HO_REQ prim; | |
1016 prim->handover_command._skip; | |
1017 prim->fn_offset = fn_offset; | |
1018 prim->time_alignmnt = time_alignment; | |
1019 prim->cipher_key._skip; | |
1020 prim->amr_configuration._skip; | |
1021 #ifdef FF_EGPRS | |
1022 prim->handover_type = ho_type; | |
1023 #endif // FF_EGPRS | |
1024 return prim; | |
1025 } | |
1026 | |
1027 | |
1028 T_PRIMITIVE_UNION mphc_handover_finished_fn(U8 cause) | |
1029 { | |
1030 T_MPHC_HANDOVER_FINISHED prim; | |
1031 if(cause == 0xFF) prim->cause._show; | |
1032 else prim->cause = cause; | |
1033 return prim; | |
1034 } | |
1035 | |
1036 | |
1037 T_PRIMITIVE_UNION mph_dedicated_cnf_fn(U8 cause) | |
1038 { | |
1039 T_MPH_DEDICATED_CNF prim; | |
1040 if(cause == 0xFF) prim->dedi_res._show; | |
1041 else prim->dedi_res = cause; | |
1042 return prim; | |
1043 } | |
1044 |