1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3 | Project : GPRS (8441)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4 | Modul : GRR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 5 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 6 | Copyright 2002 Texas Instruments Berlin, AG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 7 | All rights reserved.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 8 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 9 | This file is confidential and a trade secret of Texas
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 10 | Instruments Berlin, AG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 11 | The receipt of or possession of this file does not convey
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 12 | any rights to reproduce or disclose its contents or to
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 13 | manufacture, use, or sell anything it may describe, in
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 14 | whole, or in part, without the specific written consent of
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 15 | Texas Instruments Berlin, AG.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 16 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 17 | Purpose : This module implements local functions for service PG of
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 18 | entity GRR.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 19 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 20 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 21
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 22 #ifndef GRR_PGF_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 23 #define GRR_PGF_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 24 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 25
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 26 #define ENTITY_GRR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 27
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 28 /*==== INCLUDES =============================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 29
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 30 #include "typedefs.h" /* to get Condat data types */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 31
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 32 #include "vsi.h" /* to get a lot of macros */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 33 #include "macdef.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 34 #include "gprs.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 35 #include "gsm.h" /* to get a lot of macros */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 36 #include "ccdapi.h" /* to get CCD API */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 37 #include "cnf_grr.h" /* to get cnf-definitions */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 38 #include "mon_grr.h" /* to get mon-definitions */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 39 #include "prim.h" /* to get the definitions of used SAP and directions */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 40 #include "message.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 41 #include "grr.h" /* to get the global entity definitions */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 42
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 43 #include "grr_f.h" /* */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 44 #include "grr_pgf.h" /* */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 45
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 46 #include "grr_ctrls.h" /* */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 47 #include "grr_meass.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 48 #include "grr_css.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 49 #include "grr_em.h" /*for Engineering mode*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 50
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 51 #include <string.h> /* for memcpy*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 52 #include <stdio.h> /* for memcpy*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 53
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 54 /*==== CONST ================================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 55
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 56 const USHORT NC2_NON_DRX_TABLE[8] = {0, 240, 480, 720, 960, 1200, 1440, 1920};
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 57
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 58 /*==== LOCAL VARS ===========================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 59 static UBYTE NON_DRX_TABLE[] = {0, 1, 2, 4, 8, 16, 32, 64};
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 60
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 61 /*==== GLOBAL VARS ===========================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 62
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 63
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 64
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 65 /*==== PRIVATE FUNCTIONS ====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 66 LOCAL void pg_stop_t_nc2_ndrx( void );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 67 LOCAL void pg_stop_non_drx_timer( void );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 68 LOCAL void pg_start_non_drx_timer(USHORT milliseconds);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 69 LOCAL BOOL pg_decode_imsi(T_ms_id ms_id, UBYTE *digits, UBYTE *nr_digits);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 70 /*==== PUBLIC FUNCTIONS =====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 71
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 72
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 73
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 74 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 75 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 76 | Function : pg_init
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 77 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 78 | Description : The function pg_init() ....
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 79 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 80 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 81 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 82 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 83 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 84 GLOBAL void pg_init ( void )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 85 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 86 TRACE_FUNCTION( "pg_init" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 87
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 88 pg_init_params();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 89
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 90 grr_data->pg.v_emlpp_prio = FALSE; /* valid flag for emlpp_priority*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 91 grr_data->pg.packet_mode = PACKET_MODE_NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 92
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 93 INIT_STATE(PG,PG_NULL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 94 } /* pg_init() */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 95
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 96 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 97 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 98 | Function : pg_init_params
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 99 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 100 | Description : The function pg_init_params() ....
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 101 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 102 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 103 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 104 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 105 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 106 GLOBAL void pg_init_params ( void )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 107 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 108 TRACE_FUNCTION( "pg_init_params" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 109
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 110 psc_db->last_pg_mode = psc_db->network_pg_mode = REORG_PAGING;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 111
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 112 } /* pg_init_params() */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 113
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 114 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 115 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 116 | Function : pg_process_pp_req
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 117 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 118 | Description : The function pg_process_pp_req() ....
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 119 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 120 | Parameters : T_D_PAGING_REQ *paging_req: pointer to the decoded message,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 121 UBYTE state: state of pg state machine: IDLE, TRANSFER, TIMER_3172
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 122 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 123 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 124 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 125 GLOBAL void pg_process_pp_req ( T_D_PAGING_REQ *paging_req, UBYTE state )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 126 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 127 char i;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 128 ULONG ul;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 129
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 130 TRACE_FUNCTION( "pg_process_pp_req" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 131
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 132 if(paging_req->v_pers_lev)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 133 { /*copy persistence level parameters into database*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 134 grr_save_persistence_level (&(paging_req->pers_lev));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 135 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 136 /*if(paging_req->v_nln)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 137 { message contains at least one page request for RR connection establishment
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 138 04.08: NLN(PCH) Notification List Number
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 139 "The presence of the NLN(PCH) field indicates that if an NCH is present, reduced NCH monitoring can be used, and
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 140 gives the NLN(PCH) value, to be used as specified in 3.3.3."
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 141 This is used by VGCS MSs...
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 142
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 143 }*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 144 if(paging_req->rep_page_info_trnc_grp.v_rep_page_info)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 145 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 146 for (i=0; i < paging_req->rep_page_info_trnc_grp.c_rep_page_info; i++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 147 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 148 if(paging_req->rep_page_info_trnc_grp.rep_page_info[i].v_rep_page_s1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 149 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 150 grr_t_status( T3172_1 ) EQ 0 /* T3172 is not running*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 151 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 152 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 153 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 154 * page request for TBF establishment
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 155 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 156 switch(state)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 157 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 158 case PG_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 159 if(paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s1.v_ptmsi)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 160 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 161 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 162 *Paging with PTMSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 163 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 164 if(grr_data->db.ms_id.new_ptmsi NEQ GMMRR_TMSI_INVALID)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 165 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 166 if(grr_check_ptmsi(&(paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s1.ptmsi)))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 167 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 168 TRACE_EVENT("Paging with PTIMSI for TBF");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 169 sig_pg_ctrl_downlink_transfer ( GMMRR_PTMSI );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 170 i = paging_req->rep_page_info_trnc_grp.c_rep_page_info; /* break condition for for loop*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 171 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 172 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 173 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 174 TRACE_EVENT("Paging with wrong PTIMSI for TBF: IGNORE");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 175 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 176 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 177 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 178 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 179 TRACE_EVENT("Paging with PTMSI, but no valid PTMSI in MS");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 180 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 181 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 182 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 183 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 184 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 185 *Paging with Mobile Identity (IMSI)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 186 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 187 UBYTE dummy_digits[MAX_IMSI_DIGITS];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 188 UBYTE dummy_nr_digits = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 189
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 190 if(pg_decode_imsi(paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s1.ms_id,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 191 dummy_digits, &dummy_nr_digits))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 192 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 193
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 194 if( dummy_nr_digits
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 195 EQ
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 196 grr_data->db.ms_id.imsi.number_of_digits)/* check the number of digits*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 197 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 198 if( !memcmp
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 199 ( grr_data->db.ms_id.imsi.digit, /* IMSI stored in the data_base*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 200 dummy_digits, /* received IMSI*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 201 grr_data->db.ms_id.imsi.number_of_digits
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 202 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 203 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 204 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 205 /* The MS was paged with the IMSI*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 206 TRACE_EVENT("Paging with Mobile Identity (IMSI) for TBF");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 207 sig_pg_ctrl_downlink_transfer ( GMMRR_IMSI );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 208 i = paging_req->rep_page_info_trnc_grp.c_rep_page_info; /* break condition for for loop*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 209 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 210 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 211 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 212 TRACE_EVENT("Paging with wrong IMSI for TBF: IGNORE");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 213 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 214
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 215 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 216 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 217 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 218 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 219 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 220 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 221 * ignore paging request for TBF establishment, do
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 222 * not check the content
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 223 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 224 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 225 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 226 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 227
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 228 if(paging_req->rep_page_info_trnc_grp.rep_page_info[i].v_rep_page_s2)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 229 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 230 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 231 * page request for RR connection establishment
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 232 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 233 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 234 * In packet access mode, class A or B shall respond to a pp_req for
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 235 * RR connection est.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 236 * During the time T3172 is running, the mobile station shall ignore all
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 237 * received PACKET PAGING REQUEST messages except paging request to trigger
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 238 * RR connection establishment.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 239 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 240 switch(state)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 241 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 242 case PG_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 243 case PG_TRANSFER:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 244 case PG_ACCESS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 245 if(paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s2.v_tmsi_field)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 246 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 247 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 248 *Paging with TMSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 249 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 250 if(grr_data->db.ms_id.tmsi NEQ GMMRR_TMSI_INVALID)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 251 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 252 ul = grr_buffer2ulong((BUF_ptmsi *)&(paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s2.tmsi_field));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 253 if(ul EQ grr_data->db.ms_id.tmsi)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 254 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 255 TRACE_EVENT("Paging with Mobile Identity (TMSI) for RR est");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 256
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 257 /* Set some parameters needed RR connection establishment*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 258 grr_data->pg.ch_needed = paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s2.chan_need;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 259 grr_data->pg.v_emlpp_prio = paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s2.v_emlpp_prio;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 260 grr_data->pg.emlpp_prio = paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s2.emlpp_prio;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 261
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 262 /* MS was paged with TMSI for RR connection establishment*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 263 grr_data->pg.type = ID_TMSI;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 264 sig_pg_ctrl_rr_est_req ( PG_ON_PCCCH);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 265 i = paging_req->rep_page_info_trnc_grp.c_rep_page_info; /* break condition for for loop*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 266 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 267 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 268 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 269 TRACE_EVENT("Paging with wrong TMSI for RR: IGNORE");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 270 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 271 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 272 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 273 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 274 TRACE_EVENT("Paging with TMSI, but no valid TMSI in MS");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 275 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 276 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 277 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 278 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 279 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 280 *Paging with Mobile Identity (IMSI)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 281 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 282 UBYTE dummy_digits[MAX_IMSI_DIGITS];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 283 UBYTE dummy_nr_digits = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 284
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 285 if(pg_decode_imsi(paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s2.ms_id,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 286 dummy_digits, &dummy_nr_digits))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 287 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 288
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 289 if( dummy_nr_digits
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 290 EQ
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 291 grr_data->db.ms_id.imsi.number_of_digits)/* check the number of digits*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 292 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 293 if( !memcmp
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 294 ( grr_data->db.ms_id.imsi.digit, /* IMSI stored in the data_base*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 295 dummy_digits, /* received IMSI*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 296 grr_data->db.ms_id.imsi.number_of_digits
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 297 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 298 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 299 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 300 /* The MS was paged with the IMSI*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 301 TRACE_EVENT("Paging with Mobile Identity (IMSI) for RR est");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 302
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 303 /* Set some parameters needed RR connection establishment*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 304 grr_data->pg.ch_needed = paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s2.chan_need;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 305 grr_data->pg.v_emlpp_prio = paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s2.v_emlpp_prio;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 306 grr_data->pg.emlpp_prio = paging_req->rep_page_info_trnc_grp.rep_page_info[i].rep_page_s2.emlpp_prio;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 307
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 308 /* MS was paged with IMSI for RR connection establishment*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 309 grr_data->pg.type = ID_IMSI;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 310 sig_pg_ctrl_rr_est_req ( PG_ON_PCCCH );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 311 i = paging_req->rep_page_info_trnc_grp.c_rep_page_info; /* break condition for for loop*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 312 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 313 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 314 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 315 TRACE_EVENT("Paging with wrong IMSI for RR: IGNORE");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 316 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 317 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 318 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 319 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 320 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 321 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 322 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 323 * ignore paging request for RR connection establishment, do
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 324 * not check the content
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 325 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 326 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 327 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 328 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 329 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 330 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 331 } /* pg_process_pp_req() */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 332
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 333
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 334
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 335 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 336 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 337 | Function : pg_send_stop
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 338 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 339 | Description : The function pg_send_stop() ....
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 340 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 341 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 342 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 343 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 344 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 345 GLOBAL void pg_send_stop ( void )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 346 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 347 TRACE_FUNCTION( "pg_send_stop" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 348
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 349 if (grr_data->is_pg_started EQ TRUE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 350 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 351 PALLOC (mphp_stop_pccch_req, MPHP_STOP_PCCCH_REQ);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 352 PSEND (hCommL1, mphp_stop_pccch_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 353 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 354 grr_data->is_pg_started = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 355
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 356 pg_stop_non_drx_timer();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 357 pg_stop_t_nc2_ndrx();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 358
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 359 } /* pg_send_stop() */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 360
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 361
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 362
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 363 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 364 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 365 | Function : pg_send_start
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 366 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 367 | Description : The function pg_send_start() ....
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 368 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 369 | Parameters : UBYTE page_mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 370 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 371 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 372 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 373 GLOBAL void pg_send_start ( UBYTE page_mode )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 374 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 375 UBYTE pccch_group; /* 0 .. KC-1*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 376 USHORT dummy;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 377
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 378 TRACE_FUNCTION( "pg_send_start" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 379
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 380 if(grr_is_non_drx_period())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 381 page_mode = REORG_PAGING;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 382
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 383 switch(page_mode)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 384 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 385 case NORMAL_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 386 case EXT_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 387 case REORG_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 388 case SAME_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 389 break;/*O.K.*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 390 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 391 /* same as before: nothing to do return*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 392 TRACE_EVENT("page_mode is corrupt: assume same as before: return");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 393 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 394 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 395
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 396 if(psc_db->paging_group.kc EQ 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 397 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 398 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 399 * No PCCCH description: return
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 400 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 401 TRACE_ERROR("psc_db->paging_group.kc EQ 0");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 402 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 403 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 404
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 405 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 406 PALLOC( start_pccch, MPHP_START_PCCCH_REQ );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 407
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 408 start_pccch->imsi_mod = grr_imsi_mod( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 409 pccch_group = ( UBYTE )( start_pccch->imsi_mod % psc_db->paging_group.kc );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 410
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 411 if( !grr_get_pccch_freq_par( pccch_group,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 412 &start_pccch->p_ch_des.p_chan_sel,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 413 &start_pccch->p_freq_list ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 414 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 415 PFREE( start_pccch );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 416
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 417 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 418 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 419
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 420 start_pccch->kcn = psc_db->paging_group.kc; /*< KC multiplied by N */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 421 start_pccch->split_pg_cycle = grr_data->ms.split_pg_cycle; /*< Split paging cycle */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 422 start_pccch->bs_pag_blks_res = psc_db->pccch.bs_pag_blks; /*< No paging no PBCCH */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 423 start_pccch->bs_pbcch_blks = psc_db->pccch.bs_pbcch_blks; /*< Number of PBCCH per multiframe */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 424 start_pccch->pb = psc_db->g_pwr_par.pb; /*< Power reduction value */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 425 start_pccch->p_ch_des.tsc = psc_db->paging_group.pccch[pccch_group].tsc; /*< Training sequence code */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 426 start_pccch->p_ch_des.tn = psc_db->paging_group.pccch[pccch_group].tn;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 427
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 428 if( start_pccch->p_ch_des.p_chan_sel.hopping )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 429 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 430 TRACE_EVENT_P8( "Hopping PCCCH - ma_num:%d hsn/maio:%ld tsc:%d tn:%d f1:%d f2:%d f3:%d f4:%d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 431 psc_db->paging_group.pccch[pccch_group].ma_num,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 432 start_pccch->p_ch_des.p_chan_sel.p_rf_ch.arfcn,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 433 start_pccch->p_ch_des.tsc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 434 start_pccch->p_ch_des.tn,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 435 start_pccch->p_freq_list.p_rf_chan_no.p_radio_freq[0],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 436 start_pccch->p_freq_list.p_rf_chan_no.p_radio_freq[1],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 437 start_pccch->p_freq_list.p_rf_chan_no.p_radio_freq[2],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 438 start_pccch->p_freq_list.p_rf_chan_no.p_radio_freq[3] );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 439 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 440 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 441 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 442 TRACE_EVENT_P3( "Static PCCCH - arfcn:%ld tsc:%d tn:%d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 443 start_pccch->p_ch_des.p_chan_sel.p_rf_ch.arfcn,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 444 start_pccch->p_ch_des.tsc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 445 start_pccch->p_ch_des.tn );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 446
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 447 start_pccch->p_ch_des.p_chan_sel.p_rf_ch.arfcn =
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 448 grr_g23_arfcn_to_l1( start_pccch->p_ch_des.p_chan_sel.p_rf_ch.arfcn );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 449 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 450
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 451 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 452 * Calculate downlink signalling counter
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 453 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 454 /* DRX period is used, there is a valid SPILT_PG_CYCLE value */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 455 dummy = grr_data->ms.split_pg_cycle;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 456
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 457
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 458 /* Downlink signalling counter*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 459 dummy = ( ( 90 * dummy ) / 64 < 10 ) ? 10 : ( 90 * dummy ) / 64;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 460
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 461 if(!grr_data->is_pg_started)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 462 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 463 grr_data->pg.initial_dsc = dummy;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 464 grr_data->pg.dsc = dummy;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 465
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 466 GRR_EM_SET_DSC_VAL(dummy);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 467
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 468 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 469 if( grr_data->pg.is_l1_ref_tn_changed NEQ psc_db->paging_group.pccch[pccch_group].tn )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 470 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 471 sig_pg_cs_pause( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 472 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 473
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 474 /*Read PCCCH */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 475 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 476 start_pccch->page_mode = page_mode;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 477 PSEND(hCommL1, start_pccch);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 478 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 479 if( grr_data->pg.is_l1_ref_tn_changed NEQ psc_db->paging_group.pccch[pccch_group].tn )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 480 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 481 sig_pg_cs_resume( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 482
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 483 grr_data->pg.is_l1_ref_tn_changed = psc_db->paging_group.pccch[pccch_group].tn;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 484 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 485
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 486 psc_db->last_pg_mode = page_mode;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 487
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 488 switch(page_mode)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 489 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 490 case NORMAL_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 491 TRACE_EVENT("page mode NORMAL");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 492 break;/*O.K.*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 493 case EXT_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 494 TRACE_EVENT("page mode EXT");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 495 break;/*O.K.*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 496 case REORG_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 497 TRACE_EVENT("page mode REORG");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 498 break;/*O.K.*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 499 case SAME_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 500 TRACE_EVENT("page mode SAME");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 501 break;/*O.K.*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 502 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 503
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 504 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 505 grr_data->is_pg_started = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 506
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 507 } /* pg_send_start() */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 508
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 509 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 510 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 511 | Function : pg_start_non_drx_timer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 512 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 513 | Description : The function pg_start_non_drx_timer() starts the timer for
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 514 | non DRX period
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 515 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 516 | Parameters : USHORT milliseconds
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 517 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 518 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 519 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 520 LOCAL void pg_start_non_drx_timer(USHORT milliseconds)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 521 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 522 TRACE_FUNCTION( "pg_start_non_drx_timer");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 523
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 524 psc_db->non_drx_timer_running = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 525 vsi_t_start(GRR_handle,T_TRANS_NON_DRX, milliseconds);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 526 }/* pg_start_non_drx_timer*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 527
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 528 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 529 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 530 | Function : pg_stop_non_drx_timer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 531 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 532 | Description : The function pg_stop_non_drx_timer() stops the timer for
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 533 | non DRX period
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 534 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 535 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 536 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 537 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 538 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 539 GLOBAL void pg_stop_non_drx_timer(void)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 540 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 541 TRACE_FUNCTION( "pg_stop_non_drx_timer");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 542
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 543 if(psc_db->non_drx_timer_running)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 544 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 545 psc_db->non_drx_timer_running = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 546 vsi_t_stop(GRR_handle,T_TRANS_NON_DRX);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 547 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 548 }/* pg_stop_non_drx_timer*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 549
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 550 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 551 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 552 | Function : pg_start_t_nc2_ndrx
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 553 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 554 | Description : ...
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 555 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 556 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 557 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 558 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 559 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 560 GLOBAL void pg_start_t_nc2_ndrx( UBYTE nc_non_drx_period )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 561 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 562 TRACE_FUNCTION( "pg_start_t_nc2_ndrx");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 563
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 564 if( nc_non_drx_period NEQ 0 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 565 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 566 USHORT nc2_drx_period = NC2_NON_DRX_TABLE[nc_non_drx_period];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 567
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 568 psc_db->nc2_non_drx_period_running = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 569
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 570 vsi_t_start( GRR_handle, T_NC2_NON_DRX, nc2_drx_period );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 571
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 572 TRACE_EVENT_P1( "Timer T_NC2_NON_DRX started: %d", nc2_drx_period );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 573 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 574 }/* pg_start_t_nc2_ndrx */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 575
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 576 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 577 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 578 | Function : pg_stop_t_nc2_ndrx
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 579 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 580 | Description : ...
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 581 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 582 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 583 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 584 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 585 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 586 GLOBAL void pg_stop_t_nc2_ndrx( void )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 587 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 588 TRACE_FUNCTION( "pg_stop_t_nc2_ndrx" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 589
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 590 if( psc_db->nc2_non_drx_period_running EQ TRUE )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 591 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 592 psc_db->nc2_non_drx_period_running = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 593
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 594 vsi_t_stop( GRR_handle, T_NC2_NON_DRX );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 595
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 596 TRACE_EVENT( "Timer T_NC2_NON_DRX stopped" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 597 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 598 } /* pg_stop_t_nc2_ndrx */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 599
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 600 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 601 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 602 | Function : pg_handle_non_drx_timers
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 603 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 604 | Description : ...
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 605 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 606 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 607 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 608 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 609 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 610 GLOBAL void pg_handle_non_drx_timers(void)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 611 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 612 USHORT non_drx_timer = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 613 TRACE_FUNCTION("pg_handle_non_drx_timers");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 614
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 615 non_drx_timer = ( psc_db->non_drx_timer < psc_db->gprs_cell_opt.drx_t_max ) ?
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 616 psc_db->non_drx_timer : psc_db->gprs_cell_opt.drx_t_max;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 617
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 618 non_drx_timer = (USHORT)(NON_DRX_TABLE[non_drx_timer]*1000);/* in milliseconds*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 619
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 620 pg_start_non_drx_timer(non_drx_timer);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 621
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 622 }/* pg_handle_non_drx_timers */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 623
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 624 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 625 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 626 | Function : pg_non_drx
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 627 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 628 | Description : Handles the timer of non DRX mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 629 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 630 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 631 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 632 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 633 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 634 GLOBAL void pg_non_drx ( void )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 635 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 636 TRACE_FUNCTION( "pg_non_drx" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 637
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 638 switch( GET_STATE( PG ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 639 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 640 case PG_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 641 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 642 * To ensure that the paging mode is not set to page normal in other states
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 643 * than packet idle mode, the function grr_is_packet_idle_mode is called in
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 644 * advance.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 645 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 646 * State PG_IDLE not necessarily means that GRR is in packet idle mode. In
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 647 * case GRR is currently executing the RRGRR_STOP_TASK_REQ/CNF procedure,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 648 * just the services CPAP and TC changes their states. All other services
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 649 * remain in state IDLE, which is not quite correct. A similar scenario
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 650 * occurs during execution of the MPHP_ASSIGNMENT_REQ/CON procedure.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 651 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 652 if( grr_is_packet_idle_mode( ) EQ TRUE )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 653 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 654 pg_handle_idle_mode( PTM_IDLE );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 655 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 656 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 657 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 658 TRACE_EVENT( "pg_non_drx: Timeout T_TRANS_NON_DRX handled by next packet idle mode" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 659 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 660 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 661 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 662 TRACE_EVENT( "pg_non_drx: Timeout T_TRANS_NON_DRX handled by next PG_IDLE" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 663 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 664 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 665 }/* pg_non_drx*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 666
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 667 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 668 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 669 | Function : pg_decode_imsi
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 670 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 671 | Description : Handles the timer of non DRX mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 672 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 673 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 674 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 675 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 676 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 677 LOCAL BOOL pg_decode_imsi(T_ms_id ms_id, UBYTE *digits, UBYTE *nr_digits)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 678 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 679 UBYTE odd_even_type, i;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 680 BOOL is_odd;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 681 TRACE_FUNCTION("pg_decode_imsi");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 682
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 683 *nr_digits = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 684 if(ms_id.ms_id_len > 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 685 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 686 odd_even_type = (ms_id.ident_digit[0] & 0x0f);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 687
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 688 if(odd_even_type & 1) /* Check IMSI or not*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 689 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 690 is_odd = odd_even_type & 0x08; /* odd: ung.*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 691 digits[0] = (ms_id.ident_digit[0] >> 4);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 692 *nr_digits = 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 693
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 694 for(i=1; i< ms_id.ms_id_len; i++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 695 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 696 if(!is_odd AND (i EQ (ms_id.ms_id_len-1)))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 697 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 698 digits[*nr_digits] = (ms_id.ident_digit[i] & 0x0f);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 699 *nr_digits = (*nr_digits) + 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 700 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 701 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 702 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 703 digits[*nr_digits] = (ms_id.ident_digit[i] & 0x0f);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 704 *nr_digits = (*nr_digits) + 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 705 digits[*nr_digits] = (ms_id.ident_digit[i] >> 4);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 706 *nr_digits = (*nr_digits) + 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 707 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 708 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 709 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 710 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 711 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 712 /*No IMSI, ignore*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 713 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 714 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 715 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 716 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 717 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 718 /* No mobile identity: strange*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 719 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 720 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 721 return TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 722 }/* pg_decode_imsi*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 723
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 724 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 725 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 726 | Function : pg_handle_classB_NMO_III
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 727 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 728 | Description : Handles NMO III for Class B mobile
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 729 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 730 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 731 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 732 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 733 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 734 GLOBAL void pg_handle_classB_NMO_III(T_PG_TRANS transition)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 735 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 736 TRACE_FUNCTION("pg_handle_classB_NMO_III");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 737
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 738 switch(transition)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 739 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 740 case T3172_PTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 741 case ACCESS_PTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 742 case IDLE_PTM:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 743 if(grr_data->ms.reverts_NMO_III)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 744 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 745 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 746 * The MS reverts to CC or CG in NMO III
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 747 * In this state IDLE->TRANSFER it can be only a CG mobile
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 748 * it shall stop PCCCH reading, if available
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 749 * it shall stop also CCCH reading, if running
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 750 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 751 TRACE_EVENT("IDLE/ACCESS->PTM: NMO III Class B reverts. Stop CCCH (and PCCCH)");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 752 if(grr_is_pbcch_present())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 753 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 754 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 755 * Stop monitoring PCCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 756 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 757 pg_send_stop();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 758 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 759 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 760 * Stop monitoring CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 761 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 762 sig_pg_ctrl_stop_mon_ccch();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 763 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 764 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 765 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 766 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 767 * This is non reverting Class B
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 768 * If PBCCH is present it should stop PCCCH and start CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 769 * else it should only monitor CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 770 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 771 TRACE_EVENT("IDLE/ACCESS->PTM: NMO III Class B. Start CCCH (and stop PCCCH)");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 772 if(grr_is_pbcch_present())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 773 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 774 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 775 * Stop monitoring PCCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 776 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 777 pg_send_stop();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 778 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 779 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 780 * Start monitoring CCCH (Normal Paging)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 781 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 782 if( grr_data->ms.tbf_mon_ccch
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 783 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 784 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 785 !psc_db->gprs_cell_opt.gprs_ext_bits.gprs_ext_info.bss_paging_coord
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 786 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 787 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 788 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 789 sig_pg_ctrl_start_mon_ccch(PAG_MODE_PTM_NP);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 790 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 791 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 792 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 793 case NULL_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 794 case PTM_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 795 if(grr_data->ms.reverts_NMO_III)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 796 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 797 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 798 * The MS reverts to CC or CG in NMO III
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 799 * In this state TRANSFER/NULL->IDLE it can be only a CG mobile
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 800 * it shall start PCCCH reading, if available
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 801 * it shall start also CCCH reading, if NO PBCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 802 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 803 TRACE_EVENT("PTM/NULL->IDLE: NMO III Class B reverts. Start (P) or CCCH");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 804 if(grr_is_pbcch_present())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 805 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 806 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 807 * Start monitoring PCCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 808 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 809 pg_send_start( psc_db->last_pg_mode );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 810
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 811 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 812 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 813 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 814 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 815 * Start monitoring CCCH (Normal Paging)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 816 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 817 sig_pg_ctrl_start_mon_ccch(PAG_MODE_DEFAULT);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 818 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 819 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 820 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 821 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 822 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 823 * This is non reverting Class B
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 824 * If PBCCH is present it should start PCCCH and start CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 825 * else it should only monitor CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 826 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 827 TRACE_EVENT("PTM/NULL->IDLE: NMO III Class B. Start (P) and CCCH");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 828 if(grr_is_pbcch_present())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 829 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 830 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 831 * Start monitoring PCCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 832 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 833 pg_send_start( psc_db->last_pg_mode );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 834 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 835 * Start monitoring CCCH (Normal Paging), before doing this use PAG_MODE_PIM_NP
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 836 * to enter later to idle mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 837 * Exceptional situation: if NON DRX is used, REORG is only for PCCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 838 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 839 sig_pg_ctrl_start_mon_ccch(PAG_MODE_PIM_NP);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 840 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 841 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 842 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 843 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 844 * Start monitoring CCCH (Normal Paging)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 845 * Normal Paging
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 846 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 847 sig_pg_ctrl_start_mon_ccch(PAG_MODE_DEFAULT);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 848 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 849 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 850 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 851 case ACCESS_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 852 if(grr_data->ms.reverts_NMO_III)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 853 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 854 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 855 * The MS reverts to CC or CG in NMO III
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 856 * In this state ACCESS->IDLE it can be only a CG mobile
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 857 * it shall start PCCCH reading, if available
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 858 * it shall start CCCH reading, if NO PBCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 859 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 860 TRACE_EVENT("ACCESS->IDLE: NMO III Class B reverts. Start (P) or CCCH");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 861 if(!grr_is_pbcch_present())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 862 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 863 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 864 * Start monitoring CCCH (Normal Paging)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 865 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 866 sig_pg_ctrl_start_mon_ccch(PAG_MODE_DEFAULT);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 867 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 868 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 869 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 870 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 871 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 872 * This is non reverting Class B
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 873 * If PBCCH is present it should start PCCCH and start CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 874 * else it should only monitor CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 875 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 876 TRACE_EVENT("ACCESS->IDLE: NMO III Class B. Start (P) and CCCH");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 877 if(grr_is_pbcch_present())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 878 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 879 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 880 * Start monitoring PCCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 881 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 882 pg_send_start( psc_db->last_pg_mode );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 883 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 884 * Start monitoring CCCH (Normal Paging)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 885 * Exceptional situation: if NON DRX is used, we RORG is only for PCCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 886 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 887 if(grr_data->ms.tbf_mon_ccch
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 888 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 889 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 890 !psc_db->gprs_cell_opt.gprs_ext_bits.gprs_ext_info.bss_paging_coord
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 891 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 892 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 893 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 894 sig_pg_ctrl_start_mon_ccch(PAG_MODE_PTM_NP);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 895 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 896 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 897 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 898 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 899 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 900 * Start monitoring CCCH (Normal Paging)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 901 * Normal Paging
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 902 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 903 sig_pg_ctrl_start_mon_ccch(PAG_MODE_DEFAULT);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 904 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 905 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 906 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 907 case PTM_ACCESS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 908 case IDLE_ACCESS:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 909 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 910 * Not necessary
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 911 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 912 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 913 }/*switch*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 914 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 915
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 916 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 917 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 918 | Function : pg_handle_access_mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 919 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 920 | Description : Handles the paging when entering the packet access mode.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 921 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 922 | Parameters : void
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 923 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 924 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 925 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 926 GLOBAL void pg_handle_access_mode ( void )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 927 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 928 TRACE_FUNCTION( "pg_handle_access_mode" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 929
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 930
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 931 if( grr_is_pbcch_present( ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 932 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 933 if( !grr_data->is_pg_started OR psc_db->last_pg_mode NEQ REORG_PAGING )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 934 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 935 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 936 * enable the L1 reading USF values
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 937 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 938 pg_send_start( PG_REORG );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 939 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 940 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 941 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 942 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 943 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 944 * start monitoring CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 945 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 946 sig_pg_ctrl_start_mon_ccch( PAG_MODE_REORG );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 947 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 948 } /* pg_handle_access_mode() */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 949
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 950 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 951 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 952 | Function : pg_set_l1_ref_tn
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 953 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 954 | Description : The function pg_set_l1_ref_tn () ....
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 955 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 956 | Parameters :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 957 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 958 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 959 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 960 GLOBAL void pg_set_l1_ref_tn ( UBYTE* out_tn, UBYTE in_tn )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 961 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 962 TRACE_FUNCTION( "pg_set_l1_ref_tn" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 963
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 964 if( in_tn NEQ *out_tn )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 965 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 966 grr_data->pg.is_l1_ref_tn_changed = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 967 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 968
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 969 *out_tn = in_tn;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 970
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 971 } /* pg_set_l1_ref_tn */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 972
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 973 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 974 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 975 | Function : pg_handle_idle_mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 976 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 977 | Description :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 978 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 979 | Parameters :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 980 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 981 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 982 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 983 GLOBAL void pg_handle_idle_mode ( T_PG_TRANS transition )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 984 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 985 TRACE_FUNCTION( "pg_handle_idle_mode" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 986
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 987 switch( grr_data->pg.nmo )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 988 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 989 case GMMRR_NET_MODE_I:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 990 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 991 * NMOI:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 992 * ====
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 993 * Paging on ( CCCH or PCCCH ) and PACCH, GPRS attached MS should
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 994 * monitor one paging channel, so we have to stop monitoring CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 995 * channel if PCCCH is present.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 996 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 997 if( grr_is_pbcch_present( ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 998 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 999 pg_send_start( psc_db->last_pg_mode );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1000 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1001 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1002 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1003 sig_pg_ctrl_start_mon_ccch( PAG_MODE_DEFAULT );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1004 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1005 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1006
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1007 case GMMRR_NET_MODE_II:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1008 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1009 * NMOII:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1010 * =====
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1011 * Paging on CCCH, paging for both circuit switched and packet data
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1012 * will be sent on CCCH, PCCCH has been not allocated in the cell.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1013 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1014 switch( grr_data->ms.class_of_mode )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1015 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1016 case GMMRR_CLASS_A:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1017 /* BEGIN GRR_NMO_III */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1018 case GMMRR_CLASS_B:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1019 /* END GRR_NMO_III */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1020 case GMMRR_CLASS_BG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1021 case GMMRR_CLASS_BC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1022 case GMMRR_CLASS_CG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1023 case GMMRR_CLASS_CC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1024 sig_pg_ctrl_start_mon_ccch( PAG_MODE_DEFAULT );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1025 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1026 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1027 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1028
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1029 case GMMRR_NET_MODE_III:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1030 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1031 * NMOIII:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1032 * =======
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1033 * If PBCCH not present paging for both circuit switched and packet
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1034 * data will be sent on CCCH,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1035 * if PBCCH is present paging for circuit switched data is sent on
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1036 * CCCH and for packet data on PCCCH.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1037 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1038 if( grr_is_pbcch_present( ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1039 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1040 TRACE_EVENT( "GMMRR_NET_MODE_III PBCCH" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1041
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1042 switch(grr_data->ms.class_of_mode)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1043 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1044 case GMMRR_CLASS_A:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1045 pg_send_start( psc_db->last_pg_mode );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1046 sig_pg_ctrl_start_mon_ccch( PAG_MODE_PIM_NP );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1047 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1048
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1049 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1050 * We need to check whether the MS class B mobile
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1051 * reverts to CG or CC in NMO III. If not it should monitor PCCCH and CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1052 * else it needs to monitor either CCCH or PCCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1053 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1054 /* BEGIN GRR_NMO_III */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1055 case GMMRR_CLASS_B:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1056 /* END GRR_NMO_III */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1057 case GMMRR_CLASS_BG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1058 case GMMRR_CLASS_BC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1059 pg_handle_classB_NMO_III( transition );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1060 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1061
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1062 case GMMRR_CLASS_CG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1063 sig_pg_ctrl_stop_mon_ccch( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1064 pg_send_start( psc_db->last_pg_mode );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1065 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1066
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1067 case GMMRR_CLASS_CC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1068 sig_pg_ctrl_start_mon_ccch( PAG_MODE_DEFAULT );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1069 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1070 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1071 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1072 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1073 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1074 TRACE_EVENT ( "GMMRR_NET_MODE_III BCCH" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1075
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1076 sig_pg_ctrl_start_mon_ccch( PAG_MODE_DEFAULT );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1077 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1078 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1079 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1080 } /* pg_handle_idle_mode() */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1081
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1082 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1083 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1084 | Function : pg_handle_transfer_mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1085 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1086 | Description :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1087 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1088 | Parameters :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1089 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1090 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1091 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1092 GLOBAL void pg_handle_transfer_mode ( T_PG_TRANS transition )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1093 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1094 TRACE_FUNCTION( "pg_handle_transfer_mode" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1095
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1096 switch( grr_data->pg.nmo )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1097 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1098 case GMMRR_NET_MODE_I:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1099 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1100 * NMOI:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1101 * ====
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1102 * Paging on ( CCCH or PCCCH ) and PACCH, GPRS attached MS should
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1103 * monitor one paging channel, so we have to stop monitoring CCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1104 * channel if PCCCH is present.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1105 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1106 if( grr_is_pbcch_present( ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1107 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1108 pg_send_stop( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1109 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1110 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1111 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1112 sig_pg_ctrl_stop_mon_ccch( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1113 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1114 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1115
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1116 case GMMRR_NET_MODE_II:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1117 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1118 * NMOII:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1119 * =====
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1120 * Paging on CCCH, paging for both circuit switched and packet data
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1121 * will be sent on CCCH, PCCCH has been not allocated in the cell.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1122 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1123 * The MS should monitor CCCH except for the CLASS_CG.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1124 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1125 switch( grr_data->ms.class_of_mode )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1126 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1127 case GMMRR_CLASS_A:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1128 /* BEGIN GRR_NMO_III*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1129 case GMMRR_CLASS_B:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1130 /* END GRR_NMO_III*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1131 case GMMRR_CLASS_BG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1132 case GMMRR_CLASS_BC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1133 if( grr_data->ms.tbf_mon_ccch
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1134 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1135 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1136 !psc_db->gprs_cell_opt.gprs_ext_bits.gprs_ext_info.bss_paging_coord
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1137 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1138 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1139 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1140 sig_pg_ctrl_start_mon_ccch( PAG_MODE_PTM_NP );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1141 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1142 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1143 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1144 sig_pg_ctrl_stop_mon_ccch( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1145 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1146 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1147
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1148 case GMMRR_CLASS_CG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1149 sig_pg_ctrl_stop_mon_ccch( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1150 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1151 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1152 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1153
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1154 case GMMRR_NET_MODE_III:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1155 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1156 * NMOIII:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1157 * =======
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1158 * If PBCCH not present paging for both circuit switched and packet
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1159 * data will be sent on CCCH,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1160 * if PBCCH is present paging for circuit switched data is sent on
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1161 * CCCH and for packet data on PCCCH.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1162 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1163 switch( grr_data->ms.class_of_mode )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1164 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1165 case GMMRR_CLASS_A:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1166 if( grr_is_pbcch_present( ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1167 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1168 pg_send_stop( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1169 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1170
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1171 sig_pg_ctrl_start_mon_ccch( PAG_MODE_PTM_NP );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1172 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1173
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1174 /* BEGIN GRR_NMO_III*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1175 case GMMRR_CLASS_B:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1176 /* END GRR_NMO_III*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1177 case GMMRR_CLASS_BG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1178 case GMMRR_CLASS_BC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1179 pg_handle_classB_NMO_III( transition );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1180 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1181
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1182 case GMMRR_CLASS_CG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1183 if( grr_is_pbcch_present( ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1184 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1185 pg_send_stop( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1186 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1187 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1188 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1189 sig_pg_ctrl_stop_mon_ccch( );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1190 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1191 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1192 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1193 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1194 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1195 } /* pg_handle_transfer_mode() */