[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/general/mrs_nras_search.h b/mcu/protocol/interface/general/mrs_nras_search.h
new file mode 100644
index 0000000..f8266d6
--- /dev/null
+++ b/mcu/protocol/interface/general/mrs_nras_search.h
@@ -0,0 +1,99 @@
+#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