104
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 :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4 | Modul :
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 defines the functions for the attachment
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 18 | capability of the module Radio Resource.
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 RR_ATTP_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 23 #define RR_ATTP_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 24
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 25 #define ENTITY_RR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 26
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 27 /*==== INCLUDES ===================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 28
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 29 #include <string.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 30 #include <stdlib.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 31 #include <stddef.h> /* offsetof */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 32 #include "typedefs.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 33 #include "pcm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 34 #include "pconst.cdg"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 35 #include "mconst.cdg"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 36 #include "message.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 37 #include "ccdapi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 38 #include "vsi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 39 #include "custom.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 40 #include "gsm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 41 #include "prim.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 42 #include "cnf_rr.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 43 #include "tok.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 44 #include "rr.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 45 #include "rr_em.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 46 #include "cl_shrd.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 47
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 48 #if defined (_SIMULATION_)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 49 #include <stdio.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 50 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 51
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 52
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 53 /*==== EXPORT =====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 54
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 55 /*==== PRIVATE =====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 56 /*==== PROTOTYPES =================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 57
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 58 LOCAL void att_align_sc_meas (T_MPH_MEASUREMENT_IND * mph_meas_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 59 UBYTE index);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 60
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 61 /*==== VARIABLES ==================================================*/
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 * PRIMITIVE Processing functions
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 65 * -------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 66 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 67
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 68 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 69 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 70 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 71 | STATE : code ROUTINE : att_mph_error_ind |
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 PURPOSE : Process the primitive MPH_ERROR_IND received from PL.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 75
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 76 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 77
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 78 #define MAX_ERROR_CS 9
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 79 #define MAX_ERROR_IDLE 4
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 80
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 81 GLOBAL void att_mph_error_ind (T_MPH_ERROR_IND *mph_error_ind)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 82 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 83 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 84 UBYTE index;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 85
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 86 TRACE_FUNCTION ("att_mph_error_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 87
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 88 switch (GET_STATE (STATE_ATT))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 89 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 90 case ATT_CS2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 91 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 92 * during cell selection
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 93 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 94 switch (mph_error_ind->cs)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 95 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 96 case CS_BCCH_READ_ERROR:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 97 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 98 * BCCH read error
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 99 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 100 rr_data->bcch_error++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 101 if (rr_data->bcch_error EQ MAX_ERROR_CS)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 102 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 103 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 104 * maximum of BCCH read errors reached
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 105 * start next sync request if possible
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 106 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 107 rr_data->bcch_error = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 108 srv_clear_list (&rr_data->cr_data.cd.ncell_list);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 109 if (cs_sync_next ())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 110 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 111 SET_STATE (STATE_ATT, ATT_CS1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 112 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 113 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 114 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 115 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 116
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 117 case CS_DOWN_LINK_FAIL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 118 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 119 * downlink failure,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 120 * layer 1 has received too many undecodable paging messages
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 121 * that means the synchronisation to the BS is lost
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 122 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 123 TRACE_EVENT ("downlink failure");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 124
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 125 EM_DOWNLINK_FAILURE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 126
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 127 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 128 * stop the controlling timer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 129 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 130 TIMERSTOP (T_RESELECT);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 131
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 132 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 133 * start cell selection, actually its questionable
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 134 * if this ever happens, maybe except for the primitive crossing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 135 * case
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 136 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 137 /*XY:n don't inform GRR, but call start_cs anyway */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 138 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 139 att_start_cell_selection_gprs ((UBYTE)(rr_data->sc_data.mm_started),FULL_SEARCH_MODE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 140 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 141 att_start_cell_selection (rr_data->sc_data.mm_started, CS_NOT_PARALLEL,FULL_SEARCH_MODE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 142 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 143 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 144
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 145 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 146 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 147
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 148 case ATT_CS3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 149 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 150 * during cell reselection
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 151 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 152 switch (mph_error_ind->cs)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 153 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 154 case CS_BCCH_READ_ERROR:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 155 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 156 * BCCH read error
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 157 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 158 rr_data->bcch_error++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 159 TRACE_EVENT_P2 ("bcch_error=%u (%u)", rr_data->bcch_error, MAX_ERROR_CS);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 160 if (rr_data->bcch_error EQ MAX_ERROR_CS)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 161 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 162 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 163 * the maximum of read errors is reached
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 164 * try the next cell for cell reselection
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 165 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 166 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 167 if(rr_data->gprs_data.cr_pbcch_active EQ TRUE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 168 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 169 att_cell_reselection_gprs_failed();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 170 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 171 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 172 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 173 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 174 rr_data->bcch_error = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 175 rr_data->pag_rec = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 176 srv_clear_stored_prim (MPH_PAGING_IND);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 177 att_continue_cell_reselect ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 178 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 179 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 180 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 181 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 182 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 183
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 184 case CS_DOWN_LINK_FAIL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 185 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 186 * downlink failure,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 187 * layer 1 has received too many undecodable paging messages
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 188 * that means the synchronisation to the BS is lost
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 189 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 190 TRACE_EVENT ("downlink failure");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 191 EM_DOWNLINK_FAILURE;
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 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 195 * try the next candidate for the cell reselection
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 196 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 197 att_continue_cell_reselect () ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 198 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 199
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 200 case CS_NC_SYNC_FAILED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 201 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 202 * Cell has no valid synchronization information
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 203 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 204 TRACE_EVENT ("No Valid Sync info");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 205
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 206 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 207 * try the next candidate for the cell reselection
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 208 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 209 att_continue_cell_reselect () ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 210 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 211
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 212 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 213 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 214
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 215 case ATT_DEDICATED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 216 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 217 * during dedicated mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 218 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 219 switch (mph_error_ind->cs)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 220 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 221 case CS_RADIO_LINK_FAIL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 222 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 223 * radio link failure.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 224 * That means layer 1 has received too many
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 225 * undecodable SACCH blocks in the downlink
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 226 * The synchronisation to the BS is lost.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 227 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 228 TRACE_EVENT ("radio link failure");
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 * dynamic configuration command : IHO
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 232 * Lock the DUT to the cell it is already camping -
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 233 * Ignore the Radio Link Failures.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 234 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 235
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 236 if(rr_data->dyn_config.iho AND (rr_data->sc_data.ch_mode EQ CM_AMR))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 237 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 238 TRACE_EVENT("MPH_ERROR_IND : IHO");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 239 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 240 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 241 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 242 EM_RADIO_LINK_FAILURE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 243
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 244 rr_data->net_lost = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 245
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 246 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 247 * Inform MM about the radio link failure and
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 248 * start cell reslection
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 249 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 250 att_code_rr_abort_ind (RRCS_ABORT_RAD_LNK_FAIL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 251 att_stop_dedicated();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 252 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 253 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 254 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 255 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 256
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 257 case ATT_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 258 case ATT_CON_EST:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 259 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 260 * during idle mode or connection establishment
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 261 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 262 switch (mph_error_ind->cs)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 263 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 264 case CS_BCCH_READ_ERROR:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 265 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 266 * A BCCH read error has occured.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 267 * It is checked whether the BCCH reading
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 268 * is done for a PLMN search activity
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 269 * originated by RR, else it is ignored.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 270 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 271 index = att_get_index (mph_error_ind->arfcn);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 272 if (index EQ CR_INDEX)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 273 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 274 rr_data->bcch_error++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 275 if (rr_data->bcch_error EQ MAX_ERROR_IDLE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 276 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 277 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 278 * if the maximum of read errors is reached
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 279 * the next cell is tried.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 280 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 281 rr_data->bcch_error = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 282 TIMERSTOP (T_RESELECT);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 283 srv_clear_list (&rr_data->cr_data.cd.ncell_list);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 284 cs_sync_next ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 285 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 286 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 287 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 288 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 289
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 290 case CS_DOWN_LINK_FAIL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 291 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 292 * downlink failure
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 293 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 294 TRACE_EVENT ("downlink failure");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 295 EM_DOWNLINK_FAILURE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 296
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 297 rr_data->net_lost = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 298
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 299 if(GET_STATE (STATE_ATT) EQ ATT_CON_EST)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 300 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 301 switch (rr_data->ms_data.establish_cause)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 302 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 303 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 304 case ESTCS_GPRS_1P:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 305 case ESTCS_GPRS_SB:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 306 case ESTCS_GPRS_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 307 SET_STATE(STATE_GPRS, GPRS_PIM_BCCH);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 308 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 309 case ESTCS_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 310 dat_rr_release_ind(RRCS_ABNORM_UNSPEC, 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 311 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 312 case ESTCS_PAGING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 313 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 314 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 315 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 316 dat_rr_release_ind(RRCS_ABNORM_UNSPEC, 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 317 break;
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
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 321 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 322 * Only start reselection, if isn´t any PLMN search active
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 323 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 324 if (rr_data->start_cell_reselection)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 325 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 326 /*XY:n inform GRR, and wait for CR_RSP
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 327 should only happen in PIM_BCCH */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 328 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 329 att_start_cell_reselection_gprs (CELL_RESELECTION);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 330 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 331 att_start_cell_reselection (CELL_RESELECTION);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 332 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 333 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 334 break;
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 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 338
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 339 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 340 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 341 }
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 PFREE (mph_error_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 345 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 346
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 347 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 348 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 349 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 350 | STATE : code ROUTINE : att_mph_sync_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 351 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 352
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 353 PURPOSE : Process the primitive MPH_SYNC_IND received from PL.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 354
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 355 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 356
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 357 GLOBAL void att_mph_sync_ind (T_MPH_SYNC_IND *mph_sync_ind)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 358 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 359 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 360 TRACE_FUNCTION ("att_mph_sync_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 361
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 362 switch (GET_STATE (STATE_ATT))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 363 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 364 case ATT_CS2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 365 case ATT_CS3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 366 if (mph_sync_ind->cs EQ CS_SYS_INFO_1_NOT_NEEDED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 367 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 368 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 369 * layer 1 indicates that system information message type 1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 370 * is not available. Update the bitmap of the read messages.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 371 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 372 att_set_sys_info_read (SYS_INFO_1_READ, CR_INDEX);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 373 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 374 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 375 else if(mph_sync_ind->cs EQ CS_SCELL_IS_SYNCED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 376 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 377 if(rr_data->gprs_data.cr_pbcch_active)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 378 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 379 PALLOC(sync_ind, RRGRR_SYNC_IND);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 380 sync_ind->sync_res = SYNC_OK;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 381 PSENDX(GRR, sync_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 382
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 383 SET_STATE(STATE_GPRS,GPRS_PIM_PBCCH);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 384 rr_data->gprs_data.cr_pbcch_active = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 385 rr_data->nc_data[CR_INDEX].arfcn = NOT_PRESENT_16BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 386 SET_STATE (STATE_ATT, ATT_IDLE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 387 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 388 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 389 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 390 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 391
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 392 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 393 case ATT_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 394 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 395 T_GPRS_DATA *gprs_data = &rr_data->gprs_data;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 396 T_RRGRR_EXT_MEAS_REQ *rrgrr_ext_meas_req = gprs_data->rrgrr_ext_meas_req;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 397 T_RRGRR_EXT_MEAS_CNF *rrgrr_ext_meas_cnf = gprs_data->rrgrr_ext_meas_cnf;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 398
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 399 if ( mph_sync_ind->cs EQ CS_STOP_PLMN_SEARCH AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 400 rrgrr_ext_meas_req NEQ NULL )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 401 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 402 rrgrr_ext_meas_cnf->call_ref = rrgrr_ext_meas_req->call_ref;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 403 if ( gprs_data->ext_meas_ctrl & EXT_MEAS_RESET )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 404 rrgrr_ext_meas_cnf->xmeas_cause = EXT_MEAS_RESET;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 405 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 406 rrgrr_ext_meas_cnf->xmeas_cause = EXT_MEAS_OK;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 407
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 408 att_ext_meas_end(FALSE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 409 SET_STATE (STATE_CELL_SEL, CS_IDLE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 410 PSENDX ( GRR, rrgrr_ext_meas_cnf );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 411 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 412 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 413 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 414 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 415
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 416 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 417 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 418 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 419 PFREE (mph_sync_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 420 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 421
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 422 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 423 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 424 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 425 | STATE : code ROUTINE : att_mph_measurement_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 426 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 427
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 428 PURPOSE : Process MPH_MEASUREMENT_IND received from layer 1.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 429
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 430 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 431
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 432 GLOBAL void att_mph_measurement_ind (T_MPH_MEASUREMENT_IND *mph_measurement_ind)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 433 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 434 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 435 TRACE_FUNCTION ("att_mph_measurement_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 436
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 437 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 438 * Defines the time in frame numbers from the last measurements.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 439 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 440 rr_data->ms_data.fn_offset = (ULONG)mph_measurement_ind->fn_offset;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 441
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 442 switch (GET_STATE (STATE_ATT))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 443 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 444 case ATT_CS2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 445 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 446 * FTA problem with 20.19 testcase
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 447 * This function is used to eliminate poor serving cell
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 448 * RX level values due to spurious measurements.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 449 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 450 #if defined(_SIMULATION_)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 451 TRACE_EVENT_WIN_P5 ("ATT_CS2: MPH_MEASUREMENT_IND[%u] rx=%d %svalid (NC%u[%u])",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 452 mph_measurement_ind->arfcn, mph_measurement_ind->rx_lev_full,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 453 mph_measurement_ind->valid ? "" : "in", SC_INDEX,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 454 rr_data->nc_data[SC_INDEX].arfcn);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 455 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 456 att_align_sc_meas (mph_measurement_ind, SC_INDEX);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 457 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 458
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 459 case ATT_CS3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 460 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 461 * clear the barrier for the candidate if exists and
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 462 * update the fieldstrength value
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 463 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 464 #if defined(_SIMULATION_)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 465 TRACE_EVENT_WIN_P5 ("ATT_CS3: MPH_MEASUREMENT_IND[%u] rx=%d %svalid (NC%u[%u])",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 466 mph_measurement_ind->arfcn, mph_measurement_ind->rx_lev_full,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 467 mph_measurement_ind->valid ? "" : "in",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 468 CR_INDEX, rr_data->nc_data[CR_INDEX].arfcn);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 469 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 470 reset_tnnn (CR_INDEX);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 471 // rr_data->nc_data[CR_INDEX].rxlev = mph_measurement_ind->rx_lev_full;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 472 att_align_sc_meas (mph_measurement_ind, CR_INDEX);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 473 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 474
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 475 case ATT_DEDICATED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 476
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 477 if (mph_measurement_ind->valid)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 478 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 479 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 480 * if the measurement report is valid, store it
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 481 * for later use (building of measurement message
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 482 * and ranking of cells if coming back to idle mode).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 483 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 484 memcpy (&rr_data->ms_data.measurement_report, mph_measurement_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 485 sizeof (T_MPH_MEASUREMENT_IND));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 486
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 487 /*Store most recently received timing advance for SC*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 488 rr_data->sc_data.new_ta = rr_data->ms_data.measurement_report.otd/2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 489 att_set_tim_advance_info();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 490 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 491 * This function is used to eliminate poor serving cell
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 492 * RX level values due to spurious measurements.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 493 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 494 att_align_sc_meas (mph_measurement_ind, SC_INDEX);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 495
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 496 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 497 * Set fieldstrength in dedicated mode, use rxlev sub due to DTX
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 498 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 499 #ifdef FF_PS_RSSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 500 RX_SetValue (mph_measurement_ind->rx_lev_sub,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 501 mph_measurement_ind->rx_qual_sub,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 502 RX_ACCE_UNAVAILABLE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 503 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 504 RX_SetValue (mph_measurement_ind->rx_lev_sub);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 505 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 506 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 507
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 508 reset_tnnn (SC_INDEX);
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 * increase power on time to delete forbidden
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 512 * location area list after 12 hours
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 513 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 514 att_increase_power_on_time ((USHORT)(rr_data->ms_data.fn_offset /
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 515 PERIOD_1_SEC));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 516
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 517 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 518 * build the uplink SACCH message Measurement Report
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 519 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 520 #if defined (REL99) && defined (TI_PS_FF_EMR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 521 if ( ((rr_data->sc_data.enh_para_status EQ ENH_PARA_IDLE) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 522 (rr_data->sc_data.enh_para_status EQ ENH_PARA_DEDICATED)) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 523 rr_data->sc_data.emr_data_current.rep_type EQ REP_TYPE_ENH )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 524 dat_code_enh_measure_report (mph_measurement_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 525 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 526 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 527 dat_code_measure_report (mph_measurement_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 528 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 529
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 530 case ATT_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 531 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 532 #if defined (REL99) && defined (TI_PS_FF_EMR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 533 rr_data->sc_data.emr_data_current.scale_used_last =
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 534 mph_measurement_ind->scale_used;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 535 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 536 if(att_check_sync_results(mph_measurement_ind))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 537 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 538 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 539 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 540 * special trick for FTA testcase 20.7.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 541 * The first paging is delayed until the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 542 * first measurement from layer 1 arrives.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 543 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 544 rr_data->first_meas_received = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 545
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 546 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 547 * two dynamic configs to perform
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 548 * fast or slow cell reselection in the lab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 549 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 550 if (rr_data->dyn_config.fcr)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 551 mph_measurement_ind->rx_lev_full = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 552
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 553 if (rr_data->dyn_config.scr)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 554 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 555 rr_data->dyn_config.scr++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 556 if (rr_data->dyn_config.scr < mph_measurement_ind->rx_lev_full)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 557 mph_measurement_ind->rx_lev_full -= rr_data->dyn_config.scr;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 558 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 559 mph_measurement_ind->rx_lev_full = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 560 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 561
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 562 if (mph_measurement_ind->valid)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 563 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 564 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 565 * if the measurement report from layer 1 is valid
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 566 *
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 567 * set RX value
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 568 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 569 #ifdef FF_PS_RSSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 570 RX_SetValue (mph_measurement_ind->rx_lev_full,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 571 mph_measurement_ind->rx_qual_full,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 572 rr_data->nc_data[SC_INDEX].select_para.rxlev_access_min);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 573 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 574 RX_SetValue (mph_measurement_ind->rx_lev_full);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 575 #endif
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 * store the measurement report for later use, remove
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 579 * bad neighbourcells and analyze the data from layer 1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 580 * (remove cells which are not inside the report,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 581 * store new cells, update counter etc.).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 582 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 583 mph_measurement_ind->rx_lev_sub = mph_measurement_ind->rx_lev_full;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 584 memcpy (&rr_data->ms_data.measurement_report, mph_measurement_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 585 sizeof (T_MPH_MEASUREMENT_IND));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 586
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 587 /* L1 always report BCCH RXLev as Zero in Idle mode, so copy
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 588 * BCCH RXLev as receivied level (rx_lev_full) on BCCH
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 589 * This will be used when we go into dedicated mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 590 * And comback to Idle mode within 480MS Or
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 591 * Dedicated mode was very-short duration and
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 592 * RR didn't receive any valid measurement report into
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 593 * dedicate mode. If we don't do this Cell-Reselction
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 594 * will fail as rr_data->nc_data[SC_INDEX].rxlev will be zero
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 595 * Because it is assigned as bcch_rxlev_of_sc of measurement_report
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 596 * in function att_build_back_from_dedicated.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 597 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 598 rr_data->ms_data.measurement_report.bcch_rxlev_of_sc = mph_measurement_ind->rx_lev_full;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 599
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 600 att_remove_bad_ncell (mph_measurement_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 601 att_analyze_measure_report (mph_measurement_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 602
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 603 if( rr_data->c_ncell_bcch EQ NOT_INITIALISED )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 604 rr_data->c_ncell_bcch = mph_measurement_ind->ncells.no_of_ncells;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 605
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 606 if( (rr_data->c_ncell_bcch EQ 0) AND (rr_data->resel_pending EQ TRUE) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 607 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 608 PFREE (mph_measurement_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 609 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 610 att_start_cell_reselection_gprs(CELL_RESELECTION_RACH);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 611 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 612 att_start_cell_reselection(CELL_RESELECTION_RACH);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 613 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 614 rr_data->resel_pending = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 615 rr_data->c_ncell_bcch = NOT_INITIALISED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 616 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 617 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 618 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 619 * check whether a paging has been stored before receiving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 620 * the measurement from layer 1.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 621 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 622 if (rr_data->pag_rec)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 623 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 624 srv_use_stored_prim ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 625 rr_data->pag_rec = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 626 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 627
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 628 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 629 * delay cell reselection if network search is still ongoing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 630 * or RR initiated plmn search has started.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 631 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 632 att_check_reselect_decision (rr_data->start_cell_reselection);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 633
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 634 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 635 * increase power on time to delete forbidden
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 636 * location area list after 12 hours
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 637 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 638 att_increase_power_on_time ((USHORT)(rr_data->ms_data.fn_offset /
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 639 PERIOD_1_SEC));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 640
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 641 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 642 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 643
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 644 case ATT_CON_EST:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 645 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 646 * Measurements from layer 1 during connection establishment
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 647 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 648 if (mph_measurement_ind->valid)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 649 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 650 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 651 * store the measurement report for later use, remove
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 652 * bad neighbourcells and analyze the data from layer 1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 653 * (remove cells which are not inside the report,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 654 * store new cells, update counter etc.).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 655 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 656 mph_measurement_ind->rx_lev_sub = mph_measurement_ind->rx_lev_full;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 657 memcpy (&rr_data->ms_data.measurement_report, mph_measurement_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 658 sizeof (T_MPH_MEASUREMENT_IND));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 659
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 660 /* L1 always report BCCH RXLev as Zero in Connection Establishment mode, so copy
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 661 * BCCH RXLev as receivied level (rx_lev_full).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 662 * This will be used when we go into dedicated mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 663 * And comback to Idle mode within 480MS Or
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 664 * Dedicated mode was very-short duration and
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 665 * RR didn't receive any valid measurement report into
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 666 * dedicate mode. If we don't do this Cell-Reselction
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 667 * will fail as rr_data->nc_data[SC_INDEX].rxlev will be zero
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 668 * Because it is assigned as bcch_rxlev_of_sc of measurement_report
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 669 * in function att_build_back_from_dedicated.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 670 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 671 rr_data->ms_data.measurement_report.bcch_rxlev_of_sc = mph_measurement_ind->rx_lev_full;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 672
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 673 att_remove_bad_ncell (mph_measurement_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 674 att_analyze_measure_report (mph_measurement_ind);
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 * make a cell reselection decision, but do not start it.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 678 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 679 att_check_reselect_decision (FALSE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 680
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 681 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 682 * increase power on time to delete forbidden
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 683 * location area list after 12 hours
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 684 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 685 att_increase_power_on_time ((USHORT)(rr_data->ms_data.fn_offset /
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 686 PERIOD_1_SEC));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 687 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 688 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 689
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 690 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 691 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 692 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 693 PFREE (mph_measurement_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 694 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 695
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 696 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 697 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 698 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 699 | STATE : code ROUTINE : att_rr_activate_req |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 700 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 701
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 702 PURPOSE : Process the primitive RR_ACTIVATE_REQ received from MM.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 703
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 704 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 705
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 706 GLOBAL void att_rr_activate_req (T_RR_ACTIVATE_REQ *rr_activate_req)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 707 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 708 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 709 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 710 T_loc_area_ident * lai = &rr_data->nc_data[SC_INDEX].lai;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 711 #endif /* GPRS */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 712
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 713 TRACE_FUNCTION ("att_rr_activate_req()");
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 * set cell test operation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 717 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 718 rr_data->cell_test_operation = rr_activate_req->cell_test;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 719 rr_data->cs_data.check_hplmn = rr_activate_req->check_hplmn;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 720 TRACE_EVENT_P1 ( "Cell Test Operation =%d", rr_data->cell_test_operation );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 721
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 722 switch (GET_STATE (STATE_ATT))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 723 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 724 case ATT_NULL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 725 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 726 if(rr_activate_req->gprs_indication AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 727 rr_data->gprs_data.start_proc EQ START_PROC_NOTHING)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 728 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 729 att_set_gprs_indication(rr_activate_req->gprs_indication);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 730 att_rrgrr_cr_ind(CR_NORMAL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 731 rr_data->gprs_data.start_proc = START_PROC_ACTIVATE_REQ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 732 if ( srv_check_stored_prim (RR_ACTIVATE_REQ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 733 srv_clear_stored_prim(RR_ACTIVATE_REQ);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 734
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 735 if( !srv_store_prim ((T_PRIM *)D2P(rr_activate_req)) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 736 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 737 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 738 * primitive already in queue or storing failed
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 739 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 740 PFREE (rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 741 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 742 /* on CR_RSP use_stored_prim is called */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 743 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 744 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 745 att_handle_rr_act_req (TRUE, rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 746 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 747 att_handle_rr_act_req (TRUE, rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 748 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 749 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 750
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 751 case ATT_CS_INIT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 752 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 753 if(rr_activate_req->gprs_indication AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 754 rr_data->gprs_data.start_proc EQ START_PROC_NOTHING)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 755 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 756 TRACE_EVENT("Activating GPRS in ATT_CS_INIT");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 757 att_set_gprs_indication(rr_activate_req->gprs_indication);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 758 att_rrgrr_cr_ind(CR_NORMAL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 759 rr_data->gprs_data.start_proc = START_PROC_ACTIVATE_REQ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 760 /* go ahead for storing the activate_req message */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 761 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 762 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 763 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 764 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 765 att_handle_rr_act_req (FALSE, rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 766 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 767 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 768 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 769 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 770 /*lint -fallthrough*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 771
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 772 case ATT_CS1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 773 if ( GET_STATE (STATE_CELL_SEL) EQ CS_IDLE_ACTIVE )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 774 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 775 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 776 if(rr_activate_req->gprs_indication AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 777 rr_data->gprs_data.start_proc EQ START_PROC_NOTHING AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 778 rr_data->ms_data.req_mm_service EQ FUNC_LIM_SERV_ST_SRCH)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 779 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 780 TRACE_EVENT("Activating GPRS in ATT_CS1");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 781 att_set_gprs_indication(rr_activate_req->gprs_indication);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 782 att_rrgrr_cr_ind(CR_NORMAL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 783 rr_data->gprs_data.start_proc = START_PROC_ACTIVATE_REQ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 784 /* go ahead for storing the activate_req message */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 785 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 786 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 787 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 788 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 789 att_handle_rr_act_req (FALSE, rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 790 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 791 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 792 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 793 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 794 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 795 /*lint -fallthrough*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 796 case ATT_CS3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 797 case ATT_DEDICATED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 798 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 799 * store rr activate request during cell reselection and while dedicated
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 800 * only store the latest instance of an ACTIVATE_REQ
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 801 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 802 if ( srv_check_stored_prim (RR_ACTIVATE_REQ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 803 srv_clear_stored_prim(RR_ACTIVATE_REQ);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 804
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 805 if( !srv_store_prim ((T_PRIM *)D2P(rr_activate_req)) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 806 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 807 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 808 * primitive already in queue or storing failed
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 809 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 810 PFREE (rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 811 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 812 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 813 case ATT_CS2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 814 case ATT_NO_SERVICE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 815 case ATT_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 816 case ATT_CON_EST:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 817
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 818 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 819
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 820 if(rr_activate_req->gprs_indication AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 821 rr_activate_req->op.func NEQ FUNC_NET_SRCH_BY_MMI AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 822 rr_data->gprs_data.start_proc EQ START_PROC_NOTHING)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 823 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 824 if(
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 825 ( rr_data->ms_data.operation_mode EQ
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 826 ( (rr_activate_req->op.ts << 7) + (rr_activate_req->op.m << 6) +
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 827 (rr_activate_req->op.sim_ins << 5)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 828 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 829 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 830 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 831 ( rr_data->ms_data.req_mm_service EQ rr_activate_req->op.func)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 832 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 833 ( GET_STATE(STATE_GPRS) EQ GPRS_NULL)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 834 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 835 ( rr_data->nc_data[SC_INDEX].si13_loc_ind NEQ SI13_NOT_PRESENT )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 836 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 837 (GET_STATE(STATE_ATT) EQ ATT_IDLE )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 838 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 839 (dat_plmn_equal_req ( lai->mcc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 840 lai->mnc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 841 rr_activate_req->plmn.mcc,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 842 rr_activate_req->plmn.mnc) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 843 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 844 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 845 TRACE_EVENT("gprs activation - cell reselection to same cell");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 846 rr_data->gprs_data.start_proc = START_PROC_GPRS_ACT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 847 rr_data->sc_data.selection_type = CELL_RESELECTION_ON_GPRS_ACT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 848 att_set_gprs_indication(rr_activate_req->gprs_indication);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 849 PFREE (rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 850 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 851 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 852 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 853 rr_data->gprs_data.start_proc = START_PROC_ACTIVATE_REQ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 854 att_set_gprs_indication(rr_activate_req->gprs_indication);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 855
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 856 /* on CR_RSP use_stored_prim is called */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 857 if ( srv_check_stored_prim (RR_ACTIVATE_REQ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 858 srv_clear_stored_prim(RR_ACTIVATE_REQ);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 859 if( !srv_store_prim ((T_PRIM *)D2P(rr_activate_req)) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 860 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 861
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 862 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 863 * primitive already in queue or storing failed
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 864 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 865 PFREE (rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 866 }
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 att_rrgrr_cr_ind(CR_NORMAL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 870 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 871 else if (rr_activate_req->op.func EQ FUNC_NET_SRCH_BY_MMI AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 872 (GET_STATE(STATE_GPRS) EQ GPRS_PTM_BCCH OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 873 GET_STATE(STATE_GPRS) EQ GPRS_PTM_PBCCH OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 874 GET_STATE(STATE_GPRS) EQ GPRS_PAM_BCCH OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 875 GET_STATE(STATE_GPRS) EQ GPRS_PAM_PBCCH ))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 876 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 877 rr_data->gprs_data.start_proc = START_PROC_NOTHING;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 878 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 879 * send Please Retry to the MMI instead of
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 880 * storing the primitive
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 881 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 882 rr_data->sc_data.found_entries = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 883 att_code_rr_abort_ind(RRCS_ABORT_PTM);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 884 PFREE (rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 885 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 886 else if (rr_activate_req->op.func EQ FUNC_NET_SRCH_BY_MMI)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 887 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 888 /* this is a parallel search, don't inform GRR */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 889 rr_data->gprs_data.start_proc = START_PROC_NOTHING;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 890 att_handle_rr_act_req (FALSE, rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 891 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 892 else if(
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 893 (rr_activate_req->gprs_indication EQ FALSE) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 894 (rr_activate_req->op.func NEQ FUNC_NET_SRCH_BY_MMI) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 895 (GET_STATE(STATE_ATT) EQ ATT_IDLE ) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 896 (rr_data->ms_data.req_mm_service EQ rr_activate_req->op.func) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 897 (
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 898 rr_data->ms_data.operation_mode EQ
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 899 ((rr_activate_req->op.ts << 7)+(rr_activate_req->op.m << 6)+(rr_activate_req->op.sim_ins << 5))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 900 ) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 901 (GET_STATE(STATE_GPRS) EQ GPRS_PIM_BCCH)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 902 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 903 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 904 att_set_gprs_indication(rr_activate_req->gprs_indication);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 905 att_set_sys_info_read(SYS_INFO_13_READ, SC_INDEX);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 906 att_build_idle_req(SC_INDEX, MODE_SYS_INFO_CHANGE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 907 att_code_rr_act_cnf();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 908 PFREE(rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 909 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 910 else /* called after, the CR_RSP is received or
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 911 if GPRS is not activated */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 912 att_handle_rr_act_req (FALSE, rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 913 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 914 att_handle_rr_act_req (FALSE, rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 915 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 916
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 917 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 918
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 919
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 920 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 921 PFREE (rr_activate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 922 break;
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 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 927 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 928 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 929 | STATE : code ROUTINE : att_rr_deactivate_req |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 930 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 931
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 932 PURPOSE : Process the primitive RR_DEACTIVATE_REQ received from MM.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 933
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 GLOBAL void att_rr_deactivate_req (T_RR_DEACTIVATE_REQ *rr_deactivate_req)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 937 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 938 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 939 UBYTE tim_idx;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 940 PREUSE (rr_deactivate_req, mph_deactivate_req, MPH_DEACTIVATE_REQ);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 941
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 942 TRACE_FUNCTION ("att_rr_deactivate_req()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 943
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 944 EM_DEACTIVATION;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 945
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 946 #if defined(_SIMULATION_FFS_)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 947 if(!dat_test_sim_available())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 948 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 949 /* store the white list from RAM to FFS */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 950 if(rr_data->ms_data.rr_service EQ FULL_SERVICE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 951 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 952 cs_store_white_list();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 953 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 954
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 955 /* store the Black list from RAM to FFS */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 956 cs_store_black_list();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 957 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 958 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 959
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 960 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 961 * stop any timer which might be running
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 962 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 963 for (tim_idx = 0; tim_idx < NUM_OF_RR_TIMERS; tim_idx++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 964 TIMERSTOP (tim_idx);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 965 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 966 * reset process states and initialize the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 967 * gsm related data.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 968 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 969 dat_att_null ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 970 att_init_gsm_data ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 971 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 972 gprs_init_gprs_data();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 973 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 974
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 975 cs_init_process();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 976 SET_STATE (STATE_ATT, ATT_NULL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 977
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 978 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 979 * deactivate layer 1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 980 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 981 PSENDX (PL, mph_deactivate_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 982 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 983
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 984 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 985 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 986 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 987 | STATE : code ROUTINE : att_rr_sync_req |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 988 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 989
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 990 PURPOSE : Process the primitive RR_SYNC_REQ received from MM.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 991
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 992 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 993
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 994 GLOBAL void att_rr_sync_req (T_RR_SYNC_REQ *rr_sync_req)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 995 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 996 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 997 TRACE_FUNCTION ("att_rr_sync_req()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 998
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 999 TRACE_EVENT_P2 ("RR_SYNC_REQ cs=%x att st=%u", rr_sync_req->synccs, GET_STATE (STATE_ATT));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1000
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1001 if ((rr_sync_req->synccs NEQ NOT_PRESENT_16BIT) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1002 (rr_sync_req->synccs NEQ SYNCCS_LAI_ALLOW))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1003 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1004 rr_data->mode_after_dedi = MODE_CELL_RESELECTION;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1005 TRACE_EVENT ("rr_sync_req: MODE_CELL_RESELECTION");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1006 #if defined(DL_TRACE_ENABLED)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1007 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1008 sprintf (dl_trace_buf, "sync_req cs=%04x ->mode=%u #%u:%s",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1009 rr_sync_req->synccs, rr_data->mode_after_dedi, __LINE__, __FILE10__);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1010 DL_OFFLINE_TRACE (dl_trace_buf);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1011 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1012 #endif /* DL_TRACE_ENABLED */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1013 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1014
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1015 if (rr_sync_req->kcv.v_kc)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1016 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1017 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1018 * change of cipher parameter
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1019 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1020 memcpy (rr_data->ms_data.new_kc, &rr_sync_req->kcv.kc, KC_STRING_SIZE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1021 rr_data->ms_data.cksn = rr_sync_req->cksn;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1022 }/*if v_kc*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1023
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1024 if (rr_sync_req->tmsi_struct.v_mid)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1025 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1026 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1027 * change of TMSI (a new value is defined)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1028 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1029 rr_data->ms_data.tmsi_available = TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1030 rr_data->ms_data.tmsi_binary = rr_sync_req->tmsi_struct.tmsi_dig;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1031 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1032 * forward the new TMSI to layer 1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1033 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1034 att_mph_identity_req ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1035 }/* if v_mid*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1036
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1037 if (rr_sync_req->op.v_op)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1038 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1039 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1040 * change of the operation mode, typically
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1041 * change from automatic to manual mode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1042 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1043 rr_data->ms_data.operation_mode =
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1044 (rr_sync_req->op.ts << SHIFT_FOR_SIM_TYPE) +
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1045 (rr_sync_req->op.m << SHIFT_FOR_SEARCH_OFFSET) +
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1046 (rr_sync_req->op.sim_ins << SHIFT_FOR_SIM_INSERTED);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1047 att_set_func (rr_sync_req->op.func);
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 switch (GET_STATE (STATE_ATT))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1051 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1052 case ATT_NO_SERVICE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1053 case ATT_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1054 case ATT_CON_EST:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1055 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1056 * changes from automatic to manual mode and vice versa
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1057 * may lead to start or stop of HPLMN search.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1058 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1059 if (rr_data->ms_data.rr_service EQ FULL_SERVICE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1060 att_start_registration_timer ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1061 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1062 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1063 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1064 }/*STATE_ATT*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1065
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1066 }/*if v_op*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1067
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1068 switch (GET_STATE (STATE_ATT))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1069 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1070 case ATT_CS1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1071 switch (rr_sync_req->synccs)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1072 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1073 case SYNCCS_TMSI_CKSN_KC_INVAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1074 case SYNCCS_TMSI_CKSN_KC_INVAL_NO_PAG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1075 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1076 * store the primitive during cell selection (power measurements)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1077 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1078 if (!srv_store_prim ((T_PRIM *)D2P(rr_sync_req)))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1079 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1080 PFREE (rr_sync_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1081 }/*if*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1082 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1083 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1084 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1085 }/*synccs*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1086 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1087
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1088 case ATT_CS2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1089 switch (rr_sync_req->synccs)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1090 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1091 case SYNCCS_TMSI_CKSN_KC_INVAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1092 case SYNCCS_TMSI_CKSN_KC_INVAL_NO_PAG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1093 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1094 * location updating reject or authentication
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1095 * failure indicates that a new start of the cell
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1096 * selection is needed.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1097 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1098 TIMERSTOP (T_RESELECT);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1099 /*XY:n don't inform GRR , but call start_cs anyway */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1100 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1101 att_start_cell_selection_gprs (RR_ORIGINATED,FULL_SEARCH_MODE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1102 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1103 att_start_cell_selection (RR_ORIGINATED, CS_NOT_PARALLEL,FULL_SEARCH_MODE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1104 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1105 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1106 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1107 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1108 }/*synccs*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1109 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1110
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1111 case ATT_CS3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1112 case ATT_DEDICATED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1113 case ATT_NO_SERVICE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1114 case ATT_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1115 case ATT_CON_EST:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1116 switch (rr_sync_req->synccs)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1117 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1118 case SYNCCS_TMSI_CKSN_KC_INVAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1119 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1120 * clear TMSI, CKSN and KC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1121 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1122 att_clear_reg_without_imsi ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1123 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1124
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1125 case SYNCCS_TMSI_CKSN_KC_INVAL_NO_PAG:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1126 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1127 * clear TMSI, IMSI, CKSN and KC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1128 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1129 att_clear_registration_data ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1130 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1131 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1132 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1133 }/*synccs*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1134 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1135
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1136 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1137 break;/*state*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1138 }/*STATE_ATT*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1139
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1140
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1141 switch (rr_sync_req->synccs)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1142 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1143 case SYNCCS_EPLMN_LIST:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1144 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1145 * If sync info contains an EPLMN list
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1146 * then this is copied regardless of state.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1147 * When EPLMN is not available stored EPLMN
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1148 * is marked as invalid.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1149 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1150 att_copy_eplmn_list(&rr_sync_req->eq_plmn_list);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1151 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1152
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1153 case SYNCCS_LAI_ALLOW:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1154
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1155 /* Store Last Registered PLMN data from the white list */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1156 rr_data->cs_data.last_reg_plmn.v_plmn = V_PLMN_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1157
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1158 memcpy (rr_data->cs_data.last_reg_plmn.mcc, rr_data->cs_data.white_list.last_sc_lac.mcc, SIZE_MCC);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1159 memcpy (rr_data->cs_data.last_reg_plmn.mnc, rr_data->cs_data.white_list.last_sc_lac.mnc, SIZE_MNC);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1160
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1161 TRACE_EVENT("LRPLMN copied from white list");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1162
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1163 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1164 * successful end of location updating request,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1165 * remove lai from forbidden list if stored
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1166 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1167 att_rem_lai_from_forb_list (&rr_sync_req->plmn,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1168 rr_sync_req->lac);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1169 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1170
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1171 case SYNCCS_LAI_NOT_ALLOW:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1172 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1173 * location updating reject, lai must be added to the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1174 * forbidden lai list.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1175 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1176 att_add_to_forb_list (FORBIDDEN_LIST_NORMAL,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1177 &rr_sync_req->plmn,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1178 rr_sync_req->lac);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1179 /* Specifications 24.008 (section 4.4.4.7) -
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1180 * # 12: (Location Area not allowed);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1181 * The MS shall perform a cell selection when back to the MM IDLE state
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1182 * according to 3GPP TS 03.22 and 3GPP TS 25.304.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1183 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1184 rr_data->ms_data.req_mm_service = FUNC_NET_SRCH_BY_MMI;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1185 att_start_cell_selection (RR_ORIGINATED, CS_PARALLEL,NORMAL_SEARCH_MODE);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1186
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1187 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1188
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1189 case SYNCCS_LAI_NOT_ALLOW_FOR_ROAMING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1190 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1191 * location updating reject, lai must be added to the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1192 * forbidden lai list for roaming.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1193 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1194 att_add_to_forb_list (FORBIDDEN_LIST_ROAMING,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1195 &rr_sync_req->plmn,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1196 rr_sync_req->lac);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1197 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1198
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1199 case SYNCCS_TMSI_INVAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1200 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1201 * TMSI is invalid. Clear in RR and inform layer 1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1202 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1203 rr_data->ms_data.tmsi_available = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1204 att_mph_identity_req ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1205 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1206
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1207 case SYNCCS_LIMITED_SERVICE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1208 /* Plmn received matches with LRPLMN, flush LRPLMN */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1209 if (rr_sync_req->plmn.v_plmn EQ V_PLMN_PRES)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1210 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1211 if(!memcmp(rr_sync_req->plmn.mcc, rr_data->cs_data.last_reg_plmn.mcc, SIZE_MCC) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1212 !memcmp(rr_sync_req->plmn.mnc, rr_data->cs_data.last_reg_plmn.mnc, SIZE_MNC)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1213 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1214 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1215 rr_data->cs_data.last_reg_plmn.v_plmn = V_PLMN_NOT_PRES;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1216 TRACE_EVENT ("LRPLMN Cleared");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1217 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1218 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1219
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1220 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1221 * Indication to RR that only limited service
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1222 * is possible due to location updating reject cause
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1223 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1224 rr_data->ms_data.rr_service = LIMITED_SERVICE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1225 TRACE_EVENT_P7 ("CLEAR plmn, (old MCC/MNC=%x%x%x/%x%x%x) #%u",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1226 rr_data->ms_data.plmn.mcc[0],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1227 rr_data->ms_data.plmn.mcc[1],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1228 rr_data->ms_data.plmn.mcc[2],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1229 rr_data->ms_data.plmn.mnc[0],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1230 rr_data->ms_data.plmn.mnc[1],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1231 rr_data->ms_data.plmn.mnc[2],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1232 __LINE__);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1233 memset (&rr_data->ms_data.plmn, 0, sizeof (T_plmn));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1234 att_set_rr_service_info();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1235
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1236 switch (GET_STATE (STATE_ATT))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1237 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1238 case ATT_NO_SERVICE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1239 case ATT_IDLE:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1240 case ATT_CON_EST:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1241 att_start_registration_timer();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1242 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1243 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1244 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1245 }/*STATE_ATT*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1246
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1247 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1248 if(att_gprs_is_avail())
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1249 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1250 /*XY: inform GRR, and wait for CR_RSP */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1251 /* att_rrgrr_cr_ind(CR_NORMAL); */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1252 /* rr_data->gprs_data.start_proc = START_PROC_ENTER_LIMITED; */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1253
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1254 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1255 * During cell reselection, we should not send the primitive
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1256 * RRGRR_GPRS_SI13_IND to GRR to inform Limited Service.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1257 * As this primitive is also used to mark the end of cell reselection.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1258 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1259 if( GET_STATE(STATE_ATT) NEQ ATT_CS3)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1260 att_signal_gprs_support();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1261 /* action will follow after cr_rsp */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1262 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1263 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1264
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1265 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1266
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1267 case SYNCCS_ACCC:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1268 rr_data->ms_data.access_classes = rr_sync_req->accc;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1269 break; /* SIM's access class by SAT changed */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1270
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1271 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1272 if(!rr_sync_req->op.v_op OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1273 !rr_sync_req->kcv.v_kc OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1274 !rr_sync_req->tmsi_struct.v_mid)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1275 TRACE_ERROR ("Unexpected sync event");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1276 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1277 }/*synccs*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1278
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1279 PFREE (rr_sync_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1280
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1281 }/*att_rr_sync_reg*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1282
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1283 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1284 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1285 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1286 | STATE : code ROUTINE : att_mph_meas_rep_cnf |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1287 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1288
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1289 PURPOSE : Process the primitive mph_meas_rep_cnf from ALR.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1290
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1291 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1292
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1293 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1294 GLOBAL void att_mph_meas_rep_cnf(T_MPH_MEAS_REP_CNF* mph_meas_rep_cnf)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1295 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1296 UBYTE count;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1297 PALLOC(rrgrr_meas_rep_cnf, RRGRR_MEAS_REP_CNF);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1298 TRACE_FUNCTION("rrgrr_meas_rep_cnf()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1299
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1300 /*lint -e661 (Possible access of out-of-bounds pointer (26 beyond end of data) by operator '[') */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1301 /*lint -e662 (Possible creation of out-of-bounds pointer (26 beyond end of data) by operator '[') */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1302 for(count=0;count<RRGRR_MEAS_REP_LIST_SIZE;count++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1303 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1304 rrgrr_meas_rep_cnf->meas_res[count].arfcn = mph_meas_rep_cnf->meas_rep[count].arfcn;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1305 rrgrr_meas_rep_cnf->meas_res[count].bsic = mph_meas_rep_cnf->meas_rep[count].bsic;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1306 rrgrr_meas_rep_cnf->meas_res[count].rxlev = mph_meas_rep_cnf->meas_rep[count].rx_lev;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1307 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1308 PFREE(mph_meas_rep_cnf);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1309 PSENDX( GRR, rrgrr_meas_rep_cnf );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1310 /*lint +e662 (Possible creation of out-of-bounds pointer (26 beyond end of data) by operator '[') */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1311 /*lint +e661 (Possible access of out-of-bounds pointer (26 beyond end of data) by operator '[') */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1312 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1313 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1314
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1315
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1316
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1317 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1318 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1319 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1320 | STATE : code ROUTINE : att_mph_meas_order_cnf |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1321 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1322
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1323 PURPOSE :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1324
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1325 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1326
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1327 GLOBAL void att_mph_meas_order_cnf (T_MPH_MEAS_ORDER_CNF* meas)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1328 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1329 PFREE(meas);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1330 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1331
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1332 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1333 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1334 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1335 | STATE : code ROUTINE : att_align_sc_meas |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1336 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1337
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1338 PURPOSE :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1339
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1340 index == SC_INDEX: In this case the function is used to eliminate
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1341 poor serving cell RX level values due to
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1342 spurious measurements.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1343
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1344 This function is related to FTA test case 20.19.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1345
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1346 index == CR_INDEX: In this case the function is used to set the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1347 right aligned level of a delayed measurement report
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1348 during cell reselection (ATT_CS3) to the cell
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1349 with the CR_INDEX.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1350
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1351 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1352
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1353 LOCAL void att_align_sc_meas (T_MPH_MEASUREMENT_IND * mph_meas_ind,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1354 UBYTE index)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1355 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1356 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1357 UBYTE i;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1358
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1359 TRACE_FUNCTION ("att_align_sc_meas()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1360
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1361 if (mph_meas_ind->valid)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1362 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1363 if (rr_data->nc_data[index].arfcn EQ mph_meas_ind->arfcn)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1364 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1365 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1366 * update the serving cell or cr cell fieldstrength
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1367 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1368 #if defined(_SIMULATION_)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1369 TRACE_EVENT_WIN_P3 ("att_align_sc_meas(idx=%u): SC/CR=[%u], rx=%d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1370 index, mph_meas_ind->arfcn, mph_meas_ind->rx_lev_full);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1371 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1372 rr_data->nc_data[index].rxlev = mph_meas_ind->rx_lev_full;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1373 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1374 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1375 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1376 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1377 * check all neighbourcells
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1378 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1379 for (i=0;i<mph_meas_ind->ncells.no_of_ncells;i++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1380 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1381 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1382 * if the cell is also inside the neighbourcells, take
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1383 * this fieldstrength value.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1384 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1385 if (mph_meas_ind->ncells.arfcn[i] EQ rr_data->nc_data[index].arfcn)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1386 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1387 #if defined(_SIMULATION_)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1388 TRACE_EVENT_WIN_P3 ("att_align_sc_meas(idx=%u): nc[%u] found, rx=%d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1389 index, mph_meas_ind->ncells.arfcn[i], mph_meas_ind->ncells.rx_lev[i]);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1390 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1391 rr_data->nc_data[index].rxlev = mph_meas_ind->ncells.rx_lev[i];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1392 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1393 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1394 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1395 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1396 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1397 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1398
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1399 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1400 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1401 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1402 | STATE : code ROUTINE : att_rr_sync_hplmn_req |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1403 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1404
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1405 PURPOSE : Process the primitive RR_SYNC_HPLMN_REQ received from MM.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1406
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1407 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1408
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1409 GLOBAL void att_rr_sync_hplmn_req (T_RR_SYNC_HPLMN_REQ *rr_sync_hplmn_req)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1410 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1411 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1412 TRACE_FUNCTION ("att_rr_sync_hplmn_req()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1413 memcpy (&rr_data->ms_data.ahplmn, &rr_sync_hplmn_req->plmn, sizeof (T_plmn));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1414 rr_data->ms_data.v_eq_plmn = FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1415 memset(&rr_data->ms_data.eq_plmn_list, 0xFF, SIZE_EPLMN);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1416 PFREE(rr_sync_hplmn_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1417 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1418
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1419 #if defined FF_EOTD
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1420 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1421 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1422 | PROJECT : GSM-PS (6147) MODULE : RR_ATT |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1423 | STATE : code ROUTINE : att_mph_ncell_pos_ind |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1424 +--------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1425
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1426 PURPOSE : Process the primitive MPH_NCELL_POS_IND received from PL.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1427
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1428 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1429
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1430 GLOBAL void att_mph_ncell_pos_ind (T_MPH_NCELL_POS_IND *mph_ncell_pos_ind)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1431 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1432 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1433 TRACE_FUNCTION ("att_mph_ncell_pos_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1434
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1435 if ( mph_ncell_pos_ind->eotd_res EQ EOTD_SUCC )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1436 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1437 /* Forward input primitive to LC adding some parameters */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1438
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1439 T_loc_area_ident *loc_area_ident;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1440 T_NC_DATA *sc;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1441 int i,n;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1442
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1443 PALLOC (rrlc_meas_ind, RRLC_MEAS_IND);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1444
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1445 sc = &rr_data->nc_data[SC_INDEX];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1446 loc_area_ident = &sc->lai;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1447
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1448 memcpy ( &rrlc_meas_ind->mcc[0], &loc_area_ident->mcc[0], 3 * sizeof rrlc_meas_ind->mcc[0]);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1449 memcpy ( &rrlc_meas_ind->mnc[0], &loc_area_ident->mnc[0], 3 * sizeof rrlc_meas_ind->mnc[0]);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1450 rrlc_meas_ind->lac = loc_area_ident->lac;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1451 rrlc_meas_ind->cell_id = sc->cell_id;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1452 rrlc_meas_ind->req_id = mph_ncell_pos_ind->req_id;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1453 rrlc_meas_ind->tav = mph_ncell_pos_ind->ta;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1454 rrlc_meas_ind->fn = mph_ncell_pos_ind->fn;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1455 rrlc_meas_ind->eotd_sc_res = mph_ncell_pos_ind->eotd_sc_res;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1456 rrlc_meas_ind->eotd_sc_res1 = mph_ncell_pos_ind->eotd_sc_res1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1457 n =
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1458 rrlc_meas_ind->c_eotd_nc_res = mph_ncell_pos_ind->c_eotd_nc_res;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1459 for ( i = 0; i < n; ++i )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1460 rrlc_meas_ind->eotd_nc_res[i] = mph_ncell_pos_ind->eotd_nc_res[i];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1461
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1462 if ( GET_STATE (STATE_ATT) EQ ATT_DEDICATED
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1463 #ifdef GPRS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1464 OR (GET_STATE (STATE_ATT) EQ ATT_IDLE AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1465 GET_STATE(STATE_GPRS) EQ GPRS_PTM_BCCH AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1466 GET_STATE(STATE_GPRS) EQ GPRS_PTM_PBCCH )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1467 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1468 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1469 rrlc_meas_ind->eotd_mode = EOTD_DEDIC;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1470 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1471 rrlc_meas_ind->eotd_mode = EOTD_IDLE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1472
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1473 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1474 * If this is a response to an explicit position measurement request,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1475 * then reset the flag which enables handover indications to LC.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1476 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1477
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1478 if ( rr_data->eotd_req_id NEQ NOT_PRESENT_16BIT AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1479 rr_data->eotd_req_id EQ mph_ncell_pos_ind->req_id )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1480 rr_data->eotd_req_id = NOT_PRESENT_16BIT;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1481
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1482 PSENDX (LC, rrlc_meas_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1483 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1484 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1485 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1486 PALLOC (rrlc_error_ind, RRLC_ERROR_IND);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1487 rrlc_error_ind->cause = LCS_WRONG_BTS; /* exact cause is unclear, assume wrong BTS */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1488 PSENDX (LC, rrlc_error_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1489 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1490 PFREE(mph_ncell_pos_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1491 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1492 #endif /* FF_EOTD */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1493
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1494 #ifdef TI_PS_FF_QUAD_BAND_SUPPORT
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1495 GLOBAL void att_mph_init_rr_ind(T_MPH_INIT_RR_IND* mph_init_rr_ind)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1496 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1497 GET_INSTANCE_DATA;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1498 UBYTE freq_bands;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1499 T_rf_power *rfp = &rr_data->ms_data.rf_cap.rf_power;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1500
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1501 TRACE_FUNCTION ("att_mph_init_rr_ind()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1502 rr_csf_get_freq_bands (&freq_bands);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1503 if (mph_init_rr_ind->freq_bands NEQ freq_bands)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1504 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1505 TRACE_EVENT_P2 ("FFS data %x, doesn't match L1 compilation flag %x", freq_bands, mph_init_rr_ind->freq_bands);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1506 TRACE_ERROR ("FFS data doesn't match L1 compilation flag");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1507 TRACE_ASSERT (freq_bands NEQ mph_init_rr_ind->freq_bands);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1508 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1509
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1510 if (rfp->pow_class4[IDX_PWRCLASS_900].pow_class NEQ mph_init_rr_ind->pclass_900 OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1511 rfp->pow_class4[IDX_PWRCLASS_850].pow_class NEQ mph_init_rr_ind->pclass_850 OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1512 rfp->pow_class4[IDX_PWRCLASS_1800].pow_class NEQ mph_init_rr_ind->pclass_1800 OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1513 rfp->pow_class4[IDX_PWRCLASS_1900].pow_class NEQ mph_init_rr_ind->pclass_1900)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1514 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1515 TRACE_EVENT ("FFS Power Class info doesn't match L1 Powe Class info");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1516 TRACE_ERROR ("FFS Power Class info doesn't match L1 Powe Class info");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1517 TRACE_ASSERT (mph_init_rr_ind->pclass_900 NEQ rfp->pow_class4[IDX_PWRCLASS_900].pow_class);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1518 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1519 PFREE(mph_init_rr_ind);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1520 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1521 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1522
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1523 #endif