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