| #ifndef _MRS_NRAS_SEARCH_H |
| #define _MRS_NRAS_SEARCH_H |
| |
| #include "mrs_common_capability.h" |
| #include "mrs_common_search.h" |
| #include "mrs_as_struct.h" |
| #include "mcc_recog_train_data.h" |
| #ifdef UNIT_TEST |
| #include "mcc_recog_test_data.h" |
| #endif /* UNIT_TEST */ |
| |
| #define MRS_NRAS_MCC_RECOG_MAX_SUBBAND_NUM 64 |
| |
| typedef struct |
| { |
| kal_uint32 min_gscn; |
| kal_uint32 max_gscn; |
| kal_uint8 step_size; |
| } nr_gscn_range_struct; |
| |
| typedef struct |
| { |
| kal_uint32 begin; |
| kal_uint32 end; |
| } nr_freq_range_struct; |
| |
| typedef struct nras_mcc_recog_mcc_list { |
| kal_uint8 mcc_num; |
| mrs_mcc_id mcc[MCC_RECOG_NR_MAX_MCC_LEN]; |
| } mrs_nras_mcc_recog_mcc_list_struct; |
| |
| typedef struct |
| { |
| nr_freq_range_struct freq_range; |
| kal_int16 rssi; // qdbm = dbm * 4 |
| } mrs_nras_subband_rssi_struct; |
| |
| typedef struct |
| { |
| kal_uint16 band; |
| kal_uint8 subband_num; // The number of subbands to report. |
| mrs_nras_subband_rssi_struct subband_rssi[MRS_NRAS_MCC_RECOG_MAX_SUBBAND_NUM]; |
| } mrs_nras_band_rssi_distribution_struct; |
| |
| typedef struct |
| { |
| kal_uint16 band_num; |
| mrs_nras_band_rssi_distribution_struct band[MCC_RECOG_NR_BAND_NUM]; |
| } mrs_nras_rssi_distribution_struct; |
| |
| extern mrs_nras_mcc_recog_mcc_list_struct nr_mcc_list; |
| |
| void mrs_get_predict_nrarfcn_table_by_band(kal_uint32 nr_band, mrs_freq_table_struct *nrarfcn_table); |
| kal_uint32 mrs_nras_gscn_to_nrarfcn(kal_uint32 gscn); |
| |
| kal_uint16 mrs_nras_get_predict_freq_list_by_band( |
| MRS_SIM_INDEX sim_index, |
| const kal_uint32 band_list_num, |
| const kal_uint16 *band_list, |
| const NRARFCN *skip_freq_list, |
| const kal_uint16 skip_freq_list_num, |
| NRARFCN *predict_freq_list // kal_uint32 array[64] |
| ); |
| |
| kal_uint16 mrs_nras_get_predict_freq_list_by_plmn( |
| MRS_SIM_INDEX sim_index, |
| const mrs_plmn_id_list *plmn_list, |
| const NRARFCN *skip_freq_list, |
| const kal_uint16 skip_freq_list_num, |
| NRARFCN *predict_freq_list); |
| |
| void mrs_get_predict_nrarfcn_table_by_band(kal_uint32 nr_band, mrs_freq_table_struct *nrarfcn_table); |
| kal_uint32 mrs_nras_gscn_to_nrarfcn(kal_uint32 gscn); |
| |
| void mrs_nras_plmn_id_to_mrs_plmn_id(const plmn_id_struct *src, mrs_plmn_id *dst); |
| |
| kal_uint16 mrs_nras_get_predict_freq_list_by_band( |
| MRS_SIM_INDEX sim_index, |
| const kal_uint32 band_list_num, |
| const kal_uint16 *band_list, |
| const NRARFCN *skip_freq_list, |
| const kal_uint16 skip_freq_list_num, |
| NRARFCN *predict_freq_list // kal_uint32 array[64] |
| ); |
| kal_uint16 mrs_nras_get_predict_freq_list_by_plmn( |
| MRS_SIM_INDEX sim_index, |
| const mrs_plmn_id_list *plmn_list, |
| const NRARFCN *skip_freq_list, |
| const kal_uint16 skip_freq_list_num, |
| NRARFCN *predict_freq_list); |
| |
| double mrs_nras_mcc_recog_centered_cosine_distance(const kal_int16 *data1, const kal_int16 *data2, kal_uint32 data_len); |
| kal_bool mrs_nras_mcc_recog_is_remarkable_band(kal_uint16 band); |
| mrs_nras_mcc_recog_mcc_list_struct mrs_nras_mcc_recog_get_mcc(mrs_nras_rssi_distribution_struct *rssi_distribution); |
| mrs_nras_mcc_recog_mcc_list_struct mrs_nras_mcc_recog_get_latest_mcc(); |
| #ifdef UNIT_TEST |
| void mrs_nras_mcc_recog_regression(); |
| #endif /* UNIT_TEST */ |
| #endif |