FreeCalypso > hg > fc-tourmaline
diff src/g23m-gsm/rr/rr_gprs.h @ 1:fa8dc04885d8
src/g23m-*: import from Magnetite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:25:50 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-gsm/rr/rr_gprs.h Fri Oct 16 06:25:50 2020 +0000 @@ -0,0 +1,277 @@ +/* ++----------------------------------------------------------------------------- +| Project : +| Modul : ++----------------------------------------------------------------------------- +| 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 : Declarations for the Protocol Stack Entity +| Radio Resource / GPRS-enhancements ++----------------------------------------------------------------------------- +*/ + +#ifndef RR_GPRS_H +#define RR_GPRS_H + +#define EXT_MEAS_START_CR 0x40 + +/* intermediate storage for data of paging indication */ +typedef struct +{ + UBYTE id_type; + UBYTE chan_need; +} T_PAGING_DATA; + +typedef enum +{ + START_PROC_ACTIVATE_REQ, + START_PROC_ENTER_LIMITED, + START_PROC_NORMAL_CR, + START_PROC_NORMAL_CS, + START_PROC_CFG_CHG, + START_PROC_GPRS_ACT, + START_PROC_NOTHING +} T_START_PROC; + +typedef struct +{ + UBYTE rr_sdu[24]; + UBYTE si13_sdu[24]; + UBYTE tma_in_progress; + ULONG fn; + UBYTE req_ref_idx; + UBYTE gprs_indic; /* flag MM wants GPRS or not */ + UBYTE si13_received; /* SI13 has been received */ + ULONG ptmsi; /* used PTMSI */ + ULONG ptmsi2; /* used candidate PTMSI */ + ULONG tlli; /* used tlli */ + T_p_chan_req_des p_chan_req_des; /* Requested channel characteristics */ + T_gprs_meas_results gprs_meas_results; /* GPRS Measurement Results */ + UBYTE mac_req; /* */ + T_PAGING_DATA pag_dat; + UBYTE cs_req; /* */ + UBYTE gprs_suspend; + UBYTE gprs_resump; + UBYTE rac; + UBYTE page_mode; + USHORT split_pg; /* split paging cycle */ + UBYTE use_c31; + UBYTE cr_pbcch_active; + UBYTE cr_type; + UBYTE cr_orig; + T_START_PROC start_proc; + UBYTE reconn_cause; /* cause sent with RRGRR_RECONNECT_REQ during PDCH Assignment procedure */ + UBYTE tbf_est; /* indicate TBF establishment during PDCH Assignment / Cell Change Order */ + T_DL_DATA_IND *dl_data_ind; /* store DL primitive containing d_change_order until access to new cell */ + UBYTE bsic; /* BSIC of the new cell during Cell Change Order and CR*/ + USHORT arfcn; /* ARFCN of the new cell during Cell Change Order and CR */ + BOOL cco_need_reconnect_cnf; /* Flag indicating the need to send RRGRR-RECONNECT-CNF */ + T_rai current_rai; /* last rai assigned by the network to GMM */ + T_add_freq_list add_freq_lists[RRGRR_BA_LIST_SIZE]; + UBYTE num_add_freq_list; + T_RRGRR_EXT_MEAS_REQ *rrgrr_ext_meas_req; /* save the request for GPRS Ext Measurement */ + T_RRGRR_EXT_MEAS_CNF *rrgrr_ext_meas_cnf; /* compiled result of the GPRS Ext Measurement */ + T_MPH_EXT_MEAS_CNF *mph_ext_meas_cnf; /* power measurement result during GPRS Ext Measurement */ + UBYTE mph_ext_meas_num; /* number of carriers used in mph_ext_meas_cnf */ + UBYTE ext_meas_ctrl; /* indicate a pending Ext Meas stop request */ + BOOL is_nc2_used_in_si13; /* NC state of SI13: NC2 or !NC2 */ + UBYTE nc_mode_of_pmo; /* NC mode of Packet Measurement Order */ + BOOL cr_pcco_active; /* PCCO in BCCH environment, cell not synced */ + BOOL ready_state; /* TRUE - we are in READY STATE + * FALSE - we are in STANDBY STATE + * This is actually a GMM state, but has to + * stored here for the NC2 handling and for + * calculating the C2/C32 values + */ + +#ifdef REL99 + BOOL cbch_psi_valid; /* CBCH info on PSI8 received from GRR */ + T_cbch cbch_psi8; /* This field is in GPRS data as this cbch info + * on PSI 8 could be present only when PBCCH + * is enabled. + */ + BOOL cbch_info_rxvd_in_ptm; /* This flag is set to indicate that CBCH information was received in + * packet transfer mode. MPH_CBCH_COFIG_REQ should be sent to ALR + * only in idle mode. When transitioning again to idle mode + * if this flag is set, then CBCH info is given to ALR. + * During packet transfer mode, CBCH info could be received + * in SI4 or PSI8 or may need updateion because of dependent + * parameters change in in PSI2 or other SI messages received in PTM. + */ + UBYTE nw_release; +#endif + UBYTE ba_bcch_modified; /*This flag will be set only when BA(BCCH) is modified by PMO or PCCO*/ +} T_GPRS_DATA; + +#ifdef OPTION_MULTITHREAD + #define hCommGRR _ENTITY_PREFIXED(hCommGRR) +#endif + +EXTERN T_HANDLE hCommGRR; /* GRR Communication */ + +/* + * GPRS functions + */ +void gprs_init_gprs_data (void); +void gprs_get_table_n (const T_FUNC** table, + USHORT* n); + +/* GPRS support functions for process DATA */ +BOOL dat_check_gprs_imm_ass (T_MPH_UNITDATA_IND* unitdata, + T_D_IMM_ASSIGN* imm_assign, + UBYTE index); +void dat_check_imm_ass_ext (T_MPH_UNITDATA_IND* unitdata, + UBYTE index); +UBYTE dat_check_imm_assign_pch (T_MPH_UNITDATA_IND* unitdata, + T_D_IMM_ASSIGN* imm_assign); +UBYTE dat_check_imm_ass_rej (UBYTE wait_ind); +UBYTE dat_check_packet_paging_ind (T_MPH_PAGING_IND* pag_ind); +void dat_rrgrr_channel_req (T_RRGRR_CHANNEL_REQ* chan_req); + +void att_check_bsic (T_RRGRR_NCELL_SYNC_REQ* check_bsic); +BOOL dat_gprs_start_sabm (void); +void dat_rrgrr_suspend_dcch_req (T_RRGRR_SUSPEND_DCCH_REQ* suspend_dcch_req); +void dat_rrgrr_suspend_dcch_cnf (void); +void dat_rrgrr_reconnect_dcch_req (T_RRGRR_RECONNECT_DCCH_REQ* reconnect_dcch_req); +void dat_rrgrr_reconnect_dcch_cnf (UBYTE reconn_state); +void dat_rrgrr_resumed_tbf_req (T_RRGRR_RESUMED_TBF_REQ* resumed_tbf_req); +void dat_rrgrr_resumed_tbf_cnf (void); +void dat_rrgrr_data_ind (T_DL_DATA_IND* dl_data_ind); +void dat_rrgrr_change_order (T_DL_DATA_IND* dl_data_ind, + T_D_CHANGE_ORDER* d_change_order); +void dat_ask_paging_ind (T_MPH_PAGING_IND* pag_ind); +void dat_ask_paging_ind_pa_only (T_MPH_PAGING_IND* pag_ind); +void dat_stop_dcch_ind (UBYTE stop_cause); +void dat_rrgrr_data_req (T_RRGRR_DATA_REQ* data_req); +void dat_rrgrr_gprs_data_req (T_RRGRR_GPRS_DATA_REQ* data_req); +BOOL dat_check_packet_access (void); +void dat_rrgrr_rr_est_req (T_RRGRR_RR_EST_REQ* est_req); +void dat_rrgrr_rr_est_rsp (T_RRGRR_RR_EST_RSP* rr_est_rsp); +void dat_rrgrr_activate_req (T_RRGRR_ACTIVATE_REQ* act_req); +void dat_set_gprs_resump (T_RR_RELEASE_IND* rr_release_ind); +void dat_gprs_suspend_req (void); +void dat_gprs_set_suspended (void); +#ifdef REL99 +BOOL dat_gprs_cell_in_ptm (void); +#endif + + +/* GPRS support functions for process ATTACHEMENT */ +void att_signal_gprs_support (void); +void att_for_sysinfo_type13 (T_MPH_UNITDATA_IND* data_ind, + T_D_SYS_INFO_13* sys_info_13); +void att_set_gprs_indication (UBYTE gprs_indic); +void att_add_ptmsi (T_MPH_IDENTITY_REQ* mph_identity_req); +void att_rrgrr_cr_ind (UBYTE type); +void att_rrgrr_cr_req (T_RRGRR_CR_REQ* cr_req); +void att_rrgrr_stop_mon_ccch_req (T_RRGRR_STOP_MON_CCCH_REQ* stop_ccch); +void att_check_gprs_supp (UBYTE v_gprs_ind, + T_gprs_indic* data); +void att_rrgrr_start_mon_ccch_req (T_RRGRR_START_MON_CCCH_REQ* start_ccch); +void att_rrgrr_start_mon_bcch_req (T_RRGRR_START_MON_BCCH_REQ* start_bcch); +BOOL att_check_sync_results (T_MPH_MEASUREMENT_IND* mph_measurement_ind); +BOOL att_gprs_is_avail (void); +BOOL att_gprs_cell_has_pbcch (void); +void att_gprs_stop_pl (void); +void att_rrgrr_update_ba_req (T_RRGRR_UPDATE_BA_REQ* ba_req); +void att_gprs_cr_rsp (T_RRGRR_CR_RSP* cr_rsp); +void att_rrgrr_ext_meas_req (T_RRGRR_EXT_MEAS_REQ* ext_meas_req); +UBYTE rr_ext_meas_idx (USHORT arfcn); +void att_rrgrr_ext_meas_stop_req (T_RRGRR_EXT_MEAS_STOP_REQ* ext_meas_stop_req); +void att_rrgrr_meas_rep_req (T_RRGRR_MEAS_REP_REQ* s); +void att_gprs_idle_req (T_MPH_IDLE_REQ* idle_req); +BOOL att_gprs_check_ncell (void); +void att_start_cell_reselection_pbcch (UBYTE mode); +void att_cell_reselection_gprs_failed (void); +/*XXX*/ +void gprs_rrgrr_stop_task (T_RRGRR_STOP_TASK_REQ* stop_task); + +void gprs_rrgrr_fill_from_stored_sdu (T_sdu* to, + UBYTE* from); +void gprs_rrgrr_store_sdu (UBYTE* to, + T_sdu* from); +void att_gprs_start_task (T_RRGRR_START_TASK_REQ* start_task); +void att_start_cell_selection_gprs (UBYTE originator,U8 search_mode); +void att_start_cell_reselection_gprs (UBYTE mode); +void gprs_init_data_cr (void); +void att_convert_idle_c31_cr (UBYTE index); +void att_insert_c31_cr_data_in_cell (UBYTE index); +BOOL att_check_cell_c31 (void); +void att_check_c31_reselect_decision (UBYTE start_now); +BOOL att_check_c31_criterion (UBYTE index); +UBYTE att_get_next_best_c32_index (BOOL c31_calculated); +void att_calculate_c31_c32 (UBYTE index); +void att_rrgrr_standby_ind (T_RRGRR_STANDBY_STATE_IND* stdby); +void att_rrgrr_ready_ind (T_RRGRR_READY_STATE_IND* rdy); +#ifdef REL99 +void att_rrgrr_cbch_info_ind (T_RRGRR_CBCH_INFO_IND* cbch_info); +#endif +void att_gprs_sync_req( T_RRGRR_SYNC_REQ *sync_req); +BOOL is_nc2_used (void); +#ifdef REL99 +UBYTE att_gprs_get_nw_release (void); +#endif + +/* + * States of the GPRS Process + * PIM - Packet Idle Mode + * PTM - Packet Transfer Mode + * PAM - Packet Access Mode + */ +#define GPRS_NULL 0 /* GPRS is not activated by MM */ +#define GPRS_ACTIVATED 1 /* GPRS is activated by MM + * and we are not on a cell */ +#define GPRS_PIM_BCCH 2 /* RR has camped on a GPRS cell which has no PBCCH + * RR is in idle mode + */ +#define GPRS_PAM_BCCH 3 /* GRR has requested the establishment of a TBF over CCCH */ +#define GPRS_PTM_BCCH 4 /* GRR has established the TBF and transfer data */ +#define GPRS_DEDI_SDCCH 5 /* GRR has requested a TBF but was assigned a SDCCH for further + * signalling */ +#define GPRS_PIM_PBCCH 6 /* GRR has camped on a GPRS cell which has a PBCCH + * RR and GRR are in idle mode */ +#define GPRS_PAM_PBCCH 7 /* GRR is establishing a TBF */ +#define GPRS_PTM_PBCCH 8 /* GRR has established a TBF and transfers data */ +#define GPRS_SUSPENDED_BCCH 9 /* RR is in or on its way to dedicated mode and was in a GPRS_*_BCCH state */ +#define GPRS_SUSPENDED_PBCCH 10 /* RR is in or on its way to dedicated mode and was in a GPRS_*_PBCCH state */ + +EXTERN const char * const + STATE_GPRS_NAME[]; +#define STATE_GPRS_NAME_INIT \ + "GPRS_NULL", \ + "GPRS_ACTIVATED", \ + "GPRS_PIM_BCCH", \ + "GPRS_PAM_BCCH", \ + "GPRS_PTM_BCCH", \ + "GPRS_DEDI_SDCCH", \ + "GPRS_PIM_PBCCH", \ + "GPRS_PAM_PBCCH", \ + "GPRS_PTM_PBCCH", \ + "GPRS_SUSPENDED_BCCH",\ + "GPRS_SUSPENDED_PBCCH" + + +#define ESTCS_GPRS_1P 0x0478 +#define ESTCS_GPRS_SB 0x0470 +#define ESTCS_GPRS_PAGING 0x0481 + +#define TBF_EST_NONE 0 +#define TBF_EST_PDCH 1 +#define TBF_EST_CCO 2 + +#ifdef REL99 +#define RR_GPRS_R97 0 +#define RR_GPRS_R99 1 +#define RR_GPRS_R4 2 +#endif + +#endif /* !RR_GPRS_H */