/* +----------------------------------------------------------------------------- | 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 5EXTERN const SHORT p_dcs [MAX_CLASSES];EXTERN const SHORT p_pcs [MAX_CLASSES];EXTERN const SHORT p_gsm [MAX_CLASSES];#define MAX_PCL 32EXTERN 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 0xFFEXTERN void RX_SetValue ( UBYTE new_value, UBYTE new_qual, UBYTE new_access);#elseEXTERN 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 25typedef 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 7typedef 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 4typedef 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 0x02typedef 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 3typedef 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 */#endiftypedef 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;#endiftypedef 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;#endiftypedef 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 REL99typedef 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;#endiftypedef 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;#elseEXTERN 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;#endifEXTERN T_HANDLE GRR_handle;#endif /* GRR_PEI_C */EXTERN UBYTE _decodedMsg [MAX_MSTRUCT_LEN_GRR];#ifdef GRR_PEI_CT_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 */#elseEXTERN 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 */