comparison src/g23m-gprs/grr/grr_gfpp.c @ 183:219afcfc6250

src/g23m-gprs: initial import from TCS3.2/LoCosto
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 13 Oct 2016 04:24:13 +0000
parents
children
comparison
equal deleted inserted replaced
182:f02d0a0e1849 183:219afcfc6250
1 /*
2 +-----------------------------------------------------------------------------
3 | Project : GPRS (8441)
4 | Modul : GRR
5 +-----------------------------------------------------------------------------
6 | Copyright 2002 Texas Instruments Berlin, AG
7 | All rights reserved.
8 |
9 | This file is confidential and a trade secret of Texas
10 | Instruments Berlin, AG
11 | The receipt of or possession of this file does not convey
12 | any rights to reproduce or disclose its contents or to
13 | manufacture, use, or sell anything it may describe, in
14 | whole, or in part, without the specific written consent of
15 | Texas Instruments Berlin, AG.
16 +-----------------------------------------------------------------------------
17 | Purpose : This module implements primitive handler functions for service
18 | GFP of entity GRR.
19 +-----------------------------------------------------------------------------
20 */
21
22 #ifndef GRR_GFPP_C
23 #define GRR_GFPP_C
24 #endif
25
26 #define ENTITY_GRR
27
28 /*==== INCLUDES =============================================================*/
29
30 #include "typedefs.h" /* to get Condat data types */
31
32 #include "vsi.h" /* to get a lot of macros */
33 #include "macdef.h"
34 #include "gprs.h"
35 #include "gsm.h" /* to get a lot of macros */
36 #include "ccdapi.h" /* to get CCD API */
37 #include "prim.h" /* to get the definitions of used SAP and directions */
38 #include "message.h"
39 #include "grr.h" /* to get the global entity definitions */
40 #include "grr_f.h" /* to get the global entity procedure definitions */
41 #include "grr_gfpf.h"
42 #include "grr_pgs.h"
43 #include "grr_psis.h"
44 #include "grr_css.h"
45 #include "grr_meass.h"
46 #include "grr_measf.h"
47 #include "grr_tcs.h"
48 #include "grr_ctrls.h"
49 #include "cl_rlcmac.h"
50
51 /*==== CONST ================================================================*/
52
53 /*==== DIAGNOSTICS ==========================================================*/
54
55 /*==== LOCAL VARS ===========================================================*/
56 LOCAL void gfp_adapt_fn ( ULONG fn );
57 /*==== PRIVATE FUNCTIONS ====================================================*/
58
59 /*
60 +------------------------------------------------------------------------------
61 | Function : gfp_adapt_fn()
62 +------------------------------------------------------------------------------
63 | Description : The function gfp_adapt_fn() calculates the received frame
64 | number and the first framenumber of the current radio block
65 |
66 | Parameters : fn - frame number, where the block is passed to layer23
67 |
68 +------------------------------------------------------------------------------
69 */
70 LOCAL void gfp_adapt_fn ( ULONG fn )
71 {
72 TRACE_FUNCTION( "gfp_adapt_fn" );
73
74 /*
75 * The received frame number is always 4 frames before fn.
76 */
77
78
79 grr_data->dl_fn = fn-4;
80 /*
81 * adapte uplink framenumber from downlink framenumber.
82 * fn could be an idle frame !!!
83 */
84
85 if(!fn)
86 {
87 TRACE_EVENT_P1("INVALID FN IN MPHP PRIMITIVE: fn = %ld not alowed",fn);
88 grr_data->dl_fn = fn;
89 }
90 grr_data->ul_fn = fn;
91 if((grr_data->ul_fn % 13) EQ 12)
92 grr_data->ul_fn++;
93 grr_data->ul_fn %= FN_MAX;
94
95 } /* gfp_adapt_fn() */
96
97
98 /*==== PUBLIC FUNCTIONS =====================================================*/
99
100
101
102 /*
103 +------------------------------------------------------------------------------
104 | Function : gfp_mphp_data_ind
105 +------------------------------------------------------------------------------
106 | Description : Handles the primitive MPHP_DATA_IND
107 |
108 | Parameters : *mphp_data_ind - Ptr to primitive payload
109 |
110 +------------------------------------------------------------------------------
111 */
112 GLOBAL void gfp_mphp_data_ind ( T_MPHP_DATA_IND *mphp_data_ind )
113 {
114 TRACE_FUNCTION( "gfp_mphp_data_ind" );
115
116
117 gfp_adapt_fn(mphp_data_ind->fn);
118
119 switch( GET_STATE( GFP ) )
120 {
121 case GFP_IDLE:
122 PACCESS(mphp_data_ind);
123
124 if(mphp_data_ind->error_flag)
125 {
126 if(mphp_data_ind->l2_channel EQ L2_PCHANNEL_PPCH)
127 {
128 if(grr_decrease_dsc())
129 {
130 /*
131 * Inform GRR
132 */
133 sig_gfp_ctrl_dsf_ind();
134 }
135 }
136 /*
137 TRACE_ERROR( "MPHP_DATA_IND with error_flag(invalid block)" );
138 */
139
140 TRACE_BINDUMP
141 ( hCommGRR, TC_USER5,
142 cl_rlcmac_get_msg_name( D_MSG_TYPE_CRC_ERROR_c, RLC_MAC_ROUTE_DL ),
143 mphp_data_ind->l2_frame, MAX_L2_FRAME_SIZE ); /*lint !e569*/
144 }
145 else
146 {
147 if(mphp_data_ind->l2_channel EQ L2_PCHANNEL_PPCH)
148 {
149 sig_gfp_meas_rxlev_pccch_ind( mphp_data_ind->pccch_lev );
150 grr_increase_dsc();
151 }
152 gfp_prcs_ctrl_msg( &mphp_data_ind->l2_frame[0],
153 mphp_data_ind->l2_channel,
154 mphp_data_ind->relative_pos,
155 mphp_data_ind->fn - 4 );
156 }
157 break;
158 default:
159 TRACE_ERROR( "MPHP_DATA_IND unexpected" );
160 /*
161 * SZML-SGLBL/008
162 */
163 break;
164 }
165 PFREE(mphp_data_ind);
166
167
168 } /* gfp_mphp_data_ind() */
169
170 /*
171 +------------------------------------------------------------------------------
172 | Function : gfp_mphp_scell_pbcch_stop_con
173 +------------------------------------------------------------------------------
174 | Description : Handles the primitive MPHP_SCELL_PBCCH_STOP_CON
175 |
176 | Parameters : *mphp_scell_pbcch_stop_con - Ptr to primitive payload
177 |
178 +------------------------------------------------------------------------------
179 */
180 GLOBAL void gfp_mphp_scell_pbcch_stop_con (
181 T_MPHP_SCELL_PBCCH_STOP_CON *mphp_scell_pbcch_stop_con )
182 {
183 TRACE_FUNCTION( "gfp_mphp_scell_pbcch_stop_con" );
184
185
186 switch( GET_STATE( GFP ) )
187 {
188 case GFP_IDLE:
189 PACCESS(mphp_scell_pbcch_stop_con);
190 sig_gfp_psi_scell_pbcch_stop_con(mphp_scell_pbcch_stop_con);
191 break;
192 default:
193 TRACE_ERROR( "MPHP_SCELL_PBCCH_STOP_CON unexpected" );
194 break;
195 }
196 PFREE(mphp_scell_pbcch_stop_con);
197
198 } /* gfp_mphp_scell_pbcch_stop_con() */
199
200
201
202 /*
203 +------------------------------------------------------------------------------
204 | Function : gfp_mphp_stop_pccch_con
205 +------------------------------------------------------------------------------
206 | Description : Handles the primitive MPHP_STOP_PCCCH_CON
207 |
208 | Parameters : *mphp_stop_pccch_con - Ptr to primitive payload
209 |
210 +------------------------------------------------------------------------------
211 */
212 GLOBAL void gfp_mphp_stop_pccch_con ( T_MPHP_STOP_PCCCH_CON *mphp_stop_pccch_con )
213 {
214 TRACE_FUNCTION( "gfp_mphp_stop_pccch_con" );
215
216
217 switch( GET_STATE( GFP ) )
218 {
219 case GFP_IDLE:
220 PACCESS(mphp_stop_pccch_con);
221 sig_gfp_pg_stop_pccch_con(mphp_stop_pccch_con);
222 break;
223 default:
224 TRACE_ERROR( "MPHP_STOP_PCCCH_CON unexpected" );
225 break;
226 }
227 PFREE(mphp_stop_pccch_con);
228
229 } /* gfp_mphp_stop_pccch_con() */
230
231
232
233 /*
234 +------------------------------------------------------------------------------
235 | Function : gfp_mphp_cr_meas_ind
236 +------------------------------------------------------------------------------
237 | Description : Handles the primitive MPHP_CR_MEAS_IND
238 |
239 | Parameters : *mphp_cr_meas_ind - Ptr to primitive payload
240 |
241 +------------------------------------------------------------------------------
242 */
243 GLOBAL void gfp_mphp_cr_meas_ind ( T_MPHP_CR_MEAS_IND *mphp_cr_meas_ind )
244 {
245 TRACE_FUNCTION( "gfp_mphp_cr_meas_ind" );
246
247 switch( GET_STATE( GFP ) )
248 {
249 case GFP_IDLE:
250 PACCESS( mphp_cr_meas_ind );
251 sig_gfp_cs_cr_meas_ind( mphp_cr_meas_ind );
252 break;
253 default:
254 TRACE_ERROR( "MPHP_CR_MEAS_IND unexpected" );
255 break;
256 }
257
258 PFREE( mphp_cr_meas_ind );
259 } /* gfp_mphp_cr_meas_ind() */
260
261
262
263 /*
264 +------------------------------------------------------------------------------
265 | Function : gfp_mphp_cr_meas_stop_con
266 +------------------------------------------------------------------------------
267 | Description : Handles the primitive MPHP_CR_MEAS_STOP_CON
268 |
269 | Parameters : *mphp_cr_meas_stop_con - Ptr to primitive payload
270 |
271 +------------------------------------------------------------------------------
272 */
273 GLOBAL void gfp_mphp_cr_meas_stop_con ( T_MPHP_CR_MEAS_STOP_CON *mphp_cr_meas_stop_con )
274 {
275 TRACE_FUNCTION( "gfp_mphp_cr_meas_stop_con" );
276
277 switch( GET_STATE( GFP ) )
278 {
279 case GFP_IDLE:
280 PACCESS( mphp_cr_meas_stop_con );
281 sig_gfp_cs_cr_meas_stop_con( mphp_cr_meas_stop_con );
282 break;
283 default:
284 TRACE_ERROR( "MPHP_CR_MEAS_STOP_CON unexpected" );
285 break;
286 }
287
288 PFREE( mphp_cr_meas_stop_con );
289 } /* gfp_mphp_cr_meas_stop_con() */
290
291
292
293 /*
294 +------------------------------------------------------------------------------
295 | Function : gfp_mphp_int_meas_ind
296 +------------------------------------------------------------------------------
297 | Description : Handles the primitive MPHP_INT_MEAS_IND
298 |
299 | Parameters : *mphp_int_meas_ind - Ptr to primitive payload
300 |
301 +------------------------------------------------------------------------------
302 */
303 GLOBAL void gfp_mphp_int_meas_ind ( T_MPHP_INT_MEAS_IND *mphp_int_meas_ind )
304 {
305 TRACE_FUNCTION( "gfp_mphp_int_meas_ind" );
306
307 switch( GET_STATE( GFP ) )
308 {
309 case GFP_IDLE:
310 PACCESS(mphp_int_meas_ind);
311 sig_gfp_meas_int_meas_ind(mphp_int_meas_ind);
312 break;
313 default:
314 TRACE_ERROR( "MPHP_INT_MEAS_IND unexpected" );
315 break;
316 }
317
318 PFREE(mphp_int_meas_ind);
319 } /* gfp_mphp_int_meas_ind() */
320
321 /*
322 +------------------------------------------------------------------------------
323 | Function : gfp_mphp_tint_meas_ind
324 +------------------------------------------------------------------------------
325 | Description : Handles the primitive MPHP_TINT_MEAS_IND
326 |
327 | Parameters : *mphp_tint_meas_ind - Ptr to primitive payload
328 |
329 +------------------------------------------------------------------------------
330 */
331 GLOBAL void gfp_mphp_tint_meas_ind ( T_MPHP_TINT_MEAS_IND *mphp_tint_meas_ind )
332 {
333 TRACE_FUNCTION( "gfp_mphp_tint_meas_ind" );
334
335 switch( GET_STATE( GFP ) )
336 {
337 case GFP_IDLE:
338 PACCESS(mphp_tint_meas_ind);
339 sig_gfp_meas_int_meas_ind((T_MPHP_INT_MEAS_IND*)mphp_tint_meas_ind);
340 break;
341 default:
342 TRACE_ERROR( "MPHP_TINT_MEAS_IND unexpected" );
343 break;
344 }
345
346 PFREE(mphp_tint_meas_ind);
347 } /* gfp_mphp_tint_meas_ind() */
348
349
350
351 /*
352 +------------------------------------------------------------------------------
353 | Function : gfp_mphp_int_meas_stop_con
354 +------------------------------------------------------------------------------
355 | Description : Handles the primitive MPHP_INT_MEAS_STOP_CON
356 |
357 | Parameters : *mphp_int_meas_stop_con - Ptr to primitive payload
358 |
359 +------------------------------------------------------------------------------
360 */
361 GLOBAL void gfp_mphp_int_meas_stop_con (
362 T_MPHP_INT_MEAS_STOP_CON *mphp_int_meas_stop_con )
363 {
364 TRACE_FUNCTION( "gfp_mphp_int_meas_stop_con" );
365
366
367 switch( GET_STATE( GFP ) )
368 {
369 case GFP_IDLE:
370 PACCESS(mphp_int_meas_stop_con);
371 sig_gfp_meas_int_meas_stop_con(mphp_int_meas_stop_con);
372 break;
373 default:
374 TRACE_ERROR( "MPHP_INT_MEAS_STOP_CON unexpected" );
375 break;
376 }
377
378 PFREE(mphp_int_meas_stop_con);
379 } /* gfp_mphp_int_meas_stop_con() */
380
381
382
383 /*
384 +------------------------------------------------------------------------------
385 | Function : gfp_mphp_ncell_pbcch_ind
386 +------------------------------------------------------------------------------
387 | Description : Handles the primitive MPHP_NCELL_PBCCH_IND
388 |
389 | Parameters : *mphp_ncell_pbcch_ind - Ptr to primitive payload
390 |
391 +------------------------------------------------------------------------------
392 */
393 GLOBAL void gfp_mphp_ncell_pbcch_ind (
394 T_MPHP_NCELL_PBCCH_IND *mphp_ncell_pbcch_ind )
395 {
396 TRACE_FUNCTION( "gfp_mphp_ncell_pbcch_ind" );
397
398 gfp_adapt_fn(mphp_ncell_pbcch_ind->fn);
399
400 switch( GET_STATE( GFP ) )
401 {
402 case GFP_IDLE:
403 PACCESS(mphp_ncell_pbcch_ind);
404 if(mphp_ncell_pbcch_ind->error_flag)
405 {
406 TRACE_ERROR( "MPHP_NCELL_PBCCH_IND with error_flag(invalid block)" );
407
408 TRACE_BINDUMP
409 ( hCommGRR, TC_USER5,
410 cl_rlcmac_get_msg_name( D_MSG_TYPE_CRC_ERROR_c, RLC_MAC_ROUTE_DL ),
411 mphp_ncell_pbcch_ind->l2_frame, MAX_L2_FRAME_SIZE ); /*lint !e569*/
412 }
413 else
414 {
415 gfp_prcs_ctrl_msg( &mphp_ncell_pbcch_ind->l2_frame[0],
416 mphp_ncell_pbcch_ind->l2_channel,
417 mphp_ncell_pbcch_ind->relative_pos,
418 mphp_ncell_pbcch_ind->fn - 4 );
419 }
420 break;
421 default:
422 TRACE_ERROR( "MPHP_NCELL_PBCCH_IND unexpected" );
423 break;
424 }
425 PFREE(mphp_ncell_pbcch_ind);
426
427 } /* gfp_mphp_ncell_pbcch_ind() */
428
429
430
431 /*
432 +------------------------------------------------------------------------------
433 | Function : gfp_mphp_ra_con
434 +------------------------------------------------------------------------------
435 | Description : Handles the primitive MPHP_RA_CON
436 |
437 | Parameters : *mphp_ra_con - Ptr to primitive payload
438 |
439 +------------------------------------------------------------------------------
440 */
441 GLOBAL void gfp_mphp_ra_con ( T_MPHP_RA_CON *mphp_ra_con )
442 {
443 TRACE_FUNCTION( "gfp_mphp_ra_con" );
444
445 gfp_adapt_fn(mphp_ra_con->fn);
446
447 switch( GET_STATE( GFP ) )
448 {
449 case GFP_IDLE:
450 PACCESS(mphp_ra_con);
451 sig_gfp_tc_ra_con(mphp_ra_con);
452 break;
453 default:
454 TRACE_ERROR( "MPHP_RA_CON unexpected" );
455 break;
456 }
457 PFREE(mphp_ra_con);
458
459 } /* gfp_mphp_ra_con() */
460
461
462
463 /*
464 +------------------------------------------------------------------------------
465 | Function : gfp_mphp_ra_stop_con
466 +------------------------------------------------------------------------------
467 | Description : Handles the primitive MPHP_RA_STOP_CON
468 |
469 | Parameters : *mphp_ra_stop_con - Ptr to primitive payload
470 |
471 +------------------------------------------------------------------------------
472 */
473 GLOBAL void gfp_mphp_ra_stop_con ( T_MPHP_RA_STOP_CON *mphp_ra_stop_con )
474 {
475 TRACE_FUNCTION( "gfp_mphp_ra_stop_con" );
476
477
478 switch( GET_STATE( GFP ) )
479 {
480 case GFP_IDLE:
481 PACCESS(mphp_ra_stop_con);
482 sig_gfp_tc_ra_stop_con(mphp_ra_stop_con);
483 break;
484 default:
485 TRACE_ERROR( "MPHP_RA_STOP_CON unexpected" );
486 break;
487 }
488 PFREE(mphp_ra_stop_con);
489
490 } /* gfp_mphp_ra_stop_con() */
491
492
493
494 /*
495 +------------------------------------------------------------------------------
496 | Function : gfp_mphp_polling_ind
497 +------------------------------------------------------------------------------
498 | Description : Handles the primitive MPHP_POLLING_IND
499 |
500 | Parameters : *mphp_polling_ind - Ptr to primitive payload
501 |
502 +------------------------------------------------------------------------------
503 */
504 GLOBAL void gfp_mphp_polling_ind ( T_MPHP_POLLING_IND *mphp_polling_ind )
505 {
506 TRACE_FUNCTION( "gfp_mphp_polling_ind" );
507
508
509 gfp_adapt_fn(mphp_polling_ind->fn);
510
511 switch( GET_STATE( GFP ) )
512 {
513 case GFP_IDLE:
514 PACCESS(mphp_polling_ind);
515 /*
516 * This Message is not reported to TC, it is not requested
517 */
518 break;
519 default:
520 TRACE_ERROR( "MPHP_POLLING_IND unexpected" );
521 break;
522 }
523 PFREE(mphp_polling_ind);
524
525 } /* gfp_mphp_polling_ind() */
526
527
528
529 /*
530 +------------------------------------------------------------------------------
531 | Function : gfp_mphp_assignment_con
532 +------------------------------------------------------------------------------
533 | Description : Handles the primitive MPHP_ASSIGNMENT_CON
534 |
535 | Parameters : *mphp_assignment_con - Ptr to primitive payload
536 |
537 +------------------------------------------------------------------------------
538 */
539 GLOBAL void gfp_mphp_assignment_con ( T_MPHP_ASSIGNMENT_CON *mphp_assignment_con )
540 {
541 TRACE_FUNCTION( "gfp_mphp_assignment_con" );
542
543 switch( GET_STATE( GFP ) )
544 {
545 case GFP_IDLE:
546 PACCESS(mphp_assignment_con);
547 sig_gfp_tc_assignment_con();
548 break;
549 default:
550 TRACE_ERROR( "MPHP_ASSIGNMENT_CON unexpected" );
551 break;
552 }
553 PFREE(mphp_assignment_con);
554 } /* gfp_mphp_assignment_con() */
555
556 /*
557 +------------------------------------------------------------------------------
558 | Function : gfp_mphp_repeat_ul_fixed_alloc_con
559 +------------------------------------------------------------------------------
560 | Description : Handles the primitive MPHP_REPEAT_UL_FIXED_ALLOC_CON
561 |
562 | Parameters : *mphp_repeat_ul_fixed_alloc_con - Ptr to primitive payload
563 |
564 +------------------------------------------------------------------------------
565 */
566 GLOBAL void gfp_mphp_repeat_ul_fixed_alloc_con (
567 T_MPHP_REPEAT_UL_FIXED_ALLOC_CON *mphp_repeat_ul_fixed_alloc_con )
568 {
569 TRACE_FUNCTION( "gfp_mphp_repeat_ul_fixed_alloc_con" );
570
571
572 switch( GET_STATE( GFP ) )
573 {
574 case GFP_IDLE:
575 PACCESS(mphp_repeat_ul_fixed_alloc_con);
576 /*
577 * no signal to tc requested
578 */
579 break;
580 default:
581 TRACE_ERROR( "MPHP_REPEAT_UL_FIXED_ALLOC_CON unexpected" );
582 break;
583 }
584 PFREE(mphp_repeat_ul_fixed_alloc_con);
585 } /* gfp_mphp_repeat_ul_fixed_alloc_con() */
586
587
588
589 /*
590 +------------------------------------------------------------------------------
591 | Function : gfp_mphp_single_block_con
592 +------------------------------------------------------------------------------
593 | Description : Handles the primitive MPHP_SINGLE_BLOCK_CON
594 |
595 | Parameters : *mphp_single_block_con - Ptr to primitive payload
596 |
597 +------------------------------------------------------------------------------
598 */
599 GLOBAL void gfp_mphp_single_block_con (
600 T_MPHP_SINGLE_BLOCK_CON *mphp_single_block_con )
601 {
602 BOOL result = FALSE;
603 TRACE_FUNCTION( "gfp_mphp_single_block_con" );
604
605
606 TRACE_EVENT_P8("BLK_C purp=%d dl_err=%d last_id=%d rec_id=%d sb_st=%d l2_f[0]=0x%x l2_f[1]=0x%x l2_f[2]=0x%x"
607 ,mphp_single_block_con->purpose
608 ,mphp_single_block_con->dl_error
609 ,grr_data->tc.last_rec_nb_id
610 ,mphp_single_block_con->assign_id
611 ,mphp_single_block_con->sb_status
612 ,mphp_single_block_con->l2_frame[0]
613 ,mphp_single_block_con->l2_frame[1]
614 ,mphp_single_block_con->l2_frame[2]);
615
616
617 switch( GET_STATE( GFP ) )
618 {
619 case GFP_IDLE:
620 PACCESS(mphp_single_block_con);
621 if ( (mphp_single_block_con->purpose EQ SINGLE_BLOCK_TRANSFER_DL) AND
622 (grr_data->tc.last_rec_nb_id EQ mphp_single_block_con->assign_id) )
623 {
624 if( (!mphp_single_block_con->dl_error) AND
625 (mphp_single_block_con->sb_status EQ SB_STAT_DL_OK) )
626 {
627 result = gfp_prcs_ctrl_msg( mphp_single_block_con->l2_frame,
628 L2_PCHANNEL_PACCH,
629 NOT_PRESENT_8BIT,
630 grr_data->tc.last_rec_nb_fn );
631 }
632 else
633 {
634 TRACE_BINDUMP
635 ( hCommGRR, TC_USER5,
636 cl_rlcmac_get_msg_name( D_MSG_TYPE_CRC_ERROR_c, RLC_MAC_ROUTE_DL ),
637 mphp_single_block_con->l2_frame, MAX_L2_FRAME_SIZE ); /*lint !e569*/
638 }
639 }
640
641 if(!result)
642 {
643 /*
644 * no SINGLE_BLOCK_TRANSFER_DL or
645 * sb_status = 1 --> invalid single block or
646 * no assignment in downlink single block
647 */
648 sig_gfp_tc_single_block_cnf(mphp_single_block_con);
649 }
650 break;
651 default:
652 TRACE_ERROR( "MPHP_SINGLE_BLOCK_CON unexpected" );
653 break;
654 }
655 PFREE(mphp_single_block_con);
656 } /* gfp_mphp_single_block_con() */
657
658
659
660 /*
661 +------------------------------------------------------------------------------
662 | Function : gfp_mphp_tbf_release_con
663 +------------------------------------------------------------------------------
664 | Description : Handles the primitive MPHP_TBF_RELEASE_CON
665 |
666 | Parameters : *mphp_tbf_release_con - Ptr to primitive payload
667 |
668 +------------------------------------------------------------------------------
669 */
670 GLOBAL void gfp_mphp_tbf_release_con (
671 T_MPHP_TBF_RELEASE_CON *mphp_tbf_release_con )
672 {
673 TRACE_FUNCTION( "gfp_mphp_tbf_release_con" );
674
675
676 switch( GET_STATE( GFP ) )
677 {
678 case GFP_IDLE:
679 PACCESS(mphp_tbf_release_con);
680 sig_gfp_tc_tbf_release_con(mphp_tbf_release_con);
681 break;
682 default:
683 TRACE_ERROR( "MPHP_TBF_RELEASE_CON unexpected" );
684 break;
685 }
686 PFREE(mphp_tbf_release_con);
687
688 } /* gfp_mphp_tbf_release_con() */
689
690
691
692 /*
693 +------------------------------------------------------------------------------
694 | Function : gfp_mphp_pdch_release_con
695 +------------------------------------------------------------------------------
696 | Description : Handles the primitive MPHP_PDCH_RELEASE_CON
697 |
698 | Parameters : *mphp_pdch_release_con - Ptr to primitive payload
699 |
700 +------------------------------------------------------------------------------
701 */
702 GLOBAL void gfp_mphp_pdch_release_con (
703 T_MPHP_PDCH_RELEASE_CON *mphp_pdch_release_con )
704 {
705 TRACE_FUNCTION( "gfp_mphp_pdch_release_con" );
706
707
708 switch( GET_STATE( GFP ) )
709 {
710 case GFP_IDLE:
711 PACCESS(mphp_pdch_release_con);
712 /*
713 * no signal to tc requested
714 */
715 break;
716 default:
717 TRACE_ERROR( "MPHP_PDCH_RELEASE_CON unexpected" );
718 break;
719 }
720 PFREE(mphp_pdch_release_con);
721
722 } /* gfp_mphp_pdch_release_con() */
723
724
725
726 /*
727 +------------------------------------------------------------------------------
728 | Function : gfp_mphp_timing_advance_con
729 +------------------------------------------------------------------------------
730 | Description : Handles the primitive MPHP_TIMING_ADVANCE_CON
731 |
732 | Parameters : *mphp_timing_advance_con - Ptr to primitive payload
733 |
734 +------------------------------------------------------------------------------
735 */
736 GLOBAL void gfp_mphp_timing_advance_con (
737 T_MPHP_TIMING_ADVANCE_CON *mphp_timing_advance_con )
738 {
739 TRACE_FUNCTION( "gfp_mphp_timing_advance_con" );
740
741
742 switch( GET_STATE( GFP ) )
743 {
744 case GFP_IDLE:
745 PACCESS(mphp_timing_advance_con);
746 /*not passed to other service, not needed*/
747 break;
748 default:
749 TRACE_ERROR( "MPHP_TIMING_ADVANCE_CON unexpected" );
750 break;
751 }
752 PFREE(mphp_timing_advance_con);
753
754 } /* gfp_mphp_timing_advance_con() */
755
756
757
758 /*
759 +------------------------------------------------------------------------------
760 | Function : gfp_mphp_update_psi_param_con
761 +------------------------------------------------------------------------------
762 | Description : Handles the primitive MPHP_UPDATE_PSI_PARAM_CON
763 |
764 | Parameters : *mphp_update_psi_param_con - Ptr to primitive payload
765 |
766 +------------------------------------------------------------------------------
767 */
768 GLOBAL void gfp_mphp_update_psi_param_con (
769 T_MPHP_UPDATE_PSI_PARAM_CON *mphp_update_psi_param_con )
770 {
771 TRACE_FUNCTION( "gfp_mphp_update_psi_param_con" );
772
773
774 switch( GET_STATE( GFP ) )
775 {
776 case GFP_IDLE:
777 PACCESS(mphp_update_psi_param_con);
778 /*not passed to other service, not needed*/
779 break;
780 default:
781 TRACE_ERROR( "MPHP_UPDATE_PSI_PARAM_CON unexpected" );
782 break;
783 }
784 PFREE(mphp_update_psi_param_con);
785
786 } /* gfp_mphp_update_psi_param_con() */
787
788
789
790 /*
791 +------------------------------------------------------------------------------
792 | Function : gfp_mphp_tcr_meas_ind
793 +------------------------------------------------------------------------------
794 | Description : Handles the primitive MPHP_TCR_MEAS_IND
795 |
796 | Parameters : *mphp_tcr_meas_ind - Ptr to primitive payload
797 |
798 +------------------------------------------------------------------------------
799 */
800 GLOBAL void gfp_mphp_tcr_meas_ind ( T_MPHP_TCR_MEAS_IND *mphp_tcr_meas_ind )
801 {
802 TRACE_FUNCTION( "gfp_mphp_tcr_meas_ind" );
803
804 switch( GET_STATE( GFP ) )
805 {
806 case GFP_IDLE:
807 PACCESS(mphp_tcr_meas_ind);
808 sig_gfp_cs_tcr_meas_ind( mphp_tcr_meas_ind );
809 break;
810 default:
811 TRACE_ERROR( "MPHP_TCR_MEAS_IND unexpected" );
812 break;
813 }
814
815 PFREE( mphp_tcr_meas_ind );
816 } /* gfp_mphp_tcr_meas_ind() */
817
818
819
820
821
822 /*
823 +------------------------------------------------------------------------------
824 | Function : gfp_mphp_stop_single_block_con
825 +------------------------------------------------------------------------------
826 | Description : Handles the primitive GFP_MPHP_STOP_SINGLE_BLOCK_CON
827 |
828 | Parameters : *gfp_mphp_stop_single_block_con - Ptr to primitive payload
829 |
830 +------------------------------------------------------------------------------
831 */
832 GLOBAL void gfp_mphp_stop_single_block_con ( T_MPHP_STOP_SINGLE_BLOCK_CON *mphp_stop_single_block_con )
833 {
834 TRACE_FUNCTION( "gfp_mphp_stop_single_block_con" );
835
836 /* SZML-SGLBL/010 */
837
838 switch( GET_STATE( GFP ) )
839 {
840 case GFP_IDLE:
841 sig_gfp_tc_stop_single_block_con( mphp_stop_single_block_con );
842 break;
843 default:
844 break;
845 }
846 PFREE(mphp_stop_single_block_con);
847
848 } /* gfp_mphp_stop_single_block_con() */
849
850
851
852
853
854 /*
855 +------------------------------------------------------------------------------
856 | Function : gfp_mphp_ncell_pbcch_stop_con
857 +------------------------------------------------------------------------------
858 | Description : Handles the primitive MPHP_NCELL_PBCCH_STOP_CON
859 |
860 | Parameters : *mphp_ncell_pbcch_stop_con - Ptr to primitive payload
861 |
862 +------------------------------------------------------------------------------
863 */
864 GLOBAL void gfp_mphp_ncell_pbcch_stop_con ( T_MPHP_NCELL_PBCCH_STOP_CON *mphp_ncell_pbcch_stop_con )
865 {
866 TRACE_FUNCTION( "gfp_mphp_ncell_pbcch_stop_con" );
867
868 /* SZML-SGLBL/011 */
869
870 switch( GET_STATE( GFP ) )
871 {
872 case GFP_IDLE:
873 break;
874 default:
875 break;
876 }
877 PFREE(mphp_ncell_pbcch_stop_con);
878
879 } /* gfp_mphp_ncell_pbcch_stop_con() */
880
881
882 /*
883 +------------------------------------------------------------------------------
884 | Function : gfp_cgrlc_data_ind
885 +------------------------------------------------------------------------------
886 | Description : Handles the primitive gfp_cgrlc_data_ind
887 |
888 | Parameters : cgrlc_data_ind - Ptr to primitive payload
889 |
890 +------------------------------------------------------------------------------
891 */
892 GLOBAL void gfp_cgrlc_data_ind ( T_CGRLC_DATA_IND * cgrlc_data_ind )
893 {
894 T_D_HEADER header;
895 T_MSGBUF * ptr_msg_complete;
896
897 TRACE_FUNCTION( "gfp_cgrlc_data_ind" );
898
899 gfp_adapt_fn ( cgrlc_data_ind->fn+4 );
900
901 switch( GET_STATE( GFP ) )
902 {
903 case GFP_IDLE:
904 grr_decode_rlcmac((UBYTE *)(cgrlc_data_ind->data_array), &header);
905
906 if(gfp_check_tfi(&header,cgrlc_data_ind->tn))
907 {
908 if(header.payload NEQ 3)
909 {
910 ptr_msg_complete = grr_handle_rlcmac_header(PACKET_MODE_PTM,&header,cgrlc_data_ind->fn);
911 if(ptr_msg_complete != NULL)
912 gfp_send_ctrl_block(cgrlc_data_ind->fn,
913 cgrlc_data_ind->tn,
914 header.d_ctrl.rrbp,
915 header.d_ctrl.sp,
916 header.pctrl_ack,
917 ptr_msg_complete);
918 }
919 }
920 break;
921 default:
922 TRACE_ERROR( "cgrlc_data_ind unexpected" );
923 break;
924 }
925
926 PFREE(cgrlc_data_ind);
927
928 } /* gfp_cgrlc_data_ind() */