FreeCalypso > hg > fc-magnetite
view src/g23m-gprs/grr/grr.h @ 450:395e464e4005
Compal & Pirelli targets: APCOFF register setting
changed to match what the respective original firmwares set
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 05 Mar 2018 04:01:30 +0000 |
parents | 390fec2ab72f |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : GPRS (8441) | Modul : GRR +----------------------------------------------------------------------------- | Copyright 2002 Texas Instruments Berlin, AG | All rights reserved. | | This file is confidential and a trade secret of Texas | Instruments Berlin, AG | The receipt of or possession of this file does not convey | any rights to reproduce or disclose its contents or to | manufacture, use, or sell anything it may describe, in | whole, or in part, without the specific written consent of | Texas Instruments Berlin, AG. +----------------------------------------------------------------------------- | Purpose : Definitions for entity GRR. +----------------------------------------------------------------------------- */ #ifndef GRR_H #define GRR_H /* * Start defintions from entity RR */ /* **************************************************************************** * The following declarations shall be identical with the corresponding * declarations located in RR. **************************************************************************** */ EXTERN UBYTE std; EXTERN UBYTE rr_csf_get_radio_access_capability( T_ra_cap *ra_cap ); EXTERN T_rf_cap* rr_csf_get_rf_capability ( void ); #ifdef TI_PS_FF_QUAD_BAND_SUPPORT #ifdef _SIMULATION_ EXTERN void rr_csf_check_rfcap (UBYTE init); #endif #endif #if defined (REL99) AND defined (TI_PS_FF_EMR) EXTERN BOOL rr_get_support_for_emr ( void ); #endif #define MAX_CLASSES 5 EXTERN const SHORT p_dcs [MAX_CLASSES]; EXTERN const SHORT p_pcs [MAX_CLASSES]; EXTERN const SHORT p_gsm [MAX_CLASSES]; #define MAX_PCL 32 EXTERN const UBYTE p_control_gsm [MAX_PCL]; EXTERN const UBYTE p_control_dcs [MAX_PCL]; EXTERN const UBYTE p_control_pcs [MAX_PCL]; typedef struct { USHORT l_f; USHORT o_f; UBYTE b_f[32]; } T_f_range; typedef struct { UBYTE b_f[128]; } T_LIST; EXTERN void for_create_channel_list ( T_f_range *f_range, T_LIST *cha_list ); EXTERN void srv_merge_list ( T_LIST *target_list, T_LIST *list ); EXTERN int srv_create_list ( T_LIST *list, USHORT *channel_array, USHORT size, UBYTE start_with_zero, USHORT start_index ); #ifdef _TARGET_ EXTERN void srv_get_cell_alloc_list ( T_LIST *target_list ); #endif #define RX_QUAL_UNAVAILABLE 0xFF #ifdef FF_PS_RSSI #define RX_ACCE_UNAVAILABLE 0xFF EXTERN void RX_SetValue ( UBYTE new_value, UBYTE new_qual, UBYTE new_access); #else EXTERN void RX_SetValue ( UBYTE new_value ); #endif /* **************************************************************************** * The above declarations shall be identical with the corresponding * declarations located in RR. **************************************************************************** */ /* * End defintions from entity RR */ typedef struct /* T_MS_PWR_CAP */ { const SHORT *p; /* power class -> output power */ const UBYTE *p_control; /* power control level -> output power */ UBYTE ms_power; /* MS power class */ SHORT pwr_offset; /* POWER_OFFSET */ SHORT pwr_max; /* maximum nominal output power in the cell */ SHORT pwr_min; /* minimum nominal output power in the cell */ SHORT gamma_0; /* GAMMA 0 */ UBYTE band_ind; /* indicates the used frequency band */ } T_MS_PWR_CAP; /* * defines the user of the vsi interface */ #define VSI_CALLER GRR_handle, #define VSI_CALLER_SINGLE GRR_handle /* * Macros */ #ifdef REL99 #define MAX_PSI 9 /* Maximum number of PSIs: PSI1,2,3,3bis,3ter,4,5,8,13 */ #else #define MAX_PSI 7 /* Maximum number of PSIs: PSI1,2,3,3bis,4,5,13*/ #endif #define ENCODE_OFFSET 0 /* * Bit and byte length for encoding/decoding */ #define BIT_UL_CTRL_BLOCK_MAC_HEADER 8 #define BIT_UL_CTRL_BLOCK_CONTENTS 176 #define BIT_UL_CTRL_BLOCK (BIT_UL_CTRL_BLOCK_MAC_HEADER+BIT_UL_CTRL_BLOCK_CONTENTS) #define BYTE_UL_CTRL_BLOCK (BIT_UL_CTRL_BLOCK/BITS_PER_BYTE) /* * Constants */ /* * Disable Get State traces only for target enviroment */ #ifdef _TARGET_ #undef GET_STATE #define GET_STATE(P) (ENTITY_DATA->P state) #endif #define MA_NUMBER_4_PSI13_OR_CELL_ALLOC 14 /* MA_NUMBER used to reference a Mobile Allocation (MA) received in PSI13, which may referenced from an assignment message or which referes to the cell allocation defined for the cell in SI1 or PSI2*/ #define MA_NUMBER_4_ASSIGNMENT 15 /* MA_NUMBER used to reference a MA received in a previous assignent*/ #if 1 //#ifdef REL99 /* FreeCalypso change to pass !REL99 compilation */ #define GRR_FREQ_PARAM_RECEIVED_IN_ASSIGNMENT 0 /* * This refers to freq param that is received in non assignment * messages like PSI 8 and PSI 14 */ #define GRR_FREQ_PARAM_RECEIVED_IN_NON_ASSIGNMENT 1 #endif /* * Define the size of the GRR queue in frame */ #define PEI_PRIM_QUEUE_SIZE 20 #define FN_MAX 0x297000 #define GRR_INVALID_FN 0xFFFFFFFF /* * Macros for handling of individual bits within a value used as flags */ #define SET_FLAG(val,mask,flag,type) (val=(((val)&(~(type)(mask)))|(flag))) #define IS_FLAGGED(val,mask,flag) ((val & mask ) EQ flag) #define IS_NOT_FLAGGED(val,mask,flag) ((val & mask ) NEQ flag) /* * Defines for the gprs_database */ /* * Service states */ #define GPRS_SERVICE_NONE 0 /* no service */ #define GPRS_SERVICE_LIMITED 1 /* limited service */ #define GPRS_SERVICE_FULL 2 /* full service */ typedef UBYTE T_GPRS_SERVICE; /* * Access states */ #define GPRS_ACCESS_BARRED 0 /* access barred */ #define GPRS_ACCESS_ALLOWED 1 /* access allowed */ typedef UBYTE T_ACCESS_STATUS; /* * Maximum number of IMSI digits */ #define MAX_IMSI_DIGITS 16 #define SEG_CTRL_BLOCK_SIZE 8 #ifdef REL99 /* * Network Release */ #define BSS_NW_REL_97 0 #define BSS_NW_REL_99 1 #define BSS_NW_REL_04 2 #endif /* start constants for CTRL */ /* final states */ #define GLBL_PCKT_MODE_NULL 0 #define GLBL_PCKT_MODE_SUSP 1 #define GLBL_PCKT_MODE_SYNC 2 #define GLBL_PCKT_MODE_IDLE 3 #define GLBL_PCKT_MODE_ACCESS 4 #define GLBL_PCKT_MODE_ASSIGNED 5 #define GLBL_PCKT_MODE_TRANSFER 6 #define GLBL_PCKT_MODE_RELEASED 7 /* transitions states from NULL mode to others */ #define GLBL_PCKT_MODE_NULL_IDLE 8 /* transitions states from suspended mode to others */ #define GLBL_PCKT_MODE_SUSP_IDLE 9 /* transitions states from suspended mode to others */ #define GLBL_PCKT_MODE_SYNC_IDLE 10 /* transitions states from packet idle mode to others */ #define GLBL_PCKT_MODE_IDLE_ACCESS 11 #define GLBL_PCKT_MODE_IDLE_ASSIGNED 12 #define GLBL_PCKT_MODE_IDLE_TRANSFER 13 /* transitions states from packet access mode to others */ #define GLBL_PCKT_MODE_ACCESS_IDLE 14 #define GLBL_PCKT_MODE_ACCESS_ASSIGNED 15 #define GLBL_PCKT_MODE_ACCESS_TRANSFER 16 #define GLBL_PCKT_MODE_ACCESS_TWO_PHASE 17 /* transitions states from packet assigned mode to others */ #define GLBL_PCKT_MODE_ASSIGNED_IDLE 18 #define GLBL_PCKT_MODE_ASSIGNED_TRANSFER 19 /* transitions states from packet transfer mode to others */ #define GLBL_PCKT_MODE_TRANSFER_IDLE 20 #define GLBL_PCKT_MODE_TRANSFER_RELEASED 21 #define GLBL_PCKT_MODE_TRANSFER_ACCESS 22 /* transitions states from packet released mode to others */ #define GLBL_PCKT_MODE_RELEASED_IDLE 23 #define GLBL_PCKT_MODE_RELEASED_ACCESS 24 /* transitions states from measurement report mode to others */ #define GLBL_PCKT_MODE_MEAS_REP_IDLE 25 typedef UBYTE T_GLBL_PCKT_MODE; #define CTRL_TASK_NONE 0 #define CTRL_TASK_PBCCH_LEAVE_NULL 1 #define CTRL_TASK_PBCCH_LEAVE_SUSP 2 #define CTRL_TASK_PBCCH_LEAVE_SYNC 3 #define CTRL_TASK_PBCCH_LEAVE_IDLE 4 #define CTRL_TASK_PBCCH_LEAVE_ACCESS 5 #define CTRL_TASK_PBCCH_LEAVE_TRANSFER 6 #define CTRL_TASK_BCCH 7 typedef UBYTE T_CTRL_TASK; /* end constants for CTRL */ /* start constants for TC */ #define RADIO_PRIO_4 3 #define RFL_NUMBER_4_DIRECT_ENCODING_2 (RFL_NUMBER_4_DL_CTRL_MSG_MAX + 1) /* end constants for TC */ /* MAC HEADER TYPE*/ #define CTRL_BLK_NO_OPT 1 #define CTRL_BLK_OPT 2 /* start constants for MEAS */ /* maybe for later use */ /* #define M_ROUND_UP(x,meas_acrcy) (((x)>=0)? \ ((((x)%(meas_acrcy))< ((meas_acrcy)/ 2))? \ ( (x)/(meas_acrcy) ):(((x)/(meas_acrcy))+1)): \ ((((x)%(meas_acrcy))<=((meas_acrcy)/-2))? \ (((x)/(meas_acrcy))-1):( (x)/(meas_acrcy) ))) */ #define M_ROUND_UP(x,meas_acrcy) ((((x)%(meas_acrcy))< ((meas_acrcy)/ 2))? \ ( (x)/(meas_acrcy) ):(((x)/(meas_acrcy))+1)) #define NORM_POW_MIN (ULONG)1000 /* normalised math. power */ /* function maximum value */ #define NORM_TAVGW_FAC (ULONG)10 /* normalised Tavg_w factor */ #define DRX_NORM_FACTOR (NORM_TAVGW_FAC*NORM_POW_MIN) #define MEAS_ACRCY 1000 /* accuracy */ #define MIN_PCL_DCS1800 28 /* minimum power control level DCS 1800 */ #define MAX_PCL_DCS1800 29 /* maximum power control level DCS 1800 */ #define MIN_PCL_GSM900 31 /* minimum power control level GSM 900 */ #define MAX_PCL_GSM900 0 /* maximum power control level GSM 900 */ #define MIN_PCL_PCS1900 21 /* minimum power control level PCS 1900 */ #define MAX_PCL_PCS1900 22 /* maximum power control level PCS 1900 */ #define GAMMA_0_DCS1800 36 #define GAMMA_0_GSM900 39 #define GAMMA_0_PCS1900 36 /* end constants for MEAS */ /* start constants for CS */ #define CS_RLA_P_VALID 0x0 /* RLA_P value is available and valid */ #define CS_RLA_P_NOT_VALID 0x1 /* RLA_P value is available but not valid. */ #define CS_RLA_P_NOT_AVAIL 0x2 /* RLA_P value is not available and therefore not valid */ #define CS_KEEP_MEAS_RSLT 0x0 /* Keep all measurement results. */ #define CS_DELETE_MEAS_RSLT 0x1 /* Delete all measurement results. */ #define CS_CRMM_BA_GPRS 0x0 /* Cell re-selection measurement on BA(GPRS), forward results to GRR. */ #define CS_CRMM_BA_BCCH 0x1 /* Cell re-selection measurement on BA(BCCH), forward results to ALR. */ #define CS_MIN_RLA_P_SAMPLES 5 /* At least 5 received signal measurement */ /* samples are required for a valid RLA_P */ /* value. */ #define CS_MIN_RUN_AVG_PRD 1002 /* RLA_P shall be a running average */ /* determined using sample collected over */ /* a period of 5 sec. to ... sec., */ /* CS_MIN_RUN_AVG_PRD defines 5 sec. */ /* minus 7.5 % in units of frames. 7.5 % */ /* are substracted to be more tolerant */ /* in time which allows to validate also */ /* data which are colleted in less than */ /* 5 sec. */ #define CS_RPT_PRD_PTM 104 /* The MPHP_TCR_MEAS_IND primitive is */ /* sent every 104 TDMA frames. */ #define CS_NCSYNC_RPT_PRD_PIM 2080 /* CS_NCSYNC_RPT_PRD_PIM =2080 frame eqivalent to 10 second 104 TDMA frames. */ #define CS_MAX_MEAS_RSLT 10 /* a maximum number of measurement */ /* results are taken into account for */ /* RLA_P calculation, exceeding samples */ /* are ignored. */ #define CS_IDX_NOT_USED 0xFF /* band limitations for multiband reporting */ #define CS_NO_BAND_LIMITATION 0 #define CS_EXCLUDE_SC_BAND 1 #define CS_ONLY_SC_BAND 2 /* maximum number of strongest carrier consider for cell re-selection */ #if defined FF_EOTD #define CS_MAX_STRONG_CARRIER 12 #define CS_MAX_STRONG_CARRIER_CR 6 #if ( ! ( CS_MAX_STRONG_CARRIER_CR <= CS_MAX_STRONG_CARRIER ) ) #error CS_MAX_STRONG_CARRIER_CR <= CS_MAX_STRONG_CARRIER required #endif #else /* #if defined FF_EOTD */ #define CS_MAX_STRONG_CARRIER 6 #endif /* #if defined FF_EOTD */ #if ( ! ( CS_MAX_STRONG_CARRIER <= RRGRR_MAX_ARFCN_NCELL_SYNC_REQ ) ) #error CS_MAX_STRONG_CARRIER <= RRGRR_MAX_ARFCN_NCELL_SYNC_REQ required #endif #if defined (REL99) AND defined (TI_PS_FF_EMR) AND defined (TI_PS_FF_RTD) #else #if ( ! ( ( RRGRR_MEAS_REP_LIST_SIZE - 1 /* subtract serving cell */ ) <= CS_MAX_STRONG_CARRIER ) ) #error RRGRR_MEAS_REP_LIST_SIZE <= CS_MAX_STRONG_CARRIER required #endif #endif /* extrem values for signed 16 bit values */ #define CS_SMALLEST_SHORT_VALUE (-32768) #define BSIC_NCC_MASK 0x38 #define NC_GET_TYPE(info_src) ((info_src&0xF000)>>12) #define NC_SET_TYPE(info_src,type) (info_src=(USHORT)((info_src&0x0FFF)|((USHORT)type<<12))) #define NC_SET_INSTANCE(info_src,inst) (info_src=(USHORT)((info_src&0xF0FF)|((USHORT)inst<< 8))) #define NC_SET_NUMBER(info_src,num) (info_src= ((info_src&0xFF00)|((USHORT)num ))) #define CS_RESELECT_CAUSE_CTRL_NORMAL 0 #define CS_RESELECT_CAUSE_CTRL_ABNORMAL 1 #define CS_RESELECT_CAUSE_CTRL_SCELL 2 #define CS_RESELECT_CAUSE_CS_NORMAL 3 #define CS_RESELECT_CAUSE_CTRL_DL_SIG_FAIL 4 typedef UBYTE T_CS_RESELECT_CAUSE; typedef UBYTE T_CS_DC_STATUS; #define MAX_NR_OF_NC_MVAL ((2*MAX_NR_OF_NCELL)+1) /* end constants for CS */ /* start constants for PSI */ #define CLIP_T_AVG(x) ( (x) > 25 ? 25 : (x) ) #define CLIP_ALPHA(x) ( (x) > 10 ? 10 : (x) ) #define CLIP_BS_PAG_BLKS_RES(x) ( (x) > 12 ? 0 : (x) ) #define CLIP_BS_PRACH_BLKS(x) ( (x) > 12 ? 0 : (x) ) /* end constants for PSI */ /* start constants for interference measurements */ /* used in packet transfer mode */ #define MAX_IM_TRANSFER_CHANNELS 0x07 /* used in packet idle mode */ #define MAX_IM_CHAN_EMEAS 0x01 #define MAX_IM_CHAN_PCCCH 0x01 #define MAX_IM_IDLE_CHANNELS (MAX_CHAN_IMEAS + MAX_IM_CHAN_PCCCH + MAX_IM_CHAN_EMEAS) /* maximum number of channels measured in */ /* packet idle mode */ #define CHN_ID_INVALID 0xFF /* invalid identifier index */ #define CHN_ID_EM_BASE 0x00 /* EXT_FREQUENCY_LIST identifier index base */ #define CHN_ID_PCCCH_BASE ( CHN_ID_EM_BASE + MAX_IM_CHAN_EMEAS ) /* monitored PCCCH identifier index base */ #define CHN_ID_IM_BASE ( CHN_ID_PCCCH_BASE + MAX_IM_CHAN_PCCCH ) /* INT_MEAS_CHANNEL_LIST identifier index base */ /* used in packet idle and packet transfer mode */ #define IM_I_MASK_IDL 0x01 #define IM_I_MASK_TRNS 0x02 #define IM_I_NONE 0x00 #define IM_I_IDL 0x01 #define IM_I_TRNS 0x02 #define IM_U_MASK 0x01 #define IM_U_USED 0x01 #define IM_U_UNUSED 0x00 #define MAX_IM_HOP_ARFCN 548 #define MAX_IM_HOP_ARFCN_BIT_FIELD_SIZE ( ( ( MAX_IM_HOP_ARFCN - 1 ) / 8 ) + 1 ) #define MAX_IM_CHANNELS ( MAX_IM_IDLE_CHANNELS + MAX_IM_TRANSFER_CHANNELS ) /* maxmimum number of channels which are */ /* taken into account for interference */ /* measurement resumption */ /* end constants for interference measurements */ /* start constants for extended measurements */ #define MAX_NR_OF_INSTANCES_OF_PMO 8 #define EM_MAX_STRONG_CARRIER 6 #define EM_INVLD_BSIC 0xFF #define EM_VLDTY_ARFCN_MASK 0x8000 #define EM_NON_VLD_ARFCN 0x8000 #define EM_VLD_ARFCN 0x0000 #define PMO_NONE_VLD 0x00 #define PMO_EXT_VLD 0x01 #define PMO_NC_VLD 0x02 /* end constants for extended measurements */ /* start constants for NC measurements */ /* end constants for NC measurements */ /* start constants for packet measurement report sending */ #define PMR_MSG_TYPE_LEN 6 #define PMR_TLLI_LEN 32 #define PMR_FLAG_LEN 1 #define PMR_PSI5_CHNGE_MRK_LEN 2 #ifdef REL99 #define PMR_BA_IND_USED_LEN 1 #define PMR_PSI3_CHNGE_MRK_LEN 2 #define PMO_IND_USED_LEN 1 #endif /* end constants for packet measurement report sending */ #if defined (REL99) AND defined (TI_PS_FF_EMR) /* * start constants for ENH measurements */ #define SERVING_BAND_REPORTING_DEFAULT 3 #define NCC_PERMITTED_DEFAULT 0xFF #define NOT_APPLICABLE 0xFF #define BSIC_VALID 0x1 #define BSIC_INVALID 0x0 #define NC_INVBSIC_PEMR 17 #define MSG_SIZE_PEMR 184 #define MAND_SIZE_PEMR 48 #define MAX_NR_OF_GSM_NC 96 #define REP_THRESHOLD_DEF 0xFF /* * end constants for ENH measurements */ #endif #if defined (TI_PS_FF_RTD) AND defined (REL99) /* * start constants for RTD */ #define RTD_DEFAULT_INDEX 0 #define RTD_12BIT 0x8000 #define RTD_NOT_AVAILABLE 0xFFFF /* * end constants for RTD */ #endif /* #if defined (TI_PS_FF_RTD) AND defined (REL99) */ /* * Number of instances of PSI */ #define MAX_NR_OF_INSTANCES_OF_PSI2 8 /* 1-8 */ #define MAX_NR_OF_INSTANCES_OF_PSI3 1 /* 1 */ #define MAX_NR_OF_INSTANCES_OF_PSI3BIS 16 /* 1-16 */ #if defined (REL99) AND defined (TI_PS_FF_EMR) #define MAX_NR_OF_INSTANCES_OF_PSI3TER 16 /* 0-16 */ #endif #define MAX_NR_OF_INSTANCES_OF_PSI4 8 /* 0-8 */ #define MAX_NR_OF_INSTANCES_OF_PSI5 8 /* 0-8 */ #ifdef REL99 #define MAX_NR_OF_INSTANCES_OF_PSI8 8 /* 0-8 */ #endif #ifdef REL99 #define PBCCH_NOT_PRESENT 0x0 /* PBCCH not present in the cell */ #define PBCCH_PRESENT 0x1 /* PBCCH present in the cell */ #endif #define NOT_SET 255 /* * Service definitions. Used to access service data with GET/SET_STATE. */ #define CTRL ctrl. #define CTRL_GLBL ctrl_glbl. /* global data, managed by CTRL, used by */ /* all GRR services */ #define TC tc. #define CPAP cpap. #define PSI psi_assigned_data. #define PG pg. #define MEAS meas. #define MEAS_IM meas_im. /* service interference measurement */ #define MEAS_EM meas_em. /* service extended measurement */ #define CS cs. #define CS_MEAS cs_meas. /* service cell re-selection measurement */ #define GFP gfp. #if defined (TI_PS_FF_RTD) AND defined (REL99) typedef USHORT T_RTD_VALUE; #endif /* #if defined (TI_PS_FF_RTD) AND defined (REL99) */ /* * Timer definitions (also used by GRR_PEI.C) */ typedef enum { T3134 = 0, /* handled by service CTRL */ T3158, /* handled by service CS */ T3162, /* handled by service TC */ T3168, /* handled by service TC */ T3170, /* handled by service TC */ T3172_1, /* handled by service TC */ /* T3172_2, */ /* handeld by service TC */ /* T3172_3, */ /* handeld by service TC */ /* T3172_4, */ /* handeld by service TC */ /* T3172_5, */ /* handeld by service TC */ /* T3172_6, */ /* handeld by service TC */ /* T3172_7, */ /* handeld by service TC */ T3174, /* handled by service CTRL */ T3176, /* handled by service CS */ T3178, /* handled by service MEAS */ T3186, /* handled by service TC */ T_60_SEC, /* handled by service PSI */ T_30_SEC, /* handled by service PSI */ T_10_SEC, /* handled by service PSI */ T_IM_SYNC, /* handled by service MEAS */ T15_SEC_CC, /* handled by service CS */ T_TRANS_NON_DRX, /* handled by service PG */ T_NC2_NON_DRX, /* handled by service PG */ T_COMP_PSI, /* handled by service PSI */ T_RESELECT, /* handled by service CS */ #ifdef REL99 T_POLL_TIMER, /* handled by service CTRL */ #endif TIMER_COUNT /* !!! always the last entry !!! */ } T_TIMER_INDEX; /* T3142_VALUE - assigned in message */ /* T3158_VALUE - defined by parameter or random value */ #define T3162_VALUE 5000 /* ms */ /* T3168_VALUE - assigned in system info (in GPRS Cell Options) range 500,1000,...4000ms */ /* T3172_VALUE - assigned in message */ #define T3174_VALUE 15000 /* ms */ #define T3176_VALUE 15000 /* ms */ /* T3178_VALUE - defined by parameter or random value */ #define T3186_VALUE 5000 /* ms */ #define T3134_VALUE 5000 /* ms Timer to detect the lacks of respond from the network or for unvavailable target cell*/ /* T3200_VALUE - see T3198 */ /* T_IM_SYNC_VALUE - defined by service MEAS */ #define T_10_SEC_VALUE 10000 #define T_30_SEC_VALUE 30000 #define T_60_SEC_VALUE 60000 #define T_RESELECT_VALUE 10000 /* * Service name definitions for trace purposes. The service abbrevation * (e.g. CTRL) has to be the same as above for the service definitions. */ #ifndef NTRACE #define SERVICE_NAME_CTRL "CTRL" #define SERVICE_NAME_CTRL_GLBL "CTRL_GLBL" #define SERVICE_NAME_TC "TC" #define SERVICE_NAME_CPAP "CPAP" #define SERVICE_NAME_PG "PG" #define SERVICE_NAME_MEAS "MEAS" #define SERVICE_NAME_MEAS_IM "MEAS_IM" #define SERVICE_NAME_MEAS_EM "MEAS_EM" #define SERVICE_NAME_PSI "PSI" #define SERVICE_NAME_CS "CS" #define SERVICE_NAME_CS_MEAS "CS_MEAS" #define SERVICE_NAME_GFP "GFP" #endif /* !NTRACE */ /* * Service CTRL */ #define CTRL_CELL_RESEL_NONE 0x00 /* no initiated cell re-selection */ #define CTRL_CELL_RESEL_RR 0x40 /* RR initiated cell re-selection */ #define CTRL_CELL_RESEL_GRR 0x80 /* GRR initiated cell re-selection */ #define CTRL_CELL_RESEL_NW 0xC0 /* network initiated cell re-selection */ #define CTRL_CELL_RESEL_MASK 0xC0 /* bit maks for cell re-selection indication */ #define CTRL_SUSPENSION_NO 0x00 /* no suspension */ #define CTRL_SUSPENSION_YES 0x20 /* suspension */ #define CTRL_SUSPENSION_MASK 0x20 /* bit mask for suspension indication */ /* CTRL is in normal operation */ #define CTRL_NULL 0x00 /* GPRS functionality is disabled */ #define CTRL_READY 0x01 /* GPRS functionality is enabled, but service cannot be offered */ #define CTRL_ACCESS_DISABLED 0x02 /* service can be offered but is disabled */ #define CTRL_IN_PROGRESS 0x03 /* service is offered */ /* CTRL is waiting for several confirmations */ #define CTRL_WAIT_CS_PAGE_RES 0x04 /* waiting for response to circuit-switched paging */ #define CTRL_WAIT_FOR_CNF_OF_SUSPENSION 0x05 /* waiting for suspension of GRR sevices */ #define CTRL_WAIT_RSP_4_RR_CR 0x06 /* waiting for stopping of GRR services triggered by a RR indicated cell re-selection request */ /* CTRL is processing several cell change procedures */ #define CTRL_CR (0x07|CTRL_CELL_RESEL_GRR) /* GRR has triggered a MS controlled cell re-selection */ #define CTRL_FAILED_CR 0x08 /* GRR triggered MS controlled cell re-selection has failed */ #define CTRL_RR_NC_CCO (0x09|CTRL_CELL_RESEL_NW) /* RR has triggered a network controlled cell re-selection */ #define CTRL_GRR_NC_CCO (0x0A|CTRL_CELL_RESEL_NW) /* GRR has triggered a network controlled cell re-selection */ #define CTRL_AUTO_RR_CR (0x0B|CTRL_CELL_RESEL_RR) /* RR has indicated a request for a cell re-selection */ /* GRR is suspended */ #define CTRL_SUSPENDED (0x0C|CTRL_SUSPENSION_YES) /* GRR is suspended */ #define CTRL_NO_CELL_SUSP (0x0D|CTRL_SUSPENSION_YES) /* GRR is suspended and no cell is available */ #define CTRL_ACC_ENABLED_SUSP (0x0E|CTRL_SUSPENSION_YES) /* GRR is suspended but after resume service is available */ #define CTRL_RR_CR_IN_SUSP (0x0F|CTRL_CELL_RESEL_RR|CTRL_SUSPENSION_YES) /* GRR is suspended and RR has indicated a request for a cell re-selection */ #define CTRL_CR_IN_SUSP (0x10|CTRL_CELL_RESEL_GRR|CTRL_SUSPENSION_YES) /* GRR is suspended and has triggered a cell re-selection */ #define CTRL_FAILED_CR_IN_SUSP 0x11 /* GRR is suspended and has detected a failed cell re-selection */ #define CTRL_READY_TO_PROGRESS 0x12 /* service can be offered but a cell reselection is in progress */ /* * Service TC */ #define TC_ACCESS_DISABLED 0 #define TC_CPAP 1 #define TC_PIM 2 #define TC_WAIT_ASSIGN 3 #define TC_POLLING 4 #define TC_WAIT_2P_ASSIGN 5 #define TC_CONTENTION_RESOLUTION 6 #define TC_TBF_ACTIVE 7 #define TC_SINGLE_BLOCK 8 #define TC_WAIT_STOP_TASK_CNF 9 /* * Service CPAP */ #define CPAP_IDLE 0 #define CPAP_SB_STARTED 1 #define CPAP_1P_STARTED 2 #define CPAP_WAIT_PDCH_ASSIGN 3 #define CPAP_WAIT_DEDI_SUSPEND 4 #define CPAP_WAIT_STOP_TASK_CNF 5 /* * Service PSI */ #define PSI_NULL 0 #define PSI_IDLE 1 #define PSI_TRANSFER 2 #define PSI_SUSPENDED 3 #define PSI_BCCH_IDLE 4 #define PSI_BCCH_TRANSFER 5 #define READ_COMPLETE 0x0 /* Read PSI in all PBCCH blocks */ #define READ_PSI1_IN_PSI1_REPEAT_PERIODS 0x1 /* Read PSI1 in PSI1 repeat periods */ #define PSI_IN_HR 0x2 /* PSI in high repetition rate */ #define PSI_IN_LR 0x3 /* PSI in low repetition rate */ #define PSI_IN_HR_AND_LR 0x4 /* PSI in high and low repetition rate */ #define READ_PSI1_AND_IN_HR 0x5 /* PSI in high repetition rate and PSI1 */ #define READ_PSI1_AND_IN_LR 0x6 /* PSI in low repetition rate and PSI1 */ #define READ_PSI2 0x7 /* Read PSI2 */ #define READ_PSI3_3BIS 0x8 /* Read PSI3 and PSI3bis */ #define READ_PSI4 0x9 /* Read PSI4 */ #define READ_PSI5 0xa /* Read PSI5 */ #ifdef REL99 #ifdef TI_PS_FF_EMR #define READ_PSI3BIS 0xb /* Read PSI3bis */ #define READ_PSI3TER 0xc /* Read PSI3ter */ #define READ_PSI3_3BIS_3TER 0xd /* Read PSI3, PSI3bis and PSI3ter */ #endif #define READ_PSI8 0xe /* Read PSI8. this value is used while performing partial acquisition */ #endif /* * Service PG */ #define PG_NULL 0 #define PG_IDLE 1 #define PG_TRANSFER 2 #define PG_ACCESS 3 /* * Service MEAS */ #define MEAS_NULL 0 #define MEAS_IDLE 1 #define MEAS_ACCESS 2 #define MEAS_TRANSFER 3 /* * Service MEAS_IM */ #define MEAS_IM_NULL 0 #define MEAS_IM_START 1 #define MEAS_IM_STOP_REQ 2 /* * Service MEAS_EM */ #define MEAS_EM_NULL 0 /* no activity ongoing except that timer */ /* T3178 is maybe running */ #define MEAS_EM_REP_REQ 1 /* waiting for measurement report data */ #define MEAS_EM_PMR_SENDING 2 /* measurement report is currently sent to */ /* the network */ #define MEAS_EM_PENDING 3 /* measurements are paused, e.g. TBF is */ /* active */ #define MEAS_EM_SUSPEND 4 /* measurements are suspended, e.g. RR */ /* connection establishment in progress */ /* * Service CS */ #define CS_NULL 0 /* no activity ongoing */ #define CS_IDLE 1 /* service CS in idle mode, cell re-selection */ /* and/or NC measurements are performed */ #define CS_CR_MOBILE 2 /* MS controlled cell re-selection ongoing */ #define CS_CR_NETWORK 3 /* network controlled cell re-selection */ /* ongoing */ /* * Service CS_MEAS */ #define CS_MEAS_NULL 0 /* no activity ongoing */ #define CS_MEAS_REP_REQ 1 /* waiting for measurement report data */ #define CS_MEAS_PMR_SENDING 2 /* measurement report is currently sent to */ /* the network */ /* * Service CS_DC */ #define CS_DC_DEDICATED 0 /* CS is stopped due to dedicated connection */ #define CS_DC_OTHER 1 /* CS is stopped due to other reasons */ /* * Service GFP */ #define GFP_IDLE 0 #ifdef REL99 #define GRR_PCCO_POLL 1 #endif /*==== TYPES ======================================================*/ /* * GRR global typedefs */ /* enums */ typedef enum { REL_PERFORMED, REL_RUNNING }T_RELEASE_STATE; /* * mapping of the TC disable cause * * 7 6 5 4 3 2 1 0 - bit position * | | | | | * | | | +-+-- 00 OTHER * | | | +-+-- 01 SUSPEND * | | | +-+-- 10 CR * | | | * +-+-+------ 000 OTHER * +-+-+------ 001 NORMAL * +-+-+------ 010 IMM_REL * +-+-+------ 011 NETWORK * +-+-+------ 100 ABNORMAL */ /* disable cause class */ #define DCC_OTHER 0x00 #define DCC_SUSPEND 0x01 #define DCC_CR 0x02 typedef UBYTE T_TC_DC_CLASS; /* disable cause type */ #define DCT_OTHER (0x00<<2) #define DCT_NORMAL (0x01<<2) #define DCT_IMM_REL (0x02<<2) #define DCT_NETWORK (0x03<<2) #define DCT_ABNORMAL (0x04<<2) typedef UBYTE T_TC_DC_TYPE; /* disable cause mask */ #define DCM_CLASS 0x03 #define DCM_TYPE (0x07<<2) #define TC_DC_OTHER (DCC_OTHER |DCT_OTHER ) #define TC_DC_SUSPEND_NORMAL (DCC_SUSPEND|DCT_NORMAL ) #define TC_DC_SUSPEND_IMM_REL (DCC_SUSPEND|DCT_IMM_REL ) #define TC_DC_CR_NETWORK (DCC_CR |DCT_NETWORK ) #define TC_DC_CR_NORMAL (DCC_CR |DCT_NORMAL ) /* RRGRR_CR_IND( CR_NORMAL ) */ #define TC_DC_CR_IMM_REL (DCC_CR |DCT_IMM_REL ) /* RRGRR_CR_IND( CR_ABNORMAL ) */ #define TC_DC_CR_ABNORMAL (DCC_CR |DCT_ABNORMAL) /* abnormal TBF release with cell reselection */ typedef UBYTE T_TC_DISABLE_CAUSE; typedef enum { PSI_DC_OTHER, PSI_DC_READ_PSI, PSI_DC_PBCCH_RELEASED, PSI_DC_PBCCH_ESTABLISHED } T_PSI_DISABLE_CAUSE; typedef enum { TRANSFER_NDRX, GMM_NDRX, NC2_NDRX }T_NON_DRX_TYPE; typedef enum { PACKET_MODE_NULL, PACKET_MODE_PIM, /* Packet Idle Mode */ PACKET_MODE_PAM, /* Packet Access Mode */ PACKET_MODE_PTM, /* Packet Transfer Mode */ PACKET_MODE_2P_PTM /* Packet Transfer Mode in 2P Access*/ } T_PACKET_MODE; typedef UBYTE T_TBF_TYPE; /* macros are defined in cgrlc SAP*/ typedef enum { CTRL_PTRC_NONE, CTRL_PTRC_PBCCH_ESTABLISHED, CTRL_PTRC_COMPLETE_SI_READING, CTRL_PTRC_COMPLETE_PSI_READING } CTRL_PSI_TBF_REL_CAUSE; typedef enum /* CTRL_FOLLOWING_SUSPENSION*/ { ACTIVATE_RR, /* activate RR to monitor CCCH and BCCH*/ SEND_RR_EST_REQ, /* RR has to start RR establishment */ SEND_RR_EST_RSP /* RR can accept the RR connection request*/ }CTRL_FOLLOWING_SUSPENSION; typedef enum /*PG_STATES*/ { PG_NORMAL, PG_EXTENDED, PG_REORG }PG_STATES; typedef enum /*PG_CHANNEL for CS call*/ { PG_ON_CCCH, PG_ON_PCCCH }PG_CHANNEL; typedef enum /* ACQ_TYPE*/ { NONE, PARTIAL, COMPLETE, PERIODICAL_PSI1_READING, PERIODICAL_SI13_READING, FULL_PSI_IN_NEW_CELL }ACQ_TYPE; typedef enum /* T_FA_TYPE*/ { FA_NO_CURRENT, FA_NO_NEXT, FA_BITMAP, FA_REPEAT }T_FA_TYPE; /* start enum for TC */ /* * The following definitions are used for the management of single block * sending without TBF establishment. * * TC holds a queue of size MSG_OWNER_MAX_NUM to buffer the single blocks * requested by the services. Only services MEAS and CS can request single * blocks in parallel. In case service CTRL has requested a single block, * services MEAS and CS are not allowed to request any single blocks. * * Service CS uses the same buffer as the service CTRL. Only one single block * can be stored for both services. The service MEAS has an individual buffer. * At this time only one single block can be stored for this service but we are * free to increase the size just by increasing the value of MAX_CTRL_BLK_NUM. */ #define MAX_CTRL_BLK_NUM 5 /* number of single blocks that can be stored at */ /* the same time */ #define BLK_INDEX_CTRL 0 /* Packet Cell Change Failure */ #define BLK_INDEX_CS 0 /* Packet Measurement Report (NC Measurements) */ #define BLK_INDEX_TC 1 /* Packet Resource Request (Reallocation) */ #define BLK_INDEX_MEAS 2 /* Packet Measurement Report (EXT Measurements) */ #define BLK_STATE_NONE 0 /* no control message associated */ #define BLK_STATE_ALLOCATED 1 /* control message is allocated */ #define BLK_STATE_SENT_REQ 2 /* control message is sent, waiting for response */ typedef UBYTE T_BLK_STATE; typedef UBYTE T_BLK_OWNER; /* end um for TC */ /* start enum for CPAP */ /* * The following enum will be used for IA and IAEXT */ typedef enum { E_IA_NULL, /* unforeseen mesage content*/ E_IA_SB_WITHOUT_TBF, /* Single Block without TBF Establishment */ E_IA_SB_2PHASE_ACCESS, /* Allocation for 2 Phase of 2_Phase-Access */ E_IA_UL, /* Uplink tbf Allocation */ E_IA_DCCH, /* continue on DCCH */ E_IA_TMA, /* it is the 1st of a 2 message assignment */ E_IA_TMA_SECOND, /* it is the 2nd of a 2 message assignment */ E_IA_ERROR_RA } T_EVAL_IA; typedef enum { E_IA_DL_NOT_OURS, /* message is not adressed to MS */ E_IA_DL_IGNORE, /* no effect on current tbf */ E_IA_DL_TMA, /* it is the 1st of a 2 message dl assignment */ E_IA_DL_TMA_SECOND, /* it is the 2nd of a 2 message dl assignment */ E_IA_DL_DCCH, /* continue on DCCH */ E_IA_DL_SB, /* single block downlink */ E_IA_DL_ASSIGN /* valid message send mphp_assign_req */ } T_EVAL_IA_DL; #define IA_TYPE_UL 0 /* last immediate assignment was for uplink direction */ #define IA_TYPE_DL 1 /* last immediate assignment was for downlink direction */ typedef UBYTE T_IA_TYPE; /* start enum for CTRL */ typedef enum /* T_FAILURE_SIGNAL */ { FAIL_SIG_DSF_IND, FAIL_SIG_PSI1OR_PSI13_RECEIPTION_FAILURE, FAIL_SIG_CTRL_ACCESS_BARRED } T_FAILURE_SIGNAL; /* end enum for CTRL */ /* start enum for interference measurements */ #define IM_MODE_NONE 0 /* no interf. meas. at all */ #define IM_MODE_IDLE 1 /* interf. meas. only in Packet Idle Mode */ #define IM_MODE_TRANSFER 2 /* interf. meas. only in Packet Transfer Mode */ #define IM_MODE_IDLE_TRANSFER 3 /* interf. meas. in Packet Transfer and Packet */ /* Idle Mode */ typedef UBYTE T_MEAS_IM_MODE; #define IM_TRIG_SIGNAL_NULL 0 #define IM_TRIG_SIGNAL_PAM 2 #define IM_TRIG_SIGNAL_PAUSE 3 typedef UBYTE T_MEAS_IM_TRIG_SIGNAL; #define M_IM_TRACE_INPUT_VALUE 0x01 /* trace mask for the input values */ #define M_IM_TRACE_OUTPUT_VALUE 0x02 /* trace mask for the output values */ #define M_IM_TRACE_FREQUENCY 0x04 /* trace mask for the carrier frequencies */ /* end enum for interference measurements */ /* start enum for extended measurements */ typedef enum /* T_XMEAS_ORDER */ { EM_EM0, EM_EM1, EM_RESET, EM_EMPTY } T_XMEAS_ORDER; /* end enum for extended measurements */ /* start enum for NC measurements */ typedef enum { NC_NC0 = 0, NC_NC1, NC_NC2, NC_RESET, NC_EMPTY } T_NC_ORDER; /* !!! do not start with value 0, use 1 instead !!! */ #define INFO_TYPE_PSI3 1 /* Packet System Information Type 3 */ #define INFO_TYPE_PSI3BIS 2 /* Packet System Information Type 3bis */ /* !!! value of INFO_TYPE_PSI3 shall be less than value of INFO_TYPE_PSI3BIS !!! */ #define INFO_TYPE_PMO 3 /* Packet Measurement Order */ #define INFO_TYPE_PCCO 4 /* Packet Cell Change Order */ #define INFO_TYPE_BA_BCCH 5 /* BA(BCCH) passed by RR */ typedef UBYTE T_INFO_TYPE; /* end enum for NC measurements */ /* start enum for cell re-selection */ #define CS_MODE_IDLE 0 /* entry not touched in any way */ #define CS_MODE_SELECTION_PERFORMED 1 /* entry selected as next cell to be used */ /* for cell re-selection and we have */ /* performed reading of the new cell */ typedef UBYTE T_CS_MODE; #define STAT_SYNC_NONE 0 /* not synchronised */ #define STAT_SYNC_OK 1 /* synchronised */ #define STAT_SYNC_FAILED 2 /* synchronisation failed */ typedef UBYTE T_SYNC_STATUS; #define NC_MVAL_STAT_ASSIGNED 0 /* on current BA(GPRS) list, no member */ /* of the six strongest cells */ #define NC_MVAL_STAT_PENDING 1 /* not on current BA(GPRS) list, update */ /* from RR required */ #define NC_MVAL_STAT_NONE 2 /* not on current BA(GPRS) list, no */ /* update from RR required */ typedef UBYTE T_NC_MVAL_STATUS; /* end enum for cell re-selection */ /* * Structure */ typedef struct { UBYTE num; /* Current number -identification- of the rfl*/ UBYTE list[128]; /* Buffer containing received frequencies: * This is the same structure as the T_LIST in RR.h */ } T_RFL_LST; typedef struct /* T_CR_POW_PAR */ { UBYTE gprs_rxlev_access_min; /* GPRS_RXLEV_ACCESS_MIN */ UBYTE gprs_ms_txpwr_max_cch; /* GPRS_MS_TXPWR_MAX_CCH */ } T_CR_POW_PAR; typedef struct /* T_CR_PAR_1 */ { T_CR_POW_PAR cr_pow_par; /* GPRS power parameter */ UBYTE v_hcs_par; /* valid flag for HCS structure */ T_hcs_par hcs_par; /* HCS structure */ } T_CR_PAR_1; typedef struct /* T_SCELL_PAR */ { UBYTE cell_ba; UBYTE exc_acc; T_CR_PAR_1 cr_par_1; UBYTE multi_band_rep; } T_SCELL_PAR; typedef struct /* T_UL_TBF */ { UBYTE tfi; UBYTE st_tfi; /* tfi will be used after starting time elapsed */ UBYTE mac_mode; UBYTE polling_bit; UBYTE ts_mask; /* current timeslot mask */ UBYTE ts_usage; /* new assigned timeslot mask, becomes valid after starting time has elapsed */ UBYTE nts; /* number of timeslots allocated for tbf */ UBYTE cs_mode; UBYTE tlli_cs_mode; UBYTE ti; ULONG tbf_start_fn; USHORT rlc_db_granted; UBYTE access_type; UBYTE nr_blocks; UBYTE prio; UBYTE prim_type; USHORT peak; USHORT rlc_oct_cnt; } T_UL_TBF; typedef struct /* T_DL_TBF */ { ULONG tbf_start_fn; UBYTE tfi; UBYTE st_tfi; /* tfi will be used after starting time elapsed */ UBYTE rlc_mode; UBYTE mac_mode; UBYTE polling_bit; UBYTE ctrl_ack_bit; UBYTE ts_mask; /* current timeslot mask */ UBYTE ts_usage; /* new assigned timeslot mask, becomes valid after starting time has elapsed */ UBYTE nts; /* number of timeslots allocated for tbf */ BOOL t3192; /* if true t3192 is running, else timer is not running, triggerd by GRLC*/ UBYTE trans_id; /* transaction id */ } T_DL_TBF; typedef UBYTE T_RXLEV_AVG; #if defined (REL99) AND defined (TI_PS_FF_EMR) /* Start Enhanced Measurement Data Structures */ typedef struct /* T_GPRS_REPT_PRIO_DESC */ { UBYTE num_cells; /* No. of cells for which report priority is available */ UBYTE rept_prio[MAX_NR_OF_GSM_NC]; /* Report priority for cells in BA */ } T_GPRS_REPT_PRIO_DESC; /* * Enhanced data for reporting */ typedef struct /* T_ENH_REP_DATA */ { UBYTE rep_threshold; /* Reporting threshold */ UBYTE rep_offset; /* Reporting offset */ } T_ENH_REP_DATA; typedef struct /* T_GRR_ENH_PARA */ { UBYTE idx; /* to get on which instance of message */ /* the parameters are received */ UBYTE rept_type; /* PMR or PEMR */ UBYTE rep_rate; /* Reporting rate */ UBYTE inv_bsic_enabled; /* Is Invalid BSIC reporting enabled? */ UBYTE ncc_permitted; /* NCC permitted bitmap */ UBYTE multiband_rep; /* Number of cells, in each non-serving cell band, to be reported */ UBYTE servingband_rep; /* Number of cells, in serving cell band, to be reported */ UBYTE scale_order; /* scale order */ T_ENH_REP_DATA enh_rep_data[MAX_NUM_BANDS]; /* Enhanced data for reporting */ T_GPRS_REPT_PRIO_DESC gprs_rept_prio_desc; /* Report priority */ } T_GRR_ENH_PARA; /* / * Used to store GSM NC list formed in RR, when PBCCH is absent * / typedef struct / * T_BA_BCCH_NCELL_INFO * / { UBYTE index; / * index used for measurement reporting * / USHORT arfcn; / * Radio frequency * / UBYTE bsic; / * BSIC * / } T_BA_BCCH_NCELL_INFO; */ typedef struct /* T_MEAS */ { USHORT arfcn; UBYTE rxlev; /* Actually, this is RLA_P */ } T_MEAS; /* To form a ARFCN-RXLEV pair for coming out with list in desc order of RXLEV */ typedef struct /* T_ENH_STRNG_ARFCN_LIST */ { T_MEAS meas[MAX_NR_OF_NCELL]; UBYTE num; } T_ENH_STRNG_ARFCN_LIST; typedef struct /* T_BSIC */ { UBYTE bsic; /* Decoded BSIC */ UBYTE status; /* Valid, if present in BA-GPRS, Else, Invalid. */ } T_BSIC ; typedef struct /* T_ENH_CELL_LIST */ { UBYTE index; /* BA-GPRS Index */ USHORT arfcn; T_BSIC bsic; UBYTE rla_p; /* Actually, this is used for ENH meas criteria */ T_RXLEV_AVG rxlev_avg; /* running avg of RXLEV which is reported */ UBYTE rept_prio; } T_ENH_CELL_LIST; /* typedef struct / * T_ENH_BIN * / { UBYTE num_valid; / * No. of cells that are eligible for ENH measurement reporting * / T_ENH_CELL_LIST *enh_cell_list[MAX_NR_OF_NCELL]; } T_ENH_BIN; */ typedef struct /* T_ENH_BIN */ { UBYTE num_valid; /* No. of cells that are eligible for ENH measurement reporting */ UBYTE enh_index[MAX_NR_OF_NCELL]; } T_ENH_BIN; typedef struct /* T_PEMR_PARAMS */ { UBYTE scale_used; /* Scale used for RXLEV before ENH reporting */ } T_PEMR_PARAMS; /* End Enhanced Measurement Data Structures */ #endif typedef struct /* T_IMSI */ { UBYTE number_of_digits; /* number of valid digits in the following digit array */ UBYTE digit[MAX_IMSI_DIGITS];/* here are the valid imsi digits stored: received from GMM */ }T_IMSI; typedef struct /* T_MS_IDENT */ { ULONG ul_tlli; /* uplink tlli used for packet resource request and contention resolution */ ULONG received_tlli; /* tlli with which the MS is addressed */ ULONG old_tlli; /* old tlli received from GMM*/ ULONG new_tlli; /* new tlli received from GMM*/ ULONG old_ptmsi; /* current ptmsi paging */ ULONG new_ptmsi; /* candidate ptmsi stored: for paging */ ULONG tmsi; /* here is the valid tmsi stored: for paging */ T_IMSI imsi; /* imsi structure is stored in this parameter*/ T_rai rai; /* routing area code received from GMM to be passed to RR */ } T_MS_IDENT; typedef struct /* T_MS_DATA */ { USHORT access_ctrl_class; /* */ UBYTE class_of_mode; /* A, BC, BG, CC, CG */ USHORT split_pg_cycle; /* SPLIT_PAGING_CYCLE */ UBYTE reverts_NMO_III; /* Class B mobile reverts into Class C mobile in NMO III or not */ UBYTE tbf_mon_ccch; /* monitoring of CCCH during TBF allowed (TRUE) or not (FALSE) */ } T_MS_DATA; typedef struct /* T_SCELL */ { USHORT arfcn; /* ARFCN of the serving cell */ UBYTE bsic; /* BSIC of the serving cell */ BOOL pbcch_present; /* this value will be set by the procedure */ /* which handles the SI13 message */ } T_SCELL; typedef struct /* T_PBCCH */ { T_SCELL bcch; /* frequency and BSIC of BCCH carrier */ T_pbcch_des pbcch_des; /* this value contains the PBCCH description */ } T_PBCCH; typedef struct /* T_SPGC_CCCH_SUPP */ { UBYTE ms_supp; /* mobile station support of split */ /* paging cycle on CCCH */ UBYTE nw_supp; /* network support of split paging */ /* cycle on CCCH */ }T_SPGC_CCCH_SUPP; typedef struct /* T_NETWORK_CONTROL */ { T_SPGC_CCCH_SUPP spgc_ccch_supp; /* SPLIT_PG_CYCLE_SUPPORT: whether it is supported or not */ UBYTE priority_access_thr; /* packet access to the network according to priority level */ UBYTE bs_pa_mfrms; /* number of 51 multiframes between */ /* transmission of paging messages */ } T_NETWORK_CONTROL; typedef enum /* T_CR_IND_RETURN */ { CR_IND_RETURN_NONE, CR_IND_RETURN_RESPONSE, CR_IND_RETURN_COMPLETE } T_CR_IND_RETURN; typedef struct /* T_RR_STATES */ { BOOL monitoring_stopped; /* whether the monitoring on CCCH is released or not */ T_CR_IND_RETURN cr_ind_return; /* cell reselection started or not */ }T_RR_STATES; typedef enum /* T_GMM_STATES */ { STANDBY_STATE, /* GMM is in stand by state */ READY_STATE /* GMM is in ready state */ }T_GMM_STATES; typedef struct /* T_PCCCH: hopping and non hopping*/ { BOOL is_static; /* indicates whether the static parameters are valid or not*/ UBYTE tsc; /* common*/ UBYTE tn; /* common*/ USHORT arfcn; UBYTE maio; UBYTE ma_num; /* Mobile Allocation number*/ }T_PCCCH; typedef struct /* T_PAGING_GROUP */ { UBYTE kc; /* number of PCCCHs [1...16]*/ T_PCCCH pccch[MAX_PCCCH_DES]; /* this structure contains ARFCN, TSC, TN, MAIO (non) hopping*/ }T_PAGING_GROUP; typedef struct /* T_EXT_FREQ_LIST */ { UBYTE number; USHORT freq[RRGRR_MAX_ARFCN_EXT_MEAS]; } T_EXT_FREQ_LIST; typedef struct /* T_XMEAS_EM1_PARAM */ { UBYTE reporting_type; UBYTE ncc_permitted; UBYTE int_frequency; /* is set to NOT_SET, if no data available*/ UBYTE reporting_period; } T_XMEAS_EM1_PARAM; typedef struct /* T_XMEAS_EM1 */ { T_XMEAS_EM1_PARAM param; T_EXT_FREQ_LIST list; } T_XMEAS_EM1; typedef struct /* T_XMEAS */ { UBYTE idx; /* to get on which instance of message */ /* the parameters are received */ T_XMEAS_ORDER em_order_type; T_XMEAS_EM1 em1; } T_XMEAS; typedef struct /*T_int_meas_chan_lst*/ { UBYTE v_arfcn; /* valid-flag for arfcn */ USHORT arfcn; /* ARFCN */ UBYTE v_ma_num_maio; /* valid-flag for ma and maio */ UBYTE ma_num; /* MA_NUMBER */ UBYTE maio; /* MAIO */ UBYTE ts_alloc; /* TIMESLOT_ALLOCATION */ } T_int_meas_chan_lst; typedef struct /* T_si13_pbcch_loc*/ { UBYTE v_si13_location; /* valid flag for si13 location. If set: si13_location is valid. * Otherwise pbcch_location and psi1_repeat_period are valid. */ UBYTE si13_location; UBYTE pbcch_location; UBYTE psi1_repeat_period; } T_si13_pbcch_loc; typedef struct { U8 stat; /* Status of RLA_P value */ U8 lev; /* Received signal level measurement. */ } T_rla_p; typedef struct /* T_CR_CRITERIONS */ { SHORT c1; /* path loss criterion */ SHORT c31; /* signal level threshold criterion */ SHORT c32; /* cell ranking criterion */ } T_CR_CRITERIONS; //typedef UBYTE T_RXLEV_AVG; typedef struct /* T_scell_info */ { T_rla_p rla_p; /* running average of receive signal level */ T_RXLEV_AVG rxlev_avg; /* running average of RXLEV value */ T_CR_CRITERIONS cr_crit; /* cell re-selection criterions */ UBYTE cell_barred; /* in case CS is requested to re-select */ /* a new serving cell, this flag avoid */ /* indentifying the current serving cell */ /* as the best one and suppress re- */ /* selection */ } T_scell_info; typedef struct /* T_SYNC */ { T_SYNC_STATUS status; /* synchronisation status */ UBYTE sync_failed_cnt; /* number of failed synchronisation attempts */ } T_SYNC; typedef struct /* T_SYNC_INFO */ { T_SYNC sync; /* synchronisation */ UBYTE bsic; /* BSIC */ } T_SYNC_INFO; typedef struct /* T_CR_OFFSET */ { UBYTE gprs_temp_offset; /* GPRS_TEMPORARY_OFFSET */ UBYTE gprs_penalty_time; /* GPRS_PENALTY_TIME */ } T_CR_OFFSET; typedef struct /* T_CR_PAR */ { UBYTE cell_ba; /* CELL_BAR_ACCESS_2 */ UBYTE exc_acc; /* EXC_ACC */ UBYTE same_ra_scell; /* SAME_RA_AS_SERVING_CELL */ T_CR_PAR_1 cr_par_1; /* basic cell re-selection parameter */ T_CR_OFFSET cr_offset; /* parameter for GPRS temporary offset */ UBYTE gprs_resel_off; /* GPRS_RESELECT_OFFSET */ UBYTE v_si13_pbcch; /* whether SI13 PBCCH location is present or not * If not included, SI3 and SI4 in the neighbour * cell indicates if the neighbour cell supports GPRS */ T_si13_pbcch_loc si13_pbcch; /* SI13_PBCCH_LOCATION structure */ } T_CR_PAR; typedef USHORT T_INFO_SRC; typedef struct /* T_NC_MVAL, measured values of one neighbour cell */ { T_rla_p rla_p; /* running average of receive signal level */ T_RXLEV_AVG rxlev_avg; /* running average of RXLEV value */ T_SYNC_INFO sync_info; /* information about synchronisation */ USHORT arfcn; /* radio frequency */ T_NC_MVAL_STATUS status; /* status of the entry */ } T_NC_MVAL; typedef struct /* T_NC_MVAL_LIST */ { T_NC_MVAL nc_mval[MAX_NR_OF_NC_MVAL]; } T_NC_MVAL_LIST; typedef struct /* T_ncell_info */ { UBYTE index; /* index used for measurement reporting */ T_INFO_SRC info_src; /* indicates which air interface message */ /* was used to carry neighbour cell information */ USHORT arfcn; /* Radio frequency */ UBYTE bsic; /* BSIC */ UBYTE v_cr_par; /* indicates whether cell re-selection parameter are valid */ T_CR_PAR cr_par; /* cell re-selection parameter */ #if defined (REL99) AND defined (TI_PS_FF_EMR) UBYTE last_rxlev; /* RXLEV from the previous rep period */ UBYTE rep_count; /* this is used to get how many times a cell in enhanced neighbour cell list is reported. Will be of use when reporting low priority cells at reduced rate */ #endif } T_ncell_info; typedef struct /* T_NC_CHNG_MRK */ { UBYTE prev; /* old change mark value */ UBYTE curr; /* new change mark value */ } T_NC_CHNG_MRK; typedef struct /* T_NC_PARAM */ { T_NC_CHNG_MRK chng_mrk; /* change mark */ UBYTE idx; /* to get on which instance of message */ /* the parameters are received */ T_NC_ORDER ctrl_order; /* NETWORK_CONTROL_ORDER, NC0, NC1, NC2, RESET */ UBYTE non_drx_per; /* NC_NON_DRX_PERIOD */ UBYTE rep_per_i; /* NC_REPORTING_PERIOD_I */ UBYTE rep_per_t; /* NC_REPORTING_PERIOD_T */ } T_NC_PARAM; typedef struct /* T_NC_LIST */ { T_NC_CHNG_MRK chng_mrk; /* change mark */ UBYTE number; /* number of neighbour cells */ T_ncell_info info[MAX_NR_OF_NCELL]; /* neighbour cell info */ } T_NC_LIST; #if defined (REL99) AND defined (TI_PS_FF_EMR) typedef struct /* T_BA_BCCH_NC_LIST */ { UBYTE number; /* number of neighbour cells */ T_ncell_info info[MAX_NR_OF_NCELL]; /* neighbour cell info */ } T_BA_BCCH_NC_LIST; #endif typedef struct /* T_NCMEAS */ { T_NC_PARAM param; T_NC_LIST list; } T_NCMEAS; typedef struct /* T_NC_RFREQ_LIST */ { UBYTE number; UBYTE idx[MAX_NR_OF_NCELL]; } T_NC_RFREQ_LIST; typedef struct /* T_NCMEAS_EXTENDED */ { T_NCMEAS ncmeas; T_NC_RFREQ_LIST rfreq; #if defined (REL99) AND defined (TI_PS_FF_EMR) UBYTE psi3_cm; /* PSI3 CM received in PCCO */ UBYTE ba_ind; /* BA_IND received in PCCO */ UBYTE pmo_ind; /* PMO sequence number */ #endif } T_NCMEAS_EXTENDED; typedef struct /* T_CNT_NC_SIX_STRGST */ { UBYTE strgst; /* number of carriers which belongs to the */ /* strongest, valid RLA_P is required */ UBYTE candid; /* number of carriers which belongs to the */ /* strongest plus candidates which may */ /* become member of the strongest, available */ /* but not necessarily valid RLA_P is */ /* required */ } T_CNT_NC_SIX_STRGST; typedef struct /* T_NC_SIX_STRGST */ { UBYTE idx; T_CS_MODE mode; /* indicates the mode of an individual entry */ /* of the list of the six strongest cells */ ULONG avail_time; /* time when inserted in list */ T_CR_CRITERIONS cr_crit; /* cell re-selection criterions */ } T_NC_SIX_STRGST; typedef struct /* T_NC_REF_LIST */ { T_NC_PARAM *param; #if defined (REL99) AND defined (TI_PS_FF_EMR) T_GRR_ENH_PARA *enh_param; #endif UBYTE number; T_ncell_info *info[MAX_NR_OF_NCELL+1]; /* there are MAX_NR_OF_NCELL carriers for */ /* MS controlled cell re-selection and one for */ /* NW controlled in case the selected cell is */ /* not in the neighbour cell list */ } T_NC_REF_LIST; #if defined (REL99) AND defined (TI_PS_FF_EMR) typedef struct /* T_BA_BCCH_NC_REF_LIST */ { UBYTE number; T_ncell_info *info[2*MAX_NR_OF_NCELL]; } T_BA_BCCH_NC_REF_LIST; #endif /*start of structs for GFP */ typedef struct { U8 msg_type; U8 rrbp; U8 sp; U8 usf; U8 v_rbsn; U8 rbsn; U8 rti; U8 fs; U8 ac; U8 pr; U8 tfi; U8 d; } T_D_CTRL; typedef struct /* T_D_HEADER*/ { UBYTE payload; /* deceides if the downlink block is a data or control block*/ T_D_CTRL d_ctrl; /* saves the header of a dl rlc control block*/ UBYTE * ptr_block; UBYTE pctrl_ack; /* value sent with packet control acknowledgement */ } T_D_HEADER; typedef struct { USHORT l_buf; USHORT o_buf; UBYTE buf [BYTE_UL_CTRL_BLOCK]; } T_CS1BUF; typedef struct { USHORT l_buf; USHORT o_buf; UBYTE buf [2 * BYTE_UL_CTRL_BLOCK]; /* CAN's suggestion never more then 2 blocks */ /* or 8 blocks? ID's suggestion 'B_SIZE_D_PAGING_REQ\8+1' */ } T_CTRLBUF; typedef struct /* T_CTRL_BLK */ { UBYTE rbsn; UBYTE rti; ULONG T3200; T_CS1BUF ctrl_blk; }T_CTRL_BLK; typedef struct /* T_SEG_CTRL_BLK */ /*saves the first part of segmented control blocks*/ { UBYTE next; T_CTRL_BLK blk[SEG_CTRL_BLOCK_SIZE]; }T_SEG_CTRL_BLK; typedef struct /* parameterts of one fixed alloction*/ { T_p_fixed_alloc alloc; ULONG alloc_start_fn; ULONG alloc_end_fn; UBYTE final_alloc; } T_FIX_ALLOC; typedef struct /* fixed alloction control during uplink tbf*/ { T_FA_TYPE fa_type; T_FIX_ALLOC current_alloc; BOOL repeat_alloc; UBYTE ts_overr; UBYTE dl_ctrl_ts; /* downlink control timeslot */ } T_FA_CONTROL; typedef struct /* T_COMPLETE_ACQ */ { BOOL needed; /* complete acquisition needed???*/ BOOL psi1_ok; /* PSI1 complete read?*/ BOOL psi2_ok; /* PSI2 complete read?*/ BOOL made_at_least_one_attempt; /* made at least one attempt? */ }T_COMPLETE_ACQ; typedef struct /* T_PSI_STATE*/ { UBYTE state; /* NEEDED, RECEIPT_OK etc.*/ }T_PSI_STATE; typedef struct /* T_PSI1_PARAMS */ { UBYTE pbcch_change_mark; /**/ UBYTE psi_change_field; /**/ UBYTE psi_cnt_lr; /*low repetition rate*/ UBYTE psi_cnt_hr; /*high repetition rate*/ UBYTE psi1_repeat_period; /**/ BOOL psi_status_supported; /*Checks whether the network supports PSI STATUS message or not*/ BOOL first_psi1; /*whether the received PSI1 is the first one or not*/ }T_PSI1_PARAMS; typedef struct /* T_PSI2_PARAMS */ { UBYTE psi2_change_mark; /**/ UBYTE psi2_count; /**/ UBYTE instances[MAX_NR_OF_INSTANCES_OF_PSI2 + 1]; /*used for checking the consistency of PSI2. instances[0]: number of instances*/ }T_PSI2_PARAMS; typedef struct /* T_PSI3_PARAMS */ { UBYTE psi3_change_mark; /**/ UBYTE psi3_bis_count; /**/ }T_PSI3_PARAMS; typedef struct /* T_PSI3bis_PARAMS */ { UBYTE psi3bis_change_mark; /**/ UBYTE psi3bis_count; /**/ UBYTE psi3bis_index; UBYTE instances[MAX_NR_OF_INSTANCES_OF_PSI3BIS + 1]; /*used for checking the consistency of PSI3bis. instances[0]: number of instances*/ }T_PSI3BIS_PARAMS; #if defined (REL99) AND defined (TI_PS_FF_EMR) typedef struct /* T_PSI3ter_PARAMS */ { UBYTE psi3ter_change_mark; /**/ UBYTE psi3ter_count; /**/ UBYTE prev_psi3ter_index; UBYTE psi3ter_index; UBYTE instances[MAX_NR_OF_INSTANCES_OF_PSI3TER + 1]; /*used for checking the consistency of PSI3ter. instances[0]: number of instances*/ }T_PSI3TER_PARAMS; #endif typedef struct /* T_PSI4_PARAMS */ { UBYTE psi4_change_mark; /**/ UBYTE psi4_count; /**/ UBYTE psi4_index; UBYTE instances[MAX_NR_OF_INSTANCES_OF_PSI4 + 1]; /*used for checking the consistency of PSI4. instances[0]: number of instances*/ }T_PSI4_PARAMS; typedef struct /* T_EXT_START_STOP */ { UBYTE start; UBYTE stop; } T_EXT_START_STOP; typedef struct /* T_PSI5_PARAMS */ { UBYTE psi5_change_mark; /**/ UBYTE psi5_count; /**/ UBYTE psi5_index; UBYTE instances[MAX_NR_OF_INSTANCES_OF_PSI5 + 1]; /*used for checking the consistency of PSI5. instances[0]: number of instances*/ T_EXT_START_STOP idx[MAX_NR_OF_INSTANCES_OF_PSI5]; /* used for sorting the EXT frequency lists */ #if defined (REL99) AND defined (TI_PS_FF_EMR) BOOL v_enh_rep_param_struct; /* Will be set if ENH params are present */ #endif }T_PSI5_PARAMS; #ifdef REL99 typedef struct /* T_PSI8_PARAMS */ { UBYTE psi8_change_mark; /**/ UBYTE psi8_count; /**/ UBYTE psi8_index; UBYTE instances[MAX_NR_OF_INSTANCES_OF_PSI8 + 1];/*used for checking the consistency of PSI8. instances[0]: number of instances*/ }T_PSI8_PARAMS; #endif typedef struct /* T_PSI13_PARAMS */ { UBYTE bcch_change_mark; /**/ UBYTE si13_change_mark; /**/ }T_PSI13_PARAMS; typedef struct { UBYTE Rx; UBYTE Tx; UBYTE Sum; UBYTE Ttb; UBYTE Tra; } T_MS_CLASS_CAP; typedef struct { UBYTE ta_valid; /* 1: valid ta value present */ UBYTE ta_value; /* store recent value */ UBYTE ul_ta_i; /* store uplink ta index */ UBYTE ul_ta_tn; /* store uplink ta timeslot */ UBYTE dl_ta_i; /* store downlink ta index */ UBYTE dl_ta_tn; /* store downlink ta timeslot */ UBYTE l1_ta_value; /* ta_value stored in l1 */ UBYTE l1_ta_i; /* ta_index stored in l1 */ UBYTE l1_ta_tn; /* ta_timeslot stored in l1 */ } T_TA_PARAMS; /* structure for service internal data */ /* start structs for CS */ typedef struct { UBYTE cnt; /* number of measurements */ SHORT acc; /* accumulated measurement results */ USHORT rpt_prd; /* reporting period */ } T_MEAS_RSLT; typedef struct { BOOL ovrflw; /* indicates whether more than */ /* CS_MAX_MEAS_RSLT measurement */ /* results are already collected */ UBYTE loi; /* last occupied index */ T_MEAS_RSLT meas[CS_MAX_MEAS_RSLT]; /* measurement results */ } T_RLA_P_DATA; typedef USHORT T_RXLEV_DATA_NBR; typedef ULONG T_RXLEV_DATA_ACC; typedef struct { T_RXLEV_DATA_NBR nbr; /* number of accumulated RXLEV values */ T_RXLEV_DATA_ACC acc; /* accumulated RXLEV values */ } T_RXLEV_DATA; typedef struct { USHORT arfcn; /* BCCH carrier of neighbour cell */ T_RLA_P_DATA rla_p_data; /* raw data for deriving the RLA_P */ T_RXLEV_DATA rxlev_data; /* raw data for deriving the RXLEV */ /* average for packet measurement */ /* reporting */ } T_CELL; typedef struct { UBYTE c_cell; /* number of neigbhour cells */ T_CELL cell[MPHP_NUMC_BA_GPRS_SC]; /* array of neighbour cells */ } T_NC_DATA; typedef struct /* T_CTRL_DATA */ { UBYTE state; UBYTE last_state; /* last state of CTRL: needed in case of handling circuit switched call*/ T_RR_STATES rr_state;/*the state of the RR part: we may remove this variable and substitude it with another one*/ PG_CHANNEL cs_page_channel; /* on which channel the MS was paged for CS call*/ CTRL_FOLLOWING_SUSPENSION after_suspension; /* SZML-GLBL/009 */ CTRL_PSI_TBF_REL_CAUSE psi_tbf_rel_cause; UBYTE imm_rel; USHORT pcc_arfcn; USHORT old_arfcn; UBYTE pcc_bsic; UBYTE old_bsic; UBYTE is_susp_needed; /* indicates whether suspension has been needed or not*/ UBYTE new_cell_responded; BOOL parked_rrgrr_cr_ind; #ifdef REL99 UBYTE poll_for_msg; /* Values 0-Invalid, 1-PCCO */ T_D_CELL_CHAN_ORDER pcco; #endif #ifndef NTRACE char *name; char *state_name; #endif } T_CTRL_DATA; typedef struct /* T_CTRL_GLBL_DATA */ { T_GLBL_PCKT_MODE state; T_CTRL_TASK ctrl_task; #ifndef NTRACE char *name; char *state_name; #endif } T_CTRL_GLBL_DATA; typedef struct /* T_UL_CTRL_BLOCK */ { UBYTE owner; T_BLK_STATE state; UBYTE data[BYTE_UL_CTRL_BLOCK]; } T_UL_CTRL_BLOCK; typedef UBYTE T_BLK_INDEX; typedef struct /* T_UL_CTRL_BLOCK_ARRAY */ { T_UL_CTRL_BLOCK blk[MAX_CTRL_BLK_NUM]; T_BLK_INDEX seq[MAX_CTRL_BLK_NUM]; } T_UL_CTRL_BLOCK_ARRAY; typedef struct /* T_EVAL_ASSIGN_PARAM */ { UBYTE ccch_read; T_TBF_TYPE tbf_type; UBYTE state; } T_EVAL_ASSIGN_PARAM; typedef void ( * T_TC_DISABLE_CALLBACK_FUNC )( void ); typedef struct /* T_FREQ_SET */ { T_p_frequency_par freq_par; /* frequency parameter */ UBYTE tsc; /* training sequence code */ } T_FREQ_SET; typedef struct /* T_TC_DATA */ { UBYTE state; T_TC_DISABLE_CALLBACK_FUNC disable_callback_func; UBYTE disable_class; UBYTE dcch_present; UBYTE ra_once_sent; UBYTE n_acc_req; /* number of sent packet access request in current access procedure */ BOOL sending_req; /* sending of packet access requests in process */ UBYTE v_sb_without_tbf; T_UL_CTRL_BLOCK_ARRAY ul_ctrl_blk; /* holds all relevant information for */ /* sending uplink control blocks */ T_FA_CONTROL fa_ctrl; /* handles the fixed allocation parameters during uplink tbf*/ UBYTE two_2p_w_4_tbf_con; /* if true TC waits for TBF_CON after 2 phase access:*/ /* needed to abort single block procedure:default is true */ UBYTE num_of_rels_running; /* number releas confirms that have to be received */ UBYTE last_rec_nb_id; /* assignment id of single block downlink assignment*/ ULONG last_rec_nb_fn; /* fn starting time(receive fn numer) of single block dl assignment*/ T_EVAL_ASSIGN_PARAM last_eval_assign; T_D_DL_ASSIGN *p_assign; /* pointer to dynamically allocated memory */ T_TBF_TYPE last_tbf_type; BOOL v_freq_set; /* frequency params from an assignment are stored */ T_FREQ_SET freq_set; #if defined REL99 AND defined TI_PS_FF_TBF_EST_PACCH BOOL tbf_est_pacch; #endif #ifdef _SIMULATION_ UBYTE res_random; #endif #ifndef NTRACE char *name; char *state_name; #endif } T_TC_DATA; typedef struct /* T_EVAL_IA_DL_PARAM */ { UBYTE state; T_EVAL_IA_DL eval_ia_dl; } T_EVAL_IA_DL_PARAM; typedef struct /* T_EVAL_IA_UL_PARAM */ { T_EVAL_IA eval_ia; } T_EVAL_IA_UL_PARAM; typedef union /* T_EVAL_IA_UNION */ { T_EVAL_IA_UL_PARAM param_ul; T_EVAL_IA_DL_PARAM param_dl; } T_EVAL_IA_UNION; typedef struct /* T_CPAP_DATA */ { UBYTE state; T_TBF_TYPE new_tbf_type; T_D_PDCH_ASS_CMD pdch_ass_cmd; UBYTE v_tma_ia; T_D_IMM_ASSIGN tma_ia; /* for 2 message assignments */ /* parameters from the first */ /* have to be stored until */ /* 2nd message has arrived */ T_IA_TYPE last_ia_type; T_EVAL_IA_UNION last_eval_ia; T_D_IMM_ASSIGN *p_d_imm_assign; /* pointer to dynamically allocated memory */ #ifndef NTRACE char *name; char *state_name; #endif } T_CPAP_DATA; /* * The service PSI holds its state in a variable assigned to one of * the serving cell databases (either sc_db_1 or sc_db_2). * This is used to simplify the procedure of returning to the old cell * in case it is not possible to access the cell choosen for cell * re-selection. */ typedef struct /* T_PSI_ASSIGNED_DATA */ { UBYTE state; #ifndef NTRACE char *name; char *state_name; #endif } T_PSI_ASSIGNED_DATA; /* * for more information see comment related to structure T_PSI_ASSIGNED_DATA */ typedef struct /* T_PSI_DATA */ { UBYTE last_psi_state; UBYTE is_start_of_10_sec_allowed; /* Indicates whether the starting of 10 second timer is allowed or not*/ BOOL is_pbcch_req_needed; /*PBCCH req. waiting for perform*/ BOOL is_pbcch_req_allowed; /*PBCCH req. allowed due to transition rules or not*/ UBYTE reading_type; BOOL v_nc_param; UBYTE psi2_pos[MAX_NR_OF_INSTANCES_OF_PSI2]; #if defined (REL99) AND defined (TI_PS_FF_EMR) UBYTE psi3_set_pos[MAX_NR_OF_INSTANCES_OF_PSI3TER+ MAX_NR_OF_INSTANCES_OF_PSI3BIS+ MAX_NR_OF_INSTANCES_OF_PSI3]; /* contains PSI3, 3bis and 3ter */ #else UBYTE psi3bis_pos[MAX_NR_OF_INSTANCES_OF_PSI3BIS+ MAX_NR_OF_INSTANCES_OF_PSI3]; /*contains PSI3 and 3bis*/ #endif UBYTE psi4_pos[MAX_NR_OF_INSTANCES_OF_PSI4]; UBYTE psi5_pos[MAX_NR_OF_INSTANCES_OF_PSI5]; #ifdef REL99 UBYTE psi8_pos[MAX_NR_OF_INSTANCES_OF_PSI8]; #endif T_NC_PARAM nc_param; #if defined (REL99) AND defined (TI_PS_FF_EMR) T_GRR_ENH_PARA enh_param; /* Temporary storage for enhanced measurement parameters received from PSIs */ #endif #if defined (TI_PS_FF_RTD) AND defined (REL99) T_RTD_VALUE rtd[MAX_NR_OF_NCELL];/* RTD values for the neighbour cell synchronisation */ #endif /* #if defined (TI_PS_FF_RTD) AND defined (REL99) */ } T_PSI_DATA; typedef struct /* T_PG_DATA */ { UBYTE state; /* some parameters needed for RR establishment request*/ UBYTE ch_needed; /* channel needed field*/ UBYTE v_emlpp_prio; /* valid flag for emlpp_priority*/ UBYTE emlpp_prio; /* value of eMLPP_PRIORITY*/ UBYTE type; /* type of paging for rr est: IMSI, TMSI*/ USHORT initial_dsc; USHORT dsc; UBYTE is_l1_ref_tn_changed; UBYTE nmo; /* network mode of operation for paging */ T_PACKET_MODE packet_mode; #ifndef NTRACE char *name; char *state_name; #endif } T_PG_DATA; typedef USHORT T_C_INDEX; typedef USHORT T_C_VALUE; typedef struct /* T_C_FILTER */ { T_C_VALUE value; /* current C value */ T_C_INDEX index; /* iteration index */ } T_C_FILTER; typedef struct /* T_MEAS_DATA */ { UBYTE state; UBYTE pwr_offset; /* POWER OFFSET parameter used */ /* by a DCS 1800 Class 3 MS */ T_C_FILTER c_filter; /* filtered C value */ #ifndef NTRACE char *name; char *state_name; #endif } T_MEAS_DATA; typedef USHORT T_IM_GAMMA; typedef struct /* T_MEAS_IM_GAMMA */ { UBYTE index; /* iteration index */ UBYTE m_gamma; /* multi-flag */ T_IM_GAMMA gamma; /* filtered interference level values */ LONG remain_time; /* remaining time to run until */ /* timer T_IM_SYNC expires */ } T_MEAS_IM_GAMMA; typedef UBYTE T_MEAS_IM_HOP_ARFCN_BIT_FIELD[MAX_IM_HOP_ARFCN_BIT_FIELD_SIZE]; typedef struct /* T_MEAS_IM_HOP_PARAM */ { UBYTE hsn; UBYTE maio; T_MEAS_IM_HOP_ARFCN_BIT_FIELD arfcn_bit_field; } T_MEAS_IM_HOP_PARAM; typedef union /* T_MEAS_IM_ALLOC */ { USHORT arfcn; T_MEAS_IM_HOP_PARAM hop_param; } T_MEAS_IM_ALLOC; typedef struct /* T_MEAS_IM_CARRIER */ { BOOL hopping; T_MEAS_IM_ALLOC alloc; } T_MEAS_IM_CARRIER; typedef struct /* T_MEAS_IM_FILTER */ { UBYTE used; /* indicates whether the filter is used */ T_MEAS_IM_GAMMA i_level [CGRLC_MAX_TIMESLOTS]; /* interference level for each timeslot */ T_MEAS_IM_CARRIER carrier; /* carrier used for measurement */ } T_MEAS_IM_FILTER; typedef struct /* T_MEAS_IM_CHANNEL */ { UBYTE index; /* actual channel that is measured */ UBYTE ident[MAX_IM_IDLE_CHANNELS]; /* identifies the channel to be measured */ } T_MEAS_IM_IDLE_CHN; typedef struct /* T_MEAS_IM_DATA */ { UBYTE state; /* sub-state of the interference */ /* measurement service */ T_MEAS_IM_MODE mode; /* mode of operation */ T_MEAS_IM_IDLE_CHN idle_chan; /* channels measured in packet */ /* idle mode */ T_MEAS_IM_FILTER filter [MAX_IM_CHANNELS]; /* running average filter */ USHORT carrier_id; /* carrier identifier */ T_MEAS_IM_CARRIER carrier; /* carrier currently measured */ T_MEAS_IM_TRIG_SIGNAL trig_signal; /* trigger signal */ BOOL v_cs_meas_active; /* indicates whether cell re- */ /* selection measurements are */ /* active */ BOOL v_ilev_abs; /* indicates whether at least one */ /* CGRLC_INT_LEVEL_REQ primitive */ /* was sent since last reset */ T_ilev_abs ilev_abs; /* stores the content of last */ /* sent CGRLC_INT_LEVEL_REQ */ /* primitive */ #if !defined (NTRACE) UBYTE n_im_trace; #endif /* #if !defined (NTRACE) */ #ifndef NTRACE char *name; char *state_name; #endif } T_MEAS_IM_DATA; typedef struct /* T_MEAS_EM_RSLT */ { UBYTE refidx; UBYTE rxlev; UBYTE bsic; } T_MEAS_EM_RSLT; typedef struct /* T_MEAS_EM_RSLT_LIST */ { UBYTE number; T_MEAS_EM_RSLT elem[RRGRR_MAX_ARFCN_EXT_MEAS]; } T_MEAS_EM_RSLT_LIST; typedef struct /* T_MEAS_EM_STRG_LIST */ { UBYTE number; UBYTE refidx[RRGRR_MAX_ARFCN_EXT_MEAS]; } T_MEAS_EM_STRG_LIST; typedef struct /* T_MEAS_PAR_PMO */ { UBYTE count; UBYTE instances[MAX_NR_OF_INSTANCES_OF_PMO]; T_EXT_START_STOP idx[MAX_NR_OF_INSTANCES_OF_PMO]; } T_MEAS_PAR_PMO; typedef struct /* T_MEAS_MSG_PMO */ { T_NCMEAS_EXTENDED nc; T_XMEAS extd; #if defined (REL99) AND defined (TI_PS_FF_EMR) BOOL v_enh_meas_param_pmo; /* Set if ENH params are present */ T_GRR_ENH_PARA enh; /* Temporary storage for enhanced measurement parameters received from PMO*/ #endif T_MEAS_PAR_PMO prm; } T_MEAS_MSG_PMO; typedef struct /* T_XMEAS_SET */ { UBYTE ident; /* identifier of valid EXT measurement parameter set */ T_XMEAS *param; /* pointer to valid EXT measurement parameter set */ } T_XMEAS_SET; typedef struct /* T_MEAS_EM_DATA */ { UBYTE state; T_XMEAS_SET xmeas_set; BOOL v_pmo_nc_ncmeas_param; BOOL v_pmo_nc_ncmeas_list_rfreq; T_MEAS_MSG_PMO pmo; /* used to store message packet measurement */ /* order temporarily */ T_MEAS_EM_RSLT_LIST rslt; /* EXT measurement results for all carriers */ T_MEAS_EM_STRG_LIST strg; /* EXT measurement results for 6 strongest */ /* carriers ( with/without BSIC decoding ) */ UBYTE pmr_snd_ref; /* reference to the next EXT measurement */ /* result which chould be sent to the */ /* network */ #ifndef NTRACE char *name; char *state_name; #endif } T_MEAS_EM_DATA; typedef struct /* T_GRR_CS_DATA */ { UBYTE state; T_GMM_STATES gmm_state; T_TIME last_cr; T_CS_RESELECT_CAUSE reselect_cause; UBYTE is_upd_ncell_stat_needed; UBYTE is_mval_initialized; UBYTE list_id; UBYTE stop_req; UBYTE cr_meas_mode; /* cell re-selection measurement mode */ BOOL cr_meas_update; UBYTE last_assignment_id; USHORT nc_sync_rep_pd; #if !defined (NTRACE) UBYTE v_crp_trace; #endif /* #if !defined (NTRACE) */ #ifndef NTRACE char *name; char *state_name; #endif } T_GRR_CS_DATA; typedef struct /* T_CS_MEAS_DATA */ { UBYTE state; UBYTE pmr_snd_ref; /* reference to the next NC measurement result */ /* which chould be sent to the network */ UBYTE nc_meas_cause;/*Indicates NC meas status in ALR when NC=1 or NC=2 */ T_PACKET_MODE packet_mode; #ifndef NTRACE char *name; char *state_name; #endif } T_CS_MEAS_DATA; typedef struct { U8 nc2_on; /* * Indicates whether it is allowed to use NC1 and NC2: * * TRUE = Use of NC1 and NC2 is allowed. * FALSE = Use of NC1 and NC2 is prohibited. */ } T_GRR_FFS; typedef struct /* T_GFP_DATA */ { UBYTE state; BOOL tfi_check_needed; /* if the tfi in optional header is correct, the ms shall ignore the tfi within the air message. This parameter indicates if a check for the tfi is needed(TRUE) or not(FALSE)*/ #ifndef NTRACE char *name; char *state_name; #endif } T_GFP_DATA; typedef struct { BOOL v_gamma; UBYTE gamma; } T_GAMMA_TN; typedef struct { BOOL v_alpha; UBYTE alpha; T_GAMMA_TN gamma_tn[CGRLC_MAX_TIMESLOTS]; } T_PWR_PAR; typedef struct /* T_CELL_INFO_FOR_GMM */ { T_cell_info cell_info; /* Cell information */ T_GPRS_SERVICE gprs_service; /* GPRS service */ T_ACCESS_STATUS access_status; /* Access status */ } T_CELL_INFO_FOR_GMM; typedef struct /* T_SC_DATABASE */ { T_PSI_ASSIGNED_DATA psi_assigned_data; T_PSI1_PARAMS psi1_params; /**/ T_PSI2_PARAMS psi2_params; /**/ T_PSI3_PARAMS psi3_params; /**/ T_PSI3BIS_PARAMS psi3bis_params; /**/ #if defined (REL99) AND defined (TI_PS_FF_EMR) T_PSI3TER_PARAMS psi3ter_params; /**/ #endif T_PSI4_PARAMS psi4_params; /**/ T_PSI5_PARAMS psi5_params; /**/ #ifdef REL99 T_PSI8_PARAMS psi8_params; /**/ #endif T_PSI13_PARAMS psi13_params; /**/ UBYTE is_access_enabled; /* This common parameter is used by services CTRL and PSI*/ T_COMPLETE_ACQ complete_acq; /**/ ACQ_TYPE acq_type; /*indicates whether the receiving of consistent set of PSI is in progress*/ BOOL measurement_order; /*FALSE: NC0, EM0 no PSI5; TRUE: PSI5 on PBCCH measurement needed*/ BOOL send_psi_status; /*Checks whether the PSI service should send PSI STATUS message or not*/ T_PSI_STATE state_of_PSI[MAX_PSI]; /* */ UBYTE si_to_acquire; /* UNSPECIFIED_SI, UPDATE_SI1, UPDATE_SI2_SI2BIS_OR_SI2TER, UPDATE_SI3_SI4_SI7_OR_SI8, UPDATE_SI9, UPDATE_SI13*/ T_MPHP_SCELL_PBCCH_REQ scell_pbcch; /* stores the primitive, and pass it after transition rules to layer1 */ T_PBCCH pbcch; /* PBCCH description */ T_NETWORK_CONTROL net_ctrl; /* Network control parameters*/ BOOL v_gprs_cell_opt; /* valid flag for GPRS Cell Options*/ T_gprs_cell_opt gprs_cell_opt; /* GPRS Cell Options */ BOOL v_prach; /* valid flag for PRACH Control Parameters*/ T_prach_ctrl_par prach; /* PRACH Control Parameters */ BOOL v_g_pwr_par; /* valid flag for Global Power Control Parameters*/ T_g_pwr_par g_pwr_par; /* Global Power Control Parameters */ BOOL v_pwr_par; /* valid flag for Power Control Parameters*/ T_PWR_PAR pwr_par; /* Power Control Parameters */ T_pccch_org_par pccch; /* PCCCH Organization Parameters */ T_PAGING_GROUP paging_group; /* This structure contains parameters to initialize paging (static)*/ UBYTE last_pg_mode; /* last page mode*/ UBYTE network_pg_mode; BOOL gprs_attach_is_running; /* indicates if the gprs procedure is running or not*/ UBYTE non_drx_timer; /* This value contains the values in seconds*/ BOOL non_drx_timer_running; BOOL nc2_non_drx_period_running; T_RFL_LST rfl[MAX_RFL+1]; /* Reference Frequency Lists */ BOOL v_cell_alloc; /* valid flag for Cell Allocation */ T_cell_alloc cell_alloc[MAX_CELL_ALLOC]; /* Cell Allocation */ T_gprs_ms_alloc gprs_ms_alloc_in_assignment; /* GPRS Mobile Allocations received in an assignment message*/ T_gprs_ms_alloc gprs_ms_alloc_in_psi2_psi13[MAX_GPRS_MS_ALLOC]; /* GPRS Mobile Allocations received in PSI2 and/or PSI13*/ #ifdef REL99 BOOL v_add_psi;/* valid-flag */ T_add_psi add_psi; /* additional PSI Messages broad cast information*/ #endif BOOL v_non_gprs_opt; /* valid flag for Non GPRS Cell Options */ T_non_gprs_opt non_gprs_opt; /* Non GPRS Cell Options */ T_SCELL_PAR scell_par; /* Serving Cell parameters from PSI 3 and PSI3 BIS */ T_gen_cell_par gen_cell_par; /* General Cell Selection parameter */ UBYTE number_of_valid_int_meas_channels; T_int_meas_chan_lst int_meas_chan_list[MAX_CHAN_IMEAS]; /* Channel List for Interference measurements (PSI 4) */ BOOL is_ext_psi5_valid; /* Is the extended structure in PSI5 is valid*/ T_XMEAS ext_psi5; /* EXT measurement parameters derived from PSI5 */ T_XMEAS ext_pmo; /* EXT measurement parameters derived from packet measurement order */ T_NCMEAS nc_cw; /* NC measurement parameters cell wide */ T_NCMEAS_EXTENDED nc_ms; /* NC measurement parameters MS specific */ T_CELL_INFO_FOR_GMM cell_info_for_gmm; /* Cell information composed for GMM */ #ifdef REL99 #ifdef TI_PS_FF_QUAD_BAND_SUPPORT UBYTE band_indicator; /* Band indicator received in PSI 1 */ #endif UBYTE sgsn_rel; /* SGSN release of the serving cell */ UBYTE network_rel; /*Network release*/ BOOL v_cbch_chan_desc; /* valid fla for CBCH channel description. */ T_cbch_chan_desc cbch_chan_desc; /* Stores CBCH channel description as received in PSI8 */ BOOL send_cbch_info_ind;/* This flag indicates if a CBCH info update has to be sent to RR */ #ifdef TI_PS_FF_EMR UBYTE ba_ind; /* BA-BCCH sequence number */ T_BA_BCCH_NC_LIST nc_ba_bcch_cw; /* GSM NC list formed in RR from BA-BCCH and BSIC */ T_GRR_ENH_PARA enh_cw; /* ENH measurement parameters cell wide */ T_GRR_ENH_PARA enh_ms; /* ENH measurement param */ BOOL si_status_ind; /* The network supports/does not support the PACKET SI STATUS message */ #endif #endif #if defined (TI_PS_FF_RTD) AND defined (REL99) T_RTD_VALUE rtd[MAX_NR_OF_NCELL];/* RTD values for the neighbour cell synchronisation */ #endif /* #if defined (TI_PS_FF_RTD) AND defined (REL99) */ } T_SC_DATABASE; typedef struct /* T_NC_NW_SELECTED */ { T_NC_SIX_STRGST strgst; /* this cell is used for network controlled */ /* cell re-selection but does not belong to */ /* the six strongest cells */ } T_NC_NW_SELECTED; typedef struct /* T_GPRS_DATABASE */ { T_MS_IDENT ms_id; /* some parameters to identify the MS: IMSI, PTMSI, TMSI */ T_scell_info scell_info; /* contains measurement values for serving cell */ T_SCELL old_scell; /* previous serving cell */ T_NC_REF_LIST nc_ref_lst; /* list of pointers to the neighbour cell lists */ T_NC_MVAL_LIST nc_mval_list; /* measured values of the neighbour cells */ T_NC_SIX_STRGST *cr_cell; T_CNT_NC_SIX_STRGST cnt_nc_six; T_NC_SIX_STRGST nc_six_strgst[CS_MAX_STRONG_CARRIER]; T_NC_NW_SELECTED nc_nw_slctd; #if defined (REL99) AND defined (TI_PS_FF_EMR) UBYTE cnt_enh_cell_list; /* Number of Cells in the ENH cell list */ T_ENH_CELL_LIST enh_cell_list[MAX_NR_OF_NCELL];/* Enhanced Measurement Cell list */ T_ENH_BIN sorted_enh_cell_list; /* ENH cell list sorted in descending order of rxlev */ T_PEMR_PARAMS pemr_params; /* PEMR parameters used during reporting */ T_BA_BCCH_NC_REF_LIST ba_bcch_nc_ref_lst; /* list of pointers to the neighbour cell lists */ #endif } T_GPRS_DATABASE; typedef struct /* T_PWR_CTRL_VALID_FLAGS */ { BOOL v_pwr_ctrl_param; BOOL v_glbl_pwr_ctrl_param; BOOL v_freq_param; BOOL v_c_value; } T_PWR_CTRL_VALID_FLAGS; typedef struct /* T_GRR_DATA */ { UBYTE sc_db_mode; T_SC_DATABASE sc_db_1; /* database 1 for serving cell: it contains all cell relevant * information, needed for to camp on a network, access to * the network, etc. */ T_SC_DATABASE sc_db_2; /* database 2 for serving cell: it contains all cell relevant * information, needed for to camp on a network, access to * the network, etc. */ T_GPRS_DATABASE db; /* db is the shortname for gprs_database */ T_MS_DATA ms; /* ms specific data */ T_UL_TBF uplink_tbf; /* This structure is used by TC,CPAP during uplink-tbf */ T_DL_TBF downlink_tbf; /* This structure is used by TC,CPAP during downlink-tbf */ T_TBF_TYPE tbf_type; ULONG ul_fn; ULONG dl_fn; ULONG l1_del_tbf_start_fn; /* When there is poll requested in a re-assignment message * sending of poll response successfully requires this * value to be sent to poll_fn+8. This is important when * the timeslot configuration changes between re-assignment. */ T_TA_PARAMS ta_params; UBYTE pdch_rel_ts_mask; USHORT tqi; T_req_ref_p req_ref[3]; /* to save the last 3 packet request_references */ UBYTE r_bit; /* current r-bit value - set by TC - read by RU/RD*/ T_SEG_CTRL_BLK seg_ctrl_blk; T_CTRLBUF ctrl_msg; T_MS_CLASS_CAP ms_cap[12]; /* * Some global parameters to control the whole functionality */ BOOL is_pg_started; /* Checks whether paging procedure has been started or not*/ BOOL cc_running; /* Assert if Cell change Order is running or not? */ UBYTE pcco_failure_cause; UBYTE test_mode; /* indicates the testmode status */ BOOL cell_res_status; /* indicates the status of GMMRR_CELL_RES primitive */ T_NC_DATA nc_data; T_PWR_CTRL_VALID_FLAGS pwr_ctrl_valid_flags; /* * Service data */ T_GFP_DATA gfp; T_CTRL_DATA ctrl; T_CTRL_GLBL_DATA ctrl_glbl; T_TC_DATA tc; T_CPAP_DATA cpap; T_PSI_DATA psi; T_PG_DATA pg; T_MEAS_DATA meas; T_MEAS_IM_DATA meas_im; T_MEAS_EM_DATA meas_em; T_GRR_CS_DATA cs; T_CS_MEAS_DATA cs_meas; UBYTE nc2_on; }T_GRR_DATA; /*==== EXPORT =====================================================*/ /* * data base */ #ifdef GRR_PEI_C T_GRR_DATA grr_data_base, *grr_data; #else EXTERN T_GRR_DATA grr_data_base, *grr_data; #endif /* * for more information see comment related to structure T_PSI_ASSIGNED_DATA */ #if defined GRR_PSIF_C OR defined GRR_PSIP_C OR defined GRR_PSIS_C #define ENTITY_DATA psc_db #else #define ENTITY_DATA grr_data #endif /* * Communication handles (see also GRR_PEI.C) */ #define hCommL1 ppc_hCommMAC #define hCommGMM grr_hCommGMM #define hCommGRR grr_hCommGRR #define hCommGRLC grr_hCommGRLC #define hCommRR grr_hCommRR #define hCommPL grr_hCommPL #ifdef FF_WAP /*FMM*/ #define hCommWAP grr_hCommWap /*In future an own FMM Entity is planned*/ #endif #define _decodedMsg grr__decodedMsg #ifdef GRR_PEI_C T_HANDLE hCommL1 = VSI_ERROR; T_HANDLE hCommGRLC = VSI_ERROR; T_HANDLE hCommGMM = VSI_ERROR; T_HANDLE hCommGRR = VSI_ERROR; T_HANDLE hCommRR = VSI_ERROR; T_HANDLE hCommPL = VSI_ERROR; #ifdef FF_WAP T_HANDLE hCommWAP = VSI_ERROR; #endif T_HANDLE GRR_handle; GLOBAL UBYTE _decodedMsg [MAX_MSTRUCT_LEN_GRR]; /* * make the pei_create function unique */ #define pei_create grr_pei_create /* * make the pei_func_primitive function unique */ #define pei_func_primitive grr_pei_func_primitive #else /* !GRR_PEI_C */ EXTERN T_HANDLE hCommL1; EXTERN T_HANDLE hCommGRLC; EXTERN T_HANDLE hCommGMM; EXTERN T_HANDLE hCommGRR; EXTERN T_HANDLE hCommLLC; EXTERN T_HANDLE hCommRR; EXTERN T_HANDLE hCommPL; #ifdef FF_WAP EXTERN T_HANDLE hCommWAP; #endif EXTERN T_HANDLE GRR_handle; #endif /* GRR_PEI_C */ EXTERN UBYTE _decodedMsg [MAX_MSTRUCT_LEN_GRR]; #ifdef GRR_PEI_C T_SC_DATABASE* psc_db; /* points to the current serving cell database */ T_SC_DATABASE* posc_db; /* points to the old serving cell database */ T_SC_DATABASE* prsc_db; /* points to the rejected serving cell database */ T_SC_DATABASE* pcr_db; /* points to the cell re-selection database */ #else EXTERN T_SC_DATABASE* psc_db; EXTERN T_SC_DATABASE* posc_db; EXTERN T_SC_DATABASE* prsc_db; EXTERN T_SC_DATABASE* pcr_db; #endif /* GRR_PEI_C */ #ifdef _TARGET_ #undef TRACE_FUNCTION #define TRACE_FUNCTION(a) #undef TRACE_ISIG #define TRACE_ISIG(a) #endif /* _TARGET_ */ #endif /* GRR_H */