[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/l4/rac_vgmm_struct.h b/mcu/protocol/interface/l4/rac_vgmm_struct.h
new file mode 100644
index 0000000..f0cd013
--- /dev/null
+++ b/mcu/protocol/interface/l4/rac_vgmm_struct.h
@@ -0,0 +1,441 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *	rac_vgmm_struct.h
+ *
+ * Project:
+ * --------
+ *   6297
+ *
+ * Description:
+ * ------------
+ *   This file is intends for struct definition between RAC and VGMM
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+#ifndef _RAC_VGMM_STRUCT_H
+#define _RAC_VGMM_STRUCT_H
+
+#include "sim_ps_enum.h"
+#include "sim_public_enum.h"
+#include "l3_inc_enums.h"
+#include "vgnas_nvram_def.h"
+#include "l3_inc_local.h"
+#include "nas_nvram_editor.h"
+#include "l4c2rac_struct.h"
+#include "rac_eval_struct.h"
+
+/********************************************
+ *                  MACROS                  *
+ ********************************************/
+
+#define RAC_VGMM_NW_NAME_MAX_LEN    MAX_NW_NAME_LENGTH
+
+/********************************************
+ *         TYPE DEFINITIONS & ENUMS         *
+ ********************************************/
+
+typedef enum{
+    RAC_VGMM_EMS_ACQUIRE,
+    RAC_VGMM_EMS_RE_ACQUIRE,
+    RAC_VGMM_EMS_RELEASE
+}rac_vgmm_emergency_service_request_type_enum;
+
+typedef enum{
+    RAC_VGMM_EMS_CAUSE_NONE = 0,
+    RAC_VGMM_EMS_CAUSE_EPDU_FAILURE = 1,
+    RAC_VGMM_EMS_CAUSE_NUM
+}rac_vgmm_emergency_service_request_cause_enum;
+
+typedef enum
+{
+    RAC_VGMM_NORMAL_REGISTRATION,
+    RAC_VGMM_EMERGENCY_REGISTRATION
+} rac_vgmm_emergency_service_reg_type_enum;
+
+typedef enum{
+    RAC_VGMM_EMS_IND_CAUSE_NONE = 0,
+
+    //Success CNF response to EMERGENCY_SERVICE_REQ and EMS IND causes 
+    //that map to this value. 
+    RAC_VGMM_EMS_CNF_SUCCESS = 1,
+    RAC_VGMM_EMS_IND_ACTIVE = 2,
+
+    //Failure CNF response to EMERGENCY_SERVICE_REQ and EMS IND causes 
+    //that map to this value. 
+    RAC_VGMM_EMS_CNF_FAIL = 100,
+    RAC_VGMM_EMS_IND_BARRED = 101,
+    RAC_VGMM_EMS_IND_NO_CELL = 102,
+    RAC_VGMM_EMS_IND_CURRENT_PLMN = 103,
+    RAC_VGMM_EMS_IND_N1_NOT_ACTIVE = 104,
+    RAC_VGMM_EMS_IND_INACTIVE = 105,
+    RAC_VGMM_EMS_IND_ABNORMAL_TRY_OTHER_IPCAN = 106
+}rac_vgmm_emergency_service_cnf_cause_enum, rac_vgmm_emergency_service_cnf_result_enum;
+
+
+typedef enum{
+    RAC_VGMM_EMSFB_CAUSE_NONE = 0,
+
+    //Success CNF response to EMERGENCY_SERVICE_FALLBACK_REQ
+    RAC_VGMM_EMSFB_CNF_SUCCESS = 1,
+
+    //Failure CNF response to EMERGENCY_SERVICE_REQ
+    RAC_VGMM_EMSFB_CNF_FAIL = 200,
+    RAC_VGMM_EMSFB_BARRED = 201,
+    RAC_VGMM_EMSFB_NO_CELL = 202,
+    RAC_VGMM_EMSFB_CURRENT_PLMN = 203,
+    RAC_VGMM_EMSFB_N1_NOT_ACTIVE = 204,
+    RAC_VGMM_EMSFB_SERVICE_REQ_ABORT = 205, // Service request aborted due various reasons
+    RAC_VGMM_EMSFB_GEMINI_SUSPEND = 206
+}rac_vgmm_emergency_fallback_cnf_result_enum,rac_vgmm_emergency_fallback_cnf_cause_enum;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 pei_imei_spare;  
+    kal_uint8 pei_imei_sv[SIZE_OF_IMEISV]; 
+    kal_uint8 nvram_ef_5gs3gpploci[LEN_OF_5GS3GPPLOCI];
+    kal_uint8 nvram_ef_5gs3gppnsc[LEN_OF_5GS3GPPNSC];
+    nvram_ef_t3346_timer_info_struct t3346_info;
+    init_cause_enum init_cause;
+#ifdef __FIVEG_NAS__
+    nvram_ef_vgnas_5gmm_custom_config_struct vgnas_5gmm_custom_config;
+    nvram_ef_vgnas_5gmm_failure_list_struct vgnas_5gmm_failure_list;
+    kal_uint8 nvram_ef_5gauthkeys[LEN_OF_5GAUTHKEYS];
+#endif
+} rac_vgmm_init_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool full_name_for_nwP;
+    kal_uint8 full_name_for_nw_len;
+    kal_uint8 full_name_for_nw[RAC_VGMM_NW_NAME_MAX_LEN];
+    kal_bool short_name_for_nwP;
+    kal_uint8 short_name_for_nw_len;
+    kal_uint8 short_name_for_nw[RAC_VGMM_NW_NAME_MAX_LEN];
+    kal_bool local_time_zoneP;
+    kal_uint8 local_time_zone;
+    kal_bool uni_time_and_local_time_zoneP;
+    nw_time_zone_time_struct uni_time_and_local_time_zone;
+    kal_bool nw_daylight_saving_timeP;
+    kal_uint8 nw_daylight_saving_time;
+    plmn_id_struct plmn_id;
+} rac_vgmm_nw_info_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    vgmm_nw_feature_support_struct vg_nw_feature_support;
+} rac_vgmm_nw_feature_support_ind_struct;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool            is_ecc_changed;           // tell L4 if ecc changed
+    kal_uint8           no_ecc;
+    ecc_number_struct   ecc_list[MAX_NW_ECC_NUM];
+    kal_bool            is_eenl_changed;          // tell L4 if eenl changed
+    plmn_id_struct      eenl_plmn;
+} rac_vgmm_nw_ecc_ind_struct;
+
+typedef struct 
+{
+    LOCAL_PARA_HDR
+    sat_nw_rej_info_enum        op;
+    cell_info_and_rat_struct    current_cell;
+    sat_nw_rej_type_enum        type;
+    kal_uint8                   rej_cause;
+} rac_vgmm_nw_reject_ind_struct;
+
+typedef emmreg_ims_reg_status_update_req_struct rac_vgmm_ims_reg_status_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ims_service_type_enum   type;
+    ims_service_status_enum status;
+
+} rac_vgmm_ims_service_status_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8               trans_id;
+    ims_service_type_enum   type;
+    ims_service_status_enum status;
+    kal_uint8 src_id; //source id of this message (IMS or VDM)
+} rac_vgmm_ims_uac_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8   trans_id;
+    kal_uint8    src_id; //source id of this message (IMS or VDM)
+} rac_vgmm_ims_uac_abort_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8 trans_id;
+    ims_service_uac_result_enum result;
+    kal_uint8 src_id; //source id of this message (IMS or VDM)
+} rac_vgmm_ims_uac_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rac_vgmm_emergency_service_request_type_enum requested_ems_type;
+    rac_vgmm_emergency_service_request_cause_enum additional_ems_cause;
+} rac_vgmm_emergency_service_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rac_vgmm_emergency_service_cnf_result_enum cnf_result;
+    rac_vgmm_emergency_service_cnf_cause_enum cnf_result_cause;
+    rac_vgmm_emergency_service_reg_type_enum reg_type;
+    } rac_vgmm_emergency_service_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rac_vgmm_emergency_service_cnf_cause_enum emergency_service_status;
+} rac_vgmm_emergency_service_ind_struct;
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rac_vgmm_emergency_service_fallback_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    rac_vgmm_emergency_fallback_cnf_result_enum cnf_result;
+    rac_vgmm_emergency_fallback_cnf_cause_enum cnf_result_cause;
+} rac_vgmm_emergency_service_fallback_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint64 ac_bitmap;
+
+} rac_vgmm_ims_uac_alleviation_ind_struct;
+
+typedef l4crac_data_service_status_update_req_struct rac_vgmm_data_service_status_update_req_struct;
+typedef l4crac_user_selected_main_ps_req_struct rac_vgmm_user_selected_main_ps_req_struct;
+#if defined(__IMS_SUPPORT__)
+typedef l4crac_ims_config_req_struct rac_vgmm_ims_config_ind_struct;
+#endif /* __IMS_SUPPORT__ */
+
+#ifdef __FIVEG_NAS__
+typedef struct
+{
+    LOCAL_PARA_HDR
+    nvram_vgmm_reject_cause_mapping_record_struct mapping_table[NVRAM_VGMM_REJECT_CAUSE_MAPPING_SIZE];
+} rac_vgmm_reject_cause_mapping_req_struct;
+#endif /* __FIVEG_NAS__ */
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    data_speed_support_enum  cell_data_speed_support;
+    cell_info_and_rat_struct cell_info;
+
+} rac_vgmm_cell_info_update_ind_struct;
+
+typedef struct
+{
+    plmn_id_struct              plmn_id;  // for indicating the PLMN ID
+    kal_uint8                   configured_nssai_length;
+    kal_uint8                   configured_nssai[LEN_OF_NSSAI_LIST_LONG];
+    kal_uint8                   allowed_nssai_3gpp_length;
+    kal_uint8                   allowed_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   allowed_nssai_non3gpp_length;
+    kal_uint8                   allowed_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+} plmn_specific_nssai_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    kal_bool                    clear_nssai;
+    kal_uint8                   default_configured_nssai_length;
+    kal_uint8                   default_configured_nssai[LEN_OF_NSSAI_LIST_LONG];
+
+} rac_vgmm_set_nssai_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    kal_bool                    nssai_set_status;
+
+} rac_vgmm_set_nssai_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    vgs_nssai_cmd_type_enum     cmd_type;// for indicating the triggering AT cmd
+    kal_uint8                   nssai_type_bm;
+    kal_bool                    plmn_id_valid;
+    plmn_id_struct              plmn_id;
+
+} rac_vgmm_get_nssai_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    vgs_nssai_cmd_type_enum     cmd_type;// for indicating the triggering AT cmd
+    kal_uint8                   default_configured_nssai_length;
+    kal_uint8                   default_configured_nssai[LEN_OF_NSSAI_LIST_LONG];
+    kal_uint8                   rejected_nssai_3gpp_length;
+    kal_uint8                   rejected_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   rejected_nssai_non3gpp_length;
+    kal_uint8                   rejected_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    plmn_specific_nssai_struct  plmn_specific_nssai[NUM_NSSAI_PLMN_IDS];
+    kal_uint8                   preferred_nssai_3gpp_length;
+    kal_uint8                   preferred_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   preferred_nssai_non3gpp_length;
+    kal_uint8                   preferred_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+
+} rac_vgmm_get_nssai_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    kal_uint8                   clear_preferred_nssai;  // Bitfield, see SAP for details
+    kal_uint8                   preferred_nssai_3gpp_length;
+    kal_uint8                   preferred_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   preferred_nssai_non3gpp_length;
+    kal_uint8                   preferred_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+
+} rac_vgmm_set_pref_nssai_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   src_id;  // for indicating the channel ID
+    kal_bool                    nssai_set_status;
+
+} rac_vgmm_set_pref_nssai_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} rac_vgmm_5gsloci_clear_req_struct;
+
+typedef l4crac_vgmm_proc_failure_ind_struct rac_vgmm_proc_failure_ind_struct;
+
+typedef struct  {
+  vgs_ta_list_type_enum list_type;
+  plmn_id_struct plmn_id;
+  kal_uint8 number_of_tac;
+  kal_uint32 tac_list[VGNAS_MAX_TAI_LIST];    
+}vgnas_tai_list_single_plmn_struct;
+
+typedef struct {
+  vgs_ta_list_type_enum list_type;
+  vgnas_ta_list_struct tai_list;
+}vgnas_tai_list_multi_plmn_struct;
+
+/**
+ * TAI list structure with list type for MBIM_MS_TAI_LIST_INFO.
+*/
+typedef struct {
+  /* for  TA_LIST_TYPE_00 or TA_LIST_TYPE_01 */
+  kal_uint8 number_of_tai_list_single_plmn;
+  vgnas_tai_list_single_plmn_struct tai_list_single_plmn[VGNAS_MAX_TAI_LIST];
+
+  /*for TA_LIST_TYPE_10 */
+  vgnas_tai_list_multi_plmn_struct  tai_list_multi_plmn;
+} vgnas_tai_list_with_list_type_struct;
+
+/**
+ * LADN  list structure with TAI list for MBIM_MS_TAI_LIST_INFO.
+*/
+typedef struct {
+  apn_struct dnn;
+  vgnas_tai_list_with_list_type_struct tai_list;    
+} ladn_info_with_tai_list_type_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint8                   default_configured_nssai_length;
+    kal_uint8                   default_configured_nssai[LEN_OF_NSSAI_LIST_LONG];
+    kal_uint8                   rejected_nssai_3gpp_length;
+    kal_uint8                   rejected_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   rejected_nssai_non3gpp_length;
+    kal_uint8                   rejected_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   configured_nssai_length;
+    kal_uint8                   configured_nssai[LEN_OF_NSSAI_LIST_LONG];
+    kal_uint8                   allowed_nssai_3gpp_length;
+    kal_uint8                   allowed_nssai_3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    kal_uint8                   allowed_nssai_non3gpp_length;
+    kal_uint8                   allowed_nssai_non3gpp[LEN_OF_NSSAI_LIST_SHORT];
+    vgnas_tai_list_with_list_type_struct        ta_list; 
+    kal_uint8                   num_of_ladn_info;
+    ladn_info_with_tai_list_type_struct   ladn_info[MAX_LADN_INFO];
+} rac_vgmm_nw_params_ind_struct;
+/********************************************
+ *                VARIABLES                 *
+ ********************************************/
+
+
+/********************************************
+*           FUNCTION DECLARATIONS          *
+********************************************/
+
+#endif /* _RAC_VGMM_STRUCT_H */