FreeCalypso > hg > fc-magnetite
comparison src/g23m-gsm/rr/rr_gprs.h @ 104:27a4235405c6
src/g23m-gsm: import from LoCosto source
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Tue, 04 Oct 2016 18:24:05 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 103:76d139c7a25e | 104:27a4235405c6 |
|---|---|
| 1 /* | |
| 2 +----------------------------------------------------------------------------- | |
| 3 | Project : | |
| 4 | Modul : | |
| 5 +----------------------------------------------------------------------------- | |
| 6 | Copyright 2002 Texas Instruments Berlin, AG | |
| 7 | All rights reserved. | |
| 8 | | |
| 9 | This file is confidential and a trade secret of Texas | |
| 10 | Instruments Berlin, AG | |
| 11 | The receipt of or possession of this file does not convey | |
| 12 | any rights to reproduce or disclose its contents or to | |
| 13 | manufacture, use, or sell anything it may describe, in | |
| 14 | whole, or in part, without the specific written consent of | |
| 15 | Texas Instruments Berlin, AG. | |
| 16 +----------------------------------------------------------------------------- | |
| 17 | Purpose : Declarations for the Protocol Stack Entity | |
| 18 | Radio Resource / GPRS-enhancements | |
| 19 +----------------------------------------------------------------------------- | |
| 20 */ | |
| 21 | |
| 22 #ifndef RR_GPRS_H | |
| 23 #define RR_GPRS_H | |
| 24 | |
| 25 #define EXT_MEAS_START_CR 0x40 | |
| 26 | |
| 27 /* intermediate storage for data of paging indication */ | |
| 28 typedef struct | |
| 29 { | |
| 30 UBYTE id_type; | |
| 31 UBYTE chan_need; | |
| 32 } T_PAGING_DATA; | |
| 33 | |
| 34 typedef enum | |
| 35 { | |
| 36 START_PROC_ACTIVATE_REQ, | |
| 37 START_PROC_ENTER_LIMITED, | |
| 38 START_PROC_NORMAL_CR, | |
| 39 START_PROC_NORMAL_CS, | |
| 40 START_PROC_CFG_CHG, | |
| 41 START_PROC_GPRS_ACT, | |
| 42 START_PROC_NOTHING | |
| 43 } T_START_PROC; | |
| 44 | |
| 45 typedef struct | |
| 46 { | |
| 47 UBYTE rr_sdu[24]; | |
| 48 UBYTE si13_sdu[24]; | |
| 49 UBYTE tma_in_progress; | |
| 50 ULONG fn; | |
| 51 UBYTE req_ref_idx; | |
| 52 UBYTE gprs_indic; /* flag MM wants GPRS or not */ | |
| 53 UBYTE si13_received; /* SI13 has been received */ | |
| 54 ULONG ptmsi; /* used PTMSI */ | |
| 55 ULONG ptmsi2; /* used candidate PTMSI */ | |
| 56 ULONG tlli; /* used tlli */ | |
| 57 T_p_chan_req_des p_chan_req_des; /* Requested channel characteristics */ | |
| 58 T_gprs_meas_results gprs_meas_results; /* GPRS Measurement Results */ | |
| 59 UBYTE mac_req; /* */ | |
| 60 T_PAGING_DATA pag_dat; | |
| 61 UBYTE cs_req; /* */ | |
| 62 UBYTE gprs_suspend; | |
| 63 UBYTE gprs_resump; | |
| 64 UBYTE rac; | |
| 65 UBYTE page_mode; | |
| 66 USHORT split_pg; /* split paging cycle */ | |
| 67 UBYTE use_c31; | |
| 68 UBYTE cr_pbcch_active; | |
| 69 UBYTE cr_type; | |
| 70 UBYTE cr_orig; | |
| 71 T_START_PROC start_proc; | |
| 72 UBYTE reconn_cause; /* cause sent with RRGRR_RECONNECT_REQ during PDCH Assignment procedure */ | |
| 73 UBYTE tbf_est; /* indicate TBF establishment during PDCH Assignment / Cell Change Order */ | |
| 74 T_DL_DATA_IND *dl_data_ind; /* store DL primitive containing d_change_order until access to new cell */ | |
| 75 UBYTE bsic; /* BSIC of the new cell during Cell Change Order and CR*/ | |
| 76 USHORT arfcn; /* ARFCN of the new cell during Cell Change Order and CR */ | |
| 77 BOOL cco_need_reconnect_cnf; /* Flag indicating the need to send RRGRR-RECONNECT-CNF */ | |
| 78 T_rai current_rai; /* last rai assigned by the network to GMM */ | |
| 79 T_add_freq_list add_freq_lists[RRGRR_BA_LIST_SIZE]; | |
| 80 UBYTE num_add_freq_list; | |
| 81 T_RRGRR_EXT_MEAS_REQ *rrgrr_ext_meas_req; /* save the request for GPRS Ext Measurement */ | |
| 82 T_RRGRR_EXT_MEAS_CNF *rrgrr_ext_meas_cnf; /* compiled result of the GPRS Ext Measurement */ | |
| 83 T_MPH_EXT_MEAS_CNF *mph_ext_meas_cnf; /* power measurement result during GPRS Ext Measurement */ | |
| 84 UBYTE mph_ext_meas_num; /* number of carriers used in mph_ext_meas_cnf */ | |
| 85 UBYTE ext_meas_ctrl; /* indicate a pending Ext Meas stop request */ | |
| 86 BOOL is_nc2_used_in_si13; /* NC state of SI13: NC2 or !NC2 */ | |
| 87 UBYTE nc_mode_of_pmo; /* NC mode of Packet Measurement Order */ | |
| 88 BOOL cr_pcco_active; /* PCCO in BCCH environment, cell not synced */ | |
| 89 BOOL ready_state; /* TRUE - we are in READY STATE | |
| 90 * FALSE - we are in STANDBY STATE | |
| 91 * This is actually a GMM state, but has to | |
| 92 * stored here for the NC2 handling and for | |
| 93 * calculating the C2/C32 values | |
| 94 */ | |
| 95 | |
| 96 #ifdef REL99 | |
| 97 BOOL cbch_psi_valid; /* CBCH info on PSI8 received from GRR */ | |
| 98 T_cbch cbch_psi8; /* This field is in GPRS data as this cbch info | |
| 99 * on PSI 8 could be present only when PBCCH | |
| 100 * is enabled. | |
| 101 */ | |
| 102 BOOL cbch_info_rxvd_in_ptm; /* This flag is set to indicate that CBCH information was received in | |
| 103 * packet transfer mode. MPH_CBCH_COFIG_REQ should be sent to ALR | |
| 104 * only in idle mode. When transitioning again to idle mode | |
| 105 * if this flag is set, then CBCH info is given to ALR. | |
| 106 * During packet transfer mode, CBCH info could be received | |
| 107 * in SI4 or PSI8 or may need updateion because of dependent | |
| 108 * parameters change in in PSI2 or other SI messages received in PTM. | |
| 109 */ | |
| 110 UBYTE nw_release; | |
| 111 #endif | |
| 112 UBYTE ba_bcch_modified; /*This flag will be set only when BA(BCCH) is modified by PMO or PCCO*/ | |
| 113 } T_GPRS_DATA; | |
| 114 | |
| 115 #ifdef OPTION_MULTITHREAD | |
| 116 #define hCommGRR _ENTITY_PREFIXED(hCommGRR) | |
| 117 #endif | |
| 118 | |
| 119 EXTERN T_HANDLE hCommGRR; /* GRR Communication */ | |
| 120 | |
| 121 /* | |
| 122 * GPRS functions | |
| 123 */ | |
| 124 void gprs_init_gprs_data (void); | |
| 125 void gprs_get_table_n (const T_FUNC** table, | |
| 126 USHORT* n); | |
| 127 | |
| 128 /* GPRS support functions for process DATA */ | |
| 129 BOOL dat_check_gprs_imm_ass (T_MPH_UNITDATA_IND* unitdata, | |
| 130 T_D_IMM_ASSIGN* imm_assign, | |
| 131 UBYTE index); | |
| 132 void dat_check_imm_ass_ext (T_MPH_UNITDATA_IND* unitdata, | |
| 133 UBYTE index); | |
| 134 UBYTE dat_check_imm_assign_pch (T_MPH_UNITDATA_IND* unitdata, | |
| 135 T_D_IMM_ASSIGN* imm_assign); | |
| 136 UBYTE dat_check_imm_ass_rej (UBYTE wait_ind); | |
| 137 UBYTE dat_check_packet_paging_ind (T_MPH_PAGING_IND* pag_ind); | |
| 138 void dat_rrgrr_channel_req (T_RRGRR_CHANNEL_REQ* chan_req); | |
| 139 | |
| 140 void att_check_bsic (T_RRGRR_NCELL_SYNC_REQ* check_bsic); | |
| 141 BOOL dat_gprs_start_sabm (void); | |
| 142 void dat_rrgrr_suspend_dcch_req (T_RRGRR_SUSPEND_DCCH_REQ* suspend_dcch_req); | |
| 143 void dat_rrgrr_suspend_dcch_cnf (void); | |
| 144 void dat_rrgrr_reconnect_dcch_req (T_RRGRR_RECONNECT_DCCH_REQ* reconnect_dcch_req); | |
| 145 void dat_rrgrr_reconnect_dcch_cnf (UBYTE reconn_state); | |
| 146 void dat_rrgrr_resumed_tbf_req (T_RRGRR_RESUMED_TBF_REQ* resumed_tbf_req); | |
| 147 void dat_rrgrr_resumed_tbf_cnf (void); | |
| 148 void dat_rrgrr_data_ind (T_DL_DATA_IND* dl_data_ind); | |
| 149 void dat_rrgrr_change_order (T_DL_DATA_IND* dl_data_ind, | |
| 150 T_D_CHANGE_ORDER* d_change_order); | |
| 151 void dat_ask_paging_ind (T_MPH_PAGING_IND* pag_ind); | |
| 152 void dat_ask_paging_ind_pa_only (T_MPH_PAGING_IND* pag_ind); | |
| 153 void dat_stop_dcch_ind (UBYTE stop_cause); | |
| 154 void dat_rrgrr_data_req (T_RRGRR_DATA_REQ* data_req); | |
| 155 void dat_rrgrr_gprs_data_req (T_RRGRR_GPRS_DATA_REQ* data_req); | |
| 156 BOOL dat_check_packet_access (void); | |
| 157 void dat_rrgrr_rr_est_req (T_RRGRR_RR_EST_REQ* est_req); | |
| 158 void dat_rrgrr_rr_est_rsp (T_RRGRR_RR_EST_RSP* rr_est_rsp); | |
| 159 void dat_rrgrr_activate_req (T_RRGRR_ACTIVATE_REQ* act_req); | |
| 160 void dat_set_gprs_resump (T_RR_RELEASE_IND* rr_release_ind); | |
| 161 void dat_gprs_suspend_req (void); | |
| 162 void dat_gprs_set_suspended (void); | |
| 163 #ifdef REL99 | |
| 164 BOOL dat_gprs_cell_in_ptm (void); | |
| 165 #endif | |
| 166 | |
| 167 | |
| 168 /* GPRS support functions for process ATTACHEMENT */ | |
| 169 void att_signal_gprs_support (void); | |
| 170 void att_for_sysinfo_type13 (T_MPH_UNITDATA_IND* data_ind, | |
| 171 T_D_SYS_INFO_13* sys_info_13); | |
| 172 void att_set_gprs_indication (UBYTE gprs_indic); | |
| 173 void att_add_ptmsi (T_MPH_IDENTITY_REQ* mph_identity_req); | |
| 174 void att_rrgrr_cr_ind (UBYTE type); | |
| 175 void att_rrgrr_cr_req (T_RRGRR_CR_REQ* cr_req); | |
| 176 void att_rrgrr_stop_mon_ccch_req (T_RRGRR_STOP_MON_CCCH_REQ* stop_ccch); | |
| 177 void att_check_gprs_supp (UBYTE v_gprs_ind, | |
| 178 T_gprs_indic* data); | |
| 179 void att_rrgrr_start_mon_ccch_req (T_RRGRR_START_MON_CCCH_REQ* start_ccch); | |
| 180 void att_rrgrr_start_mon_bcch_req (T_RRGRR_START_MON_BCCH_REQ* start_bcch); | |
| 181 BOOL att_check_sync_results (T_MPH_MEASUREMENT_IND* mph_measurement_ind); | |
| 182 BOOL att_gprs_is_avail (void); | |
| 183 BOOL att_gprs_cell_has_pbcch (void); | |
| 184 void att_gprs_stop_pl (void); | |
| 185 void att_rrgrr_update_ba_req (T_RRGRR_UPDATE_BA_REQ* ba_req); | |
| 186 void att_gprs_cr_rsp (T_RRGRR_CR_RSP* cr_rsp); | |
| 187 void att_rrgrr_ext_meas_req (T_RRGRR_EXT_MEAS_REQ* ext_meas_req); | |
| 188 UBYTE rr_ext_meas_idx (USHORT arfcn); | |
| 189 void att_rrgrr_ext_meas_stop_req (T_RRGRR_EXT_MEAS_STOP_REQ* ext_meas_stop_req); | |
| 190 void att_rrgrr_meas_rep_req (T_RRGRR_MEAS_REP_REQ* s); | |
| 191 void att_gprs_idle_req (T_MPH_IDLE_REQ* idle_req); | |
| 192 BOOL att_gprs_check_ncell (void); | |
| 193 void att_start_cell_reselection_pbcch (UBYTE mode); | |
| 194 void att_cell_reselection_gprs_failed (void); | |
| 195 /*XXX*/ | |
| 196 void gprs_rrgrr_stop_task (T_RRGRR_STOP_TASK_REQ* stop_task); | |
| 197 | |
| 198 void gprs_rrgrr_fill_from_stored_sdu (T_sdu* to, | |
| 199 UBYTE* from); | |
| 200 void gprs_rrgrr_store_sdu (UBYTE* to, | |
| 201 T_sdu* from); | |
| 202 void att_gprs_start_task (T_RRGRR_START_TASK_REQ* start_task); | |
| 203 void att_start_cell_selection_gprs (UBYTE originator,U8 search_mode); | |
| 204 void att_start_cell_reselection_gprs (UBYTE mode); | |
| 205 void gprs_init_data_cr (void); | |
| 206 void att_convert_idle_c31_cr (UBYTE index); | |
| 207 void att_insert_c31_cr_data_in_cell (UBYTE index); | |
| 208 BOOL att_check_cell_c31 (void); | |
| 209 void att_check_c31_reselect_decision (UBYTE start_now); | |
| 210 BOOL att_check_c31_criterion (UBYTE index); | |
| 211 UBYTE att_get_next_best_c32_index (BOOL c31_calculated); | |
| 212 void att_calculate_c31_c32 (UBYTE index); | |
| 213 void att_rrgrr_standby_ind (T_RRGRR_STANDBY_STATE_IND* stdby); | |
| 214 void att_rrgrr_ready_ind (T_RRGRR_READY_STATE_IND* rdy); | |
| 215 #ifdef REL99 | |
| 216 void att_rrgrr_cbch_info_ind (T_RRGRR_CBCH_INFO_IND* cbch_info); | |
| 217 #endif | |
| 218 void att_gprs_sync_req( T_RRGRR_SYNC_REQ *sync_req); | |
| 219 BOOL is_nc2_used (void); | |
| 220 #ifdef REL99 | |
| 221 UBYTE att_gprs_get_nw_release (void); | |
| 222 #endif | |
| 223 | |
| 224 /* | |
| 225 * States of the GPRS Process | |
| 226 * PIM - Packet Idle Mode | |
| 227 * PTM - Packet Transfer Mode | |
| 228 * PAM - Packet Access Mode | |
| 229 */ | |
| 230 #define GPRS_NULL 0 /* GPRS is not activated by MM */ | |
| 231 #define GPRS_ACTIVATED 1 /* GPRS is activated by MM | |
| 232 * and we are not on a cell */ | |
| 233 #define GPRS_PIM_BCCH 2 /* RR has camped on a GPRS cell which has no PBCCH | |
| 234 * RR is in idle mode | |
| 235 */ | |
| 236 #define GPRS_PAM_BCCH 3 /* GRR has requested the establishment of a TBF over CCCH */ | |
| 237 #define GPRS_PTM_BCCH 4 /* GRR has established the TBF and transfer data */ | |
| 238 #define GPRS_DEDI_SDCCH 5 /* GRR has requested a TBF but was assigned a SDCCH for further | |
| 239 * signalling */ | |
| 240 #define GPRS_PIM_PBCCH 6 /* GRR has camped on a GPRS cell which has a PBCCH | |
| 241 * RR and GRR are in idle mode */ | |
| 242 #define GPRS_PAM_PBCCH 7 /* GRR is establishing a TBF */ | |
| 243 #define GPRS_PTM_PBCCH 8 /* GRR has established a TBF and transfers data */ | |
| 244 #define GPRS_SUSPENDED_BCCH 9 /* RR is in or on its way to dedicated mode and was in a GPRS_*_BCCH state */ | |
| 245 #define GPRS_SUSPENDED_PBCCH 10 /* RR is in or on its way to dedicated mode and was in a GPRS_*_PBCCH state */ | |
| 246 | |
| 247 EXTERN const char * const | |
| 248 STATE_GPRS_NAME[]; | |
| 249 #define STATE_GPRS_NAME_INIT \ | |
| 250 "GPRS_NULL", \ | |
| 251 "GPRS_ACTIVATED", \ | |
| 252 "GPRS_PIM_BCCH", \ | |
| 253 "GPRS_PAM_BCCH", \ | |
| 254 "GPRS_PTM_BCCH", \ | |
| 255 "GPRS_DEDI_SDCCH", \ | |
| 256 "GPRS_PIM_PBCCH", \ | |
| 257 "GPRS_PAM_PBCCH", \ | |
| 258 "GPRS_PTM_PBCCH", \ | |
| 259 "GPRS_SUSPENDED_BCCH",\ | |
| 260 "GPRS_SUSPENDED_PBCCH" | |
| 261 | |
| 262 | |
| 263 #define ESTCS_GPRS_1P 0x0478 | |
| 264 #define ESTCS_GPRS_SB 0x0470 | |
| 265 #define ESTCS_GPRS_PAGING 0x0481 | |
| 266 | |
| 267 #define TBF_EST_NONE 0 | |
| 268 #define TBF_EST_PDCH 1 | |
| 269 #define TBF_EST_CCO 2 | |
| 270 | |
| 271 #ifdef REL99 | |
| 272 #define RR_GPRS_R97 0 | |
| 273 #define RR_GPRS_R99 1 | |
| 274 #define RR_GPRS_R4 2 | |
| 275 #endif | |
| 276 | |
| 277 #endif /* !RR_GPRS_H */ |
