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 */