FreeCalypso > hg > fc-magnetite
diff src/g23m-gprs/grr/grr_f.h @ 183:219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 13 Oct 2016 04:24:13 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-gprs/grr/grr_f.h Thu Oct 13 04:24:13 2016 +0000 @@ -0,0 +1,358 @@ +/* ++----------------------------------------------------------------------------- +| 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 grr_f.c . ++----------------------------------------------------------------------------- +*/ + +#ifndef GRR_F_H +#define GRR_F_H + + +#define END_OF_LIST 0xff + +#define DELETE_MESSAGE 0xff + + +#define COMPUTE_DATA 0x00 +#define INITIALIZE 0x01 + +#define DB_MODE_INIT 0 /* initialisation */ +#define DB_MODE_CC_REQ 1 /* cell change request */ +#define DB_MODE_CC_ACC 2 /* confirmation of cell change request */ + /* (acceptance of new cell) */ +#define DB_MODE_CC_REJ 3 /* rejection of cell change request */ + /* (back to old cell) */ +#define DB_MODE_SWAP 4 /* swap between the two databases */ + +#define PLEV_RND_INDEX 0 +#define S_T_RND_INDEX 1 +#define PCR_RND_INDEX 2 + +typedef UBYTE T_DB_MODE; + +EXTERN void grr_set_pg_nmo(void); +EXTERN BOOL grr_check_tmsi( BUF_tmsi_field * tmsi_i); +EXTERN BOOL grr_check_ptmsi( BUF_ptmsi * ptmsi_i); +EXTERN ULONG grr_buffer2ulong ( BUF_ptmsi * ptmsi); +EXTERN BOOL grr_check_all_tlli ( BUF_tlli_value * tlli_i ); +EXTERN void grr_init ( void ); +EXTERN UBYTE grr_decode_grr ( T_MSGBUF * msg_ptr_i ); +EXTERN UBYTE grr_decode_rr ( T_MSGBUF * msg_ptr_i ); + +EXTERN void grr_encode_ctrl ( UBYTE * ptr_in_i, + T_MSGBUF * ptr_out_i, + UBYTE r_bit_i); +EXTERN BOOL grr_check_address ( UBYTE msg_type_i,UBYTE tn_i ); +EXTERN void grr_save_persistence_level ( T_pers_lev * ptr2persistence_level_i ); +EXTERN ULONG grr_calc_new_poll_pos ( ULONG fn_i, UBYTE rrbp_i ); +EXTERN ULONG grr_random_value (UBYTE index, ULONG max_i); +EXTERN BOOL grr_is_pbcch_present (void); +EXTERN ULONG grr_decode_tbf_start_abs(T_abs *ptr2tbf_abs); +EXTERN ULONG grr_decode_tbf_start_rel(ULONG start_fn, USHORT rel_pos); + +EXTERN UBYTE grr_calc_nr_of_set_bits ( UBYTE value ); + +EXTERN T_DB_MODE grr_get_db_mode( void ); +EXTERN void grr_set_db_ptr( T_DB_MODE mode ); +EXTERN void grr_init_db( T_SC_DATABASE *db ); + +EXTERN BOOL grr_check_dist ( ULONG high_i, ULONG low_i, ULONG dist_i); +EXTERN BOOL handle_ms_cap (UBYTE msg_type ); + +/* the following functions are used by service MEAS, CS and PSI */ +EXTERN void grr_prcs_xmeas_struct ( T_XMEAS *db_xmeas, + T_xmeas_par *air_xmeas, + BOOL cpy_prm_set, + UBYTE new_inst_idx, + UBYTE *start_ext_lst_idx, + UBYTE *stop_ext_lst_idx ); +EXTERN void grr_init_xmeas_struct ( T_XMEAS *xmeas ); +EXTERN BOOL grr_prcs_nc_freq_list ( T_NC_LIST *db_list, + T_NC_RFREQ_LIST *rfreq_list, + BOOL v_air_list, + T_nc_freq_list *air_list, + T_INFO_TYPE type, + UBYTE instance ); +EXTERN void grr_prcs_nc_freq_final ( T_NC_LIST *dest_list, + T_NC_RFREQ_LIST *dest_rfreq, + BOOL *v_src_list_rfreq, + T_NC_LIST *src_list, + T_NC_RFREQ_LIST *src_rfreq ); +EXTERN void grr_prcs_nc_param_struct ( T_NC_PARAM *db_nc, + T_nc_meas_par *ext_nc, + UBYTE new_idx ); +EXTERN void grr_prcs_nc_param_final ( T_NC_PARAM *dest_nc, + BOOL *v_src_nc, + T_NC_PARAM *src_nc ); +EXTERN void grr_init_ncmeas_extd_struct + ( T_NCMEAS_EXTENDED *extd, + BOOL is_cw ); +EXTERN void grr_init_nc_list ( T_NC_LIST *list ); + +EXTERN void grr_init_nc_param ( T_NC_PARAM *param, + BOOL is_cw ); +EXTERN void grr_sort_ext_lst_freq ( T_EXT_FREQ_LIST *list, + UBYTE max_number, + T_EXT_START_STOP *start_stop ); + +/* the above functions are used by service MEAS, CS and PSI */ + +/* + * Refrence frequency list, hopping frequencies etc. + */ +EXTERN void grr_create_channel_list(T_rfl* rfl, UBYTE* list); +EXTERN BOOL grr_create_freq_list(UBYTE ma_num, UBYTE maio, T_p_chan_sel *chan_sel, T_p_freq_list *freq_list); +EXTERN void grr_ma_filter_list( + USHORT* list1, /* input*/ + USHORT* list2, /* output*/ + const T_gprs_ms_alloc_ie* gp_ma + ); + + + +/* + * Cell Reselection functions + */ +EXTERN void grr_prepare_db_for_new_cell (void ); + +/* + * NON DRX Functions + */ +EXTERN BOOL grr_is_non_drx_mode( void ); +EXTERN BOOL grr_is_non_drx_period(void); +EXTERN void grr_handle_non_drx_period ( T_NON_DRX_TYPE non_drx_type, + BOOL non_drx_timer_running ); + +EXTERN void grr_store_g_pwr_par ( T_g_pwr_par *g_pwr_par ); +EXTERN void grr_store_type_pwr_par + ( T_pwr_par *pwr_par, + BOOL use_prev ); +EXTERN void grr_store_type_tn_alloc_pwr + ( T_tn_alloc_pwr *pwr_par ); +EXTERN void grr_store_type_dyn_alloc + ( T_dyn_alloc *pwr_par ); +EXTERN void grr_store_type_alf_gam + ( T_alf_gam *pwr_par, + UBYTE tn ); +EXTERN void grr_store_type_pck_upl_ass_ia + ( T_tfi_ass_alloc *pwr_par, + UBYTE tn ); +EXTERN void grr_store_type_pck_snbl_ass_ia + ( T_sngl_block_alloc *pwr_par, + UBYTE tn ); + +EXTERN void grr_store_type_tfi_ass_rlc + ( T_tfi_ass_rlc *pwr_par, + UBYTE tn ); + +EXTERN void grr_store_type_alpha_gamma + ( T_alpha_gamma *pwr_par, + UBYTE tn ); + +EXTERN void grr_store_type_pwr_ctrl + ( T_pwr_ctrl *pwr_par ); + + +EXTERN void grr_set_tbf_cfg_req_param + ( T_MPHP_ASSIGNMENT_REQ *tbf_cfg_req ); + +EXTERN void grr_update_pacch( void ); + +EXTERN USHORT grr_imsi_mod ( void ); + +EXTERN ULONG grr_get_tlli ( void ); + +EXTERN void grr_set_buf_tlli ( BUF_tlli_value *buf_tlli_o, ULONG tlli_i ); + + +EXTERN void grr_set_tlli ( USHORT * l_tlli, + USHORT * o_tlli, + UBYTE * b_tlli, + ULONG tlli ); + +EXTERN UBYTE grr_calculate_Ttb (UBYTE ul_usage,UBYTE dl_usage); + +EXTERN UBYTE grr_calculate_Tra (UBYTE ul_usage,UBYTE dl_usage); + +EXTERN UBYTE grr_reconstruct_dl_usage(UBYTE dl_usage); + +EXTERN void grr_encode_ul_ctrl_block ( UBYTE *ul_ctrl_block, + UBYTE *ul_ctrl_data ); + +EXTERN UBYTE grr_get_ul_ctrl_block_header ( UBYTE r_bit ); + +EXTERN BOOL grr_check_if_tbf_start_is_elapsed ( ULONG start_fn, ULONG current_fn); + +EXTERN UBYTE grr_get_gprs_ms_class( void ); + +EXTERN BOOL grr_store_cs_param ( T_NC_LIST *nc_list, + BOOL v_cs_par, + T_cs_par *cs_par, + T_INFO_TYPE type, + UBYTE instance, + UBYTE *number, + USHORT *last_arfcn, + USHORT arfcn, + UBYTE bsic ); +EXTERN void grr_store_si13_pbcch_location + ( T_CR_PAR *cr_par, + BOOL v_si13_pbcch, + T_si13_pbcch *si13_pbcch ); +EXTERN void grr_restore_cs_param ( T_ncell_info *curr_info, + T_ncell_info *prev_info, + UBYTE curr_idx ); +EXTERN T_ncell_info* grr_get_next_ncell_param + ( UBYTE max_number, + T_NC_LIST *list, + T_INFO_SRC info_src ); +EXTERN T_ncell_info* grr_get_next_bigger_ncell_param + ( T_NC_LIST *list, + T_INFO_SRC info_src ); + +EXTERN void grr_handle_ta ( UBYTE v_tav, + UBYTE tav, + UBYTE v_ul_tai, + UBYTE ul_tai, + UBYTE ul_tatn, + UBYTE v_dl_tai, + UBYTE dl_tai, + UBYTE dl_tatn, + T_p_timing_advance *ptr2ta); +/*NEWFILES*/ +EXTERN void grr_decode_rlcmac ( UBYTE * ptr_msg_i, T_D_HEADER * ptr_d_header_i ); +EXTERN T_MSGBUF * grr_handle_rlcmac_header ( T_PACKET_MODE mode_i, + T_D_HEADER * ptr_header_i, + ULONG fn_i ); +EXTERN void grr_increase_dsc ( void ); +EXTERN BOOL grr_decrease_dsc ( void ); + +#define grr_g23_arfcn_to_l1(arfcn) convert_arfcn_to_l1(arfcn,0) +#define grr_l1_arfcn_to_g23(arfcn) convert_arfcn_to_g23(arfcn,0) + +EXTERN USHORT convert_arfcn_to_l1 (USHORT arfcn, UBYTE std); +EXTERN USHORT convert_arfcn_to_g23 (USHORT arfcn, UBYTE std); + +EXTERN T_TIME grr_t_status( USHORT t_index ); + +#define SET_GPRS_RXLEV_ACCESS_MIN(a,v_b,b) (a=(v_b?b:GPRS_RXLEV_ACCESS_MIN_INVALID)) +#define SET_GPRS_MS_TXPWR_MAX_CCH(a,v_b,b) (a=(v_b?b:GPRS_MS_TXPWR_MAX_CCH_INVALID)) +#define SET_GPRS_TEMP_OFFSET(a,v_b,b) (a=(v_b?b:GPRS_TEMPORARY_OFFSET_INVALID)) +#define SET_GPRS_PENALTY_TIME(a,v_b,b) (a=(v_b?b:GPRS_PENALTY_TIME_INVALID )) +#define SET_GPRS_RESEL_OFF(a,v_b,b) \ + (a=(v_b?b:(grr_is_pbcch_present()?GPRS_RESEL_OFF_DEFAULT:GPRS_RESEL_OFF_INVALID))) +#define SET_GPRS_HCS_THR(a,v_b,b) (a=(v_b?b:GPRS_HCS_THR_INVALID )) +#define SET_GPRS_PRIO_CLASS(a,v_b,b) (a=(v_b?b:GPRS_PRIORITY_CLASS_INVALID )) + +EXTERN T_NC_MVAL* grr_get_nc_mval ( USHORT arfcn, UBYTE bsic, UBYTE *idx ); +EXTERN T_ncell_info* grr_get_ncell_info ( USHORT arfcn, UBYTE bsic ); + +EXTERN void grr_set_pbcch ( BOOL pbcch_presence ); +EXTERN void grr_set_freq_par ( T_p_frequency_par *freq_par ); +EXTERN BOOL grr_get_pccch_freq_par( UBYTE pccch_group, + T_p_chan_sel *chan_sel, + T_p_freq_list *freq_list ); + +EXTERN void grr_cgrlc_pwr_ctrl_cnf ( T_CGRLC_PWR_CTRL_CNF *cgrlc_pwr_ctrl_cnf ); +EXTERN void grr_cgrlc_pwr_ctrl_req ( BOOL v_c_value ); +EXTERN void grr_prcs_pwr_ctrl ( T_CGRLC_pwr_ctrl *pwr_ctrl, + BOOL v_c_value ); +EXTERN UBYTE grr_get_ms_txpwr_max_cch( USHORT arfcn, + UBYTE pwr_offset, + UBYTE gprs_ms_txpwr_max_cch ); +EXTERN UBYTE grr_get_pms_max ( USHORT arfcn, + UBYTE pwr_offset, + UBYTE gprs_ms_txpwr_max_cch, + T_MS_PWR_CAP *mspc ); +EXTERN void grr_get_ms_pwr_cap ( USHORT arfcn, + UBYTE pow_offset, + T_MS_PWR_CAP *mspc ); +EXTERN UBYTE grr_get_pcl ( UBYTE const *p_ctrl, + SHORT nop ); + +EXTERN void grr_get_ms_pwr_cap_gsm900 ( UBYTE rf_pow_cap, + T_MS_PWR_CAP *mspc ); +EXTERN void grr_get_ms_pwr_cap_dcs1800( UBYTE rf_pow_cap, + UBYTE pow_offset, + T_MS_PWR_CAP *mspc ); +EXTERN void grr_get_ms_pwr_cap_pcs1900( UBYTE rf_pow_cap, + UBYTE pow_offset, + T_MS_PWR_CAP *mspc ); +EXTERN UBYTE grr_get_power_class ( UBYTE index ); + +EXTERN void grr_set_cell_info_service( void ); + +EXTERN BOOL grr_is_packet_idle_mode( void ); + +EXTERN void grr_clip_rxlev ( UBYTE *clipp, + UBYTE *rxlev, + UBYTE number ); + +EXTERN T_gprs_ms_alloc_ie* grr_get_gprs_ma (UBYTE ma_num); + +EXTERN BOOL grr_validate_ma_num_in_freq_par (const T_freq_par *freq_par,UBYTE msg_type); + +EXTERN BOOL grr_get_ref_list_or_cell_allocation (T_LIST *list1, + const T_gprs_ms_alloc_ie *gp_ma, + UBYTE ma_num); +EXTERN BOOL grr_validate_and_count_frequencies ( USHORT radio_freq_list[MPHP_NUMC_MA], + USHORT* ptr_cnt); + +#ifdef REL99 + +EXTERN T_TIME grr_get_time_to_send_poll(UBYTE rrbp); + +/* + * Though this funciton is called only by TC, it is placed in + * grr_f.c so that the temporary static arrays ussed by this + * fuction can be shared by other function[grr_cnv_freq_para_in_psi8_direct_enc_2] + * used by CTRL. + */ +EXTERN BOOL grr_cnv_freq_para_in_assignment_direct_enc_2 (T_p_frequency_par *frequency_par, + T_freq_par *freq_par); + +EXTERN BOOL grr_cnv_freq_para_in_psi8_direct_enc_2 (T_cbch *cbch_req, + const T_freq_par *freq_par); + +#ifdef TI_PS_FF_EMR +EXTERN void grr_init_ba_bcch_nc_list ( T_SC_DATABASE *db ); + +EXTERN void grr_init_enh_param ( T_GRR_ENH_PARA *param, + BOOL rep_prio_pres ); + +GLOBAL void grr_init_enh_cell_list ( void ); + +EXTERN void grr_prcs_enh_param_cw_temp ( T_GRR_ENH_PARA *db_enh, + T_enh_rep_param_struct *air_enh, + UBYTE new_idx ); + +EXTERN void grr_prcs_enh_param_pmo ( T_GRR_ENH_PARA *db_enh, + T_enh_meas_param_pmo *air_enh, + UBYTE new_idx, UBYTE *pmo_ind ); +EXTERN void grr_prcs_enh_param_pcco ( T_SC_DATABASE *db, + T_enh_meas_param_pcco *air_enh ); + +EXTERN void grr_copy_enh_and_nc_params_from_si2qtr + (T_RRGRR_SI2QUATER_IND + *rrgrr_si2quater_ind ); + +EXTERN UBYTE grr_get_psi3_cm(void); +#endif + +#endif + +#endif /* !GRR_F_H */ +