[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/ims/atp_imc_struct.h b/mcu/protocol/interface/ims/atp_imc_struct.h
new file mode 100644
index 0000000..82c1bc4
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_imc_struct.h
@@ -0,0 +1,2003 @@
+/*****************************************************************************
+* 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).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *==============================================================================
+ * 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!
+ * 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!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _ATP_IMC_STRUCT_H
+#define _ATP_IMC_STRUCT_H
+
+#include "l3_inc_local.h"
+#include "l3_inc_enums.h"
+#include "ps_public_enum.h"
+#include "sim_public_enum.h"
+#include "imc_msgid.h"
+#include "ims_common_def.h"
+
+typedef enum
+{
+ IMS_CS_CALL_START = 0,
+ IMS_CS_CALL_END,
+ IMS_CS_CALL_OTHERS,
+} ims_cs_call_status_enum;
+
+typedef enum
+{
+ VOICE_DOMAIN_STATUS_START = 0,
+ VOICE_DOMAIN_STATUS_STOP
+}voice_domain_status_enum;
+
+typedef enum
+{
+ IMS_1X_CALL_END = 0,
+ IMS_1X_CALL_START,
+ IMS_1X_CALL_OTHERS,
+} ims_1x_call_status_enum;
+
+/*************************/
+/* IMS Registration enum */
+/*************************/
+typedef enum {
+ IMS_VOPS_NOT_SUPPORTED = 0,
+ IMS_VOPS_SUPPORTED
+} vops_enum;
+
+// mirror from rmmi_reg_state_enum and nas_reg_status_enum @/mcu/modem/interface/ims/vdm_atp_struct.h
+typedef enum
+{
+ NAS_PS_REG_STATUS_NOT_REGISTERED = 0,
+ NAS_PS_REG_STATUS_REGISTERED_HOME,
+ NAS_PS_REG_STATUS_NOT_REGISTERED_SEARCHING,
+ NAS_PS_REG_STATUS_REG_DENIED,
+ NAS_PS_REG_STATUS_OUT_OF_COVERAGE,
+ NAS_PS_REG_STATUS_REGISTERED_ROAMING,
+ NAS_PS_REG_STATUS_SMS_ONLY_HOME,
+ NAS_PS_REG_STATUS_SMS_ONLY_ROAMING,
+ NAS_PS_REG_STATUS_EMERGENCY_ONLY,
+ NAS_PS_REG_STATUS_CSFB_NOT_PREFERRED_HOME,
+ NAS_PS_REG_STATUS_CSFB_NOT_PREFERRED_ROAMING
+} nas_ps_reg_status_enum;
+
+typedef enum
+{
+ WIFI_STATE_OFF = 0,
+ WIFI_STATE_ON
+}wifi_state_enum;
+
+typedef enum
+{
+ WIFI_STATE_CAUSE_GENERAL = 0,
+ WIFI_STATE_CAUSE_UI_DISABLE,
+ WIFI_STATE_CAUSE_MAX
+}wifi_state_cause_enum;
+
+typedef enum
+{
+ WIFI_STATE_TARGET_RAN_UNKNOWN = 0,
+ WIFI_STATE_TARGET_RAN_3GPP = 1,
+ WIFI_STATE_TARGET_RAN_WIFI = 2,
+ WIFI_STATE_TARGET_RAN_NONE = 254,
+ WIFI_STATE_TARGET_RAN_MAX = 255
+}wifi_state_target_ran_enum;
+
+typedef enum
+{
+ IMS_DEREG_CAUSE_BY_NONE = 0,
+ IMS_DEREG_CAUSE_BY_DATA_DEATTACH,
+ IMS_DEREG_CAUSE_BY_SS_CONFIG,
+ IMS_DEREG_CAUSE_BY_IMS_RECONFIG,
+ IMS_DEREG_CAUSE_BY_D2,
+ IMS_DEREG_CAUSE_BY_D2_REFRESH,
+ IMC_DEREG_CAUSE_BY_MAX
+}ims_dereg_cause_by_enum;
+
+typedef enum
+{
+ IMS_RF_OFF_TYPE_UNSPEC = 0,
+ IMS_RF_OFF_TYPE_EFUN = 1,
+ IMS_RF_OFF_TYPE_CFUN = 2
+}ims_rf_off_type_enum;
+
+typedef enum
+{
+ ECBM_STATE_STOP = 0,
+ ECBM_STATE_START = 1
+}ecbm_state_enum;
+
+typedef enum
+{
+ ECBM_CAUSE_TIMER_EXPIRED = 0,
+ ECBM_CAUSE_ANOTHER_CALL = 1,
+ ECBM_CAUSE_URC_TO_AP = 2, //IMC ignore when state is STOP
+}ecbm_cause_enum;
+
+typedef enum {
+ ATP_EGMC_OP_QUERY = 0,
+ ATP_EGMC_OP_SET,
+} atp_egmc_op_enum;
+
+typedef enum{
+ ATP_IMC_DRP_FLUSH_NVRAM = 0,
+ ATP_IMC_DRP_DUMP_TO_NVRAM,
+}atp_imc_drp_enum;
+/*
+* This enum only use for unblocking AT+ECCTRL to indicate AP should wait for network's response.
+* This enum values should be aligned with ims_cc_result_enum, using unused value of ims_cc_result_enum.
+*/
+typedef enum{
+ WAITING_FOR_NW_RESPONSE = -128,
+}CALL_CONTROL_PROVISIONAL_RESULT;
+
+typedef enum {
+ IMS_ECCTRL_STATE_CHANGE_HELD = 131,
+ IMS_ECCTRL_STATE_CHANGE_ACTIVE = 132
+} ims_ecctrl_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_result_code_enum result;
+ ims_err_id_enum err_id;
+} atp_imc_common_at_rsp_struct;
+typedef atp_imc_common_at_rsp_struct atp_imc_common_at_cnf_struct;
+/*******************************/
+/* IMS Registration interface */
+/*******************************/
+/*
+ * Description
+ * - the primitive is used for PS to notify IMC that the operation modes for collecting
+ * - six conditions which mentioned in TS24.229 Annex L3.1.2.
+ * Direction
+ * - PS -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ue_mode_enum ue_mode_op;
+} atp_imc_ue_mode_update_req_struct;
+
+/*
+ * Description
+ * - the primitive is used for PS to notify IMC that UE is attached to NW or not, and IMSVoPS indicator
+ * - six conditions which mentioned in TS24.229 Annex L3.1.2.
+ * Direction
+ * - PS -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+#if 0
+/* under construction !*/
+#endif
+ vops_enum ims_vops;
+} atp_imc_imsvops_notification_req_struct;
+
+/*
+ * Description
+ * - the primitive is used for PS to notify IMC rat_type, cell_id, PLMN_type
+ * Direction
+ * - PS -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_rat_type_enum rat_type;
+ kal_uint32 cell_id;
+ cell_service_enum cell_service;
+ plmn_id_struct plmn_id;
+ plmn_type_enum plmn_type;
+ kal_uint8 la_code[2];
+ kal_uint8 ta_code[2];
+ kal_bool limited_service_emc_support;
+ domain_id_enum domain;
+ kal_bool is_empty_cell;
+} atp_imc_cell_info_update_req_struct;
+typedef atp_imc_cell_info_update_req_struct atp_imc_eimsinfo_req_struct;
+
+
+/*
+ * Description
+ * - the primitive is used for IMC identifing core network is support Emergency Bearer Service or not
+ * Direction
+ * - PS -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_emb_s1_support;
+} atp_imc_emb_s1_supp_req_struct; /* Obsolete: to be removed after code change */
+
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_access_rat_enum rat_type;
+ kal_bool is_emb_support;
+} atp_imc_emb_support_req_struct;
+
+/*
+ * Description
+ * - the primitive is used for PS to notify IMC to do
+ * - 1. IMS de-registration
+ * - 2. Release PDN/signaling bearer and media bearer
+ * Direction
+ * - PS -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_dereg_cause_enum reason;
+ ims_rf_off_type_enum rf_off_type;
+ rfoff_cause_enum rf_off_cause;
+} atp_imc_power_off_req_struct;
+
+/*
+ * Description
+ * - the primitive is used for IMC to notify PS that IMS registration start.
+ * Direction
+ * - IMC -> PS
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_reg_type_enum reg_type; //IMS_REG_TYPE_NORMAL=0, IMS_REG_TYPE_EMERGENCY=1
+} atp_imc_ims_reg_start_ind_struct;
+
+/*
+ * Description
+ * - the primitive is used for IMC to notify PS that IMS deregistration start.
+ * Direction
+ * - IMC -> PS
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_reg_type_enum dereg_type; //IMS_REG_TYPE_NORMAL=0, IMS_REG_TYPE_EMERGENCY=1
+} atp_imc_ims_dereg_start_ind_struct;
+
+/*
+ * Description
+ * - the primitive is used for IMC to notify PS send exit ECBM to AP when PDN is deactivated.
+ * Direction
+ * - IMC -> PS
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool reserve;
+} atp_imc_ims_exit_start_ind_struct;
+
+/*
+ * Description
+ * - the primitive is used for IMC to notify PS current IMS ENABLE state.
+ * Direction
+ * - IMC -> PS
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_enabled;
+} atp_imc_ims_enable_ind_struct;
+
+/*
+ * Description
+ * - the primitive is used for IMC to notify +EIMS:0/1
+ * Direction
+ * - IMC -> PS
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_enable;
+} atp_imc_eims_urc_ind_struct;
+
+/*
+ * Description
+ * - the primitive is acknowledge of "IMC_REG_POWER_OFF_IND"
+ * Direction
+ * - IMC -> PS
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_dereg_cause_enum reason;
+ ims_rf_off_type_enum rf_off_type;
+} atp_imc_power_off_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_ECFG_SET_REQ
+ * AT> AT+ECFGSET=<cfg_name>,<cfg_value>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 name[64];
+ kal_uint8 value[128];
+} atp_imc_ecfg_set_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_ECFG_SET_CNF
+ * AT< OK or +CME ERROR:<err>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool result; // KAL_TRUE-success; KAL_FALSE-fail
+ ims_err_id_enum cause; // return "IMS_ERR_UNKNOWN" for all so far
+ // before define IMS domain proprietary cause
+} atp_imc_ecfg_set_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_EMOCFG_REQ
+ * AT> AT+EMOCFG=<cfg_name>,<cfg_value>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 name[64];
+ kal_uint8 value[128];
+} atp_imc_emocfg_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_EMOCFG_CNF
+ * AT< OK or +CME ERROR:<err>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool result;
+ ims_err_id_enum cause;
+} atp_imc_emocfg_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_ECFG_GET_REQ
+ * AT> AT+ECFGSET=<cfg_name>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 name[64];
+} atp_imc_ecfg_get_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_ECFG_GET_CNF
+ * AT< +ECFGGET:<cfg_name>,<cfg_value>
+ * AT< OK or +CME ERROR:<err>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool result; // KAL_TRUE-success; KAL_FALSE-fail
+ ims_err_id_enum cause; // return "IMS_ERR_UNKNOWN" for all so far
+ // before define IMS domain proprietary cause
+ kal_uint8 name[64];
+ kal_uint8 value[128];
+} atp_imc_ecfg_get_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_ECFG_RESET_REQ
+ * AT> AT+ECFGRESET=<cfg_name>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 name[64];
+} atp_imc_ecfg_reset_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_ECFG_RESET_CNF
+ * AT< OK or +CME ERROR:<err>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool result; // KAL_TRUE-success; KAL_FALSE-fail
+ ims_err_id_enum cause; // return "IMS_ERR_UNKNOWN" for all so far
+ // before define IMS domain proprietary cause
+} atp_imc_ecfg_reset_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_EPVS_SET_REQ
+ * AT> AT+EPVSSET=<cfg_name>,<cfg_value>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 name[64];
+ kal_uint8 value[128];
+} atp_imc_epvs_set_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_EPVS_SET_CNF
+ * AT< OK or +CME ERROR:<err>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool result;
+ ims_err_id_enum cause;
+} atp_imc_epvs_set_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_EPVS_GET_REQ
+ * AT> AT+EPVSGET=<cfg_name>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 name[64];
+} atp_imc_epvs_get_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_EPVS_GET_CNF
+ * AT< +EPVSGET:<cfg_name>,<cfg_value>
+ * AT< OK or +CME ERROR:<err>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool result;
+ ims_err_id_enum cause;
+ kal_uint8 name[64];
+ kal_uint8 value[128];
+} atp_imc_epvs_get_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_QUERY_URI_TYPE_REQ
+ * AT+CDU=0
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+} atp_imc_query_uri_type_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_QUERY_URI_TYPE_CNF
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 uri_type; // ims_uri_type_enum;
+} atp_imc_query_uri_type_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SET_EVS_SUPPORT_REQ
+ * AT>AT+EIMSEVS=0|1
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_enable;
+} atp_imc_set_evs_support_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SET_EVS_SUPPORT_CNF
+ * AT< OK
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; // unused
+} atp_imc_set_evs_support_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_TIMER_TEST_REQ
+ */
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 number;
+} atp_imc_timer_test_req_struct;
+
+/*
+ * @note MSG_ID_ATP_IMC_INTER_RAT_STATUS_IND
+ * +EIRAT: <irat_status>, <irat_result>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_irat_status_enum irat_status;
+ kal_bool irat_result;
+} atp_imc_inter_rat_status_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_AUTO_FAST_RETURN_IND
+ * +EAFR=<afr_result>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool result;
+} atp_imc_auto_fast_return_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_CS_CALL_STATUS_IND
+ * +ECPI:<call_id>, <msg_type>, <is_ibt>, <is_tch>, <dir>, <call_mode>, <number>, <type>, "<pau>"[,<disc_cause>]
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_cs_call_status_enum cs_call_status;
+} atp_imc_cs_call_status_ind_struct;
+
+/*
+ * @brief UE receive mt cs paging
+ * note MSG_ID_ATP_IMC_MT_CS_PAGING_IND
+ * +CIEV: 13
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+} atp_imc_mt_cs_paging_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_VOICE_DOMAIN_STATUS_IND
+ * AT+EVVS=<voice_status>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ voice_domain_status_enum voice_domain_status;
+} atp_imc_voice_domain_status_ind_struct;
+
+/*
+ * @brief Turn on/off Radio link monitor
+ * @note MSG_ID_ATP_SET_IMC_RLM_REQ
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 enable;
+} atp_imc_set_rlm_req_struct;
+
+/*
+ * @brief IMS diable by AP
+ * @note MSG_ID_ATP_IMC_IMS_DEREG_REQ/CNF
+ * AT+EIMSDEREG:<cause>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 dereg_cause; //ims_dereg_cause_by_enum
+} atp_imc_ims_dereg_req_struct,
+ atp_imc_ims_dereg_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 dial_num[MAX_CC_ATD_NUM_LEN];
+} atp_imc_fdn_ecc_check_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool is_allowed;
+ kal_bool is_emergency;
+ kal_uint16 emergency_service_category;
+} atp_imc_fdn_ecc_check_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 dial_num[MAX_CC_ATD_NUM_LEN];
+} atp_imc_ss_fdn_check_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool is_allowed;
+} atp_imc_ss_fdn_check_cnf_struct;
+
+/*
+ * @brief IMS diable by AP
+ * @note MSG_ID_ATP_IMC_IMS_INIT_IND
+ * AT+EIMSINVER:<AP>,<MD>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 ap_verno; //from imsa_connect_req
+ kal_uint32 md_verno; //IMCB_IMC_HEADER_FILE_VERNO
+} atp_imc_ims_init_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_C2K_SERVICE_STATE_REQ
+ * +EC2KREG:<domain>, <state>, <service_type>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ domain_id_enum domain;
+ c2k_cell_service_enum state;
+ c2k_rat_type_enum service_type;
+} atp_imc_c2k_service_state_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_C2K_CELL_INFO_UPDATE_REQ
+ * +EC2KINFO:<access_type>, <sid>, <nid>, <pzid>, <base_id>, <sectot_id>, <subnet_length>, <carrier_id>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ c2k_rat_type_enum access_type;
+ kal_uint16 sid;
+ kal_uint16 nid;
+ kal_uint8 pzid;
+ kal_uint16 base_id;
+ kal_uint32 sectot_id[4];
+ kal_uint8 subnet_length;
+ kal_uint8 carrier_id[7];
+} atp_imc_c2k_cell_info_update_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_CAMPED_CELL_ID_UPDATE_REQ
+ * +ECMPCID:<rat>,<ci>,<plmn_id>,<lac>,<tac>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_rat_type_enum rat_type;
+ kal_uint64 cell_id;
+ plmn_id_struct plmn_id;
+ kal_uint8 la_code[2];
+ kal_uint8 ta_code[3];
+} atp_imc_camped_cell_id_update_req_struct;
+
+/*
+ * @brief WFC profile from AP
+ * @note MSG_ID_ATP_IMC_WFC_PROFILE_REQ/CNF
+ * AT+EWFCP=<wfc_profile>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ wfc_profile_enum wfc_profile;
+} atp_imc_wfc_profile_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; // un-used
+} atp_imc_wfc_profile_cnf_struct;
+
+/*
+ * @brief RCS feature tag from AP
+ * @note MSG_ID_ATP_IMC_RCS_FEATURE_REQ/CNF
+ * AT+EIMSRCS=<rcs_state><rcs_feature>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 rcs_state;
+ kal_uint32 rcs_feature;
+} atp_imc_rcs_feature_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; // un-used
+} atp_imc_rcs_feature_cnf_struct;
+
+/*
+ * @brief user-defined SIP headers from AP
+ * @note MSG_ID_ATP_IMC_SIP_HEADER_REQ/CNF
+ * AT+ESIPHEADER=<header count>, <header name>, <value>, <header name>, <value>, ...
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 value[256];
+} atp_imc_sip_header_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; // un-used
+} atp_imc_sip_header_cnf_struct;
+
+/*
+ * Description
+ * - the primitive is indicator of "AT+ERAT"
+ * Direction
+ * - ATP -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 rat_mode;
+ kal_uint8 prefer_rat;
+ kal_uint16 ref_num;
+} atp_imc_switch_prefer_rat_req_struct;
+/*
+ * Description
+ * - the primitive is acknowledge of "MSG_ID_ATP_IMC_SWITCH_PREFER_RAT_REQ"
+ * Direction
+ * - IMC -> ATP
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint16 ref_num;
+} atp_imc_switch_prefer_rat_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_ECT_REQ
+ * AT>AT+ECT=<ect_type>,<target_number>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 ect_type;
+ kal_uint8 pad[3];
+ kal_uint8 pau[IMC_MAX_ASSERTED_URI];
+ kal_uint8 device_id[IMC_MAX_UUID_LEN];
+} atp_imc_ss_ect_req_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_ECT_CNF
+ * AT< OK | ...
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} atp_imc_ss_ect_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SET_TEXT_CAPABILITY_REQ/CNF
+ * AT+CTMCALL=<enable>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 enable;
+} atp_imc_set_text_capability_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; // un-used
+} atp_imc_set_text_capability_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; // un-used
+} atp_imc_tty_capability_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 tty_mode; // TTY off:0, TTY Full:1, TTY HCO:2 (hearing carryover), TTY VCO:3 (voice carryover)
+}atp_imc_ctmcall_ind_struct;
+typedef atp_imc_common_at_rsp_struct atp_imc_ctmcall_rsp_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_RTT_CAPABILITY_REQ/CNF
+ * AT+EIMSRTT=<op>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 operation;
+} atp_imc_rtt_capability_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; // un-used
+} atp_imc_rtt_capability_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_RTT_OP_REQ/CNF
+ * AT+RTTCALL = <call id>, <op>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 call_id;
+ kal_uint32 op;
+} atp_imc_cc_rtt_op_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint32 call_id;
+ kal_uint32 result;
+} atp_imc_cc_rtt_op_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_C2K_ECBM_STATE_REQ
+ * +CIEV:<102>,<state>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 ecbm_state; //ecbm_state_enum
+ kal_uint8 ecbm_stop_cause; //ecbm_stop_cause_enum
+} atp_imc_c2k_ecbm_state_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_1X_CALL_STATUS_IND
+ * +EC2KCI:<call_status>
+ */
+typedef struct{
+ LOCAL_PARA_HDR
+ ims_1x_call_status_enum c2k_1x_call_status;
+} atp_imc_c2k_1x_call_status_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_TAU_FAIL_IND
+ * +ETAUFAIL:<cause>
+ */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 cause;
+} atp_imc_tau_fail_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 atcmd_id;
+ kal_bool no_cnf;
+ kal_uint8 cmdline[IMC_ATCMD_MAX_CMDLINE_LEN];
+}atp_imc_atcmd_relay_ind_struct,
+ atp_imc_atcmd_relay_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; // un-used
+} atp_imc_atcmd_relay_cnf_struct;
+
+/*
+ * Description
+ * - the primitive is request of "MSG_ID_ATP_IMC_MIMS_CAPABILITY_REQ"
+ * Direction
+ * - ATP -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 reserved;
+} atp_imc_mims_capability_req_struct;
+
+/*
+ * Description
+ * - the primitive is response of "MSG_ID_ATP_IMC_MIMS_CAPABILITY_CNF"
+ * Direction
+ * - IMC -> ATP
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint8 mims_num;
+ kal_uint32 cause;
+} atp_imc_mims_capability_cnf_struct;
+
+/*
+ * Description
+ * - the primitive is used for IMC to notify PS current IMS Roaming support or not.
+ * Direction
+ * - IMC -> ATP
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_enabled;
+} atp_imc_ims_roaming_ind_struct;
+
+/*
+ * Description
+ * - NWSEL is searching the available NW or not.
+ * Direction
+ * - ATP -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_searching;
+} atp_imc_nw_search_status_ind_struct;
+
+/*
+ * Description
+ * - the primitive is used for IMC to notify PS IMS special event.
+ * Direction
+ * - IMC -> ATP
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_special_event_enum special_event;
+ imcb_imc_sip_cause_enum sip_cause;
+} atp_imc_ims_event_ind_struct;
+
+#define IMC_AT_CMD_TO_MD_NAME_LEN 32
+#define IMC_AT_CMD_TO_MD_VALUE_LEN 512
+/*
+ * Description
+ * - the primitive is response of "MSG_ID_ATP_IMC_AT_CMD_TO_MD_IND"
+ * Direction
+ * - IMC -> ATP
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ atp_egmc_op_enum op;
+ kal_uint8 name[IMC_AT_CMD_TO_MD_NAME_LEN];
+ kal_uint8 value[IMC_AT_CMD_TO_MD_VALUE_LEN];
+} atp_imc_at_cmd_to_md_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ atp_imc_drp_enum op;
+} atp_imc_dump_runtime_para_req_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_ECNCFG_REQ
+ * AT> AT+ECNCFG=<>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 mobile_data;
+ kal_uint8 data_roaming;
+} atp_imc_ecncfg_req_struct;
+
+/*
+ * Description
+ * - the primitive is used for IMC to notify PS that STK call over IMS success.
+ * Direction
+ * - IMC -> PS
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint16 terminal_response; //80 for AT+STKCALL=0, 81 for AT+STKCALL=4
+} atp_imc_ims_stkcall_ind_struct;
+
+/*
+ * Description
+ * - the primitive is response of "MSG_ID_ATP_IMC_EIMSGEO_REQ"
+ * Direction
+ * - ATP -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 wifi_mac[20];
+} atp_imc_eimsgeo_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_int8 account_id;
+ kal_int8 broadcast_flag;
+ kal_int32 latitude[2];
+ kal_int32 longitude[2];
+ kal_int32 accuracy;
+ kal_char method[16];
+ kal_char city[32];
+ kal_char state[32];
+ kal_char zip[8];
+ kal_char country_code[8];
+ kal_char mcc[MAX_GEO_MCC_NUM][MAX_MCC_STR_LEN];
+} atp_imc_eimsgeo_ind_struct;
+
+/*
+ * @brief response of AT+ECCTRL
+ * @note MSG_ID_IMSP_CALL_CONTROL_IND
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+ kal_int32 operation; //imcb_imc_ss_operation_enum map to ims_ecctrl_enum
+} atp_imc_call_control_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_CALL_CONTROL_V2_REQ
+ * AT>AT+ECCTRL=<call_id>,<call_state>,<is_unblocking>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_ecctrl_enum call_state;
+ kal_uint8 is_unblocking;
+} atp_imc_call_control_v2_req_struct;
+
+
+
+/*
+ * Description
+ * - the primitive is used for PS to notify IMC that the UE is in limited service
+ * Direction
+ * - PS -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool t311_expire_flag;
+ imcf_uint8 pad[3];
+} atp_imc_oos_start_req_struct;
+
+/*
+ * Description
+ * - the primitive is used for PS to notify IMC that the UE is out of limited service
+ * Direction
+ * - PS -> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+} atp_imc_oos_end_req_struct;
+
+/*
+ * Description
+ * - the primitive is used for IMC to notify PS current IMS REG state. (IMC has to indicate VDM + PS other modules)
+ * Direction
+ * - IMC -> PS
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_reg_state_enum reg_state; // REGISTERED, UNREGISTERED
+ ims_reg_sub_state_enum reg_sub_state;
+ ims_reg_type_enum reg_type; // normal or emergency reg
+ ims_dereg_cause_enum dereg_cause; //ims_comm_def.h
+ ims_access_rat_enum rat;
+ ims_ecmp_enum ecmp;
+ /* ViLTE */
+ ims_reg_service_enum reg_service;
+ imcf_bool ims_retry;
+ imcf_bool has_sent_register;
+ imcf_uint8 pad[2];
+ ims_reg_event_enum reg_event;
+ ims_reg_sip_uri_type_enum sip_uri_type;
+ imcb_imc_sip_cause_enum sip_cause; //imcb_imc_sip_cause_enum
+} atp_imc_ims_reg_status_ind_struct;
+
+// CC Interface
+typedef struct atp_imc_cc_call_progress_ind_struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ kal_uint8 msg_type;
+ ims_ecpi_info_struct ecpi_info;
+} atp_imc_cc_call_progress_ind_struct;
+
+typedef struct atp_imc_cc_imsems_ind_struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+} atp_imc_cc_imsems_ind_struct;
+
+typedef struct atp_imc_cc_evtstatus_ind_struct {
+ LOCAL_PARA_HDR
+ kal_bool is_on;
+} atp_imc_cc_evtstatus_ind_struct;
+
+typedef struct atp_imc_cc_espeech_ind_struct {
+ LOCAL_PARA_HDR
+ kal_bool is_on;
+} atp_imc_cc_espeech_ind_struct;
+
+typedef struct atp_imc_cc_cssu_ind_struct {
+ LOCAL_PARA_HDR
+ kal_uint8 msg_type;
+} atp_imc_cc_cssu_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_CALL_CONTROL_REQ
+ * AT>AT+ECCTRL=<call_id>,<call_state>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_ecctrl_enum call_state;
+} atp_imc_call_control_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_CALL_CONTROL_CNF
+ * AT< OK | ...
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+ kal_int32 operation; //imcb_imc_ss_operation_enum map to ims_ecctrl_enum
+} atp_imc_call_control_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ kal_uint8 dir;
+ kal_uint8 msg_type;
+ kal_uint8 method;
+ kal_uint16 response_code;
+ imcf_uint8 reason_text[IMC_MAX_REASON_TEXT_LENGTH];
+} atp_imc_sip_call_progress_ind_struct;
+
+
+typedef enum {
+ IMS_SR_AC_BARRED = 0,
+ IMS_SR_NW_REJ_CONN_REQUEST = 1,
+ IMS_SR_T3346_START = 2,
+ IMS_SR_T3346_STOP = 3,
+ IMS_SR_T3346_EXPIRY = 4,
+ IMS_SR_CONN_FAIL = 5,
+ IMS_SR_T3525_START = 6,
+ IMS_SR_T3540_START = 7,
+} ims_service_request_fail_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_service_request_fail_enum cause;
+} atp_imc_service_request_fail_req_struct;
+
+// SS Interface
+typedef enum {
+ IMS_CONF_OP_ADD = 0, // add
+ IMS_CONF_OP_REMOVE = 1, // remove
+ IMS_CONF_OP_MAX
+} ims_conf_operation_enum;
+
+
+typedef enum {
+ IMS_NOTIFY_SERVICE_CALL_WAITING = 259, // mapped <service_id> = 259
+ IMS_NOTIFY_SERVICE_CALL_BARRING = 256, // mapped <service_id> = 256
+ IMS_NOTIFY_SERVICE_CALL_FORWARDING = 13, // mapped <service_id> = 13
+ IMS_NOTIFY_SERVICE_CALL_MWI = 3, // Not used
+ IMS_NOTIFY_SERVICE_CALL_CONFERENCE = 4, // Not used
+ IMS_NOTIFY_SERVICE_CALL_MT_FORWARDING = 257,
+ IMS_NOTIFY_SERVICE_NOTIFY_DIALOG = 258,
+ IMS_NOTIFY_SERVICE_MAX
+} ims_notify_service_enum;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_SET_VIDEO_ABILITY_REQ
+ * AT>AT+EIMSCCP=0|1
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_enable;
+} atp_imc_ss_set_video_ability_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_SET_VIDEO_ABILITY_CNF
+ * AT< OK
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; //unused
+} atp_imc_ss_set_video_ability_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SET_VOICE_CAPABILITY_REQ
+ * AT>AT+EIMSVOICE=0|1
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_enable;
+} atp_imc_set_voice_capability_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SET_VOICE_CAPABILITY_CNF
+ * AT< OK
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; //unused
+} atp_imc_set_voice_capability_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SET_SMS_CAPABILITY_REQ
+ * AT>AT+EIMSSMS=0|1
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_enable;
+} atp_imc_set_sms_capability_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SET_SMS_CAPABILITY_CNF
+ * AT< OK
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; //unused
+} atp_imc_set_sms_capability_cnf_struct;
+
+#define ATP_IMC_SS_CONFERENCE_CONTROL_REQ_NUM_LEN IMC_MAX_CONF_CONTROL_URI_LENGTH /* same as in imcb_imc_ss_conference_control_req_struct */
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_CONFERENCE_CONTROL_REQ
+ * AT>AT+ECONF=<conf_call_id>,<operation>,<num>[,<joined_call_id>]
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 conf_call_id;
+ ims_conf_operation_enum operation;
+ kal_uint8 num[ATP_IMC_SS_CONFERENCE_CONTROL_REQ_NUM_LEN];
+ kal_uint8 joined_call_id;
+} atp_imc_ss_conference_control_req_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_CONFERENCE_CONTROL_CNF
+ * AT< OK | ...
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} atp_imc_ss_conference_control_cnf_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_SUBSCRIBE_CONTROL_IND
+ * AT< +ESUBCTRL:<call_id>,<event>,<result>,<cause>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_ss_sub_event_enum event;
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} atp_imc_ss_subscribe_control_ind_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_CONFERENCE_CONTROL_IND
+ * AT< +ECONF:<conf_call_id>,<operation>,<num>,<result>,<cause>[,<joined_call_id>]
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 conf_call_id;
+ ims_conf_operation_enum operation;
+ kal_uint8 num[MAX_CC_ATD_NUM_LEN];
+ kal_uint8 joined_call_id;
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} atp_imc_ss_conference_control_ind_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_PROGRESS_NOTIFY_IND
+ * AT< +ECMCCSS:<call_id>,<service_id>,<data>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_notify_service_enum service;
+ kal_uint8 data[MAX_SS_NOTIFY_DATA_LEN]; // 512
+} atp_imc_ss_progress_notify_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_ECT_IND
+ * AT< +ECT:<call_id>,<ect_result>,<cause>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ kal_uint8 result;
+ ims_disc_cause_enum cause;
+} atp_imc_ss_ect_ind_struct;
+
+/* WFC */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_access_rat_enum source_rat;
+ ims_access_rat_enum target_rat;
+ ims_reg_type_enum reg_type;
+}atp_imc_handover_start_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_access_rat_enum source_rat;
+ ims_access_rat_enum target_rat;
+ kal_bool result; /* fail (FALSE) or success (TRUE) */
+ ims_reg_type_enum reg_type;
+}atp_imc_handover_stop_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_CC_MEDIA_MOD_IND
+ */
+/* VILTE */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_call_mode_enum call_mode;
+ ims_cc_camera_direction_enum camera_direction;
+ kal_uint8 audio_direction;
+ kal_uint8 audio_codec; // opaque
+ kal_int8 p_assert_uri[IMS_P_ASSERT_URI_LEN];
+} atp_imc_cc_media_mod_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ kal_uint8 local_video_capability;
+ kal_uint8 remote_video_capability;
+} atp_imc_cc_video_cap_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ kal_uint8 local_text_capability;
+ kal_uint8 remote_text_capability;
+ kal_uint8 local_text_status;
+ kal_uint8 real_remote_text_capability;
+} atp_imc_cc_text_cap_ind_struct;
+
+/*
+ * @brief Turn on/off Radio link monitor
+ * @note MSG_ID_ATP_IMC_RLM_EVENT_IND
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 reserve;
+ kal_uint8 event_type;
+ kal_uint16 band;
+} atp_imc_rlm_event_ind_struct;
+
+/**
+ * @brief USSD AT Command RILD-->ATP-->IMC-->IMCB-->UA
+ * @note MSG_ID_ATP_IMC_SEND_USSD_REQ
+ */
+typedef struct atp_imc_send_ussd_req {
+ LOCAL_PARA_HDR
+ kal_uint8 cmd_class; /*< class */
+ kal_uint8 operation; /*< oper */
+ kal_uint16 action; /*< action */
+ kal_uint8 language[IMS_USSD_LANGUANGE_LEN]; /*< language */
+ kal_uint16 error_code; /*< error_code */
+ kal_uint16 message_len; /*< message length */
+ kal_uint8 message[IMS_USSD_MAX_MSG_LEN];
+ kal_uint8 digit_from_line_number[IMC_MAX_URI_LENGTH];
+} atp_imc_send_ussd_req_struct;
+
+/**
+ * @brief USSD AT Command RILD<--ATP<--IMC<--IMCB<--UA
+ * @note MSG_ID_ATP_IMC_SEND_USSD_CNF
+ */
+typedef struct atp_imc_send_ussd_cnf {
+ LOCAL_PARA_HDR
+ kal_uint32 response; /*< OK or ERROR, may be extended to CME ERROR later on*/
+} atp_imc_send_ussd_cnf_struct;
+
+/**
+ * @brief USSD AT Command RILD<--ATP<--IMC<--IMCB<--UA
+ * @note MSG_ID_ATP_IMC_RECV_USSD_IND
+ */
+typedef struct atp_imc_recv_ussd_ind {
+ LOCAL_PARA_HDR
+ kal_uint8 urc_class; /*< class */
+ kal_uint8 alert_pattern; /*< Alertin Pattern for AP */
+ kal_uint8 padding[2]; /*< oper */
+ kal_uint16 status; /*< status */
+ kal_uint16 sip_cause; /*< status */
+ kal_uint8 language[IMS_USSD_LANGUANGE_LEN]; /*< language */
+ kal_uint16 error_code; /*< error_code */
+ kal_uint16 message_len; /*< message length */
+ kal_uint8 message[IMS_USSD_MAX_MSG_LEN];
+ kal_uint8 digit_from_line_number[IMC_MAX_URI_LENGTH];
+} atp_imc_recv_ussd_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SET_EMERGENCY_AID_REQ
+ * AT>AT+EIMSAID="xxxx-yyyy-wwww-zzzz"
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 emergency_aid[IMC_MAX_EMERGENCY_AID_LEN];
+} atp_imc_set_emergency_aid_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SET_EMERGENCY_AID_CNF
+ * AT< OK
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; //unused
+} atp_imc_set_emergency_aid_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_CISRVCC_REQ
+ * AT>AT+CISRVCC=0|1
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_enable;
+} atp_imc_cisrvcc_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_CISRVCC_CNF
+ * AT< OK
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint32 cause; //unused
+} atp_imc_cisrvcc_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_IMS_TIMER_STATUS_IND
+ * AT+EITMR=<timer_type>,<timer_status>,<timer_length>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 account_id; /*< Account ID*/
+ kal_uint32 timer_type; // ims_timer_type_enum
+ kal_uint32 timer_status; // ims_timer_status_enum
+ kal_uint16 timer_length;
+ kal_uint8 pad[2];
+} atp_imc_ims_timer_status_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_NORMAL_REG_CSCM_REQ
+ * AT>AT+CSCM=<service_type>,<action>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_scm_info_type_enum service_type;
+ ims_scm_info_action_enum action;
+} atp_imc_normal_reg_cscm_req_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_NORMAL_REG_CSCM_CNF
+ * AT< OK | ...
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool result;
+} atp_imc_normal_reg_cscm_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_REGUA_REMAIN_TIME_IND
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 rereg_flag; // send rereg_time or not
+ kal_int32 rereg_remain_time; // rereg_time
+ kal_uint8 resub_flag; // send resub_time or not
+ kal_int32 resub_remain_time; // resub_time
+} atp_imc_regua_remain_time_ind_struct;
+
+/*
+ * Description
+ * - to query IMEI SVN from L4
+ * Direction
+ * - IMC -> ATP
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+} atp_imc_query_imei_svn_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 imei_svn[IMC_MAX_IMEI_SVN_LEN];
+} atp_imc_query_imei_svn_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_EVOLTESI_CONFIG_IND
+ * AT+EVOLTESI
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ enh_volte_si_enum config;
+} atp_imc_evoltesi_config_ind_struct;
+
+
+#endif