[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/general/gmss_nwsel_struct.h b/mcu/protocol/interface/general/gmss_nwsel_struct.h
new file mode 100644
index 0000000..57a4b32
--- /dev/null
+++ b/mcu/protocol/interface/general/gmss_nwsel_struct.h
@@ -0,0 +1,1293 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * ---------
+ *  gmss_nwsel_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for struct definition between NWSEL and GMSS.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+#ifndef _GMSS_NWSEL_STRUCT_H
+#define _GMSS_NWSEL_STRUCT_H
+
+#include "kal_general_types.h"
+#include "l3_inc_enums_public.h"
+#include "l3_inc_enums.h"
+#include "mcd_l3_inc_struct.h"
+#include "ps_public_enum.h"
+#include "l3_inc_local.h"
+#include "mm_mmi_enums.h"
+
+#ifdef __LTE_RAT__
+#include "nvram_data_items.h"
+#include "nvram_editor_data_item.h"
+#endif
+
+#ifdef __IMS_SUPPORT__
+#include "ims_common_def.h"
+#include "ims_interface_md.h"
+#endif /* __IMS_SUPPORT__ */
+
+#include "rsvas_enum.h"
+#include "gmss_public.h"
+#include "rac_gmss_struct.h"
+#include "nwsel_eval_struct.h"
+#include "gmss_cval_struct.h"
+#include "nas_sv_css_struct.h"
+
+#include "nvram_editor_data_item.h"
+#include "nas_nvram_editor.h"
+#include "sim_ps_struct.h"
+#include "sim_public_enum_public.h"
+#include "mmss_def.h"
+#include "nvram_struct.h"
+#include "rac2l4c_struct.h"
+#include "l3_inc_enums.h"
+#include "nas_sv_struct.h"
+
+#include "l4c2rac_struct.h"
+#include "rac2l4c_struct.h"
+
+/* GMSS -> NWSEL */
+typedef rac_gmss_init_req_struct gmss_nwsel_init_req_struct;
+typedef rac_gmss_custom_plmn_list_update_req_struct gmss_nwsel_custom_plmn_list_update_req_struct;
+typedef rac_gmss_get_custom_plmn_list_req_struct gmss_nwsel_get_custom_plmn_list_req_struct;
+typedef rac_gmss_get_custom_plmn_list_cnf_struct gmss_nwsel_get_custom_plmn_list_cnf_struct;
+typedef rac_gmss_uemode_param_update_req_struct gmss_nwsel_uemode_param_update_req_struct;
+typedef rac_gmss_volte_status_update_req_struct gmss_nwsel_volte_status_update_req_struct;
+typedef rac_gmss_call_status_req_struct gmss_nwsel_call_status_ind_struct;
+
+typedef rac_gmss_set_plmn_barring_timer_req_struct gmss_nwsel_set_plmn_barring_timer_req_struct;
+typedef rac_gmss_set_plmn_barring_timer_cnf_struct gmss_nwsel_set_plmn_barring_timer_cnf_struct;
+typedef rac_gmss_get_plmn_barring_timer_req_struct gmss_nwsel_get_plmn_barring_timer_req_struct;
+typedef rac_gmss_get_plmn_barring_timer_cnf_struct gmss_nwsel_get_plmn_barring_timer_cnf_struct;
+typedef rac_gmss_ims_timer_status_update_req_struct gmss_nwsel_ims_timer_status_update_req_struct;
+typedef rac_gmss_abort_enwsel_search_req_struct gmss_nwsel_abort_enwsel_search_req_struct;
+typedef rac_gmss_ims_call_end_status_ind_struct gmss_nwsel_ims_call_end_status_ind_struct;
+typedef rac_gmss_set_ims_roaming_config_req_struct gmss_nwsel_set_ims_roaming_config_req_struct;
+typedef rac_gmss_set_prefer_rat_req_struct gmss_nwsel_set_prefer_rat_req_struct;
+typedef rac_gmss_get_prefer_rat_req_struct gmss_nwsel_get_prefer_rat_req_struct;
+typedef rac_gmss_get_prefer_rat_cnf_struct gmss_nwsel_get_prefer_rat_cnf_struct;
+typedef rac_gmss_camp_ui_ind_struct gmss_nwsel_camp_ui_ind_struct;
+#ifdef __MBIM_MS_NETWORK_BLACKLIST__
+typedef rac_gmss_fplmn_action_cnf_struct gmss_nwsel_fplmn_action_cnf_struct;
+typedef rac_gmss_nw_black_list_state_ind_struct gmss_nwsel_nw_black_list_state_ind_struct;
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_selection_mode_enum plmn_sel_mode;
+} gmss_nwsel_sel_mode_req_struct;
+
+typedef nas_sv_any_attach_req_struct gmss_nwsel_attach_req_struct;
+
+typedef nas_sv_any_detach_req_struct gmss_nwsel_detach_req_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_reselection_enum plmn_search_mode;       /* plmn_reselection_enum */
+    plmn_id_rat_struct selected_plmn; /* Selected PLMN */
+    kal_bool is_manual_csg_sel;
+    kal_uint32 csg_id;
+    rat_enum prefer_rat;   //  0:default ,  1:GSM ,   2:UMTS
+    kal_bool from_l4c;
+    kal_uint32 factory_mode_arfcn; //0xFFFF means invalid arfcn, /* 20081110 mtk00714, for fast camp on test machine */
+    endc_search_enum endc_search; /* Search ENDC cell or not for LTE cell. */
+} gmss_nwsel_rac_plmn_search_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_rat_struct plmn_id_rat;
+} gmss_nwsel_rac_csg_list_req_struct;
+
+typedef nas_sv_gmss_set_rat_mode_req_struct gmss_nwsel_set_rat_mode_req_struct;
+
+typedef nas_sv_any_rfoff_req_struct gmss_nwsel_rfoff_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_supporting_roaming;
+    kal_bool disable_international_roaming_support;
+    kal_bool disable_national_roaming_support;
+    kal_bool disable_hhplmn_search_support;
+} gmss_nwsel_set_roaming_mode_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    elevator_mode_enum elevator_mode;
+}gmss_nwsel_elevator_mode_req_struct;
+
+/* NWSEL -> GMSS */
+
+typedef nwsel_eval_c2k_csfb_start_ind_struct gmss_nwsel_c2k_csfb_start_ind_struct;
+typedef nwsel_eval_c2k_csfb_est_ind_struct gmss_nwsel_c2k_csfb_est_ind_struct;
+typedef nwsel_eval_c2k_csfb_stop_ind_struct gmss_nwsel_c2k_csfb_stop_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;          /* proc_status_enum */
+    mm_cause_enum cause;           /* mm_cause_enum */
+    kal_bool is_on_hplmn;
+    cell_info_and_rat_struct cell_info;
+} gmss_nwsel_rac_plmn_search_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;         /* proc_status_enum */
+    mm_cause_enum  cause;          /* mm_cause_enum */
+    kal_uint8 num_of_hplmn;
+    rac_plmn_list_struct plmn_list;
+    list_ind_source_enum source;
+    prio_class_enum gmss_class_list[RAC_MAX_NUM_LISTED_PLMNS];
+    kal_bool is_C2K_sib_scheduled;
+} gmss_nwsel_rac_plmn_list_cnf_struct;
+
+typedef gmss_nwsel_rac_plmn_list_cnf_struct gmss_nwsel_plmn_list_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 susp_id;
+    susp_resu_source_enum target;
+} gmss_nwsel_suspend_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum status;
+    mm_cause_enum cause;
+    rac_csg_list_struct csg_list;
+} gmss_nwsel_rac_csg_list_cnf_struct;
+
+typedef nas_sv_gmss_set_rat_mode_cnf_struct gmss_nwsel_set_rat_mode_cnf_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_not_suspend; /* indicate if is_searching = TRUE is due to Gemini suspend */
+    kal_bool is_update_is_searching; /* if TRUE, RAC can check is_searching flag */
+    kal_bool is_searching;
+    kal_bool is_camp_on_cell; /* if is_searching = FALSE && is_camp_on_cell = FALSE, then RAC update to L4C;
+                                 else, ignore the is_searching flag.  */
+    kal_bool is_on_hplmn;
+    kal_bool is_update_active_rat;
+    rat_enum active_rat;
+//#ifdef __KOR_CUSTOMIZATION__
+    plmn_id_struct rplmn;     /* Get RPLMN */
+//#endif
+} gmss_nwsel_plmn_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nwsel_ims_service_enum service_type;
+    kal_bool is_t311_expire;  /* RRC connection release due to RRC T311 timer expire */
+} gmss_nwsel_ims_service_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool enter_cause18_plmn;
+} gmss_nwsel_cs_domain_availability_ind_struct;
+
+
+typedef struct {
+    LOCAL_PARA_HDR
+    susp_resu_action_enum action;
+    susp_resu_result_enum result;
+    susp_resu_source_enum target;
+} gmss_nwsel_susp_resu_update_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    susp_resu_mode_enum  mode;
+    susp_resu_action_enum action;
+    kal_uint8            susp_id;
+    susp_resu_source_enum source;
+} gmss_nwsel_susp_resu_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 timer_interval[MAX_RECOVERY_TIMER_NUM];
+} gmss_nwsel_set_recovery_search_timer_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32 timer_interval[MAX_RECOVERY_TIMER_NUM];
+} gmss_nwsel_get_recovery_search_timer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool result;
+} gmss_nwsel_set_recovery_search_timer_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_struct plmn;
+    rat_enum rat;
+    kal_uint8 ara_start[2];
+    kal_uint8 ara_end[2];
+}gmss_nwsel_aral_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    voice_domain_preference_enum utran_voice_domain_preference;
+} gmss_nwsel_set_utran_voice_domain_preference_req_struct;
+
+typedef rac_gmss_data_service_status_update_req_struct gmss_nwsel_data_service_status_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+
+    /* The MMSS search type.
+    */
+    mmss_search_type_enum   mmss_search_type;
+
+    /* The search RAT, only valid for MMSS_SEARCH_NORMAL.
+    */
+    rat_enum rat;
+
+    /* The search prio_class, only valid for MMSS_SEARCH_NORMAL.
+    */
+    prio_class_enum gmss_class;
+
+    /* The search duplex type.
+    */
+    lte_duplex_type_enum duplex_type;
+
+    /* The search target's MCC. NWSEL will ignore PLMNs not in this MCC.
+    ** Only mcc1, mcc2, mcc3 fields are valid.
+    ** If the value are all 0x0F, it means no MCC restriction.
+    **  Note: This field only valid for MMSS_SEARCH_NORMAL.
+    */
+    plmn_id_struct mcc;
+
+    /* scan type for fast roaming.
+    */
+    scan_type_enum          scan_type;
+
+    /* ims emergency cell required controlled by GMSS
+    */
+    kal_bool is_ims_emergency_required;
+
+    /* The MMSS search list(ie. MRU, RAL).
+    */
+    mmss_3gpp_list_struct   mmss_list;
+
+    /* Search type, e.g stored ,quick or normal.
+    */
+    gmss_search_type_enum gmss_search_type;
+
+    kal_bool is_srlte;
+
+    kal_bool is_to_deactivate_c2k_cs_service;
+
+    // is first search after power-on
+    kal_bool is_power_on;
+
+    /* notify NWSEL if this is for better system reselection, replace MMSS_SEARCH_BETTER_SYSTEM_RESELECTION*/
+    kal_bool is_bsr;
+
+    /* notify NWSEL which camping cell VDM is used now. only for emergency call */
+    kal_uint16 camping_info_id;
+} gmss_nwsel_plmn_search_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    proc_status_enum proc_status;
+    rat_enum rat;
+    prio_class_enum gmss_class;
+    mm_cause_enum proc_cause;
+    mm_cause_enum nw_mm_cause;
+    esm_cause_enum esm_cause;
+} gmss_nwsel_plmn_search_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    lte_duplex_type_enum duplex_type;
+    plmn_id_struct mcc; /* only mcc1, mcc2, mcc3 are valid, for NWSEL to ignore PLMNs not in this MCC */
+    prio_class_enum quick_list_class; /* Home or PREF: quick list; others: normal list*/
+    scan_type_enum          scan_type;
+    kal_bool is_elevator_mode;
+} gmss_nwsel_plmn_list_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_user_plmn_list_ongoing;
+} gmss_nwsel_plmn_list_status_update_req_struct;
+
+typedef rac_gmss_plmn_list_req_struct gmss_nwsel_rac_plmn_list_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_struct mcc; /* only mcc1, mcc2, mcc3 are valid, for NWSEL to ignore PLMNs not in this MCC */
+    prio_class_enum quick_list_class; /* Home or PREF: quick list; others: normal list*/
+    gmss_rat_enum c2k_ps_rat; /* 1xRTT or HRPD */
+} gmss_nwsel_c2k_normal_service_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    proc_status_enum proc_status;
+    prio_class_enum gmss_class;     // Only count plmn with suitable cell.
+    mm_cause_enum cause;
+    rac_plmn_list_struct plmn_list; // All available plmn including forbidden and may_suitable_cell_exist=FALSE.
+    prio_class_enum gmss_class_list[RAC_MAX_NUM_LISTED_PLMNS];     //mapping to plmn_list.plmn_id_rat[RAC_MAX_NUM_LISTED_PLMNS]
+} gmss_nwsel_plmn_list_cnf_struct;
+
+#ifdef __GEMINI__
+typedef struct {
+    LOCAL_PARA_HDR
+    as_suspend_mode_reason_enum cause;
+} gmss_nwsel_suspend_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_virtual_idle_mode;
+} gmss_nwsel_resume_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_virtual_idle_mode;
+} gmss_nwsel_virtual_mode_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_limited_virtual_idle;
+} gmss_nwsel_limited_virtual_idle_ind_struct;
+
+#endif /* __GEMINI__ */
+
+typedef struct {
+    LOCAL_PARA_HDR
+    mm_cause_enum cause;        /* FORBIDDEN_PLMN for limited service; NO_COVERAGE for no coverage */
+    plmn_id_rat_struct plmn_id;
+    kal_bool immediate_duplex_mode_change;
+} gmss_nwsel_out_of_service_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    prio_class_enum gmss_class;
+    rat_enum rat;
+} gmss_nwsel_class_rat_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    nwsel_event_type_enum event;
+} gmss_nwsel_event_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_controlled_by_gmss;
+} gmss_nwsel_gmss_status_update_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool reset_bar_list;
+} gmss_nwsel_reset_search_result_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    irat_type_enum irat_type;
+    c2k_irat_attach_result_enum result;
+} gmss_nwsel_c2k_irat_complete_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    as_sniffer_req_service_enum sniffer_service_type;
+} gmss_nwsel_sniffer_start_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;
+} gmss_nwsel_sniffer_stop_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;
+} gmss_nwsel_signal_appear_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    nvram_gmss_data_struct gmss_data;
+    //Use access_id = 0 to ignore NVRAM_WRITE_CNF
+    //    access_id = 0x10~0x1f to wait NVRAM_WRITE_CNF of NVRAM_EF_NWSEL_DATA_LID
+    kal_uint8 access_id;
+} gmss_nwsel_nvram_write_req_struct;
+
+typedef nvram_write_cnf_struct gmss_nwsel_nvram_write_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    prio_class_enum prio_class;
+    rat_enum rat;               /* used to notify nwsel mspl rat when suspend/resume */
+} gmss_nwsel_prio_class_update_req_struct;
+
+typedef sim_gmss_ready_ind_struct gmss_nwsel_sim_ready_req_struct;
+
+typedef sim_error_ind_struct gmss_nwsel_sim_error_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    act_sim_enum  active_sim;
+} gmss_nwsel_active_sim_info_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    kal_uint8 rat_num;
+    rat_enum rat[MAX_MCC_SEARCH_RAT_NUM];
+    gmss_search_type_enum gmss_search_type;
+    kal_bool is_power_on;    // is first search after power-on
+} gmss_nwsel_mcc_search_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 trx_id;
+    proc_status_enum proc_status;
+    kal_uint8 plmn_count;
+    plmn_id_rat_struct plmn_id_rat[RAC_MAX_NUM_LISTED_PLMNS];
+} gmss_nwsel_mcc_search_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_struct plmn_id;
+} gmss_nwsel_disable_eutran_req_struct;
+
+typedef l4crac_nw_reg_status_ind_struct gmss_nwsel_reg_status_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool data_enabled_setting;
+    kal_bool data_roaming_setting;
+} gmss_nwsel_roaming_data_config_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_bool              is_sim_ready;
+    kal_uint8             trx_id;
+
+    // HOME+EHOME PLMN
+    // If num_of_ehplmn > 4(MAX_NUM_HPLMN), fill MAX_NUM_HPLMN at most
+    // num_of_ehplmn will be the number in this message
+    // is_remaining_ehplmn indicates the last ehplmn or not
+    kal_bool              is_remaining_ehplmn;
+    kal_uint16            num_of_ehplmn;
+    plmn_id_rat_struct    ehplmn[PLMN_INFO_MAX_NUM_HPLMN];
+
+    // PREFER PLMN
+    // If num_of_uplmn > 32(NWSEL_MAX_NUM_PLMNS), fill NWSEL_MAX_NUM_PLMNS PLMN at most.
+    // num_of_uplmn will be the number in this message
+    // is_remaining_uplmn indicates the last uplmn or not
+    kal_bool              is_remaining_uplmn;
+    kal_uint16            num_of_uplmn;
+    plmn_id_rat_struct    uplmn[NWSEL_MAX_NUM_PLMNS];
+
+    // If num_of_oplmn > 32(NWSEL_MAX_NUM_PLMNS), fill NWSEL_MAX_NUM_PLMNS PLMN at most.
+    // num_of_oplmn will be the number in this message
+    // is_remaining_oplmn indicates the last oplmn or not
+    kal_bool              is_remaining_oplmn;
+    kal_uint16            num_of_oplmn;
+    plmn_id_rat_struct    oplmn[NWSEL_MAX_NUM_PLMNS];
+} gmss_nwsel_plmn_info_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    umts_duplex_mode_type   source_umts_duplex_mode;
+    umts_duplex_mode_type   target_umts_duplex_mode;
+    lte_duplex_mode_type    source_lte_duplex_mode;
+    lte_duplex_mode_type    target_lte_duplex_mode;
+    mode_switch_cause_enum  cause;
+    plmn_id_rat_struct      plmn_id_rat; // only valid when mode_switch_cause == MODE_SWITCH_PLMN_CHANGE
+                                         // if rat is C2K, only MCC part is valid
+    kal_bool                need_cnf;
+} gmss_nwsel_duplex_mode_change_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    mode_switch_cause_enum  cause;
+} gmss_nwsel_global_mode_change_start_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool voice_over_ims_ongoing;
+} gmss_nwsel_ims_call_info_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum               rat;
+    plmn_id_struct         plmn_id;
+} gmss_nwsel_set_aux_plmn_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    set_aux_plmn_result_enum  result;
+} gmss_nwsel_set_aux_plmn_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum               rat;
+    plmn_id_struct         plmn_id;
+    kal_uint16             arfcn;
+    kal_uint8              requested_band;
+} gmss_nwsel_set_mru_req_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    set_mru_result_enum result;
+} gmss_nwsel_set_mru_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_attach_needed;
+} gmss_nwsel_rat_change_success_notify_req_struct;
+
+/* NOTE: this primitive need to report in LWCG mode and even GWL only mode */
+typedef struct {
+    LOCAL_PARA_HDR
+
+    /**< the latest camping record  */
+    mmss_3gpp_rec_type       new_rec;
+
+    /**< indicate if the record is registered or not  */
+    kal_bool                 is_registered;
+
+    /**< indicate if the cell support ims emergency call, only applicable when LTE cell  */
+    kal_bool                 is_ims_emergency_support;
+
+    /**< indicate the current cell info trx id, used by VDM/GMSS/NWSEL to distinguish the emergency call cell used  */
+    kal_uint16               camping_info_id;
+
+} gmss_nwsel_camping_info_ind_struct;
+
+// new primitive for AS IRAT stage 1 success
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_attach_needed;
+} gmss_nwsel_irat_c2l_success_notify_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_based_timer_enum timer_type;
+    timer_status_enum timer_status;
+    plmn_id_struct target_plmn;
+    plmn_restrict_additional_information_enum event;
+} gmss_nwsel_plmn_restriction_change_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8  trx_id;
+    kal_uint16 last_idx_of_ehplmn;
+    kal_uint16 last_idx_of_oplmn;
+    kal_uint16 last_idx_of_uplmn;
+} gmss_nwsel_plmn_info_rsp_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum rat;
+} gmss_nwsel_set_first_camp_on_prefer_rat_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool  bEvdoEnterConnection;  /* TRUE, means EVDO has been in PS connection state; else, EVDO has been in idle state. */
+} gmss_nwsel_evdo_ps_connection_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool  b1xRttEnterConnection;  /* TRUE, means 1xRTT has been in PS connection state; else, 1xRTT has been in idle state. */
+} gmss_nwsel_1xrtt_ps_connection_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    hvolte_mode_enum    source_hvolte_mode;            /** indicate original hvolte mode */ // enum defined in ims_common_def.h
+    hvolte_mode_enum    target_hvolte_mode;            /** indicate source hvolte mode */ // enum defined in ims_common_def.h
+    kal_bool            is_silent_redial_and_call_ongoing;
+} gmss_nwsel_hvolte_mode_change_req_struct;
+
+#ifdef __NWSEL_QUICK_SEARCH_FOR_ROAMING__
+typedef l4crac_high_prio_search_timer_config_req_struct gmss_nwsel_high_prio_search_timer_config_req_struct;
+#endif
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_enum              rat;                           /* only valid when emc_bar_type !=  EMC_BAR_TYPE_NONE */
+    plmn_id_struct        plmn_id;                       /* only valid when emc_bar_type !=  EMC_BAR_TYPE_NONE */
+    kal_uint16            band;                          /* only valid when emc_bar_type !=  EMC_BAR_TYPE_NONE */
+} gmss_nwsel_emc_bar_network_req_struct;
+
+//#ifdef __KOR_CUSTOMIZATION__
+typedef struct {
+    LOCAL_PARA_HDR
+    plmn_id_struct rplmn;    /* Get RPLMN */
+} gmss_nwsel_rplmn_ind_struct;
+//#endif
+
+typedef l4crac_fplmn_action_req_struct gmss_nwsel_fplmn_action_req_struct;
+
+typedef l4crac_nw_reg_rej_ind_struct gmss_nwsel_nw_reg_rej_ind_struct;
+
+typedef l4crac_plmn_found_ind_struct gmss_nwsel_rac_plmn_found_ind_struct;
+
+typedef l4crac_set_allowed_mcc_list_req_struct gmss_nwsel_set_allowed_mcc_list_req_struct;
+typedef l4crac_set_allowed_mcc_list_cnf_struct gmss_nwsel_set_allowed_mcc_list_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    recover_cause_enum     cause;
+} gmss_nwsel_rac_invalid_sim_recover_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+} gmss_nwsel_gmss_irat_start_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    rat_type_enum source_rat;
+    rat_type_enum target_rat;
+} gmss_nwsel_gmss_irat_finish_ind_struct;
+
+typedef nas_sv_css_mcc_search_req_struct gmss_nwsel_css_mcc_search_req_struct;
+typedef nas_sv_css_mcc_search_cnf_struct gmss_nwsel_css_mcc_search_cnf_struct;
+typedef nas_sv_css_ps_reg_req_struct gmss_nwsel_css_ps_reg_req_struct;
+typedef nas_sv_css_ps_reg_cnf_struct gmss_nwsel_css_ps_reg_cnf_struct;
+typedef nas_sv_css_cs_reg_req_struct gmss_nwsel_css_cs_reg_req_struct;
+typedef nas_sv_css_cs_reg_cnf_struct gmss_nwsel_css_cs_reg_cnf_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool is_ims_support;
+} gmss_nwsel_ims_vops_support_status_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_special_event_enum          ims_event;
+    kal_uint16                      sip_cause;
+} gmss_nwsel_ims_reg_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum disable_rat;
+} gmss_nwsel_rat_disable_config_req_struct;
+
+typedef rac_gmss_data_allow_req_struct gmss_nwsel_data_allow_req_struct;
+
+typedef gmss_cval_send_dan_sms_ind_struct gmss_nwsel_send_dan_sms_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_invalid;
+    plmn_id_struct    plmn_id;
+} gmss_nwsel_illegal_me_ind_struct;
+
+#if defined(__LTE_RAT__) && (defined(__GSM_RAT__) || defined(__UMTS_RAT__))
+typedef nwsel_eval_power_on_protection_req_struct gmss_nwsel_power_on_protection_req_struct;
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32            trx_id;         /* Transaction ID */
+    rat_enum              available_rat;  /* rat need to be searched */
+    rat_enum              prefer_rat;     /* subset of available rat, search those RAT first. RATN_NONE if no preference */
+    module_type           source;         /* The source module of this service scan */
+} gmss_nwsel_service_scan_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32            trx_id;   /* Transaction ID */
+    proc_status_enum      status;   /* PROC_SUCCESS, PROC_FAILED or PROC_REJECTED */
+    module_type           source;   /* The source module of this service scan */
+} gmss_nwsel_service_scan_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool normal_oos_recovery_round_present;
+    kal_uint8 normal_oos_recovery_round; /* default value =5, range [2,10] */
+    kal_bool inactive_fullband_period_present;
+    kal_uint16 inactive_fullband_period; /* default value =200s, range [90,360] */
+    kal_bool inactive_sniffer_period_present;
+    kal_uint8 inactive_sniffer_period; /* default value =30s, range [10,60] */
+    kal_bool is_inactive_mode_present;
+    kal_bool is_inactive_mode; /* TRUE: Enter inactive mode, FALSE: Leave inactive mode*/
+} gmss_nwsel_inactive_mode_configuration_req_struct;
+
+typedef rac_gmss_screen_on_req_struct gmss_nwsel_screen_on_req_struct;
+typedef rac_gmss_try_switch_rat_result_ind_struct gmss_nwsel_try_switch_rat_result_ind_struct;
+
+typedef nwsel_nas_sv_sys_info_update_ind_struct gmss_nwsel_sys_info_update_ind_struct;
+typedef nwsel_nas_sv_plmn_found_ind_struct gmss_nwsel_plmn_found_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    plmn_search_status_enum plmn_search_status;
+    regn_proc_status_enum regn_proc_stastus;
+} gmss_nwsel_regn_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                    is_over_inactive_mode_threshold; // True: first scan and sleep is done
+} gmss_nwsel_service_recovery_round_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rat_enum rat;
+    network_scan_rat_union_type  nw_scan_rat_output;
+    nwsel_plmn_list_status_enum   status;
+} gmss_nwsel_rac_plmn_scan_ind_struct;
+
+#endif