[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6
MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF modem version: NA
Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/protocol/interface/ims/atp_d2at_struct.h b/mcu/protocol/interface/ims/atp_d2at_struct.h
new file mode 100644
index 0000000..4c352ed
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_d2at_struct.h
@@ -0,0 +1,1172 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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:
+ * ---------
+ * atp_d2at_struct.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *
+ * ==========================================================================
+ *
+ * .
+ *
+ ****************************************************************************/
+
+#ifndef _ATP_D2AT_STRUCT_H
+#define _ATP_D2AT_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+
+#include "d2pm_d2rm_struct.h"
+#include "ursp_public_defs.h"
+#include "ursp_struct.h"
+
+#define APN_PARAMETER_STRING_LEN (1024)
+#define EIF_CMD_STRING_LEN (16)
+#define EPDN_CMD_STRING_LEN (16)
+
+/*******************************************************************************/
+/* Caution!! */
+/* LOCAL_PARA_HDR and src_id MUST be the 1st and 2nd parameters, respectively. */
+/*******************************************************************************/
+#define ATP_D2AT_REQ_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+ kal_uint32 cmd_mode;
+
+#define ATP_D2AT_CNF_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+ kal_bool is_success; \
+ kal_uint16 err_cause;
+
+#define ATP_D2AT_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+
+#define ATP_D2AT_L4_CMD_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define ATP_D2AT_L4_RSP_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+ kal_bool is_success; \
+ kal_uint16 err_cause;
+
+typedef struct atp_d2at_hdr atp_d2at_hdr_t;
+typedef struct atp_d2at_hdr* atp_d2at_hdr_ptr_t;
+struct atp_d2at_hdr
+{
+ LOCAL_PARA_HDR
+ kal_uint32 src_id;
+};
+
+
+/*******************************************************************************
+* Internal *
+*******************************************************************************/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+/*******************************************************************************
+* ATP to DAST request and DAST to ATP confrim *
+*******************************************************************************/
+//General REQ struct
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+} atp_d2at_req_struct;
+
+//General CNF struct
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_cnf_struct;
+
+//AT+CFUN REQ
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ kal_bool state;
+} atp_d2at_cfun_req_struct;
+//AT+CFUN CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_cfun_cnf_struct;
+
+//AT+EFUN REQ
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ kal_bool state;
+} atp_d2at_efun_req_struct;
+//AT+EFUN CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_efun_cnf_struct;
+
+//AT+EDALLOW REQ
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ kal_uint8 edallow_value;
+ kal_uint8 para;
+} atp_d2at_edallow_req_struct;
+
+//AT+EDALLOW CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_edallow_cnf_struct;
+
+//AT+EDATASIM REQ
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ kal_uint8 sim_slot;
+} atp_d2at_edatasim_req_struct;
+
+//AT+EDATASIM CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_edatasim_cnf_struct;
+
+//AT+EIAMDPREFER REQ
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ kal_bool ia_md_prefer;
+} atp_d2at_eiamdprefer_req_struct;
+
+//AT+EIAMDPREFER CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_eiamdprefer_cnf_struct;
+
+//AT+ACTTEST CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_acttest_cnf_struct;
+//READ response = [+CGDCONT: <cid>,<PDP_type>,<APN>,<PDP_addr>,<d_comp>,<h_comp>[,<IPv4AddrAlloc>[,<request_type>[,<P-CSCF_discovery>[,<IM_CN_Signalling_Flag_Ind>[,<NSLPI>[,<securePCO>[,<IPv4_MTU_discovery>[,<Local_Addr_Ind>]]]]]]]]]
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ at_token_parse_result_enum cid_parse_result;
+ kal_uint32 cid; // integer type
+ at_token_parse_result_enum PDP_type_parse_result;
+ kal_uint8 PDP_type[PDP_TYPE_STRING_LEN]; // string type
+ at_token_parse_result_enum APN_parse_result;
+ kal_uint8 APN[APN_STRING_LEN]; // string type
+ at_token_parse_result_enum PDP_addr_parse_result;
+ kal_uint8 PDP_addr[APN_STRING_LEN]; // string type
+ at_token_parse_result_enum d_comp_parse_result;
+ atcmd_d_comp_enum d_comp; // integer type
+ at_token_parse_result_enum h_comp_parse_result;
+ atcmd_h_comp_enum h_comp; // integer type
+ at_token_parse_result_enum IPv4AddrAlloc_parse_result;
+ atcmd_IPv4AddrAlloc_enum IPv4AddrAlloc; // integer type
+ at_token_parse_result_enum request_type_parse_result;
+ atcmd_request_type_enum request_type; // integer type
+ at_token_parse_result_enum P_CSCF_discovery_parse_result;
+ atcmd_P_CSCF_discovery_enum P_CSCF_discovery; // integer type
+ at_token_parse_result_enum IM_CN_Signalling_Flag_Ind_parse_result;
+ atcmd_IM_CN_Signalling_Flag_Ind_enum IM_CN_Signalling_Flag_Ind; // integer type
+ /*
+ at_token_parse_result_enum NSLPI_parse_result;
+ atcmd_NSLPI_enum NSLPI; // integer type
+ at_token_parse_result_enum securePCO_parse_result;
+ atcmd_securePCO_enum securePCO; // integer type
+ at_token_parse_result_enum IPv4_MTU_discovery_parse_result;
+ atcmd_IPv4_MTU_discovery_enum IPv4_MTU_discovery; // integer type
+ at_token_parse_result_enum Local_Addr_Ind_parse_result;
+ atcmd_Local_Addr_Ind_enum Local_Addr_Ind; // integer type
+ */
+} atp_d2at_cgdcont_req_struct1;
+
+
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_bool apn_present;
+ kal_char apn[APN_STRING_LEN]; // string type
+ kal_bool apn_idx_present;
+ kal_int32 apn_idx;
+ kal_bool request_type_present;
+ atcmd_request_type_enum request_type; // integer type
+ kal_bool rat_type_present;
+ kal_uint32 rat_type;
+ kal_bool d_comp_present;
+ kal_uint32 d_comp;
+ kal_bool h_comp_present;
+ kal_uint32 h_comp;
+ kal_bool P_CSCF_discovery_present;
+ kal_uint32 P_CSCF_discovery;
+ kal_bool IM_CN_Signalling_Flag_Ind_present;
+ kal_uint32 IM_CN_Signalling_Flag_Ind;
+} atp_d2at_lgdcont_req_struct;
+
+
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_bool apn_present;
+ kal_char apn[APN_STRING_LEN]; // string type
+ kal_bool apn_idx_present;
+ kal_int32 apn_idx;
+ kal_bool s_nssai_present;
+ at_s_nssai_struct s_nssai;
+} atp_d2at_enssai_req_struct;
+
+
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_int32 reset_d2_apn;
+ kal_int32 reset_gprs_apn;
+
+} atp_d2at_rstiaapn_req_struct;
+
+
+typedef struct
+{
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+
+ kal_bool cid_present;
+ kal_uint32 cid; // integer type
+ kal_bool PDP_type_present;
+ kal_uint8 PDP_type[PDP_TYPE_STRING_LEN]; // string type
+ kal_bool APN_present;
+ kal_uint8 APN[APN_STRING_LEN]; // string type
+ kal_bool PDP_addr_present;
+ kal_uint8 PDP_addr[APN_STRING_LEN]; // string type
+ kal_bool d_comp_present;
+ atcmd_d_comp_enum d_comp; // integer type
+ kal_bool h_comp_present;
+ atcmd_h_comp_enum h_comp; // integer type
+ kal_bool IPv4AddrAlloc_present;
+ atcmd_IPv4AddrAlloc_enum IPv4AddrAlloc; // integer type
+ kal_bool request_type_present;
+ atcmd_request_type_enum request_type; // integer type
+ kal_bool P_CSCF_discovery_present;
+ atcmd_P_CSCF_discovery_enum P_CSCF_discovery; // integer type
+ kal_bool IM_CN_Signalling_Flag_Ind_present;
+ atcmd_IM_CN_Signalling_Flag_Ind_enum IM_CN_Signalling_Flag_Ind; // integer type
+ /*
+ kal_bool NSLPI_present;
+ atcmd_NSLPI_enum NSLPI; // integer type
+ kal_bool securePCO_present;
+ atcmd_securePCO_enum securePCO; // integer type
+ kal_bool IPv4_MTU_discovery_present;
+ atcmd_IPv4_MTU_discovery_enum IPv4_MTU_discovery; // integer type
+ kal_bool Local_Addr_Ind_present;
+ atcmd_Local_Addr_Ind_enum Local_Addr_Ind; // integer type
+ */
+
+} atp_d2at_cgdcont_ind_struct1;
+
+
+
+//AT+CGDCONT CNF
+
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+}atp_d2at_cgdcont_cnf_struct;
+
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+}atp_d2at_cgauth_cnf_struct;
+
+/*******************/
+/* D2CM/D2PM Start */
+/*******************/
+
+// AT+EAPNLOCK
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_uint32 sim_id;
+ atcmd_state_enum state;
+ kal_uint8 iccid[USERID_STRING_LEN]; // string type
+}atp_d2at_eapnlock_req_struct;
+
+typedef struct
+{
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+
+ atcmd_state_enum state;
+}atp_d2at_eapnlock_cnf_struct;
+
+
+// AT+EAPNSET
+typedef struct
+{
+ at_token_parse_result_enum userid_parse_result;
+ kal_uint8 userid[USERID_STRING_LEN]; // string type
+ at_token_parse_result_enum password_parse_result;
+ kal_uint8 password[PASSWORD_STRING_LEN]; // string type
+} at_eapnset_up_struct;
+
+
+// AT+EAPNSET
+/*
+typedef struct
+{
+ at_token_parse_result_enum S_NSSAI_parse_result;
+ at_s_nssai_struct S_NSSAI; // string type
+ at_token_parse_result_enum SSC_mode_parse_result;
+ atcmd_SSC_mode_enum SSC_mode; // integer type
+ at_token_parse_result_enum Access_type_parse_result;
+ atcmd_Access_type_enum Access_type; // integer type
+} at_eapnset_UE_local_config_struct;
+*/
+
+
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_uint32 sim_id;
+ kal_bool apn_present;
+ kal_uint8 apn[APN_STRING_LEN]; // string type
+ kal_bool cmd_present;
+ kal_uint32 cmd; // integer type
+
+ union
+ {
+ kal_uint8 apn_parameter[APN_PARAMETER_STRING_LEN];
+ at_eapnset_up_struct user_passwd;
+ at_eapnset_UE_local_config_struct UE_local_config;
+ } param;
+}atp_d2at_eapnset_req_struct;
+
+typedef struct
+{
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+
+ kal_uint32 cmd_mode;
+
+ union
+ {
+ kal_uint8 apn_parameter[APN_PARAMETER_STRING_LEN];
+ struct
+ {
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint8 username[USERID_STRING_LEN];
+ kal_uint8 passwd[PASSWORD_STRING_LEN];
+ kal_uint32 type;
+ kal_uint8 pdp_type[PDP_TYPE_STRING_LEN];
+ kal_uint8 roam_prot[ROAMING_IP_TYPE_STRING_LEN];
+ kal_uint32 auth_type;
+ kal_bool carrier_enabled;
+ kal_uint32 max_conn;
+ kal_uint32 max_conn_time;
+ kal_uint32 wait_time;
+ kal_uint32 bearer_bitmask;
+ kal_uint32 inact_time;
+ }apn_info;
+ }param;
+}atp_d2at_eapnset_ind_struct;
+
+typedef struct
+{
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+}atp_d2at_eapnset_cnf_struct;
+
+
+// AT+EAPNACT
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_uint8 state;
+ kal_uint32 flag;
+
+ union
+ {
+ struct
+ {
+ kal_char apn[APN_STRING_LEN];
+ kal_int32 apn_idx;
+ kal_char type[APN_TYPE_STRING_LEN];
+ kal_bool cid_present;
+ kal_int32 cid;
+ kal_bool cgdcont_req_present;
+ at_cgdcont_req_struct cgdcont_req;
+ kal_bool rat_type_present;
+ atcmd_rat_enum rat_type;
+ atcmd_fallback_enable_enum ipv4v6_fb_enable; // integer type
+ atcmd_ipv4_first_enum ipv4v6_fb_ipv4_first; // integer type
+ kal_bool if_id_present;
+ kal_int32 if_id;
+ ursp_traffic_desc_struct traffic_desc;
+ ursp_ue_local_conf_struct ue_local_conf;
+ kal_bool match_all_disallow;
+ }act;
+
+ struct
+ {
+ kal_int32 cid;
+ atcmd_deact_cause_enum reason;
+ }deact;
+ }param;
+}atp_d2at_eapnact_req_struct;
+
+typedef struct
+{
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+
+ kal_uint8 state;
+ kal_int32 cid, fb_cid, reason;
+}atp_d2at_eapnact_ind_struct;
+
+typedef struct
+{
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+
+ // N/A
+}atp_d2at_eapnact_cnf_struct;
+
+
+// AT+EAPNRESV
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ atcmd_state_enum state;
+ union
+ {
+ struct
+ {
+ kal_bool cid_present;
+ kal_int32 cid;
+ }act;
+
+ struct
+ {
+ kal_int32 cid;
+ }deact;
+ }param;
+}atp_d2at_eapnresv_req_struct;
+
+typedef struct
+{
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+
+ atcmd_state_enum state;
+ union
+ {
+ struct
+ {
+ kal_int32 cid;
+ }act;
+
+ struct
+ {
+ kal_int32 cid;
+ }deact;
+ }param;
+}atp_d2at_eapnresv_cnf_struct;
+
+
+// AT+EPDN
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_uint32 aid;
+ kal_uint32 state_mask;
+ kal_uint8 cmd[EPDN_CMD_STRING_LEN];
+}atp_d2at_epdn_req_struct;
+
+typedef struct
+{
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+
+ kal_int32 aid;
+ kal_uint8 cmd[EPDN_CMD_STRING_LEN];
+ kal_uint32 event;
+ kal_int32 if_id;
+ kal_uint32 ran_type;
+ kal_uint32 mtu;
+ kal_uint32 pdp_type;
+ kal_uint32 deact_reason;
+ kal_bool ipv4_addr_present;
+ kal_uint8 ipv4_addr[MAXIMUM_POSSIBLE_ADDR_LEN];
+ kal_int32 ipv4_netmask;
+ kal_bool ipv6_addr_present;
+ kal_uint8 ipv6_addr[MAXIMUM_POSSIBLE_ADDR_LEN];
+ kal_int32 ipv6_prefix_len;
+} atp_d2at_epdn_ind_struct;
+
+typedef struct
+{
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+}atp_d2at_epdn_cnf_struct;
+
+
+// +EPDN
+typedef atp_d2at_epdn_ind_struct atp_d2at_ap_urc_epdn_ind_struct;
+
+
+// AT+EGFB
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ at_token_parse_result_enum fallback_enable_parse_result;
+ atcmd_fallback_enable_enum fallback_enable; // integer type
+ at_token_parse_result_enum ipv4_first_parse_result;
+ atcmd_ipv4_first_enum ipv4_first; // integer type
+}atp_d2at_egfb_req_struct;
+
+typedef struct
+{
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+}atp_d2at_egfb_cnf_struct;
+
+
+// AT+EDRETRY
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_char apn[APN_STRING_LEN];
+ kal_bool mode_present;
+ kal_uint32 mode;
+ kal_bool reason_present;
+ kal_uint32 reason;
+}atp_d2at_edretry_req_struct;
+
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+
+ kal_bool retrytime_present;
+ kal_uint32 retrytime;
+}atp_d2at_edretry_cnf_struct;
+
+
+// +EDRETRY
+typedef struct
+{
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+
+ kal_bool apn_present;
+ kal_char apn[APN_STRING_LEN];
+}atp_d2at_ap_urc_edretry_ind_struct;
+
+// AT+EDRETRYRDP
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_char apn[APN_STRING_LEN];
+}atp_d2at_edretryrdp_req_struct;
+
+typedef struct
+{
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+
+ kal_char apn[APN_STRING_LEN];
+ iwlan_ran_e ran;
+
+ union
+ {
+ struct
+ {
+ atcmd_rat_enum rat;
+ kal_bool retrytime_present;
+ kal_uint32 retrytime;
+ }cell;
+
+ struct
+ {
+ kal_bool retrytime_present;
+ kal_uint32 retrytime;
+ }wlan;
+ }timer;
+
+}atp_d2at_edretryrdp_ind_struct;
+
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+}atp_d2at_edretryrdp_cnf_struct;
+
+// +CGPIAF
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_bool IPv6_AddressFormat_present;
+ kal_uint8 IPv6_AddressFormat;
+ kal_bool IPv6_SubnetNotation_present;
+ kal_uint8 IPv6_SubnetNotation;
+ kal_bool IPv6_LeadingZeros_present;
+ kal_uint8 IPv6_LeadingZeros;
+ kal_bool IPv6_CompressZeros_present;
+ kal_uint8 IPv6_CompressZeros;
+} atp_d2at_cgpiaf_req_struct;
+
+// AT+CGACT
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ at_token_parse_result_enum state_parse_result;
+ atcmd_state_enum state;
+ at_token_parse_result_enum cid_parse_result;
+ kal_uint32 cid;
+}atp_d2at_cgact_req_struct;
+
+typedef struct
+{
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+
+ at_token_parse_result_enum state_parse_result;
+ atcmd_state_enum state;
+ at_token_parse_result_enum cid_parse_result;
+ kal_uint32 cid;
+}atp_d2at_cgact_ind_struct;
+
+typedef struct
+{
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+
+ kal_uint32 ind_num;
+ at_cgact_ind_struct ind[MAX_PS_CID_NUM]; // NEED_TO_BE_NOTICED, to use a macro and indications?
+}atp_d2at_cgact_cnf_struct;
+
+
+// AT+CGCONTRDP
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ at_token_parse_result_enum cid_parse_result;
+ kal_uint32 cid;
+}atp_d2at_cgcontrdp_req_struct;
+
+typedef struct
+{
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+
+ at_cgcontrdp_ind_struct ind;
+}atp_d2at_cgcontrdp_ind_struct;
+
+typedef struct
+{
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+
+ // N/A
+}atp_d2at_cgcontrdp_cnf_struct;
+
+
+// AT+ESIMMAP, NEED_TO_BE_NOTICED, monitoring only
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_uint8 sim_id;
+ kal_uint8 curr_sim_slot[MAX_SIM_NUM];
+}atp_d2at_esimmap_req_struct;
+
+
+// AT+EPSMAP, NEED_TO_BE_NOTICED, monitoring only
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_uint8 num_of_sim;
+ kal_uint8 sim_slot[MAX_SIM_NUM];
+ kal_uint8 curr_sim_slot[MAX_SIM_NUM];
+}atp_d2at_epsmap_req_struct;
+
+
+// +EAPNINFO IND
+typedef struct
+{
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+
+ msg_type event;
+ kal_char prefix[APN_STRING_LEN];
+
+ union
+ {
+ // AT+EAPNSET
+ struct
+ {
+ kal_char apn[APN_STRING_LEN];
+ kal_uint32 pdn_state;
+ kal_int32 p_cid;
+ kal_int32 fb_cid;
+ kal_uint32 pdp_type;
+ kal_uint32 roam_prot;
+ kal_uint32 flag; // is_alias, is_usable
+ }eapnset;
+
+ // AT+EAPNACT
+ struct
+ {
+ kal_uint8 state;
+
+ union
+ {
+ struct
+ {
+ kal_char apn[APN_STRING_LEN];
+ kal_int32 pdn_state;
+ kal_char apn_type[APN_TYPE_STRING_LEN];
+ kal_int32 p_cid;
+ kal_int32 fb_cid;
+ kal_uint32 pdp_type;
+ kal_int32 if_id;
+ kal_uint32 suff_cond;
+ kal_uint32 ap_if_status;
+ kal_uint32 md_if_status;
+ kal_uint32 usr_list;
+ kal_uint32 flag; // is_ack, is_dangling, is_abort, is_forced
+ kal_bool cgdcont_req_present;
+ }act;
+
+ struct
+ {
+ kal_int32 cid;
+ kal_int32 bearer_state;
+ kal_char apn[APN_STRING_LEN];
+ kal_int32 p_cid;
+ kal_int32 fb_cid;
+ kal_uint32 pdp_type;
+ kal_int32 if_id;
+ kal_uint32 ap_if_status;
+ kal_uint32 md_if_status;
+ kal_uint32 usr_list;
+ kal_uint32 flag;
+ }deact;
+ }param;
+ }eapnact;
+
+ // AT+EPDN
+ struct
+ {
+ kal_int32 cid;
+ kal_int32 bearer_state;
+ kal_uint32 pdp_type;
+ kal_int32 if_id;
+ kal_uint32 cond;
+ kal_uint32 ap_if_status;
+ kal_uint32 md_if_status;
+ kal_uint32 usr_list;
+ }epdn;
+ }info;
+} atp_d2at_ap_urc_eapninfo_ind_struct;
+/*****************/
+/* D2CM/D2PM End */
+/*****************/
+
+/*****************/
+/* D2CM/D2PM Start */
+/*****************/
+
+/*****************/
+/* D2CM/D2PM End */
+/*****************/
+
+typedef enum {
+ ATP_D2AT_EIF_ADDR_TYPE_V4 = 1,
+ ATP_D2AT_EIF_ADDR_TYPE_V6 = 2,
+} atp_d2at_eif_addr_type_enum;
+
+typedef struct {
+ kal_uint32 type;
+ kal_uint32 num;
+ kal_uint8 v4[4];
+ kal_uint8 v6[16];
+ kal_int32 v6_prefix;
+ kal_uint8 v4_2[4];
+ kal_uint8 v6_2[16];
+ kal_int32 v6_2_prefix;
+ kal_int32 mtu;
+} at_eif_ip_struct;
+
+typedef struct {
+ kal_char buf[512];
+} at_eif_str_struct;
+
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ kal_uint32 interface_id;
+ kal_char cmd_str[EIF_CMD_STRING_LEN];
+ union {
+ at_eif_ip_struct ip;
+ at_eif_str_struct str;
+ } param;
+} atp_d2at_eif_req_struct;
+//AT+EIF CNF
+
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_eif_cnf_struct;
+
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+ kal_uint32 interface_id;
+ kal_uint32 ran;
+ new_ip_info_struct ip_info;
+} atp_d2at_eif_ind_struct;
+
+//AT+EAID REQ
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+
+ atcmd_state_enum state;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint8 type[APN_TYPE_LIST_STRING_LEN];
+} atp_d2at_eaid_req_struct;
+//AT+EAID CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_eaid_cnf_struct;
+
+//AT+EIAAPN REQ
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ kal_uint8 sim_id;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint8 iccid[24]; // it's 20, just prevent over-boundary
+ kal_int32 apn_idx; // apn index in apn setting table
+ kal_uint8 pdp_type[PDP_TYPE_STRING_LEN]; // string type
+ kal_uint8 roaming_pdp_type[PDP_TYPE_STRING_LEN]; // string type
+ atcmd_auth_prot_enum auth_prot;
+ kal_uint8 userid[USERID_STRING_LEN];
+ kal_uint8 password[PASSWORD_STRING_LEN];
+} atp_d2at_eiaapn_req_struct;
+//AT+EIAAPN CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_eiaapn_cnf_struct;
+
+// AT+EGDATA
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ kal_uint32 if_type;
+}atp_d2at_egdata_req_struct;
+
+// AT+EPSI REQ
+typedef struct
+{
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ kal_uint8 state;
+ kal_uint8 sim_id;
+ union {
+ struct {
+ kal_char apn[APN_STRING_LEN]; // string type
+ kal_bool apn_idx_present;
+ kal_int32 apn_idx;
+ kal_uint8 psi;
+ } epsi;
+
+ } param;
+} atp_d2at_epsi_req_struct;
+
+// AT+EPSI CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+ kal_uint8 state;
+ kal_uint8 psi;
+} atp_d2at_epsi_cnf_struct;
+
+/*******************************************************************************
+* DAST to ATP IND (send URC to AP) *
+*******************************************************************************/
+//+CGEV IND: use at_cgev_ind_struct directly
+typedef struct {
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+
+ cgev_event_enum event;
+
+ union {
+ cgev_nw_pdn_act_struct nw_pdn_act;
+ cgev_me_pdn_act_struct me_pdn_act;
+ cgev_nw_act_struct nw_act;
+ cgev_me_act_struct me_act;
+ cgev_nw_pdn_deact_struct nw_pdn_deact;
+ cgev_me_pdn_deact_struct me_pdn_deact;
+ cgev_nw_deact_struct nw_deact;
+ cgev_me_deact_struct me_deact;
+ cgev_nw_modify_struct nw_modify;
+ cgev_me_modify_struct me_modify;
+ cgev_reject_struct reject;
+ cgev_nw_react_struct nw_react;
+ } info;
+} atp_d2at_ap_urc_cgev_ind_struct;
+
+typedef struct {
+ ATP_D2AT_IND_LOCAL_PARA_HDR
+ at_escontind_ind_struct cmd;
+} atp_d2at_ap_urc_escontind_ind_struct;
+//+EIF IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 interface_id;
+ kal_char cmd[EIF_CMD_STRING_LEN];
+ kal_uint32 cause;
+ new_ip_info_struct ip_info;
+ at_eif_str_struct str;
+} atp_d2at_ap_urc_eif_ind_struct;
+
+typedef d2pm_d2rm_pdn_ho_notify_ind_struct atp_d2at_ap_urc_eif_ho_ind_struct;
+
+/*******************************************************************************
+* DAST to ATP IND and ATP to DAST RSP (send AT to PS) *
+*******************************************************************************/
+//General IND
+typedef struct {
+ ATP_D2AT_L4_CMD_IND_LOCAL_PARA_HDR
+} atp_d2at_l4_cmd_ind_struct;
+//General RSP
+typedef struct {
+ ATP_D2AT_L4_RSP_IND_LOCAL_PARA_HDR
+} atp_d2at_l4_cmd_rsp_struct;
+
+//AT+CGATT IND
+typedef struct {
+ ATP_D2AT_L4_CMD_IND_LOCAL_PARA_HDR
+
+ atcmd_state_enum state;
+} atp_d2at_l4_cmd_cgatt_ind_struct;
+//AT+CGATT RSP
+typedef struct {
+ ATP_D2AT_L4_RSP_IND_LOCAL_PARA_HDR
+} atp_d2at_l4_cmd_cgatt_rsp_struct;
+
+//AT+EGTYPE IND
+typedef struct {
+ ATP_D2AT_L4_CMD_IND_LOCAL_PARA_HDR
+
+ kal_char type[8];
+} atp_d2at_l4_cmd_egtype_ind_struct;
+//AT+EGTYPE RSP
+typedef struct {
+ ATP_D2AT_L4_RSP_IND_LOCAL_PARA_HDR
+} atp_d2at_l4_cmd_egtype_rsp_struct;
+
+//AT+ICCID IND
+typedef struct {
+ ATP_D2AT_L4_CMD_IND_LOCAL_PARA_HDR
+} atp_d2at_l4_cmd_iccid_ind_struct;
+
+//+ICCID RSP
+typedef struct {
+ ATP_D2AT_L4_RSP_IND_LOCAL_PARA_HDR
+ kal_uint8 iccid[20];
+} atp_d2at_l4_cmd_iccid_rsp_struct;
+
+//AT+EGREA IND
+typedef struct {
+ ATP_D2AT_L4_CMD_IND_LOCAL_PARA_HDR
+ kal_char type[8];
+} atp_d2at_l4_cmd_egrea_ind_struct;
+//AT+EGREA RSP
+typedef struct {
+ ATP_D2AT_L4_RSP_IND_LOCAL_PARA_HDR
+} atp_d2at_l4_cmd_egrea_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint32 pdp_type;
+ kal_uint32 apn_index;
+} atp_d2at_ap_urc_eiareg_ind_struct;
+
+/*******************************************************************************
+* ATP TO DAST IND (intercpt URC to ATP) *
+*******************************************************************************/
+//+ESIMS
+typedef struct {
+ LOCAL_PARA_HDR
+} atp_d2at_l4_urc_esims_ind_struct;
+
+//+EUSIM
+typedef struct {
+ LOCAL_PARA_HDR
+} atp_d2at_l4_urc_eusim_ind_struct;
+
+//+EGREG
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 ps_state;
+ kal_uint16 rat_tech;
+} atp_d2at_l4_urc_egreg_ind_struct;
+/*******************************************************************************
+* D2 TO D2 retry IND
+*******************************************************************************/
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 ps_id;
+ kal_uint8 pending_action; // attach or detach
+} atp_d2am_d2_cmd_retry_ind_struct;
+
+typedef struct
+{
+ kal_uint8 IPv6_AddressFormat_present;
+ kal_uint8 IPv6_AddressFormat;
+ kal_uint8 IPv6_SubnetNotation_present;
+ kal_uint8 IPv6_SubnetNotation;
+ kal_uint8 IPv6_LeadingZeros_present;
+ kal_uint8 IPv6_LeadingZeros;
+ kal_uint8 IPv6_CompressZeros_present;
+ kal_uint8 IPv6_CompressZeros;
+} atp_cgpiaf_config_context_struct;
+
+typedef struct
+{
+ atcmd_cgerep_mode_enum mode;
+ atcmd_bfr_enum bfr;
+} atp_cgerep_config_context_struct;
+
+typedef struct
+{
+ kal_uint8 eiareg;
+ kal_uint8 edretry;
+ atp_cgerep_config_context_struct cgerep;
+ atp_cgpiaf_config_context_struct cgpiaf;
+} atp_d2at_report_mode_struct;
+
+typedef struct
+{
+ atp_d2at_report_mode_struct report_mode;
+} atp_d2at_context_struct;
+
+extern atp_d2at_context_struct atp_d2at_context_g[MAX_SIM_NUM];
+
+//AT+EIMSTESTMODE REQ
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ kal_uint8 ims_test_mode;
+} atp_d2at_eimstestmode_req_struct;
+
+//AT+EIMSTESTMODE CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_eimstestmode_cnf_struct;
+
+//AT+EGDCACT REQ
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+ kal_bool enable;
+ kal_uint32 mode;
+} atp_d2at_egdcact_req_struct;
+
+//AT+EGDCACT CNF
+typedef struct {
+ ATP_D2AT_CNF_LOCAL_PARA_HDR
+} atp_d2at_egdcact_cnf_struct;
+
+typedef struct {
+ ATP_D2AT_REQ_LOCAL_PARA_HDR
+} atp_d2at_eiaattach_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint32 pdp_type;
+ kal_bool is_success;
+} atp_d2at_eiaattach_cnf_struct;
+
+
+#endif /* _ATP_D2AT_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/atp_d2rm_struct.h b/mcu/protocol/interface/ims/atp_d2rm_struct.h
new file mode 100644
index 0000000..1944e6c
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_d2rm_struct.h
@@ -0,0 +1,65 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+#ifndef __ATP_D2RM_STRUCT_H__
+#define __ATP_D2RM_STRUCT_H__
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 cnt;
+ kal_int32 cause;
+ kal_int32 sub_cause;
+} atp_d2rm_ewopdnerr_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint8 ifname[32];
+ kal_bool en;
+} atp_d2rm_ewifien_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 support[1];
+} atp_d2rm_eifconfig_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 cmd; //0: error, 1: ok
+ kal_uint32 txid;
+ kal_uint32 error_cause;
+} atp_d2rm_eif_ho_req_struct;
+#endif
diff --git a/mcu/protocol/interface/ims/atp_ddm_struct.h b/mcu/protocol/interface/ims/atp_ddm_struct.h
new file mode 100644
index 0000000..a2050e1
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_ddm_struct.h
@@ -0,0 +1,993 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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:
+ * ---------
+ * atp_ddm_struct.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 02 04 2021 you-ren.chen
+ * [MOLY00595427] [FBC][M80][FM350-GL][mipc可以管理所有的APN list,AT也可以管理所有的APN list]
+ *
+ * 14628099
+ * 1. XGDCONT
+ * 2. Query CGCONTRDP for activated CID 0 failed.
+ * 3. No handling CGEQMIN in get_src_id.
+ *
+ * 11 17 2020 you-ren.chen
+ * [MOLY00595872] [MD700.MP] Porting from T700.MP.
+ *
+ * Build error fix.
+ *
+ * 10 29 2020 vijayan.amalraj
+ * [MOLY00546031] [Cayman][Modem][Fatal error] err_code1:0x0000001D err_code2:0x9027B6F4 err_code3:0x9027B6F4
+ *
+ * .
+ *
+ * 05 11 2020 you-ren.chen
+ * [MOLY00505574] [C7108][P171031-06272] MD response error QCI value after call is ended
+ *
+ * Adding messge +ESCONTIND. (MOLY00387552)
+ *
+ * 03 17 2020 you-ren.chen
+ * [MOLY00505574] [C7108][P171031-06272] MD response error QCI value after call is ended
+ *
+ * [VMOLY.TC10] MOLY00387552
+ *
+ * 02 12 2020 dennis.tsai
+ * [MOLY00499183] [VMOLY][LADN-IT] LADN bugs check-in
+ *
+ * add ladn feature.
+ *
+ * 12 06 2019 dennis.tsai
+ * [MOLY00463375] [Gen97][VMOLY] LADN feature check-in.
+ *
+ * add ladn feature.
+ *
+ * 12 06 2019 dennis.tsai
+ * [MOLY00463375] [Gen97][VMOLY] LADN feature check-in.
+ *
+ * add ladn feature.
+ *
+ * 12 06 2019 dennis.tsai
+ * [MOLY00463375] [Gen97][VMOLY] LADN feature check-in.
+ * add ladn feature.
+ *
+ * 10 07 2019 you-ren.chen
+ * [MOLY00446606] [MT6885][Petrus][MP1][SQC][CTA][NSA][PCT][DT][8.20.00.00][TCID:10.2.2.1]Fail
+ *
+ * Update present bit.
+ *
+ * 09 23 2019 chang-yen.chih
+ * [MOLY00442502] D2/DDM Gen97 feature
+ *
+ * D2/DDM large patch back - MPD part
+ *
+ * 05 31 2019 you-ren.chen
+ * [MOLY00410234] [VMOLY] AT+EGPCO
+ *
+ * [VMOLY] ATP->DDM AT+EGPCO.
+ *
+ * 05 23 2019 you-ren.chen
+ * [MOLY00408491] [VMOLY] C5GQOSRDP
+ *
+ * [VMOLY] C5GQOSRDP
+ *
+ * 05 21 2019 you-ren.chen
+ * [MOLY00407636] [VMOLY] C5GQOS
+ *
+ * [VMOLY] C5GQOS
+ *
+ * 11 28 2018 th.cheng
+ * [MOLY00368256] [MT6297][L4][PS]+EPBSEH for 5G
+ * Fix invalid PSI issue
+ *
+ * .
+ *
+ * 11 28 2018 th.cheng
+ * [MOLY00367472] Fix invalid PSI issue
+ *
+ * .
+ *
+ * 11 28 2018 th.cheng
+ * [MOLY00367472] Fix fatel error for CGDCONT.
+ *
+ * 07 31 2018 you-ren.chen
+ * [MOLY00343419] [UMOLYE] Auto sync failed fix.
+ *
+ * [UMOLYE] Sync code fail bug fix
+ *
+ * 07 27 2018 you-ren.chen
+ * [MOLY00340510] [LR12A.R3.TC01.SP] Leading PDP context setting feature. (+LGDCONT)
+ *
+ * [LR13.R0] LGDCONT change + ACT_DATA_CALL refine
+ *
+ * 07 27 2018 you-ren.chen
+ * [MOLY00340510] [LR12A.R3.TC01.SP] Leading PDP context setting feature. (+LGDCONT)
+ *
+ * [LR13.R0] LGDCONT change + ACT_DATA_CALL refine
+ *
+ * 07 27 2018 you-ren.chen
+ * [MOLY00340510] [LR12A.R3.TC01.SP] Leading PDP context setting feature. (+LGDCONT)
+ *
+ * [LR13.R0] LGDCONT change + ACT_DATA_CALL refine
+ *
+ * 07 27 2018 you-ren.chen
+ * [MOLY00340510] [LR12A.R3.TC01.SP] Leading PDP context setting feature. (+LGDCONT)
+ *
+ * [LR13.R0] LGDCONT change + ACT_DATA_CALL refine
+ *
+ * 03 08 2018 dennis.tsai
+ * [MOLY00310154] [MT6763][Telcel] Implement telcel data retry requirement(interface)
+ * add telcel cc33 data retry interface.
+ *
+ * 12 14 2017 you-ren.chen
+ * [MOLY00295872] [MT6763] BGPCORDP
+ *
+ * [LR12A.R3] BGPCORDP command with apn index.
+ *
+ * 12 13 2017 you-ren.chen
+ * [MOLY00295872] [MT6763] BGPCORDP
+ * [LR12A.R3] BGPCORDP implement
+ *
+ * 12 01 2017 you-ren.chen
+ * [MOLY00292296] [MT6763][LR12A.R3] CGEREP & CGPIAF set&read mode
+ *
+ * [LR12A.R3] Auto sync to R3
+ *
+ * 11 29 2017 you-ren.chen
+ * [MOLY00292296] [MT6763][LR12A.R3] CGEREP & CGPIAF set&read mode
+ *
+ * [LR12A.R3] EGPCORDP
+ *
+ * 11 28 2017 dennis.tsai
+ * [MOLY00280226] [Bianco][MT6763][DDM]implement new feature for LR12A.R3.MP
+ * add vzwapne read mode.
+ *
+ * 07 27 2017 mingchun.cheng
+ * [MOLY00267137] [6293] Data Retry Framework
+ * .
+ *
+ * 07 27 2017 mingchun.cheng
+ * [MOLY00267137] [6293] Data Retry Framework
+ * .
+ *
+ * 06 24 2017 mingchun.cheng
+ * [MOLY00259445] [Bianco] sync code form LR12A.MP1
+ * sync from MP1.
+ * 07 05 2017 mingchun.cheng
+ * define MSG_ID & interface for data retry
+ *
+ * 06 24 2017 mingchun.cheng
+ * [MOLY00259445] [Bianco] sync code form LR12A.MP1
+ * sync from MP1.
+ *
+ * 05 25 2017 you-ren.chen
+ * [MOLY00252893] [BIANCO][MT6763] D2AT
+ *
+ * 7531 UMOLYA TRUNK
+ *
+ * 04 19 2017 chang-yen.chih
+ * [MOLY00243485] [BIANCO][MT6763][RDIT][PHONE][PCT][R&S][16.24][E41][10.7.3]ERROR
+ *
+ * .
+ *
+ * 04 07 2017 chang-yen.chih
+ * [MOLY00240148] [MT6763] DAST/DDM integration check in
+ *
+ * 04 05 2017 verit.chen
+ * [MOLY00239378] [BIANCO][MT6763][UMOLYA][D2/DDM] M3 check-in
+ * for M3 check-in
+ *
+ * 02 21 2017 mingchun.cheng
+ * [MOLY00228739] [GEN93][M2] for D2/DDM check-in TRUNK
+ * fix ATP build error (lacking of structure definition).
+ *
+ * 11 14 2016 mingchun.cheng
+ * [MOLY00210549] [MT6293] DAST/DDM integration check in
+ * .
+ *
+ * 11 13 2016 mingchun.cheng
+ * [MOLY00210549] [MT6293] DAST/DDM integration check in
+ * rollback
+ *
+ ****************************************************************************/
+
+#ifndef _ATP_DDM_STRUCT_H
+#define _ATP_DDM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+#include "pdn_public_defs.h"
+
+#define QOS_DATA_STRING_LEN 256
+
+/*******************************************************************************
+* DDM to ATP IND and ATP to DDM RSP (send AT to PS) *
+*******************************************************************************/
+#define ATP_DDM_L4_CMD_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define ATP_DDM_L4_RSP_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+ kal_bool is_success; \
+ kal_uint16 err_cause;
+
+
+//AT+CGATT IND
+typedef struct {
+ ATP_DDM_L4_CMD_IND_LOCAL_PARA_HDR
+
+ atcmd_state_enum state;
+} atp_ddm_l4_cmd_cgatt_ind_struct;
+
+//AT+CGATT RSP
+typedef struct {
+ ATP_DDM_L4_RSP_IND_LOCAL_PARA_HDR
+} atp_ddm_l4_cmd_cgatt_rsp_struct;
+
+/*******************************************************************************
+* ATP to DDM (relay AT command from ATP to DDM) *
+*******************************************************************************/
+//MSG_ID_ATP_DDM_EIMSCFG_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool volte_enable;
+ kal_bool vilte_enable;
+ kal_bool vowifi_enable;
+ kal_bool viwifi_enable;
+ kal_bool ims_sms_enable;
+ kal_bool eims_enable;
+} atp_ddm_eimscfg_req_struct;
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cmd_common_header_req_struct cmd;
+} atp_ddm_common_req_struct;
+typedef atp_ddm_common_req_struct d2at_ddm_common_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgdcont_req_struct cmd;
+ kal_uint8 psi;
+} atp_ddm_cgdcont_req_struct;
+typedef atp_ddm_cgdcont_req_struct atp_d2at_cgdcont_req_struct;
+typedef atp_ddm_cgdcont_req_struct d2at_ddm_cgdcont_req_struct;
+typedef atp_ddm_cgdcont_req_struct atp_d2at_xgdcont_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgdscont_req_struct cmd;
+} atp_ddm_cgdscont_req_struct;
+typedef atp_ddm_cgdscont_req_struct atp_d2at_cgdscont_req_struct;
+typedef atp_ddm_cgdscont_req_struct d2at_ddm_cgdscont_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgtft_req_struct cmd;
+} atp_ddm_cgtft_req_struct;
+typedef atp_ddm_cgtft_req_struct atp_d2at_cgtft_req_struct;
+typedef atp_ddm_cgtft_req_struct d2at_ddm_cgtft_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgqreq_req_struct cmd;
+} atp_ddm_cgqreq_req_struct;
+typedef atp_ddm_cgqreq_req_struct atp_d2at_cgqreq_req_struct;
+typedef atp_ddm_cgqreq_req_struct d2at_ddm_cgqreq_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgqmin_req_struct cmd;
+} atp_ddm_cgqmin_req_struct;
+typedef atp_ddm_cgqmin_req_struct atp_d2at_cgqmin_req_struct;
+typedef atp_ddm_cgqmin_req_struct d2at_ddm_cgqmin_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgeqreq_req_struct cmd;
+} atp_ddm_cgeqreq_req_struct;
+typedef atp_ddm_cgeqreq_req_struct atp_d2at_cgeqreq_req_struct;
+typedef atp_ddm_cgeqreq_req_struct d2at_ddm_cgeqreq_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgeqmin_req_struct cmd;
+} atp_ddm_cgeqmin_req_struct;
+typedef atp_ddm_cgeqmin_req_struct atp_d2at_cgeqmin_req_struct;
+typedef atp_ddm_cgeqmin_req_struct d2at_ddm_cgeqmin_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgeqneg_req_struct cmd;
+} atp_ddm_cgeqneg_req_struct;
+typedef atp_ddm_cgeqneg_req_struct atp_d2at_cgeqneg_req_struct;
+typedef atp_ddm_cgeqneg_req_struct d2at_ddm_cgeqneg_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_crladn_req_struct cmd;
+} atp_ddm_crladn_req_struct;
+typedef atp_ddm_crladn_req_struct atp_d2at_crladn_req_struct;
+typedef atp_ddm_crladn_req_struct d2at_ddm_crladn_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cladn_req_struct cmd;
+} atp_ddm_cladn_req_struct;
+typedef atp_ddm_cladn_req_struct atp_d2at_cladn_req_struct;
+typedef atp_ddm_cladn_req_struct d2at_ddm_cladn_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_escontind_req_struct cmd;
+} atp_ddm_escontind_req_struct;
+typedef atp_ddm_escontind_req_struct atp_d2at_escontind_req_struct;
+typedef atp_ddm_escontind_req_struct d2at_ddm_escontind_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_escontind_ind_struct cmd;
+} atp_ddm_escontind_ind_struct;
+typedef atp_ddm_escontind_ind_struct atp_d2at_escontind_ind_struct;
+typedef atp_ddm_escontind_ind_struct d2at_ddm_escontind_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 src_id;
+ kal_uint8 ladn_support;
+} atp_ddm_eladn_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgact_req_struct cmd;
+} atp_ddm_cgact_req_struct;
+typedef atp_ddm_cgact_req_struct atp_d2at_ddm_cgact_req_struct;
+typedef atp_ddm_cgact_req_struct d2at_ddm_cgact_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgcmod_req_struct cmd;
+} atp_ddm_cgcmod_req_struct;
+typedef atp_ddm_cgcmod_req_struct atp_d2at_cgcmod_req_struct;
+typedef atp_ddm_cgcmod_req_struct d2at_ddm_cgcmod_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgpaddr_req_struct cmd;
+} atp_ddm_cgpaddr_req_struct;
+typedef atp_ddm_cgpaddr_req_struct atp_d2at_cgpaddr_req_struct;
+typedef atp_ddm_cgpaddr_req_struct d2at_ddm_cgpaddr_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgauto_req_struct cmd;
+} atp_ddm_cgauto_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgans_req_struct cmd;
+} atp_ddm_cgans_req_struct;
+typedef atp_ddm_cgans_req_struct atp_d2at_cgans_req_struct;
+typedef atp_ddm_cgans_req_struct d2at_ddm_cgans_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgerep_req_struct cmd;
+} atp_ddm_cgerep_req_struct;
+typedef atp_ddm_cgerep_req_struct atp_d2at_cgerep_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgcontrdp_req_struct cmd;
+} atp_ddm_cgcontrdp_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgscontrdp_req_struct cmd;
+} atp_ddm_cgscontrdp_req_struct;
+typedef atp_ddm_cgscontrdp_req_struct atp_d2at_cgscontrdp_req_struct;
+typedef atp_ddm_cgscontrdp_req_struct d2at_ddm_cgscontrdp_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgtftrdp_req_struct cmd;
+} atp_ddm_cgtftrdp_req_struct;
+typedef atp_ddm_cgtftrdp_req_struct atp_d2at_cgtftrdp_req_struct;
+typedef atp_ddm_cgtftrdp_req_struct d2at_ddm_cgtftrdp_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgeqos_req_struct cmd;
+} atp_ddm_cgeqos_req_struct;
+typedef atp_ddm_cgeqos_req_struct atp_d2at_cgeqos_req_struct;
+typedef atp_ddm_cgeqos_req_struct d2at_ddm_cgeqos_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgeqosrdp_req_struct cmd;
+} atp_ddm_cgeqosrdp_req_struct;
+typedef atp_ddm_cgeqosrdp_req_struct atp_d2at_cgeqosrdp_req_struct;
+typedef atp_ddm_cgeqosrdp_req_struct d2at_ddm_cgeqosrdp_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_c5gqos_req_struct cmd;
+} atp_ddm_c5gqos_req_struct;
+typedef atp_ddm_c5gqos_req_struct atp_d2at_c5gqos_req_struct;
+typedef atp_ddm_c5gqos_req_struct d2at_ddm_c5gqos_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_c5gqosrdp_req_struct cmd;
+} atp_ddm_c5gqosrdp_req_struct;
+typedef atp_ddm_c5gqosrdp_req_struct atp_d2at_c5gqosrdp_req_struct;
+typedef atp_ddm_c5gqosrdp_req_struct d2at_ddm_c5gqosrdp_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgdel_req_struct cmd;
+} atp_ddm_cgdel_req_struct;
+typedef atp_ddm_cgdel_req_struct atp_d2at_cgdel_req_struct;
+typedef atp_ddm_cgdel_req_struct d2at_ddm_cgdel_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgauth_req_struct cmd;
+ kal_uint8 psi;
+} atp_ddm_cgauth_req_struct;
+typedef atp_ddm_cgauth_req_struct atp_d2at_cgauth_req_struct;
+typedef atp_ddm_cgauth_req_struct d2at_ddm_cgauth_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_ecncfg_req_struct cmd;
+} atp_ddm_ecncfg_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egdcont_req_struct cmd;
+ kal_uint8 psi;
+} atp_ddm_egdcont_req_struct;
+typedef atp_ddm_egdcont_req_struct atp_d2at_egdcont_req_struct;
+typedef atp_ddm_egdcont_req_struct d2at_ddm_egdcont_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_vzwapnetmr_req_struct cmd;
+} atp_ddm_vzwapnetmr_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_vzwapne_req_struct cmd;
+} atp_ddm_vzwapne_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egpau_req_struct cmd;
+} atp_ddm_egpau_req_struct;
+typedef atp_ddm_egpau_req_struct atp_d2at_egpau_req_struct;
+typedef atp_ddm_egpau_req_struct d2at_ddm_egpau_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egact_req_struct cmd;
+} atp_ddm_egact_req_struct;
+typedef atp_ddm_egact_req_struct atp_d2at_egact_req_struct;
+typedef atp_ddm_egact_req_struct d2at_ddm_egact_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgsdata_req_struct cmd;
+} atp_ddm_cgsdata_req_struct;
+typedef atp_ddm_cgsdata_req_struct atp_d2at_cgsdata_req_struct;
+typedef atp_ddm_cgsdata_req_struct d2at_ddm_cgsdata_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_acttest_req_struct cmd;
+} atp_ddm_acttest_req_struct;
+typedef atp_ddm_acttest_req_struct atp_d2at_acttest_req_struct;
+typedef atp_ddm_acttest_req_struct d2at_ddm_acttest_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_psbearer_req_struct cmd;
+} atp_ddm_psbearer_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egfb_req_struct cmd;
+} atp_ddm_egfb_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egdelpf_req_struct cmd;
+} atp_ddm_egdelpf_req_struct;
+typedef atp_ddm_egdelpf_req_struct atp_d2at_egdelpf_req_struct;
+typedef atp_ddm_egdelpf_req_struct d2at_ddm_egdelpf_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_eglnkpf_req_struct cmd;
+} atp_ddm_eglnkpf_req_struct;
+typedef atp_ddm_eglnkpf_req_struct atp_d2at_eglnkpf_req_struct;
+typedef atp_ddm_eglnkpf_req_struct d2at_ddm_eglnkpf_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egpcordp_req_struct cmd;
+ at_token_parse_result_enum APN_parse_result;
+ kal_char APN[APN_STRING_LEN];
+ at_token_parse_result_enum APN_index_parse_result;
+ kal_bool APN_index;
+} atp_ddm_egpcordp_req_struct;
+typedef atp_ddm_egpcordp_req_struct atp_d2at_egpcordp_req_struct;
+typedef atp_ddm_egpcordp_req_struct d2at_ddm_egpcordp_req_struct;
+typedef atp_ddm_egpcordp_req_struct atp_d2at_bgpcordp_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egpco_req_struct cmd;
+ kal_uint8 psi;
+} atp_ddm_egpco_req_struct;
+typedef atp_ddm_egpco_req_struct atp_d2at_egpco_req_struct;
+typedef atp_ddm_egpco_req_struct d2at_ddm_egpco_req_struct;
+
+typedef struct {
+ kal_uint32 src_id;
+ atp_cmd_mode_enum cmd_mode;
+ at_token_parse_result_enum mode_parse_result;
+ kal_uint8 mode;
+ at_token_parse_result_enum APN_parse_result;
+ kal_uint8 APN[APN_STRING_LEN];
+} at_edretry_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_edretry_req_struct cmd;
+} atp_ddm_edretry_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgdata_req_struct cmd;
+ network_interface_id_info_struct selected_network_interface_id_info;
+ apn_type_info_struct apn_type_info;
+} atp_ddm_cgdata_req_struct;
+typedef atp_ddm_cgdata_req_struct atp_d2at_cgdata_req_struct;
+typedef atp_ddm_cgdata_req_struct d2at_ddm_cgdata_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egld_req_struct cmd;
+} atp_ddm_egld_req_struct;
+typedef atp_ddm_egld_req_struct atp_d2at_egld_req_struct;
+typedef atp_ddm_egld_req_struct d2at_ddm_egld_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_edallow_req_struct cmd;
+} atp_ddm_edallow_req_struct;
+
+/*******************************************************************************
+* DDM to ATP(relay AT cnf/ind from DDM to ATP) *
+*******************************************************************************/
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cmd_cnf_struct cmd;
+} atp_ddm_cmd_cnf_struct;
+typedef atp_ddm_cmd_cnf_struct atp_d2at_cmd_cnf_struct;
+typedef atp_ddm_cmd_cnf_struct d2at_ddm_cmd_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgev_ind_struct cmd;
+} atp_ddm_cgev_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgdcont_ind_struct cmd;
+} atp_ddm_cgdcont_ind_struct;
+typedef atp_ddm_cgdcont_ind_struct atp_d2at_cgdcont_ind_struct;
+typedef atp_ddm_cgdcont_ind_struct d2at_ddm_cgdcont_ind_struct;
+typedef atp_ddm_cgdcont_ind_struct atp_d2at_xgdcont_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgdscont_ind_struct cmd;
+} atp_ddm_cgdscont_ind_struct;
+typedef atp_ddm_cgdscont_ind_struct atp_d2at_cgdscont_ind_struct;
+typedef atp_ddm_cgdscont_ind_struct d2at_ddm_cgdscont_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgtft_ind_struct cmd;
+} atp_ddm_cgtft_ind_struct;
+typedef atp_ddm_cgtft_ind_struct atp_d2at_cgtft_ind_struct;
+typedef atp_ddm_cgtft_ind_struct d2at_ddm_cgtft_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgqreq_ind_struct cmd;
+} atp_ddm_cgqreq_ind_struct;
+typedef atp_ddm_cgqreq_ind_struct atp_d2at_cgqreq_ind_struct;
+typedef atp_ddm_cgqreq_ind_struct d2at_ddm_cgqreq_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgqmin_ind_struct cmd;
+} atp_ddm_cgqmin_ind_struct;
+typedef atp_ddm_cgqmin_ind_struct atp_d2at_cgqmin_ind_struct;
+typedef atp_ddm_cgqmin_ind_struct d2at_ddm_cgqmin_ind_struct;
+
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgeqreq_ind_struct cmd;
+} atp_ddm_cgeqreq_ind_struct;
+typedef atp_ddm_cgeqreq_ind_struct atp_d2at_cgeqreq_ind_struct;
+typedef atp_ddm_cgeqreq_ind_struct d2at_ddm_cgeqreq_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgeqmin_ind_struct cmd;
+} atp_ddm_cgeqmin_ind_struct;
+typedef atp_ddm_cgeqmin_ind_struct atp_d2at_cgeqmin_ind_struct;
+typedef atp_ddm_cgeqmin_ind_struct d2at_ddm_cgeqmin_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgeqneg_ind_struct cmd;
+} atp_ddm_cgeqneg_ind_struct;
+typedef atp_ddm_cgeqneg_ind_struct atp_d2at_cgeqneg_ind_struct;
+typedef atp_ddm_cgeqneg_ind_struct d2at_ddm_cgeqneg_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgact_ind_struct cmd;
+} atp_ddm_cgact_ind_struct;
+typedef atp_ddm_cgact_ind_struct atp_d2at_ddm_cgact_ind_struct;
+typedef atp_ddm_cgact_ind_struct d2at_ddm_cgact_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgpaddr_ind_struct cmd;
+} atp_ddm_cgpaddr_ind_struct;
+typedef atp_ddm_cgpaddr_ind_struct atp_d2at_cgpaddr_ind_struct;
+typedef atp_ddm_cgpaddr_ind_struct d2at_ddm_cgpaddr_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgauto_ind_struct cmd;
+} atp_ddm_cgauto_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgerep_ind_struct cmd;
+} atp_ddm_cgerep_ind_struct;
+typedef atp_ddm_cgerep_ind_struct atp_d2at_cgerep_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgcontrdp_ind_struct cmd;
+} atp_ddm_cgcontrdp_ind_struct;
+typedef atp_ddm_cgcontrdp_ind_struct atp_d2at_ddm_cgcontrdp_ind_struct;
+typedef atp_ddm_cgcontrdp_ind_struct d2at_ddm_cgcontrdp_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgscontrdp_ind_struct cmd;
+} atp_ddm_cgscontrdp_ind_struct;
+typedef atp_ddm_cgscontrdp_ind_struct atp_d2at_cgscontrdp_ind_struct;
+typedef atp_ddm_cgscontrdp_ind_struct d2at_ddm_cgscontrdp_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgtftrdp_ind_struct cmd;
+} atp_ddm_cgtftrdp_ind_struct;
+typedef atp_ddm_cgtftrdp_ind_struct atp_d2at_cgtftrdp_ind_struct;
+typedef atp_ddm_cgtftrdp_ind_struct d2at_ddm_cgtftrdp_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgeqos_ind_struct cmd;
+} atp_ddm_cgeqos_ind_struct;
+typedef atp_ddm_cgeqos_ind_struct atp_d2at_cgeqos_ind_struct;
+typedef atp_ddm_cgeqos_ind_struct d2at_ddm_cgeqos_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgeqosrdp_ind_struct cmd;
+} atp_ddm_cgeqosrdp_ind_struct;
+typedef atp_ddm_cgeqosrdp_ind_struct atp_d2at_cgeqosrdp_ind_struct;
+typedef atp_ddm_cgeqosrdp_ind_struct d2at_ddm_cgeqosrdp_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_c5gqos_ind_struct cmd;
+} atp_ddm_c5gqos_ind_struct;
+typedef atp_ddm_c5gqos_ind_struct atp_d2at_c5gqos_ind_struct;
+typedef atp_ddm_c5gqos_ind_struct d2at_ddm_c5gqos_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_c5gqosrdp_ind_struct cmd;
+} atp_ddm_c5gqosrdp_ind_struct;
+typedef atp_ddm_c5gqosrdp_ind_struct atp_d2at_c5gqosrdp_ind_struct;
+typedef atp_ddm_c5gqosrdp_ind_struct d2at_ddm_c5gqosrdp_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgdel_ind_struct cmd;
+} atp_ddm_cgdel_ind_struct;
+typedef atp_ddm_cgdel_ind_struct atp_d2at_cgdel_ind_struct;
+typedef atp_ddm_cgdel_ind_struct d2at_ddm_cgdel_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cgauth_ind_struct cmd;
+} atp_ddm_cgauth_ind_struct;
+typedef atp_ddm_cgauth_ind_struct atp_d2at_cgauth_ind_struct;
+typedef atp_ddm_cgauth_ind_struct d2at_ddm_cgauth_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_psbearer_ind_struct cmd;
+} atp_ddm_psbearer_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egfb_ind_struct cmd;
+} atp_ddm_egfb_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egdelpf_ind_struct cmd;
+} atp_ddm_egdelpf_ind_struct;
+typedef atp_ddm_egdelpf_ind_struct atp_d2at_egdelpf_ind_struct;
+typedef atp_ddm_egdelpf_ind_struct d2at_ddm_egdelpf_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_eglnkpf_ind_struct cmd;
+} atp_ddm_eglnkpf_ind_struct;
+typedef atp_ddm_eglnkpf_ind_struct atp_d2at_eglnkpf_ind_struct;
+typedef atp_ddm_eglnkpf_ind_struct d2at_ddm_eglnkpf_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egpcordp_ind_struct cmd;
+ kal_uint8 BGPCORDP_flag;
+} atp_ddm_egpcordp_ind_struct;
+typedef atp_ddm_egpcordp_ind_struct atp_d2at_egpcordp_ind_struct;
+typedef atp_ddm_egpcordp_ind_struct d2at_ddm_egpcordp_ind_struct;
+typedef atp_ddm_egpcordp_ind_struct atp_d2at_bgpcordp_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egpco_ind_struct cmd;
+} atp_ddm_egpco_ind_struct;
+typedef atp_ddm_egpco_ind_struct atp_d2at_egpco_ind_struct;
+typedef atp_ddm_egpco_ind_struct d2at_ddm_egpco_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cmd_cnf_struct cmd;
+} atp_ddm_cgdata_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egev_ind_struct cmd;
+} atp_ddm_egev_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_vzwapne_ind_struct cmd;
+} atp_ddm_vzwapne_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_vzwapnetmr_ind_struct cmd;
+} atp_ddm_vzwapnetmr_ind_struct;
+#ifdef __TC01__
+//+ETIMER IND
+typedef struct {
+ LOCAL_PARA_HDR
+ at_backoff_timer_ind_struct cmd;
+} atp_ddm_backoff_timer_ind_struct;
+#endif
+//+ENWLIMIT IND
+typedef struct
+{
+ kal_uint32 src_id;
+ kal_uint32 limit_value;
+ kal_uint32 cid;
+} at_nwlimit_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_nwlimit_ind_struct cmd;
+} atp_ddm_nwlimit_ind_struct;
+
+typedef struct
+{
+ kal_uint32 src_id;
+ atp_cmd_mode_enum cmd_mode;
+
+ at_token_parse_result_enum enable_value_parse_result;
+ kal_uint32 enable_value;
+
+ at_token_parse_result_enum qos_data_parse_result;
+ kal_uint8 qos_data[QOS_DATA_STRING_LEN];
+} at_egqos_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_egqos_req_struct cmd;
+} atp_ddm_egqos_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_crladn_ind_struct cmd;
+} atp_ddm_crladn_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cladn_ind_struct cmd;
+} atp_ddm_cladn_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ at_cladnu_ind_struct cmd;
+} atp_ddm_cladnu_ind_struct;
+#if 0 //should be removed
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+#endif /* _ATP_DDM_STRUCT_H */
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
diff --git a/mcu/protocol/interface/ims/atp_imcb_struct.h b/mcu/protocol/interface/ims/atp_imcb_struct.h
new file mode 100644
index 0000000..8eedaac
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_imcb_struct.h
@@ -0,0 +1,63 @@
+/*****************************************************************************
+* 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _ATP_IMCB_STRUCT_H
+#define _ATP_IMCB_STRUCT_H
+
+#include "ims_common_def.h"
+/*
+ * @note MSG_ID_ATP_IMCB_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_imcb_inter_rat_status_ind_struct;
+
+#endif /* _ATP_IMCB_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/atp_imcsms_struct.h b/mcu/protocol/interface/ims/atp_imcsms_struct.h
new file mode 100644
index 0000000..3695f6a
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_imcsms_struct.h
@@ -0,0 +1,191 @@
+/*****************************************************************************
+* 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:
+ * ---------
+ * atp_imcsms_struct.h
+ *
+ * Project:
+ * --------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+
+
+#ifndef _ATP_IMCSMS_STRUCT_H
+#define _ATP_IMCSMS_STRUCT_H
+
+#include "ps_public_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ims_common_def.h"
+
+
+/*
+MSG_ID_ATP_IMCSMS_SUBMIT_CHECK_IND
+MSG_ID_ATP_IMCSMS_SUBMIT_CHECK_RSP
+MSG_ID_ATP_IMCSMS_COMMAND_CHECK_IND
+MSG_ID_ATP_IMCSMS_COMMAND_CHECK_RSP
+MSG_ID_ATP_IMCSMS_SMMA_CHECK_IND
+MSG_ID_ATP_IMCSMS_SMMA_CHECK_RSP
+MSG_ID_ATP_IMCSMS_STK_SUBMIT_CHECK_IND
+MSG_ID_ATP_IMCSMS_STK_SUBMIT_CHECK_RSP
+
+*/
+
+/*
+ * IMC SMS Query SMSAL - to IMS Proxy
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+
+} atp_imcsms_submit_check_ind_struct, atp_imcsms_command_check_ind_struct, atp_imcsms_smma_check_ind_struct,atp_imcsms_stk_submit_check_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint8 result; /* the result of checking */
+ kal_uint8 smi; /* short message identifier*/
+} atp_imcsms_smma_check_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint8 result; /* the result of checking */
+ kal_uint8 smi; /* short message identifier*/
+ kal_uint16 cause; /*error cause*/
+ sms_addr_struct sc_addr; /* service centre address*/
+} atp_imcsms_submit_check_rsp_struct, atp_imcsms_command_check_rsp_struct, atp_imcsms_stk_submit_check_rsp_struct;
+
+typedef struct{
+ LOCAL_PARA_HDR
+ ims_reg_state_enum ims_reg_state;
+ ims_reg_type_enum ims_reg_type;
+}atp_imcsms_ims_reg_status_ind_struct;
+
+#ifdef __TC01_IMS_SUPPORT__
+
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint16 length;
+ kal_uint8 data[MAX_SMS_PDU_LEN];
+}atp_imcsms_send_msg_urc_ind_struct;
+
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint16 length;
+ kal_uint8 data[MAX_SMS_PDU_LEN];
+}atp_imcsms_recv_msg_cnf_struct;
+
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint16 length;
+ kal_uint8 data[MAX_SMS_PDU_LEN];
+}atp_imcsms_recv_msg_req_struct;
+
+
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 cause;
+ kal_uint8 seq_id;
+ kal_uint8 retry_after;
+}atp_imcsms_send_status_ind_struct;
+
+#endif //__TC01_IMS_SUPPORT__
+
+#endif /* _ATP_IMCSMS_STRUCT_H */
+
+
diff --git a/mcu/protocol/interface/ims/atp_imsm_struct.h b/mcu/protocol/interface/ims/atp_imsm_struct.h
new file mode 100644
index 0000000..fbc787b
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_imsm_struct.h
@@ -0,0 +1,180 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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:
+ * ---------
+ * atp_imsm_struct.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 07 31 2019 sameer.sethi
+ * [MOLY00364277] [US_DEV][TMO][2019Q1][IMSM]Mtu size related checkin GID-MTRREQ-6754
+ *
+ * .
+ *
+ * 06 24 2017 mingchun.cheng
+ * [MOLY00259445] [Bianco] sync code form LR12A.MP1
+ * sync from MP1.
+ *
+ * 04 05 2017 verit.chen
+ * [MOLY00239378] [BIANCO][MT6763][UMOLYA][D2/DDM] M3 check-in
+ * for M3 check-in
+ *
+ * 01 16 2017 mingchun.cheng
+ * [MOLY00210549] [MT6293] DAST/DDM integration check in
+ * fix build error (some files are not submitted)
+ *
+ * 01 08 2017 mingchun.cheng
+ * [MOLY00210549] [MT6293] DAST/DDM integration check in
+ * integrate wtih IMSM
+ ****************************************************************************/
+
+#ifndef _ATP_IMSM_STRUCT_H
+#define _ATP_IMSM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+
+/*******************************************************************************
+* IMSM to ATP IND and ATP to IMSM RSP (send AT to PS) *
+*******************************************************************************/
+#define ATP_IMSM_L4_CMD_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define ATP_IMSM_L4_RSP_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+ kal_bool is_success; \
+ kal_uint16 err_cause;
+
+typedef struct {
+ ATP_IMSM_L4_CMD_IND_LOCAL_PARA_HDR
+ kal_char cmd[64];
+} atp_imsm_l4_cmd_ind_struct;
+
+typedef struct {
+ ATP_IMSM_L4_CMD_IND_LOCAL_PARA_HDR
+ kal_char intermediate[256];
+} atp_imsm_l4_cmd_int_struct;
+
+typedef struct {
+ ATP_IMSM_L4_RSP_IND_LOCAL_PARA_HDR
+} atp_imsm_l4_cmd_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char urc[256];
+} atp_imsm_ap_urc_ind_struct;
+
+#define ATP_IMSM_REQ_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+
+typedef struct {
+ ATP_IMSM_REQ_LOCAL_PARA_HDR
+ kal_uint8 aid;
+ kal_uint32 error_cause;
+} atp_imsm_eimspdn_rsp_struct;
+
+typedef struct {
+ ATP_IMSM_REQ_LOCAL_PARA_HDR
+ kal_uint8 ifname[32];
+ kal_uint8 ssid[32];
+ kal_uint8 bssid[6];
+ kal_bool assoc;
+} atp_imsm_ewifiasc_ind_struct;
+
+typedef struct {
+ ATP_IMSM_REQ_LOCAL_PARA_HDR
+ kal_uint8 is_ims;
+ kal_uint32 mtu_size;
+} atp_imsm_mtu_size_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+} imsm_imsm_get_cell_info_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+} imsm_imsm_get_version_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint8 currently_attached_rat;
+
+ kal_uint8 plmn[MAX_PLMN_LEN+1];
+ kal_uint16 lac;
+ kal_uint32 ci;
+ kal_uint8 is_roaming;
+
+ /* C2K cell info */
+ kal_uint16 sid;
+ kal_uint16 nid;
+ kal_uint8 pzid;
+ kal_uint16 base_id;
+ kal_uint32 sector_id[4];
+ kal_uint8 subnet_length;
+ kal_uint8 carrier_id[7];
+
+ //WIFI
+ kal_uint8 ssid[32];
+ kal_uint8 bssid[6];
+} imsm_imsm_get_cell_info_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 version;
+} imsm_imsm_get_version_cnf_struct;
+
+#endif /* _ATP_IMSM_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/atp_iwlan_struct.h b/mcu/protocol/interface/ims/atp_iwlan_struct.h
new file mode 100644
index 0000000..2890b1b
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_iwlan_struct.h
@@ -0,0 +1,548 @@
+#ifndef _ATP_IWLAN_STRUCT_H
+#define _ATP_IWLAN_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ims_interface_md.h"
+#include "ims_common_def.h"
+#include "iwlan_public_defs.h"
+#include "atp_imc_struct.h"
+
+#define ATP_IWLAN_L4_CMD_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define ATP_IWLAN_L4_RSP_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+ kal_bool is_success; \
+ kal_uint16 err_cause;
+
+#define IWLAN_STRSZL 128 // Move from iwlan_defs.h
+#define IWLAN_STRSZM 64
+#define IWLAN_STRSZS 32
+
+/*******************************************************************************
+* IWLAN V.S. ATP from AP *
+* atp_iwlan_cmd_table *
+*******************************************************************************/
+//MSG_ID_ATP_IWLAN_IMSCFG_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_cap_rat_enum vo3gpp_enable;
+ ims_cap_rat_enum vi3gpp_enable;
+ kal_bool vowifi_enable;
+ kal_bool viwifi_enable;
+ kal_bool ims_sms_enable;
+ kal_bool eims_enable;
+} atp_iwlan_imscfg_req_struct;
+
+typedef enum {
+ STATE_IN_SERVICE = 0,
+ STATE_OUT_OF_SERVICE = 1,
+ STATE_EMERGENCY_ONLY = 2,
+ STATE_POWER_OFF = 3,
+}reg_sta_enum;
+
+typedef enum {
+ ROAMING_TYPE_NOT_ROAMING = 0,
+ ROAMING_TYPE_UNKNOWN = 1,
+ ROAMING_TYPE_DOMESTIC = 2,
+ ROAMING_TYPE_INTERNATIONAL = 3,
+}roam_type_enum;
+
+typedef enum {
+ REGISTRATION_STATE_NOT_REGISTERED_AND_NOT_SEARCHING = 0,
+ REGISTRATION_STATE_HOME_NETWORK = 1,
+ REGISTRATION_STATE_NOT_REGISTERED_AND_SEARCHING = 2,
+ REGISTRATION_STATE_REGISTRATION_DENIED = 3,
+ REGISTRATION_STATE_UNKNOWN = 4,
+ REGISTRATION_STATE_ROAMING = 5,
+ REGISTRATION_STATE_NOT_REGISTERED_AND_NOT_SEARCHING_EMERGENCY_CALL_ENABLED = 10,
+ REGISTRATION_STATE_NOT_REGISTERED_AND_SEARCHING_EMERGENCY_CALL_ENABLED = 12,
+ REGISTRATION_STATE_REGISTRATION_DENIED_EMERGENCY_CALL_ENABLED = 13,
+ REGISTRATION_STATE_UNKNOWN_EMERGENCY_CALL_ENABLED = 14,
+}ril_reg_state_enum;
+
+//MSG_ID_ATP_IWLAN_ESRVSTATE_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ reg_sta_enum voice_regstate;
+ reg_sta_enum data_regstate;
+ roam_type_enum voice_roamtype;
+ roam_type_enum data_roamtype;
+ ril_reg_state_enum ril_voice_regstate;
+ ril_reg_state_enum ril_data_regstate;
+} atp_iwlan_esrvstate_req_struct;
+
+//MSG_ID_ATP_IWLAN_ECNCFG_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 mobile_data_en; //The value may be true, false, or NA. So, sue uint8 as type.
+ kal_uint8 data_roaming_en;
+ kal_uint8 data_domestic_roaming_en;
+ kal_uint8 data_international_roaming_en;
+} atp_iwlan_ecncfg_req_struct;
+
+typedef enum {
+ WIFIEN_REASON_NOT_DEFINE = 0,
+ WIFIEN_REASON_FLIGHTMODE = 1,
+ WIFIEN_REASON_RESERVE1,
+ WIFIEN_REASON_RESERVE2,
+ WIFIEN_REASON_RESERVE3,
+}wifien_reason_enum;
+
+
+//MSG_ID_ATP_IWLAN_EWIFIEN_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char ewifi_ifname[IWLAN_STRSZS];
+ kal_bool ewifi_en;
+ wifien_reason_enum ewifi_reason;
+} atp_iwlan_ewifien_req_struct;
+
+typedef enum {
+ WFCPREF_CELLULAR_ONLY = 0,
+ WFCPREF_WIFI_PREF = 1,
+ WFCPREF_CELLULAR_PREF = 2,
+ WFCPREF_WIFI_ONLY = 3,
+ WFCPREF_EPC = 4,
+ WFCPREF_IMS_CUR_RAN = 5,
+ WFCPREF_NA = 6,
+ WFCPREF_CNT,
+}wfcpref_mode_enum;
+
+
+//MSG_ID_ATP_IWLAN_EWFCPREF_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool ewfcpref_en;
+ wfcpref_mode_enum ewfcpref_mode;
+ kal_uint8 sim_id;
+} atp_iwlan_ewfcpref_req_struct;
+
+//MSG_ID_ATP_IWLAN_EVODATA_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool vodata_en;
+ kal_uint8 data_mode;
+ kal_uint8 allow_rat;
+} atp_iwlan_evodata_req_struct;
+
+//MSG_ID_ATP_IWLAN_EWIFIASC_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char ifname[IWLAN_STRSZS];
+ kal_bool assoc;
+ kal_uint8 ssid[IWLAN_STRSZS];
+ kal_uint8 mac[IWLAN_STRSZM];
+} atp_iwlan_ewifiasc_req_struct;
+
+//MSG_ID_ATP_IWLAN_ELOCAEN_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool loc_en ;
+} atp_iwlan_elocaen_req_struct ;
+
+//MSG_ID_ATP_IWLAN_EWIFISIGLVL_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_int32 rssi;
+} atp_iwlan_ewifisiglvl_req_struct;
+
+//MSG_ID_ATP_IWLAN_EIWLCFGSET_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+ kal_char cfg_value[256];
+} atp_iwlan_eiwlcfgset_req_struct;
+//MSG_ID_ATP_IWLAN_EIWLCFGGET_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+} atp_iwlan_eiwlcfgget_req_struct;
+
+//MSG_ID_ATP_IWLAN_EPVSSET_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+ kal_char cfg_value[256];
+} atp_iwlan_epvsset_req_struct;
+//MSG_ID_ATP_IWLAN_EPVSGET_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+} atp_iwlan_epvsget_req_struct;
+
+
+//MSG_ID_ATP_IWLAN_EIMSGEO_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_int8 account_id; // (0~7: ims stack, 100: iwlan)
+ 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_iwlan_eimsgeo_req_struct;
+
+typedef enum {
+ EIMSRCSCONN_STATUE_DISCONNECTED = 0, // 0 RCS session is disconnected.
+ EIMSRCSCONN_STATUE_CONNECTED = 1, // 1 RCS session is connected.
+ EIMSRCSCONN_STATUE_RESET = 254, // 254 Reset all RCS session.
+}eimsrcsconn_status_enum;
+
+
+//MSG_ID_ATP_IWLAN_EIMSRCSCONN_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ eimsrcsconn_status_enum status;
+}atp_iwlan_eimsrcsconn_req_struct;
+
+// MSG_ID_ATP_IWLAN_EIWLPLEN_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 en;
+} atp_iwlan_eiwlplen_req_struct;
+
+//MSG_ID_ATP_IWLAN_EIWLPING_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ iwlan_ran_e rat_type;
+ kal_int32 ave_latency;
+ kal_int32 loss_rate;
+} atp_iwlan_eiwlping_req_struct;
+
+//MSG_ID_ATP_IWLAN_EFUN_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_int8 state;
+} atp_iwlan_efun_req_struct; //phase out
+
+//MSG_ID_ATP_IWLAN_EAPMODE_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_int8 mode;
+} atp_iwlan_eapmode_req_struct;
+
+// MSG_ID_ATP_IWLAN_SIP_CALL_PROGRESS_REQ
+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]; //IWLAN only care about reason text
+} atp_iwlan_sip_call_progress_req_struct;
+
+typedef enum{
+ DRP_OP_FLUSH = 0, //no use now
+ DRP_OP_DUMP = 1,
+ DRP_OP_CNT,
+}drp_op_enum;
+
+
+//MSG_ID_ATP_IWLAN_DUMP_RUNTIME_PARA_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ drp_op_enum op; // 0: flush NVRAM 1: dump to NVRAM
+} atp_iwlan_dump_runtime_para_req_struct;
+
+
+/*******************************************************************************
+* IWLAN V.S. ATP to AP *
+* atp_iwlan_urc_to_ap_table *
+*******************************************************************************/
+#define IWLAN_WIFI_RSSI_CFG_NUM 16
+//MSG_ID_ATP_IWLAN_WIFIMON_CFG_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool en;
+ kal_uint8 cnt;
+ kal_int32 sig_thr[IWLAN_WIFI_RSSI_CFG_NUM];
+} atp_iwlan_wifimon_cfg_ind_struct;
+
+//MSG_ID_ATP_IWLAN_EWIFIPDNACT_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 cnt;
+} atp_iwlan_ewifipdnact_ind_struct;
+
+//MSG_ID_ATP_IWLAN_EIWLCFGSET_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+ kal_int32 status;
+} atp_iwlan_eiwlcfgset_ind_struct;
+
+//MSG_ID_ATP_IWLAN_EIWLCFGGET_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+ kal_char cfg_value[256];
+ kal_int32 status;
+} atp_iwlan_eiwlcfgget_ind_struct;
+
+//MSG_ID_ATP_IWLAN_EPVSSET_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+ kal_int32 status;
+} atp_iwlan_epvsset_ind_struct;
+
+//MSG_ID_ATP_IWLAN_EPVSGET_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+ kal_char cfg_value[256];
+ kal_int32 status;
+} atp_iwlan_epvsget_ind_struct;
+
+
+//MSG_ID_ATP_IWLAN_EIMSGEO_IND
+typedef atp_iwlan_eimsgeo_req_struct atp_iwlan_eimsgeo_ind_struct;
+
+//MSG_ID_ATP_IWLAN_EWFCRVOUT_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char ifname[IWLAN_STRSZS]; // align ifname in atp_iwlan_ewifiasc_req_struct
+ kal_bool rvout_en;
+ kal_bool mobike_ind;
+} atp_iwlan_ewfcrvout_ind_struct;
+
+//MSG_ID_ATP_IWLAN_EIWLPING_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ iwlan_ran_e rat_type;
+} atp_iwlan_eiwlping_ind_struct;
+
+// MSG_ID_ATP_IWLAN_EIWLPL_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cmd[8];
+ kal_char type[16];
+ kal_uint8 priority_for_setup;
+ kal_uint8 priority_for_cellular;
+ kal_uint8 priority_for_wifi;
+ kal_char description[32];
+ // For +EIWLPL ver.2
+ kal_uint8 verno;
+ kal_uint8 rat_num;
+ kal_uint8 rpl_row[RPL_RAN_PRIOR_MAX];
+} atp_iwlan_eiwlpl_ind_struct;
+
+// MSG_ID_ATP_IWLAN_CEUS_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 centric_type;
+} atp_iwlan_ceus_req_struct;
+
+// MSG_ID_ATP_IWLAN_CEUS_IND
+typedef atp_iwlan_ceus_req_struct atp_iwlan_ceus_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_irat_status_enum irat_status;
+ kal_bool irat_result;
+} atp_iwlan_eirat_status_req_struct;
+
+/*******************************************************************************
+* IWLAN V.S. ATP from MD *
+* atp_urc_table *
+*******************************************************************************/
+
+//MSG_ID_ATP_IWLAN_L4_VOPS_URCRPT_REQ
+typedef struct {
+ ATP_IWLAN_L4_RSP_IND_LOCAL_PARA_HDR
+ kal_bool en;
+} atp_iwlan_l4_vops_urcrpt_req_struct;
+
+//MSG_ID_ATP_IWLAN_L4_ECEVDP_URCRPT_REQ
+typedef struct {
+ ATP_IWLAN_L4_RSP_IND_LOCAL_PARA_HDR
+ kal_uint8 vodm_pref;
+} atp_iwlan_l4_ecevdp_urcrpt_req_struct;
+
+//MSG_ID_ATP_IWLAN_L4_CELLSIG_URCRPT_REQ
+typedef struct {
+ ATP_IWLAN_L4_RSP_IND_LOCAL_PARA_HDR
+ kal_int32 sig1;
+ kal_int32 sig2;
+ kal_int32 rssi_qdbm;
+ kal_int32 rscp_qdbm;
+ kal_int32 ecn0_qdbm;
+ kal_int32 rsrq_qdbm;
+ kal_int32 rsrp_qdbm;
+ kal_uint32 act;
+ kal_int32 rs_snr_qdb;
+ kal_int32 band;
+ kal_int32 second_rsrp_qdbm;
+ kal_int32 second_rsrq_qdbm;
+ kal_int32 second_sig3;
+} atp_iwlan_l4_cellsig_urcrpt_req_struct;
+
+
+/*******************************************************************************
+* IWLAN V.S. ATP to MD *
+* atp_iwlan_request_table *
+*******************************************************************************/
+//MSG_ID_ATP_IWLAN_L4_IMSCFG_IND
+typedef atp_iwlan_imscfg_req_struct atp_iwlan_l4_imscfg_ind_struct;
+
+//MSG_ID_ATP_IWLAN_L4_IMSCFG_RSP
+typedef struct {
+ ATP_IWLAN_L4_RSP_IND_LOCAL_PARA_HDR
+} atp_iwlan_l4_imscfg_rsp_struct;
+
+
+//MSG_ID_ATP_IWLAN_L4_CELLSIG_QUERY_IND
+//<TBD>
+//MSG_ID_ATP_IWLAN_L4_CELLSIG_QUERY_RSP
+typedef atp_iwlan_l4_cellsig_urcrpt_req_struct atp_iwlan_l4_cellsig_query_rsp_struct;
+
+
+/****************************
+ * Get URC porting from IMC *
+ ****************************/
+/*
+ * Description
+ * - the primitive is used for PS to notify IWLAN rat_type, cell_id, PLMN_type
+ * Direction
+ * - PS -> IWLAN
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_rat_type_enum rat_type;
+ kal_uint64 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[3];
+ kal_bool limited_service_emc_support;
+ domain_id_enum domain;
+ kal_bool is_empty_cell;
+ /*ecall over IMS*/
+#ifdef __NG_ECALL_SUPPORT__
+ kal_bool support_ecl; /*newtork support ecall over ims or not*/
+#endif
+
+} atp_iwlan_eimsinfo_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IWLAN_EC2KREG_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_iwlan_ec2kreg_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IWLAN_EC2KCELL_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_iwlan_ec2kcell_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IWLAN_EAFR_IND
+ * +EAFR=<afr_result>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool result;
+} atp_iwlan_eafr_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IWLAN_ECMPCID_REQ
+ * +ECMPCID:<rat>,<ci>,<plmn_id>,<lac>,<tac>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_rat_type_enum rat_type;
+ kal_uint64 cell_id;
+ kal_uint8 plmn[MAX_PLMN_LEN + 1];
+ kal_uint16 la_code;
+ kal_uint32 ta_code;
+} atp_iwlan_ecmpcid_req_struct;
+
+/*
+ * @brief UE receive mt cs paging
+ * note MSG_ID_ATP_IWLAN_MT_CS_PAGING_IND
+ * +CIEV: 13
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+} atp_iwlan_mt_cs_paging_ind_struct;
+
+/*
+ * @brief UE receive csfb fail ind
+ * note MSG_ID_ATP_IWLAN_CSFB_FAIL_IND
+ * +ECFFAIL
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+} atp_iwlan_csfb_fail_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IWLAN_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_iwlan_cs_call_status_ind_struct;
+
+/*
+ * Description
+ * - the primitive is used for NAS to notify IWLAN of the SIM Invalid event
+ * Direction
+ * - PS -> IWLAN
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ plmn_id_struct plmn_id;
+ kal_bool is_cs_invalid;
+ kal_bool is_ps_invalid;
+ kal_uint32 cause;
+} atp_iwlan_sim_invalid_req_struct;
+
+/*
+ * Description
+ * - the primitive is used for PS to notify IWLAN that the UE is in/out of limited service
+ * Direction
+ * - PS -> IWLAN
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+} atp_iwlan_oos_start_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+} atp_iwlan_oos_end_req_struct;
+
+#endif /* _ATP_IWLAN_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/atp_ltecsr_struct.h b/mcu/protocol/interface/ims/atp_ltecsr_struct.h
new file mode 100644
index 0000000..f2bffd0
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_ltecsr_struct.h
@@ -0,0 +1,117 @@
+/*****************************************************************************
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _ATP_LTECSR_STRUCT_H
+#define _ATP_LTECSR_STRUCT_H
+
+#include "ims_common_def.h"
+
+
+typedef enum {
+ ATP_LTECSR_DRP_FLUSH_NVRAM = 0,
+ ATP_LTECSR_DRP_DUMP_TO_NVRAM = 1,
+} atp_ltecsr_drp_enum;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_LTECSR_ECFG_SET_REQ
+ * AT> AT+ECFGSET=<cfg_name>,<cfg_value>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 name[64]; // TODO (by indy), should add define symbol in "ims_common_def.h"
+ kal_uint8 value[128]; // TODO (by indy), should add define symbol in "ims_common_def.h"
+} atp_ltecsr_ecfg_set_req_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_LTECSR_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_ltecsr_ecfg_set_cnf_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_LTECSR_ECFG_GET_REQ
+ * AT> AT+ECFGSET=<cfg_name>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 name[64]; // TODO (by indy), should add define symbol in "ims_common_def.h"
+} atp_ltecsr_ecfg_get_req_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_LTECSR_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]; // TODO (by indy), should add define symbol in "ims_common_def.h"
+ kal_uint8 value[128]; // TODO (by indy), should add define symbol in "ims_common_def.h"
+} atp_ltecsr_ecfg_get_cnf_struct;
+
+
+typedef struct {
+ LOCAL_PARA_HDR
+ atp_ltecsr_drp_enum op;
+} atp_ltecsr_dump_runtime_para_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_LTECSR_IMS_AUDIO_SILENCE_IND_REQ
+ * AT> AT+EIMSAUDIOSID=<call_id>,<enable>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 call_id;
+ kal_bool enable;
+} atp_ltecsr_ims_audio_silence_ind_req_struct;
+
+
+#endif
diff --git a/mcu/protocol/interface/ims/atp_n3ans_struct.h b/mcu/protocol/interface/ims/atp_n3ans_struct.h
new file mode 100644
index 0000000..87cb71e
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_n3ans_struct.h
@@ -0,0 +1,72 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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:
+ * ---------
+ * atp_n3ans_struct.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *
+ ****************************************************************************/
+
+#ifndef ATP_N3ANS_STRUCT_H
+#define ATP_N3ANS_STRUCT_H
+
+#include "atcmd_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+/*******************************************************************************
+* ATP to ANS (relay AT command from ATP to N3ANS) *
+*******************************************************************************/
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char country_code[MAX_GEO_COUNTRY_CODE_LEN];
+ kal_char mcc[MAX_GEO_MCC_NUM][MAX_MCC_STR_LEN];
+} atp_n3ans_eimsgeo_req_struct;
+
+#endif /* ATP_N3ANS_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/atp_n3epc_struct.h b/mcu/protocol/interface/ims/atp_n3epc_struct.h
new file mode 100644
index 0000000..6e7d3b4
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_n3epc_struct.h
@@ -0,0 +1,81 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef ATP_N3EPC_STRUCT_H
+#define ATP_N3EPC_STRUCT_H
+
+#include "atcmd_struct.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "n3epc_public_defs.h"
+#include "n3_public_defs.h"
+
+
+typedef enum {
+ N3EPC_SCREEN_UNLOCK = 0,
+ N3EPC_SCREEN_LOCK = 1,
+ N3EPC_SCREEN_OPEN_KEYGUARD_ON = 2,
+} n3epc_screen_state_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 enable;
+} atp_n3epc_eepdg_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 apn[100];
+ kal_uint32 cid;
+ n3_oos_status_enum oos;
+} atp_n3epc_ewopdnoos_ind_struct;
+
+typedef atp_n3epc_ewopdnoos_ind_struct atp_imsm_ewopdnoos_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ n3epc_screen_state_enum state;
+} atp_n3epc_escreenstate_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool volte_enable;
+ kal_bool vilte_enable;
+ kal_bool vowifi_enable;
+ kal_bool viwifi_enable;
+ kal_bool ims_sms_enable;
+ kal_bool eims_enable;
+} atp_n3epc_eimscfg_req_struct;
+
+#endif /* _ATP_WO_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/atp_sase_struct.h b/mcu/protocol/interface/ims/atp_sase_struct.h
new file mode 100644
index 0000000..ffc3a4a
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_sase_struct.h
@@ -0,0 +1,74 @@
+/*****************************************************************************
+* 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:
+ * ---------
+ * atp_sase_struct.h
+ *
+ * Description:
+ * ------------
+ * ATP related message identity definition
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ****************************************************************************/
+#ifndef _ATP_SASE_STRUCT_H
+#define _ATP_SASE_STRUCT_H
+
+#include "atp_public_defs.h"
+#include "ims_common_def.h"
+#include "ps_public_enum_public.h"
+
+/*
+typedef enum
+{
+ IMS_REG_STATE_UNREGISTERED = 0,
+ IMS_REG_STATE_REGISTERED,
+ IMS_REG_STATE_UNREGISTERED_START,
+ IMS_REG_STATE_REGISTERED_START
+} ims_reg_state_enum;
+*/
+
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_reg_state_enum reg_state;
+} atp_sase_ims_reg_status_ind_struct;
+
+typedef atp_sase_ims_reg_status_ind_struct atp_sase_ims_reg_status_ind_struct; // MSG_ID_ATP_SASE_IMS_REG_STATUS_IND
+#endif /* _ATP_SASE_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/atp_ssds_struct.h b/mcu/protocol/interface/ims/atp_ssds_struct.h
new file mode 100644
index 0000000..96797f1
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_ssds_struct.h
@@ -0,0 +1,399 @@
+/*****************************************************************************
+* 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _ATP_SSDS_STRUCT_H
+#define _ATP_SSDS_STRUCT_H
+
+#include "atp_public_defs.h"
+#include "ims_interface_md.h"
+#include "netinfo_common_struct.h"
+#include "ps_public_enum_public.h"
+#include "xcap_if.h"
+#include "ssds_imc_struct.h"
+
+#define ATP_SSDS_XUI_INFO_MAX_SIZE 512 //IMC_ATCMD_MAX_CMDLINE_LEN
+#define ATP_SSDS_MAX_ADDR_BUF_NUM 10 //#define MAX_ADDR_BUF_NUM 10
+
+typedef enum
+{
+ ATP_SSDS_ECUSD_ATCMD_TYPE_BEGIN,
+ ATP_SSDS_ECUSD_ATCMD_TYPE_SS,
+ ATP_SSDS_ECUSD_ATCMD_TYPE_USSD,
+ ATP_SSDS_ECUSD_ATCMD_TYPE_UNKNOWN
+
+}atp_ssds_ecusd_atcmd_type;
+
+typedef enum
+{
+ ATP_SSDS_USSD_ATCMD_TYPE_UNKNOWN,
+ ATP_SSDS_USSD_ATCMD_TYPE_EXECUTE,
+ ATP_SSDS_USSD_ATCMD_TYPE_CANCEL,
+ ATP_SSDS_USSD_ATCMD_TYPE_ENABLE_RESULT
+
+}atp_ssds_ussd_atcmd_type;
+
+
+typedef enum
+{
+ ATP_SSDS_ATCMD_TYPE_BEGIN,
+
+ ATP_SSDS_ATCMD_TYPE_CLIP_SET,
+ ATP_SSDS_ATCMD_TYPE_CLIP_QUERY,
+ ATP_SSDS_ATCMD_TYPE_CLIP_UNKNOWN,
+
+ ATP_SSDS_ATCMD_TYPE_CLIR_SET,
+ ATP_SSDS_ATCMD_TYPE_CLIR_QUERY,
+ ATP_SSDS_ATCMD_TYPE_CLIR_UNKNOWN,
+
+ ATP_SSDS_ATCMD_TYPE_COLP_SET,
+ ATP_SSDS_ATCMD_TYPE_COLP_QUERY,
+ ATP_SSDS_ATCMD_TYPE_COLP_UNKNOWN,
+
+ ATP_SSDS_ATCMD_TYPE_COLR_SET,
+ ATP_SSDS_ATCMD_TYPE_COLR_QUERY,
+ ATP_SSDS_ATCMD_TYPE_COLR_UNKNOWN,
+
+ ATP_SSDS_ATCMD_TYPE_CALL_FORWARDING_SET,
+ ATP_SSDS_ATCMD_TYPE_CALL_FORWARDING_QUERY,
+ ATP_SSDS_ATCMD_TYPE_CALL_FORWARDING_WITH_TIMESLOT_SET,
+ ATP_SSDS_ATCMD_TYPE_CALL_FORWARDING_WITH_TIMESLOT_QUERY,
+ ATP_SSDS_ATCMD_TYPE_CALL_FORWARDING_WITHOUT_REG_SET,
+ ATP_SSDS_ATCMD_TYPE_CALL_FORWARDING_WITHOUT_REG_QUERY,
+ ATP_SSDS_ATCMD_TYPE_CALL_WAITING_SET,
+ ATP_SSDS_ATCMD_TYPE_CALL_WAITING_QUERY,
+ ATP_SSDS_ATCMD_TYPE_CALL_BARRING_SET,
+ ATP_SSDS_ATCMD_TYPE_CALL_BARRING_QUERY,
+ ATP_SSDS_ATCMD_TYPE_ECUSD_UNKNOWN,
+
+ ATP_SSDS_ATCMD_TYPE_SS_UNKNOWN,
+ ATP_SSDS_ATCMD_TYPE_EGBA_TRIGGER,
+ ATP_SSDS_ATCMD_TYPE_CNAP_QUERY,
+ ATP_SSDS_ATCMD_TYPE_DELETE_CMD,
+
+ ATP_SSDS_ATCMD_TYPE_END
+
+}atp_ssds_atcmd_type;
+
+typedef enum
+{
+ ATP_SSDS_USSD_PARSE_OK,
+ ATP_SSDS_USSD_PARSE_FAIL
+
+}atp_ssds_ussd_error_cause_type;
+
+typedef enum
+{
+ ATP_SSDS_REQ_TYPE_NORMAL,
+ ATP_SSDS_REQ_TYPE_PDN_QUERY
+
+}atp_ssds_req_type;
+
+typedef struct
+{
+ atp_ssds_ussd_atcmd_type ussd_type;
+ kal_uint8 cmd_mode;
+ kal_uint16 str_index;
+ kal_uint16 cmd_len;
+ kal_uint8 *at_cmd;
+
+}atp_ssds_atcmd_info_strut;
+
+
+typedef struct
+{
+ kal_uint32 net_id;
+ kal_uint32 dnsv4_num;
+ kal_uint8 dnsv4_addr[ATP_SSDS_MAX_ADDR_BUF_NUM][IPV4_ADDR_LEN];
+ kal_uint32 dnsv6_num;
+ kal_uint8 dnsv6_addr[ATP_SSDS_MAX_ADDR_BUF_NUM][IPV6_ADDR_LEN];
+
+}atp_ssds_network_info_strut;
+
+/*structure for ATP --- > SSDS*/
+#define ATP_SSDS_SS_ATCMD_REQ_FLAGS_SET_TO_QUERY 0x11 /*During set to XCAP, call_waiting/CLIR/CLIP/COLP/COLR set change to get*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ atp_ssds_atcmd_type ss_type;
+ atp_ssds_network_info_strut network_info;
+ kal_uint32 ss_flags;
+ kal_uint8 *ss_str;
+ atp_ssds_req_type req_type;
+
+}atp_ssds_ss_atcmd_req_struct, atp_ssds_egba_atcmd_req_struct, atp_ssds_ss_atcmd_redirect_req_struct,ssds_xcap_stkss_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ atp_ssds_ussd_error_cause_type ussd_error_cause;
+ atp_ssds_ussd_atcmd_type ussd_type;
+ kal_uint16 cs_cmd_len;
+ kal_uint8 *ussd_str;
+ kal_uint8 dcs;
+ kal_uint8 language[IMS_USSD_LANGUANGE_LEN];
+ kal_uint8 digit_from_line_number[IMC_MAX_URI_LENGTH];
+}atp_ssds_ussd_atcmd_req_struct;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_bool result;
+ kal_uint32 mobile_data; /*0: off; 1: on;*/
+ kal_uint32 data_roaming; /*0: off; 1: on;*/
+
+}atp_ssds_ecncfg_atcmd_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool is_icon_display;
+
+}atp_ssds_stkussd_atcmd_req_struct,atp_ssds_stkss_atcmd_req_struct;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_bool result;
+ kal_uint32 roaming_type;
+
+}atp_ssds_esrvstate_atcmd_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool result;
+ kal_uint32 vt_volte_enable;
+
+}atp_ssds_ecfgset_atcmd_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 reserved;
+}atp_ssds_ss_urc_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool result;
+ kal_uint32 ims_registered;
+}atp_ssds_ciregu_urc_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 xui_info[ATP_SSDS_XUI_INFO_MAX_SIZE];
+
+}atp_ssds_xui_info_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_reg_state_enum reg_state; // REGISTERED, UNREGISTERED
+ 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;
+ ims_reg_service_enum reg_service;
+ kal_bool ims_retry;
+} atp_ssds_ims_reg_status_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 ps_reg_status;
+ kal_uint32 ps_reg_tech;
+
+} atp_ssds_ps_reg_status_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ssds_ussd_status_enum ussd_status;
+
+} atp_ssds_ussd_atcmd_redirect_ind_struct;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ proxy_cmd_result_enum result;
+ kal_uint32 error_code;
+ kal_uint32 real_error_code;
+ XCAP_NW_ERROR_DETAIL_INFO error_info;
+
+}atp_ssds_ss_atcmd_redirect_cnf_struct,atp_ssds_ussd_atcmd_redirect_cnf_struct,atp_ssds_erat_query_cnf_struct,atp_ssds_erat_set_cnf_struct;
+
+/*structure for SSDS --- > ATP*/
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 reserved;
+}atp_ssds_ss_urc_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ssds_ussd_status_enum ussd_status;
+ kal_uint16 ussd_len;
+}atp_ssds_ussd_urc_ind_struct;
+
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ proxy_cmd_result_enum result;
+ kal_uint32 error_code;
+ kal_uint32 real_error_code;
+ XCAP_NW_ERROR_DETAIL_INFO error_info;
+
+}atp_ssds_ss_atcmd_cnf_struct, atp_ssds_egba_atcmd_cnf_struct,ssds_xcap_ss_atcmd_cnf_struct,ssds_xcap_stkss_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 test_mode;
+}atp_ssds_test_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+}atp_ssds_excaprcn_urc_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 sim_id;
+ kal_uint32 sbp_id;
+ protocol_id_enum ps_id;
+ kal_char mcc[MAX_MCC_STR_LEN];
+ kal_char mnc[MAX_MNC_STR_LEN];
+ //nvram_ef_ssds_xcap_profile_struct xcap_mcf_config;
+} ssds_dsbp_reconfigure_ind_struct;
+
+#endif /* _ATP_SSDS_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/atp_wo_struct.h b/mcu/protocol/interface/ims/atp_wo_struct.h
new file mode 100644
index 0000000..2b4a4c3
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_wo_struct.h
@@ -0,0 +1,178 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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:
+ * ---------
+ * atp_wo_struct.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *
+ ****************************************************************************/
+
+#ifndef _ATP_WO_STRUCT_H
+#define _ATP_WO_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+#include "wo_public_defs.h"
+
+#define WO_IFACE_LEN 16
+#define WO_SSID_LEN 80
+#define WO_APMAC_LEN 18
+
+typedef enum {
+ ATP_WO_ECFGDRP_FLUSH_NVRAM = 0,
+ ATP_WO_ECFGDRP_DUMP_TO_NVRAM = 1,
+} atp_wo_ecfgdrp_enum;
+
+/*******************************************************************************
+* ATP to WO (relay AT command from ATP to WO) *
+*******************************************************************************/
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 iface[WO_IFACE_LEN];
+ kal_uint8 assoc;
+ kal_uint8 ssid[WO_SSID_LEN];
+ kal_uint8 apmac[WO_APMAC_LEN];
+} atp_wo_ewifiasc_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 iface[WO_IFACE_LEN];
+ kal_uint8 ipv4[16];
+ kal_uint8 ipv6[46];
+} atp_wo_ewifiaddr_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 iface[WO_IFACE_LEN];
+ kal_uint8 enable;
+ kal_uint8 src_ip[46];
+ kal_uint16 src_port;
+ kal_uint8 dst_ip[46];
+ kal_uint16 dst_port;
+} atp_wo_ewifinatt_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char country_code[MAX_GEO_COUNTRY_CODE_LEN];
+ kal_char mcc[MAX_GEO_MCC_NUM][MAX_MCC_STR_LEN];
+} atp_wo_eimsgeo_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 pvs_name[64];
+ kal_uint8 pvs_value[256];
+} atp_wo_epvsset_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 cfg_name[64];
+ kal_uint8 cfg_value[256];
+} atp_wo_ewocfgset_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 cfg_name[64];
+} atp_wo_ewocfgget_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 enable;
+} atp_wo_eepdg_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ atp_wo_ecfgdrp_enum op;
+} atp_wo_ecfgdrp_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 enable;
+} atp_wo_eifconfig_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 msg_name[64];
+ kal_uint8 msg_value[256];
+} atp_wo_ewotest_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 iface[16];
+ wo_status_enum status;
+} atp_wo_ewifinatt_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 cfg_name[64];
+ kal_int32 status;
+} atp_wo_ewocfgset_cnf_struct;
+
+typedef atp_wo_ewocfgset_req_struct atp_wo_ewocfgget_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 apn[100];
+ kal_uint32 cid;
+ wo_oos_enum oos;
+} atp_wo_ewopdnoos_ind_struct;
+
+typedef atp_wo_ewopdnoos_ind_struct atp_imsm_ewopdnoos_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 enable;
+ kal_uint32 interval;
+ kal_uint8 src_ip[64];
+ kal_uint16 src_port;
+ kal_uint8 dst_ip[64];
+ kal_uint16 dst_port;
+} atp_wo_ewokeepalive_ind_struct;
+
+#endif /* _ATP_WO_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/atp_xcap_struct.h b/mcu/protocol/interface/ims/atp_xcap_struct.h
new file mode 100644
index 0000000..fdac9d1
--- /dev/null
+++ b/mcu/protocol/interface/ims/atp_xcap_struct.h
@@ -0,0 +1,136 @@
+/*****************************************************************************
+* 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:
+ * ---------
+ * atp_xcap_struct.h
+ *
+ * Description:
+ * ------------
+ * ATP related message identity definition
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ ****************************************************************************/
+#ifndef _ATP_XCAP_STRUCT_H
+#define _ATP_XCAP_STRUCT_H
+
+#include "atp_public_defs.h"
+#include "ims_interface_md.h"
+#include "netinfo_common_struct.h"
+#include "ps_public_enum_public.h"
+#include "xcap_if.h"
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 xui_info[XCAP_XUI_MGR_INFO_MAX_SIZE];
+}atp_xcap_xui_info_ind_struct;
+
+/*
+typedef enum {
+ IMC_REG_STATE_UNREGISTERED = 0,
+ IMC_REG_STATE_REGISTERING,
+ IMC_REG_STATE_REGISTERED,
+ IMC_REG_STATE_UNREGISTERING
+} imc_reg_state_enum;
+*/
+
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_reg_state_enum reg_state;
+} atp_xcap_ims_reg_status_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ proxy_cmd_result_enum result;
+ kal_uint32 error_code;
+} atp_xcap_egba_atcmd_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 ps_reg_state;
+} atp_xcap_ps_reg_status_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_reg_state_enum reg_state; // REGISTERED, UNREGISTERED, UNREGISTERED_START, REGISTERED_START
+ ims_reg_type_enum reg_type; // normal or emergency reg
+ ims_reg_service_enum reg_service; //none, voice, txt, sms, video, all, both(voice+sms)
+ ims_dereg_cause_enum dereg_cause; //unspecified, power off, rf off
+ ims_access_rat_enum rat; //lte, wifi, ehrpd, gsm, umts
+ ims_ecmp_enum ecmp; //unspec, lte, wlan
+} atp_xcap_eireg_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 mobile_data;
+ kal_uint8 data_roaming;
+} atp_xcap_ecncfg_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool vodata_en;
+ kal_uint8 data_mode;
+ kal_uint8 allow_rat;
+} atp_xcap_evodata_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 cfg_name[64];
+ kal_uint8 cfg_value[256];
+} atp_xcap_excapcfgset_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 cfg_name[64];
+} atp_xcap_excapcfgget_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 cfg_name[64];
+ kal_int32 status;
+} atp_xcap_excapcfgset_cnf_struct;
+
+typedef atp_xcap_excapcfgset_req_struct atp_xcap_excapcfgget_cnf_struct;
+typedef atp_xcap_ps_reg_status_ind_struct atp_xcap_conn_mgr_egreg_ind_struct; //MSG_ID_ATP_XCAP_CONN_MGR_EGREG_IND
+typedef atp_xcap_eireg_ind_struct atp_xcap_conn_mgr_eireg_ind_struct; //MSG_ID_ATP_XCAP_CONN_MGR_EIREG_IND
+
+#endif /* _ATP_XCAP_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/d2_d2rm_struct.h b/mcu/protocol/interface/ims/d2_d2rm_struct.h
new file mode 100644
index 0000000..8f02d6c
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2_d2rm_struct.h
@@ -0,0 +1,169 @@
+#ifndef __D2_D2RM_STRUCT__
+#define __D2_D2RM_STRUCT__
+
+#include "atcmd_struct.h"
+
+#include "iwlan_public_defs.h"
+
+#include "d2rm_public_defs.h"
+
+#include "d2pm_d2rm_struct.h"
+
+
+// ============================================================================
+// MSG_ID_D2_GET_DATA_CALL_LIST_REQ
+// MSG_ID_D2_GET_DATA_CALL_LIST_IND
+// MSG_ID_D2_GET_DATA_CALL_LIST_CNF
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 src_id;
+ kal_uint32 cid;
+} d2_get_data_call_list_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 src_id;
+ kal_uint32 cid;
+ d2pm_d2rm_pdn_state_enum state;
+
+} d2_get_data_call_list_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 src_id;
+ d2pm_d2rm_res_enum res;
+} d2_get_data_call_list_cnf_struct;
+
+
+// ============================================================================
+// MSG_ID_D2_GET_DYNAMIC_PARAM_REQ
+// MSG_ID_D2_GET_DYNAMIC_PARAM_IND
+// MSG_ID_D2_GET_DYNAMIC_PARAM_CNF
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 src_id;
+
+ kal_bool cid_present;
+ kal_uint32 cid;
+} d2_get_dynamic_param_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 src_id;
+
+ kal_uint32 cid;
+ iwlan_ran_e ran;
+
+ /* private part */
+ d2pm_ddm_get_dynamic_param_ind_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_get_dynamic_param_ind_prv_struct d2pm_n3epc_prv;
+} d2_get_dynamic_param_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 src_id;
+
+ d2pm_d2rm_res_enum res;
+} d2_get_dynamic_param_cnf_struct;
+
+
+// ============================================================================
+// MSG_ID_D2_GET_PDN_RAN_REQ
+// MSG_ID_D2_GET_PDN_RAN_IND
+// MSG_ID_D2_GET_PDN_RAN_CNF
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 src_id;
+ kal_uint32 cmd_mode;
+
+ kal_uint32 cid;
+} d2_get_pdn_ran_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint16 src_id;
+
+ kal_uint32 cid;
+ iwlan_ran_e ran;
+} d2_get_pdn_ran_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 src_id;
+ kal_bool is_success;
+ kal_uint16 err_cause;
+
+ kal_bool is_succ;
+} d2_get_pdn_ran_cnf_struct;
+
+// ============================================================================
+// MSG_ID_D2PM_D2RM_GET_RETRYTMR_REQ
+// MSG_ID_D2PM_D2RM_GET_RETRYTMR_CNF
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 src_id;
+ kal_char apn[APN_STRING_LEN];
+} d2_get_retrytmr_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 src_id;
+
+ ran_info_struct ran_info;
+
+ retry_info_struct retry_info;
+} d2_get_retrytmr_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 src_id;
+} d2_get_retrytmr_cnf_struct;
+
+// ----------------------------------------------------------------------------
+// MSG_ID_D2PM_D2RM_SET_RETRYTMR_REQ
+// MSG_ID_D2PM_D2RM_SET_RETRYTMR_CNF
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_char apn[APN_STRING_LEN];
+ kal_uint8 cmd;
+
+ /* private part */
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_comm_prv_struct d2pm_n3epc_prv;
+} d2pm_d2rm_set_retrytmr_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_char apn[APN_STRING_LEN];
+ kal_bool is_succ;
+
+ /* private part */
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_comm_prv_struct d2pm_n3epc_prv;
+} d2pm_d2rm_set_retrytmr_cnf_struct;
+
+#endif
diff --git a/mcu/protocol/interface/ims/d2_imc_struct.h b/mcu/protocol/interface/ims/d2_imc_struct.h
new file mode 100644
index 0000000..f12199b
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2_imc_struct.h
@@ -0,0 +1,92 @@
+/*****************************************************************************
+* 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef _D2_IMC_STRUCT_H
+#define _D2_IMC_STRUCT_H
+
+#include "ps_public_enum.h"
+#include "sim_public_enum.h"
+#include "ims_common_def.h"
+#include "ims_interface_md.h"
+
+typedef enum {
+ D2_IMC_IMS_CALL_STATUS_UNSPEC = 0,
+ D2_IMC_IMS_CALL_STATUS_BEGIN,
+ D2_IMC_IMS_CALL_STATUS_CONNECTED,
+ D2_IMC_IMS_CALL_STATUS_END,
+} d2_imc_ims_call_status_enum;
+
+/*
+ * @brief IMS diable by D2
+ * @note MSG_ID_D2_IMC_IMS_DEREG_REQ/CNF
+ * AT+EIMSDEREG=5
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 dereg_cause;
+} d2_imc_ims_dereg_req_struct,
+ d2_imc_ims_dereg_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_acct_type_enum acct_type; //defined in ims_interface_md.h
+ kal_uint32 call_id;
+ ims_call_mode_enum call_mode; //defined in ims_interface_md.h
+ d2_imc_ims_call_status_enum call_status;
+} d2_imc_ims_call_status_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 ims_roaming_mode;
+} d2_imc_ims_roaming_ind_struct;
+
+#endif /* _D2_IMC_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/d2_struct_tmp.h b/mcu/protocol/interface/ims/d2_struct_tmp.h
new file mode 100644
index 0000000..a378d6d
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2_struct_tmp.h
@@ -0,0 +1,105 @@
+#ifndef __D2_STRUCT_TMP__
+#define __D2_STRUCT_TMP__
+
+#include "d2cm_struct.h"
+
+#include "d2_d2rm_struct.h"
+
+
+typedef d2cm_get_pdn_profile_req_struct d2_get_pdn_profile_req_struct;
+typedef d2cm_get_pdn_profile_ind_struct d2_get_pdn_profile_ind_struct;
+typedef d2cm_get_pdn_profile_cnf_struct d2_get_pdn_profile_cnf_struct;
+
+typedef d2cm_get_pdn_profile_req_struct d2_get_pdn_profile_req_struct;
+
+
+#define D2_REQ_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+ kal_uint32 cmd_mode;
+
+#define D2_CNF_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+ kal_bool is_success; \
+ kal_uint16 err_cause;
+
+#define D2_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint16 src_id;
+
+typedef struct {
+ D2_REQ_LOCAL_PARA_HDR
+ kal_uint32 interface_id;
+} d2_get_ip_info_req_struct;
+
+typedef struct {
+ D2_CNF_LOCAL_PARA_HDR
+ new_ip_info_struct ip_info;
+} d2_get_ip_info_cnf_struct;
+
+typedef struct {
+ D2_CNF_LOCAL_PARA_HDR
+ kal_bool is_up;
+} d2_is_interface_up_cnf_struct;
+
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint32 src_id;
+ kal_bool status;
+}d2_set_profile_status_req_struct;
+
+// MSG_ID_D2_GET_IF_ID_REQ
+typedef struct {
+ D2_REQ_LOCAL_PARA_HDR
+
+ kal_bool apn_present;
+ kal_char apn[APN_STRING_LEN];
+} d2_get_if_id_req_struct;
+
+// MSG_ID_D2_GET_IF_ID_CNF
+typedef struct {
+ D2_CNF_LOCAL_PARA_HDR
+
+ kal_uint32 interface_id;
+} d2_get_if_id_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_bool reset_gprs_apn;
+
+} d2at_ipca_reset_iaapn_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 src_id;
+ kal_uint8 sim_id;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint8 iccid[24]; // it's 20, just prevent over-boundary
+ kal_int32 apn_idx; // apn index in apn setting table
+ kal_uint8 pdp_type[PDP_TYPE_STRING_LEN]; // string type
+ kal_uint8 roaming_pdp_type[PDP_TYPE_STRING_LEN]; // string type
+ atcmd_auth_prot_enum auth_prot;
+ kal_uint8 userid[USERID_STRING_LEN];
+ kal_uint8 password[PASSWORD_STRING_LEN];
+
+ kal_bool is_pco_present; /* PCO parameters */
+ kal_uint8 IE_count; /* PCO IE count */
+ egpco_ie_struct IE[MAX_IE_COUNT]; /* PCO IE */
+
+} l5updn_d2am_set_ia_apn_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 src_id;
+ kal_bool is_success;
+ kal_uint16 err_cause;
+} l5updn_d2am_set_ia_apn_cnf_struct;
+
+#endif
diff --git a/mcu/protocol/interface/ims/d2am_struct.h b/mcu/protocol/interface/ims/d2am_struct.h
new file mode 100644
index 0000000..f6f0c99
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2am_struct.h
@@ -0,0 +1,99 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef __D2AM_STRUCT_H__
+#define __D2AM_STRUCT_H__
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+
+#define D2AM_REQ_LOCAL_PARA_HDR LOCAL_PARA_HDR
+#define D2AM_CNF_LOCAL_PARA_HDR LOCAL_PARA_HDR
+
+typedef enum {
+ D2AM_MDALLOW_USER_AP,
+ D2AM_MDALLOW_USER_XCAP,
+ D2AM_MDALLOW_USER_INVALID,
+} d2am_mdallow_user_enum;
+
+typedef enum {
+ D2AM_MDALLOW_ACTION_BOOK,
+ D2AM_MDALLOW_ACTION_UNBOOK,
+} d2am_mdallow_action_enum;
+
+// MSG_ID_D2AM_MDALLOW_REQ
+typedef struct {
+ D2AM_REQ_LOCAL_PARA_HDR
+
+ d2am_mdallow_action_enum action;
+ d2am_mdallow_user_enum user;
+} d2am_mdallow_req_struct;
+
+// MSG_ID_D2AM_MDALLOW_CNF
+typedef struct {
+ D2AM_CNF_LOCAL_PARA_HDR
+
+ kal_bool is_success;
+ ps_cause_enum err_cause;
+} d2am_mdallow_cnf_struct;
+
+// MSG_ID_D2AM_EAPNABORT_REQ
+typedef struct {
+ D2AM_REQ_LOCAL_PARA_HDR
+} d2am_eapnabort_req_struct;
+
+typedef enum {
+ EIAATTACH_INVALID = -1,
+ EIAATTACH_IPV4 = 0,
+ EIAATTACH_IPV6 = 1,
+ EIAATTACH_IPV4V6 = 2
+} d2am_eiaattach_pdp_type_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint32 apn_index;
+ kal_uint32 pdp_type;
+ kal_uint8 auth_type;
+ kal_uint8 username[128];
+ kal_uint8 passwd[128];
+} d2am_eiareg_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ ps_cause_enum cause;
+} d2am_eiaerr_ind_struct;
+#endif
diff --git a/mcu/protocol/interface/ims/d2pm_d2rm_struct.h b/mcu/protocol/interface/ims/d2pm_d2rm_struct.h
new file mode 100644
index 0000000..a0b9aa2
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2pm_d2rm_struct.h
@@ -0,0 +1,816 @@
+/*****************************************************************************
+* 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) 2013
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _D2PM_D2RM_STRUCT_H_
+#define _D2PM_D2RM_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+#include "ps_public_enum.h"
+#include "ddm_common_struct.h"
+#include "d2pm_ddm_struct.h"
+#include "d2pm_n3epc_struct.h"
+#include "d2rm_ddm_struct.h"
+#include "d2rm_n3epc_struct.h"
+#include "pdn_public_defs.h"
+
+// Type definitions
+#define APN_CAPLIST_CNT 32
+typedef ddm_res_enum d2pm_d2rm_res_enum;
+typedef atcmd_state_enum d2pm_d2rm_pdn_state_enum;
+
+typedef iwlan_ran_e d2pm_d2rm_ran_enum;
+typedef d2rm_ho_state_e d2pm_d2rm_ho_state_enum;
+
+/*******************************************************************************
+* D2PM to D2RM REQ *
+*******************************************************************************/
+
+// MSG_ID_D2PM_D2RM_APNCAPA_UPDATE_REQ
+typedef struct
+{
+ kal_char apn[APN_STRING_LEN];
+ kal_int32 apn_idx;
+ kal_char apn_type[APN_TYPE_LIST_STRING_LEN];
+ kal_char pdp_type[PDP_TYPE_STRING_LEN];
+ kal_char roam_prot[ROAMING_IP_TYPE_STRING_LEN];
+ kal_uint32 bearer_bitmask;
+}d2pm_d2rm_apncapa_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint8 list_cnt;
+ d2pm_d2rm_apncapa_struct apn_cfg[APN_CAPLIST_CNT];
+}d2pm_d2rm_apncapa_update_req_struct;
+
+
+// MSG_ID_D2PM_D2RM_ACT_DATA_CALL_REQ
+typedef struct
+{
+ kal_char apn_type[APN_TYPE_STRING_LEN];
+ kal_bool isIMS;
+ kal_bool isEmergency;
+ ran_filter_struct ran_filter;
+}d2pm_d2rm_act_data_call_req_prv_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ kal_char apn[APN_STRING_LEN];
+ kal_int32 apn_idx;
+ d2pm_d2rm_act_data_call_req_type_enum req_type;
+ kal_bool is_dangling;
+ kal_bool cgdcont_req_present;
+ at_cgdcont_req_struct cgdcont_req;
+ kal_bool egpco_req_present;
+ at_egpco_req_struct egpco_req;
+
+ /* conditional part */
+ struct
+ {
+ struct
+ {
+ pdp_addr_type_enum pdx_type; // by default NULL_PDP_ADDR_TYPE
+ }roam;
+
+ struct
+ {
+ kal_char dnn[APN_STRING_LEN]; // by default a NULL string
+ pdp_addr_type_enum pdx_type; // by default NULL_PDP_ADDR_TYPE in ps_public_enum_public.h
+ atcmd_SSC_mode_enum ssc_mode; // by default ATCMD_SSC_MODE_MAX
+ at_s_nssai_struct s_nssai; // by default is_sst_present, is_sd_present, is_mapped_configured_sst_present, is_mapped_configured_sd_present) = (KAL_FALSE, KAL_FALSE, KAL_FALSE, KAL_FALSE)
+ atcmd_Access_type_enum access_type; // by default ATCMD_ACCESS_TYPE_MAX
+ }vg;
+
+ struct
+ {
+ pdp_addr_type_enum pdx_type; // by default NULL_PDP_ADDR_TYPE
+ }vg_roam;
+
+ /* operator part */
+ struct
+ {
+ kal_uint32 wapn; // by default 0 to disable VzW
+ kal_uint32 apncl;
+ kal_uint32 apned;
+ kal_uint32 max_conn;
+ kal_uint32 max_conn_t;
+ kal_uint32 wait_time;
+ }vzw;
+
+ struct
+ {
+ kal_uint32 inact_time; // by default 0
+ }sprint;
+ }cond;
+
+ /* private part */
+ d2pm_d2rm_act_data_call_req_prv_struct d2pm_d2rm_prv;
+ d2pm_ddm_act_data_call_req_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_act_data_call_req_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_act_data_call_req_struct;
+
+
+// MSG_ID_D2PM_D2RM_DEACT_DATA_CALL_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_ddm_deact_data_call_req_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_deact_data_call_req_prv_struct d2pm_n3epc_prv;
+ d2am_ddm_deact_data_call_req_prv_struct d2am_ddm_prv;
+}d2pm_d2rm_deact_data_call_req_struct;
+
+
+// MSG_ID_D2PM_D2RM_ABORT_DATA_CALL_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_ddm_abort_data_call_req_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_abort_data_call_req_prv_struct d2pm_n3epc_prv;
+ d2am_ddm_abort_data_call_req_prv_struct d2am_ddm_prv;
+}d2pm_d2rm_abort_data_call_req_struct;
+
+
+// MSG_ID_D2PM_D2RM_MOD_DATA_CALL_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_ddm_mod_data_call_req_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_mod_data_call_req_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_mod_data_call_req_struct;
+
+
+// ====
+// MSG_ID_D2PM_D2RM_GET_SECONDARY_DYNAMIC_PARAM_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ // N/A
+ kal_bool cid_present;
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_ddm_get_secondary_dynamic_param_req_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_secondary_dynamic_param_req_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_secondary_dynamic_param_req_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_PDP_ADDRESS_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ // N/A
+ kal_bool cid_present;
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_ddm_get_pdp_address_req_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_pdp_address_req_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_pdp_address_req_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_QOS_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ // N/A
+ kal_bool cid_present;
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_ddm_get_qos_req_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_qos_req_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_qos_req_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_TFT_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ // N/A
+ kal_bool cid_present;
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_ddm_get_tft_req_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_tft_req_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_tft_req_struct;
+
+
+// MSG_ID_D2PM_D2RM_SET_PACKET_FILTER_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ // N/A
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_ddm_set_packet_filter_req_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_set_packet_filter_req_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_set_packet_filter_req_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_PACKET_FILTER_REQ
+/* atp_cmd_mode_enum: ATP_READ_MODE, cid_parse_result: AT_TOKEN_PARSE_RESULT_NOT_FOUND */
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ // N/A
+
+ /* private part */
+ d2pm_ddm_get_packet_filter_req_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_packet_filter_req_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_packet_filter_req_struct;
+
+
+// MSG_ID_D2PM_D2RM_VZWAPNE_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 txid, num_of_apn;
+ struct
+ {
+ kal_char apn[APN_STRING_LEN];
+ kal_int32 apn_idx;
+ }apn_list[DDM_MAX_NUM_OF_APN];
+
+ /* private part */
+ // N/A
+}d2pm_d2rm_vzwapne_req_struct;
+
+// MSG_ID_D2PM_D2RM_VZWAPNETMR_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 txid, num_of_apn;
+ struct
+ {
+ kal_char apn[APN_STRING_LEN];
+ kal_int32 apn_idx;
+ }apn_list[DDM_MAX_NUM_OF_APN];
+
+ /* private part */
+ // N/A
+}d2pm_d2rm_vzwapnetmr_req_struct;
+
+
+/*******************************************************************************
+* D2RM TO D2PM CNF *
+*******************************************************************************/
+
+// MSG_ID_D2PM_D2RM_ACT_DATA_CALL_CNF
+typedef struct
+{
+ kal_char apn[APN_STRING_LEN];
+ kal_char req_apn[APN_STRING_LEN];
+ kal_bool is_succ;
+ ran_filter_struct ran_filter; // d2pm_d2rm_ran_enum
+ kal_bool errcause_present;
+ kal_int32 errcause;
+ kal_bool retrytime_present;
+ kal_int32 retrytime;
+}d2pm_d2rm_act_data_call_cnf_prv_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ d2pm_d2rm_ip_info_struct ip_info; // for IP address
+ d2pm_d2rm_net_info_struct net_info; // for Internet information
+ ran_info_struct ran_info; // RAN info of non-3GPP
+ d2pm_d2rm_retry_info_struct retry_info;
+ epdg_mapped_info_struct epdg_mapped_info;
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_d2rm_act_data_call_cnf_prv_struct d2pm_d2rm_prv;
+ d2pm_ddm_act_data_call_cnf_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_act_data_call_cnf_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_act_data_call_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_ACT_DATA_CALL_REJECT_CNF
+typedef d2pm_d2rm_act_data_call_cnf_prv_struct d2pm_d2rm_act_data_call_reject_cnf_prv_struct;
+typedef d2pm_n3epc_act_data_call_req_prv_struct d2pm_n3epc_act_data_call_reject_cnf_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ d2pm_d2rm_retry_info_struct retry_info;
+
+ /* private part */
+ d2pm_d2rm_act_data_call_reject_cnf_prv_struct d2pm_d2rm_prv;
+ d2pm_ddm_act_data_call_reject_cnf_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_act_data_call_reject_cnf_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_act_data_call_reject_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_DEACT_DATA_CALL_CNF
+typedef struct
+{
+ kal_char apn[APN_STRING_LEN];
+ kal_bool is_succ;
+}d2pm_d2rm_deact_data_call_cnf_prv_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_d2rm_deact_data_call_cnf_prv_struct d2pm_d2rm_prv;
+ d2pm_ddm_deact_data_call_cnf_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_deact_data_call_cnf_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_deact_data_call_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_DEACT_DATA_CALL_REJECT_CNF
+typedef d2pm_d2rm_deact_data_call_cnf_prv_struct d2pm_d2rm_deact_data_call_reject_cnf_prv_struct;
+typedef d2pm_n3epc_deact_data_call_req_prv_struct d2pm_n3epc_deact_data_call_reject_cnf_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_d2rm_deact_data_call_reject_cnf_prv_struct d2pm_d2rm_prv;
+ d2pm_ddm_deact_data_call_reject_cnf_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_deact_data_call_reject_cnf_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_deact_data_call_reject_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_ABORT_DATA_CALL_CNF
+typedef d2pm_d2rm_deact_data_call_cnf_prv_struct d2pm_d2rm_abort_data_call_cnf_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_d2rm_abort_data_call_cnf_prv_struct d2pm_d2rm_prv;
+ d2pm_ddm_abort_data_call_cnf_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_abort_data_call_cnf_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_abort_data_call_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_ABORT_DATA_CALL_REJECT_CNF
+typedef d2pm_d2rm_abort_data_call_cnf_prv_struct d2pm_d2rm_abort_data_call_reject_cnf_prv_struct;
+typedef d2pm_n3epc_abort_data_call_req_prv_struct d2pm_n3epc_abort_data_call_reject_cnf_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_d2rm_abort_data_call_reject_cnf_prv_struct d2pm_d2rm_prv;
+ d2pm_ddm_abort_data_call_reject_cnf_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_abort_data_call_reject_cnf_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_abort_data_call_reject_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_MOD_DATA_CALL_CNF
+typedef d2pm_d2rm_act_data_call_cnf_prv_struct d2pm_d2rm_mod_data_call_cnf_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_d2rm_mod_data_call_cnf_prv_struct d2pm_d2rm_prv;
+ d2pm_ddm_mod_data_call_cnf_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_mod_data_call_cnf_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_mod_data_call_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_MOD_DATA_CALL_REJECT_CNF
+typedef d2pm_d2rm_mod_data_call_cnf_prv_struct d2pm_d2rm_mod_data_call_reject_cnf_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_d2rm_mod_data_call_reject_cnf_prv_struct d2pm_d2rm_prv;
+ d2pm_ddm_mod_data_call_reject_cnf_prv_struct d2pm_ddm_prv;
+// d2pm_n3epc_mod_abort_call_reject_cnf_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_mod_data_call_reject_cnf_struct;
+
+
+// ====
+// MSG_ID_D2PM_D2RM_GET_SECONDARY_DYNAMIC_PARAM_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_get_secondary_dynamic_param_cnf_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_secondary_dynamic_param_cnf_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_secondary_dynamic_param_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_PDP_ADDRESS_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_get_pdp_address_cnf_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_pdp_address_cnf_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_pdp_address_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_QOS_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_get_qos_cnf_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_qos_cnf_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_qos_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_TFT_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_get_tft_cnf_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_tft_cnf_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_tft_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_SET_PACKET_FILTER_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_set_packet_filter_cnf_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_set_packet_filter_cnf_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_set_packet_filter_cnf_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_PACKET_FILTER_CNF
+typedef struct{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_get_packet_filter_cnf_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_packet_filter_cnf_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_packet_filter_cnf_struct;
+
+
+/*******************************************************************************
+* D2RM TO D2PM IND *
+*******************************************************************************/
+
+// MSG_ID_D2PM_D2RM_ACT_DATA_CALL_IND
+typedef d2pm_d2rm_act_data_call_cnf_prv_struct d2pm_d2rm_act_data_call_ind_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ d2pm_d2rm_ip_info_struct ip_info; // for IP address
+ d2pm_d2rm_net_info_struct net_info; // for Internet information
+ ran_info_struct ran_info; // RAN info of non-3GPP
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_d2rm_act_data_call_ind_prv_struct d2pm_d2rm_prv;
+ d2pm_ddm_act_data_call_ind_prv_struct d2pm_ddm_prv;
+}d2pm_d2rm_act_data_call_ind_struct;
+
+
+// MSG_ID_D2PM_D2RM_PDN_NW_ACT_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ kal_char apn[APN_STRING_LEN];
+ kal_char req_apn[APN_STRING_LEN];
+ d2pm_d2rm_ip_info_struct ip_info; // for IP address
+ d2pm_d2rm_net_info_struct net_info; // for Internet information
+ ran_info_struct ran_info; // RAN info of non-3GPP
+ d2pm_ddm_res_enum res;
+ kal_uint32 pdx_attr;
+
+ /* private part */
+ d2pm_ddm_pdn_nw_act_ind_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_pdn_nw_act_ind_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_pdn_nw_act_ind_struct;
+
+
+// MSG_ID_D2PM_D2RM_PDN_NW_DEACT_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ kal_bool apn_present;
+ kal_char apn[APN_STRING_LEN];
+ ps_cause_enum deact_cause;
+
+ /* private part */
+ d2pm_ddm_pdn_nw_deact_ind_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_pdn_nw_deact_ind_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_pdn_nw_deact_ind_struct;
+
+typedef d2pm_ddm_ims_prv_data_t d2pm_d2rm_ims_info_struct;
+
+// MSG_ID_D2PM_D2RM_MOD_DATA_CALL_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ kal_char apn[APN_STRING_LEN];
+ d2pm_d2rm_ip_info_struct ip_info; // for IP address
+ d2pm_d2rm_net_info_struct net_info; // for Internet information
+ ran_info_struct ran_info; // RAN info of non-3GPP
+ d2pm_d2rm_ims_info_struct ims_info; // for ims info
+
+ /* private part */
+ d2pm_ddm_mod_data_call_ind_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_mod_data_call_ind_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_mod_data_call_ind_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_PDN_PROFILE_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ kal_uint8 prot[PDP_TYPE_STRING_LEN];
+}d2pm_d2rm_get_pdn_profile_ind_struct;
+
+// MSG_ID_D2PM_D2RM_PDN_HO_NOTIFY_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 txid;
+ kal_uint32 cid;
+ kal_uint8 hostate;
+ kal_uint8 is_succ;
+ atcmd_request_type_enum req_type;
+ d2pm_d2rm_res_enum res;
+
+ ip_info_struct ip_info; //for H.O end update
+ d2pm_d2rm_net_info_struct net_info;
+ d2pm_d2rm_ims_info_struct ims_info;
+ ran_info_struct src_ran_info; // RAN info of non-3GPP
+ ran_info_struct tgt_ran_info; // RAN info of non-3GPP
+}d2pm_d2rm_pdn_ho_notify_ind_struct;
+
+
+// MSG_ID_D2PM_D2RM_URC_CGEV_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ kal_bool apn_present;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_bool ip_info_present;
+ d2pm_d2rm_ip_info_struct ip_info; // for IP address
+ kal_bool net_info_present;
+ d2pm_d2rm_net_info_struct net_info; // for Internet information
+ ran_info_struct ran_info; // RAN info of non-3GPP
+
+ /* private part */
+ d2pm_ddm_urc_cgev_ind_prv_struct d2pm_ddm_prv;
+}d2pm_d2rm_urc_cgev_ind_struct;
+
+
+// ====
+// MSG_ID_D2PM_D2RM_GET_SECONDARY_DYNAMIC_PARAM_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_get_secondary_dynamic_param_ind_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_secondary_dynamic_param_ind_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_secondary_dynamic_param_ind_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_PDP_ADDRESS_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_get_pdp_address_ind_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_pdp_address_ind_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_pdp_address_ind_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_QOS_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_get_qos_ind_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_qos_ind_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_qos_ind_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_TFT_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_get_tft_ind_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_tft_ind_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_tft_ind_struct;
+
+
+// MSG_ID_D2PM_D2RM_SET_PACKET_FILTER_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_set_packet_filter_ind_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_set_packet_filter_ind_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_set_packet_filter_ind_struct;
+
+
+// MSG_ID_D2PM_D2RM_GET_PACKET_FILTER_IND
+typedef struct{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ d2pm_d2rm_res_enum res;
+
+ /* private part */
+ d2pm_ddm_get_packet_filter_ind_prv_struct d2pm_ddm_prv;
+// d2pm_epdg_get_packet_filter_ind_prv_struct d2pm_epdg_prv;
+}d2pm_d2rm_get_packet_filter_ind_struct;
+
+// MSG_ID_D2PM_D2RM_RST_RETRYTMR_IND
+typedef struct{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_bool apn_present;
+ kal_char apn[APN_STRING_LEN];
+ kal_uint32 cause; //TBD: if needed
+
+ /* private part */
+ d2pm_ddm_comm_ind_prv_struct d2pm_ddm_prv;
+ d2pm_n3epc_comm_prv_struct d2pm_n3epc_prv;
+}d2pm_d2rm_rst_retrytmr_ind_struct;
+
+typedef struct{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_bool apn_present;
+ kal_char apn[APN_STRING_LEN];
+ kal_uint32 cause; //TBD: if needed
+
+}d2pm_d2rm_volte_cfg_change_ind_struct;
+
+/*******************************************************************************
+* D2PM TO D2RM RSP *
+*******************************************************************************/
+//MSG_ID_D2PM_D2RM_GET_PDN_PROFILE_RSP
+typedef d2pm_d2rm_act_data_call_req_struct d2pm_d2rm_get_pdn_profile_rsp_struct;
+typedef d2pm_d2rm_get_pdn_profile_rsp_struct d2pm_d2rm_get_pdn_profile_reject_rsp_struct;
+
+
+#endif /* _D2PM_D2RM_STRUCT_H_ */
+
diff --git a/mcu/protocol/interface/ims/d2pm_ddm_struct.h b/mcu/protocol/interface/ims/d2pm_ddm_struct.h
new file mode 100644
index 0000000..3171df4
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2pm_ddm_struct.h
@@ -0,0 +1,648 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _D2PM_DDM_STRUCT_H
+#define _D2PM_DDM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+#include "ps_public_enum.h"
+#include "pdn_public_defs.h"
+#include "d2pm_public_defs.h"
+#include "ddm_common_struct.h"
+#include "l3_inc_enums_public.h"
+#include "l3_inc_enums.h"
+#include "l4bnw_public_struct.h"
+#include "l4c_common_enum.h"
+#include "ddm_nwsel_struct.h"
+#include "ps_public_struct.h"
+
+// Type definitions
+typedef struct
+{
+ kal_uint32 src_id;
+}d2pm_ddm_comm_ind_prv_struct;
+
+typedef struct
+{
+ kal_uint32 src_id;
+}d2pm_ddm_comm_req_prv_struct;
+
+typedef struct
+{
+ kal_uint32 src_id;
+}d2pm_ddm_comm_cnf_prv_struct;
+
+typedef struct
+{
+ kal_uint8 IE_count;
+ egpco_ie_struct IE[MAX_IE_COUNT];
+}ddm_egpco_req_struct;
+
+typedef ddm_res_enum d2pm_d2rm_res_enum;
+typedef ddm_ip_info_struct d2pm_d2rm_ip_info_struct;
+typedef ddm_net_info_struct d2pm_d2rm_net_info_struct;
+typedef ddm_retry_info_struct d2pm_d2rm_retry_info_struct;
+typedef ddm_req_type_enum d2pm_d2rm_act_data_call_req_type_enum;
+
+typedef ddm_ip_info_struct d2pm_ddm_ip_info_struct;
+typedef ddm_net_info_struct d2pm_ddm_net_info_struct;
+typedef ddm_ims_info_struct d2pm_ddm_ims_info_struct;
+typedef ddm_ims_info_struct d2pm_ddm_ims_prv_data_t; // for D2PM_IWLAN and D2CM
+
+// => REQ
+typedef d2pm_ddm_comm_req_prv_struct d2pm_ddm_get_data_call_list_req_prv_struct;
+typedef d2pm_ddm_comm_req_prv_struct d2pm_ddm_get_dynamic_param_req_prv_struct;
+typedef ddm_get_secondary_dynamic_param_req_struct d2pm_ddm_get_secondary_dynamic_param_req_prv_struct;
+typedef ddm_get_pdp_address_req_struct d2pm_ddm_get_pdp_address_req_prv_struct;
+typedef ddm_get_qos_req_struct d2pm_ddm_get_qos_req_prv_struct;
+typedef ddm_get_tft_req_struct d2pm_ddm_get_tft_req_prv_struct;
+typedef ddm_set_packet_filter_req_struct d2pm_ddm_set_packet_filter_req_prv_struct;
+typedef ddm_get_packet_filter_req_struct d2pm_ddm_get_packet_filter_req_prv_struct;
+typedef d2pm_ddm_comm_req_prv_struct d2pm_ddm_mod_data_call_req_prv_struct;
+// => CNF
+typedef d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_get_data_call_list_cnf_prv_struct;
+typedef d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_get_dynamic_param_cnf_prv_struct;
+typedef ddm_get_secondary_dynamic_param_cnf_struct d2pm_ddm_get_secondary_dynamic_param_cnf_prv_struct;
+typedef ddm_get_pdp_address_cnf_struct d2pm_ddm_get_pdp_address_cnf_prv_struct;
+typedef ddm_get_qos_cnf_struct d2pm_ddm_get_qos_cnf_prv_struct;
+typedef ddm_get_tft_cnf_struct d2pm_ddm_get_tft_cnf_prv_struct;
+typedef ddm_set_packet_filter_cnf_struct d2pm_ddm_set_packet_filter_cnf_prv_struct;
+typedef ddm_get_packet_filter_cnf_struct d2pm_ddm_get_packet_filter_cnf_prv_struct;
+typedef d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_mod_data_call_cnf_prv_struct; // [GT] at_cgcmod_req_struct does NOT exist
+// => IND
+typedef d2pm_ddm_comm_ind_prv_struct d2pm_ddm_get_data_call_list_ind_prv_struct;
+typedef ddm_get_secondary_dynamic_param_ind_struct d2pm_ddm_get_secondary_dynamic_param_ind_prv_struct;
+typedef ddm_get_pdp_address_ind_struct d2pm_ddm_get_pdp_address_ind_prv_struct;
+typedef ddm_get_qos_ind_struct d2pm_ddm_get_qos_ind_prv_struct;
+typedef ddm_get_tft_ind_struct d2pm_ddm_get_tft_ind_prv_struct;
+typedef ddm_set_packet_filter_ind_struct d2pm_ddm_set_packet_filter_ind_prv_struct;
+typedef ddm_get_packet_filter_ind_struct d2pm_ddm_get_packet_filter_ind_prv_struct;
+//typedef d2pm_ddm_comm_ind_prv_struct d2pm_ddm_mod_data_call_ind_prv_struct; // [GT] at_cgcmod_req_struct does NOT exist
+typedef struct
+{
+ kal_uint32 src_id;
+ data_call_change_reason_enum data_call_change_reason;
+}d2pm_ddm_mod_data_call_ind_prv_struct;
+typedef struct
+{
+ kal_uint32 src_id; // Unused above D2RM
+ at_cgcontrdp_ind_struct cmd;
+}d2pm_ddm_get_dynamic_param_ind_prv_struct;
+
+typedef enum
+{
+// D2PM_DDM_RES_SUCC_RETRY, not exist
+ D2PM_DDM_RES_NONE = D2PM_RES_NONE,
+ D2PM_DDM_RES_FAIL = D2PM_RES_FAIL,
+ D2PM_DDM_RES_SUCC = D2PM_RES_SUCC,
+ // a subsequent CID
+ D2PM_DDM_RES_FAIL_ABORT = D2PM_RES_FAIL_ABORT,
+ D2PM_DDM_RES_SUCC_ABORT = D2PM_RES_SUCC_ABORT,
+ D2PM_DDM_RES_FAIL_CONT = D2PM_RES_FAIL_CONT,
+ D2PM_DDM_RES_SUCC_CONT = D2PM_RES_SUCC_CONT,
+ // otherwise
+ D2PM_DDM_RES_REJ = D2PM_RES_REJ,
+ D2PM_DDM_RES_RETRY = D2PM_RES_RETRY,
+ D2PM_DDM_RES_MAX = 0x7FFFFFFF
+}d2pm_ddm_res_enum;
+
+typedef enum
+{
+ D2AM_DDM_EVENT_IS_EMERGENCY,
+ D2AM_DDM_EVENT_IS_IMS,
+ D2AM_DDM_EVENT_IS_APN_CONFLICT,
+ D2AM_DDM_EVENT_IS_APN_CLEAR_DEACT,
+ D2AM_DDM_EVENT_MAX = 0x7FFFFFFF
+}d2am_ddm_detach_event_enum;
+// Macros
+
+//VoLTE
+#define MAX_PCSCF_NUMBER 6
+
+#define D2PM_DDM_REQ_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define D2PM_DDM_CNF_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define D2PM_DDM_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define D2PM_DDM_RSP_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+// Functions
+// N/A
+
+// Implementation
+/*******************************************************************************
+* D2PM to DDM REQ *
+*******************************************************************************/
+
+typedef struct
+{
+ kal_uint32 src_id;
+ kal_bool p_cid_present;
+ kal_uint32 p_cid;
+ kal_bool fb_cid_present;
+ kal_uint32 fb_cid;
+ kal_bool fb_ipv4_first;
+ kal_uint32 auth_type;
+ kal_uint8 pdp_type[PDP_TYPE_STRING_LEN];
+ kal_uint8 username[USERID_STRING_LEN];
+ kal_uint8 passwd[PASSWORD_STRING_LEN];
+ kal_bool pcscf_restore;
+ if_info_struct if_info;
+ apn_type_info_struct apn_type_info;
+ kal_uint32 test_mode_flag;
+ at_eapnset_UE_local_config_struct UE_local_config;
+ kal_bool qos_param_present;
+ kal_uint32 qos_reliability;
+ kal_uint32 qos_precedence_class;
+ kal_uint32 qos_delay_class;
+ kal_uint32 qos_peak_throughput_class;
+ kal_uint32 qos_mean_throughput_class;
+}d2pm_ddm_act_data_call_req_prv_struct;
+typedef d2pm_ddm_act_data_call_req_prv_struct d2pm_ddm_act_data_call_reject_cnf_prv_struct;
+typedef d2pm_ddm_mod_data_call_req_prv_struct d2pm_ddm_mod_data_call_reject_cnf_prv_struct;
+
+typedef struct
+{
+ kal_uint32 src_id;
+ atcmd_deact_cause_enum cause;
+ kal_uint32 test_mode_flag;
+}d2pm_ddm_deact_data_call_req_prv_struct;
+typedef d2pm_ddm_deact_data_call_req_prv_struct d2pm_ddm_deact_data_call_reject_cnf_prv_struct;
+typedef d2pm_ddm_deact_data_call_req_prv_struct d2pm_ddm_abort_data_call_req_prv_struct;
+typedef d2pm_ddm_deact_data_call_req_prv_struct d2pm_ddm_abort_data_call_reject_cnf_prv_struct;
+
+typedef enum {
+ DDM_DEACT_MODE_NORMAL = 0x00000000,
+ DDM_DEACT_MODE_UNBIND = 0x00000001,
+ DDM_DEACT_MODE_LOCAL_RELEASE = 0x00000002,
+ DDM_DEACT_MODE_FORCE_DEACT = 0x00000004,
+ DDM_DEACT_MODE_EDALLOW_DEACT = 0x00000008,
+} deact_mode_enum;
+typedef struct {
+ kal_uint32 deact_mode;
+} d2am_ddm_deact_data_call_req_prv_struct;
+typedef d2am_ddm_deact_data_call_req_prv_struct d2am_ddm_abort_data_call_req_prv_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef struct
+{
+ retrytime_type_enum retrytime_type;
+ kal_uint32 retry_time;
+}d2pm_ddm_data_retry_prv_data_t;
+
+typedef struct
+{
+ kal_uint32 src_id;
+ kal_uint32 fb_cid_present;
+ kal_uint32 fb_cid;
+#if 0
+/* under construction !*/
+#endif
+#if 0
+/* under construction !*/
+#endif
+ d2pm_ddm_ims_info_struct ims_prv_data;
+ d2pm_ddm_data_retry_prv_data_t data_retry_prv_data;
+ pco_info_t pco_info;
+ kal_uint16 err_cause;
+ kal_bool is_dangling;
+}d2pm_ddm_act_data_call_cnf_prv_struct;
+typedef d2pm_ddm_act_data_call_cnf_prv_struct d2pm_ddm_act_data_call_ind_prv_struct;
+
+typedef struct
+{
+ kal_uint32 src_id;
+ kal_bool is_dangling;
+ kal_uint16 cause;
+ pco_info_t pco_info;
+}d2pm_ddm_deact_data_call_cnf_prv_struct;
+typedef d2pm_ddm_deact_data_call_cnf_prv_struct d2pm_ddm_abort_data_call_cnf_prv_struct;
+
+typedef struct
+{
+ kal_uint32 src_id;
+#if 0
+/* under construction !*/
+/* under construction !*/
+#endif
+ at_cgev_ind_struct cgev_cmd;
+ kal_bool ims_info_present;
+ d2pm_ddm_ims_info_struct ims_info;
+ kal_bool is_dangling_present;
+ kal_bool is_dangling;
+ ps_cause_enum deact_cause;
+}d2pm_ddm_urc_cgev_ind_prv_struct;
+
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ //kal_uint32 src_id;
+ at_escontind_ind_struct cmd;
+}d2pm_ddm_escontind_ind_struct;
+
+typedef d2pm_ddm_urc_cgev_ind_prv_struct d2pm_ddm_pdn_nw_act_ind_prv_struct;
+typedef d2pm_ddm_urc_cgev_ind_prv_struct d2pm_ddm_pdn_nw_deact_ind_prv_struct;
+
+/*******************************************************************************
+* DDM TO D2PM IND *
+*******************************************************************************/
+typedef atcmd_reason_enum ddm_reason_enum;
+typedef struct
+{
+ kal_char apn[APN_STRING_LEN];
+ kal_uint32 cid;
+ d2pm_ddm_ip_info_struct ip_info; // at_cgpaddr_ind_struct
+ d2pm_ddm_net_info_struct net_info;
+ kal_bool ims_info_present;
+ d2pm_ddm_ims_info_struct ims_info;
+ kal_bool is_dangling;
+ ddm_reason_enum reason;
+ d2pm_ddm_res_enum res;
+}me_pdn_act_struct;
+typedef struct
+{
+ kal_uint32 cid;
+
+ kal_bool is_dangling;
+}me_pdn_deact_struct;
+typedef struct
+{
+ kal_uint32 cid;
+ kal_bool is_dangling;
+ ps_cause_enum deact_cause;
+}nw_pdn_deact_struct;
+typedef struct
+{
+ kal_uint32 cid;
+ kal_uint32 p_cid;
+ kal_bool ip_info_present;
+ d2pm_ddm_ip_info_struct ip_info; // at_cgpaddr_ind_struct
+ kal_bool net_info_present;
+ d2pm_ddm_net_info_struct net_info;
+ kal_bool ims_info_present;
+ d2pm_ddm_ims_info_struct ims_info;
+ kal_bool is_dangling;
+}nw_act_struct;
+typedef struct
+{
+ kal_uint32 cid;
+ kal_uint32 p_cid;
+ ps_cause_enum deact_cause;
+ kal_bool is_dangling;
+ ps_cause_enum modify_cause;
+}nw_deact_struct;
+typedef struct
+{
+ kal_uint32 cid;
+ kal_uint32 p_cid;
+ kal_bool change_reason_present;
+ kal_uint32 change_reason;
+ kal_bool ip_info_present;
+ d2pm_ddm_ip_info_struct ip_info; // at_cgpaddr_ind_struct
+ kal_bool net_info_present;
+ d2pm_ddm_net_info_struct net_info;
+ kal_bool ims_info_present;
+ d2pm_ddm_ims_info_struct ims_info;
+}nw_modify_struct;
+// +CGEV: use at_cgev_ind_struct directly
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ cgev_event_enum event;
+ union {
+ me_pdn_act_struct me_pdn_act;
+ me_pdn_deact_struct me_pdn_deact;
+ nw_pdn_deact_struct nw_pdn_deact;
+ nw_act_struct nw_act;
+ nw_deact_struct nw_deact;
+ nw_modify_struct nw_modify;
+ } info;
+}d2pm_ddm_urc_cgev_ind_struct;
+
+// MSG_ID_D2PM_DDM_DEFINE_ATTACH_PDN_IND
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ data_retry_reset_user_enum reset_user;
+}d2pm_ddm_reset_data_retry_timer_ind_struct;
+// MSG_ID_D2PM_DDM_ATTACHED_RAT_IND
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ l4bnw_public_attached_network_info_struct attached_network_info;
+}d2am_ddm_attached_rat_ind_struct;
+// plmn id
+typedef struct {
+ kal_uint8 mcc1;
+ kal_uint8 mcc2;
+ kal_uint8 mcc3;
+ kal_uint8 mnc1;
+ kal_uint8 mnc2;
+ kal_uint8 mnc3;
+} ddm_plmn_id_struct;
+// MSG_ID_D2PM_DDM_DEFINE_ATTACH_PDN_IND
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ kal_bool is_suggested_handover;
+ ddm_plmn_id_struct current_plmn_id;
+}d2am_ddm_define_attach_pdn_ind_struct;
+// MSG_ID_D2PM_DDM_NEED_DETACH_PDN_IND
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ d2am_ddm_detach_event_enum event;
+}d2am_ddm_need_detach_pdn_ind_struct;
+
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ kal_uint8 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ pdp_addr_type_enum pdp_type;
+}d2am_ddm_attach_pdn_activate_success_ind_struct;
+
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ kal_uint8 cid;
+ ps_cause_enum err_cause;
+ kal_bool is_change_to_apn_class_present;
+ kal_uint8 change_to_apn_class;
+}d2am_ddm_attach_pdn_activate_failure_ind_struct;
+
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ mmi_event_enum event_id;
+}d2am_ddm_ps_event_report_ind_struct;
+
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint16 err_cause;
+}d2am_ddm_edallow_cnf_struct;
+
+// MSG_ID_D2AM_DDM_EVZWAPFCIA_CNF
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint16 err_cause;
+}d2am_ddm_evzwapfcia_cnf_struct;
+
+// MSG_ID_D2AM_DDM_EUTRAN_DISABLE_CHECK_IND
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+}d2am_ddm_eutran_disable_check_ind_struct;
+
+typedef enum {
+ DDM_D2AM_DETACH_CAUSE_NONE,
+ DDM_D2AM_DETACH_CAUSE_NO_ACTION,
+} ddm_d2am_detach_cause_enum;
+
+// MSG_ID_D2AM_DDM_EUTRAN_DISABLE_CHECK_RSP
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ kal_bool is_ps_detach_needed;
+ ddm_d2am_detach_cause_enum cause;
+}d2am_ddm_eutran_disable_check_rsp_struct;
+
+// MSG_ID_D2AM_DDM_T3402_STOP_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ ddm_plmn_id_struct current_plmn_id;
+ timer_status_enum status;
+} d2am_ddm_t3402_stop_ind_struct;
+
+/*******************************************************************************
+* D2PM TO DDM RSP *
+*******************************************************************************/
+// MSG_ID_D2AM_DDM_EDALLOW_REQ
+typedef struct
+{
+ D2PM_DDM_RSP_LOCAL_PARA_HDR
+ atcmd_is_data_allowed_enum is_data_allowed;
+ kal_uint8 edallow_deact[MAX_PS_CID_NUM];
+}d2am_ddm_edallow_req_struct;
+
+typedef struct
+{
+ D2PM_DDM_RSP_LOCAL_PARA_HDR
+ atcmd_is_data_allowed_enum is_data_allowed;
+}d2am_ddm_l4bnw_edallow_req_struct;
+
+
+// MSG_ID_D2AM_DDM_EVZWAPFCIA_REQ
+typedef struct
+{
+ D2PM_DDM_RSP_LOCAL_PARA_HDR
+ at_evzwapfcia_req_struct cmd;
+}d2am_ddm_evzwapfcia_req_struct;
+
+// MSG_ID_D2PM_DDM_DEFINE_ATTACH_PDN_RSP
+typedef struct {
+ D2PM_DDM_RSP_LOCAL_PARA_HDR
+ kal_bool is_success;
+ ps_cause_enum err_cause;
+ kal_uint32 cid;
+ kal_bool fb_cid_present;
+ kal_uint32 fb_cid;
+ atcmd_request_type_enum req_type;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint8 pdp_type[PDP_TYPE_STRING_LEN];
+ kal_uint8 roam_prot[ROAMING_IP_TYPE_STRING_LEN];
+ kal_uint32 auth_type;
+ kal_uint8 username[USERID_STRING_LEN];
+ kal_uint8 passwd[PASSWORD_STRING_LEN];
+ kal_bool is_cid_allocated;
+ kal_bool apn_type_is_ims;
+ kal_bool apn_type_is_rcs;
+ kal_bool cgdcont_req_present;
+ at_cgdcont_req_struct cgdcont_req;
+ kal_bool pco_req_present;
+ ddm_egpco_req_struct pco_req;
+ kal_bool pdp_addr_present;
+ kal_uint8 pdp_addr_len;
+ kal_uint8 pdp_addr[IPV4V6_ADDR_LEN];
+ kal_bool d_comp_present;
+ kal_uint8 d_comp;
+ kal_bool h_comp_present;
+ kal_uint8 h_comp;
+ kal_bool pcscf_discovery_present;
+ kal_uint8 pcscf_discovery;
+ kal_bool im_cn_signalling_present;
+ kal_uint8 im_cn_signalling;
+} d2am_ddm_define_attach_pdn_rsp_struct;
+
+//MSG_ID_D2AM_DDM_PS_TYPE_CONFIG_REQ
+typedef struct {
+ D2PM_DDM_RSP_LOCAL_PARA_HDR
+ l4_ps_type_config_enum ps_type;
+ kal_bool follow_on_request;
+} d2am_ddm_ps_type_config_req_struct;
+
+//MSG_ID_D2AM_DDM_PS_TYPE_CONFIG_CNF
+typedef struct {
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ l4_ps_config_result_enum result;
+} d2am_ddm_ps_type_config_cnf_struct;
+
+//MSG_ID_D2AM_DDM_PS_REATTACH_CONFIG_REQ
+typedef struct {
+ D2PM_DDM_RSP_LOCAL_PARA_HDR
+ kal_bool is_reattach;
+} d2am_ddm_ps_reattach_config_req_struct;
+// MSG_ID_D2AM_DDM_ECNCFG_REQ_IND
+typedef struct {
+ D2PM_DDM_RSP_LOCAL_PARA_HDR
+ at_ecncfg_req_struct cmd;
+} d2am_ddm_ecncfg_req_ind_struct;
+
+// MSG_ID_D2AM_DDM_EVZWAPFCIA_IND
+typedef struct
+{
+ D2PM_DDM_RSP_LOCAL_PARA_HDR
+ at_evzwapfcia_ind_struct cmd;
+}d2am_ddm_evzwapfcia_ind_struct;
+
+// MSG_ID_D2AM_DDM_RELEASE_FB_CID_IND
+typedef struct
+{
+ D2PM_DDM_RSP_LOCAL_PARA_HDR
+ kal_uint32 fb_cid;
+}d2am_ddm_release_fb_cid_ind_struct;
+
+typedef struct
+{
+ D2PM_DDM_IND_LOCAL_PARA_HDR
+ kal_bool is_success;
+ }d2am_ddm_l4bnw_edallow_cnf_struct;
+
+/*******************************************************************************
+* D2PM TO DDM REQ *
+*******************************************************************************/
+
+// MSG_ID_D2PM_DDM_SET_SBP_ID_REQ, this is only for debugging
+typedef struct {
+ D2PM_DDM_REQ_LOCAL_PARA_HDR
+ kal_uint32 sbp_id;
+}d2pm_ddm_set_sbp_id_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 cid;
+ kal_uint32 apn_type_activate; /*bit map refer to enum ddm_apn_type*/
+}d2ux_ddm_notify_pdn_type_req_struct;
+
+#endif
diff --git a/mcu/protocol/interface/ims/d2pm_n3epc_struct.h b/mcu/protocol/interface/ims/d2pm_n3epc_struct.h
new file mode 100644
index 0000000..57191e4
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2pm_n3epc_struct.h
@@ -0,0 +1,110 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+#ifndef D2PM_N3EPC_STRUCT_H
+#define D2PM_N3EPC_STRUCT_H
+
+#include "d2pm_public_defs.h"
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "netinfo_common_struct.h"
+#include "ps_public_enum.h"
+
+// Implementation
+/*******************************************************************************
+* D2PM to WO REQ *
+*******************************************************************************/
+typedef struct { kal_uint32 src_id; } d2pm_n3epc_comm_prv_struct;
+
+typedef ip_info_struct d2pm_n3epc_ip_info_struct;
+typedef net_info_struct d2pm_n3epc_net_info_struct;
+typedef if_info_struct d2pm_n3epc_if_info_struct;
+
+typedef struct {
+ kal_uint32 src_id;
+ d2pm_n3epc_ip_info_struct ip_info;
+ d2pm_n3epc_if_info_struct if_info;
+ kal_bool pcscf_restore;
+ kal_bool fb_cid_present;
+ kal_uint32 fb_cid;
+} d2pm_n3epc_act_data_call_req_prv_struct;
+
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_deact_data_call_req_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_abort_data_call_req_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_mod_data_call_req_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_get_data_call_list_req_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_get_dynamic_param_req_prv_struct;
+
+typedef struct {
+ kal_uint32 src_id;
+ kal_uint32 linked_pfid;
+} d2pm_n3epc_set_packet_filter_req_prv_struct;
+
+/*******************************************************************************
+* WO TO D2PM CNF *
+*******************************************************************************/
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_act_data_call_cnf_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_deact_data_call_cnf_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_abort_data_call_cnf_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_mod_data_call_cnf_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_get_data_call_list_cnf_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_get_dynamic_param_cnf_prv_struct;
+
+/*******************************************************************************
+* WO TO D2PM IND *
+*******************************************************************************/
+typedef struct {
+ kal_uint32 src_id; // Unused above D2RM
+ kal_uint8 apn[APN_STRING_LEN];
+ d2pm_n3epc_net_info_struct net_info;
+} d2pm_n3epc_get_dynamic_param_ind_prv_struct;
+
+typedef struct {
+ kal_uint32 src_id;
+ d2pm_n3epc_ip_info_struct ip_info;
+} d2pm_n3epc_get_pdp_address_ind_prv_struct;
+
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_pdn_disconn_ind_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_pdn_nw_act_ind_prv_struct;
+typedef d2pm_n3epc_pdn_disconn_ind_prv_struct
+ d2pm_n3epc_pdn_nw_deact_ind_prv_struct; // D2PM uses this one
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_get_data_call_list_ind_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct
+ d2pm_n3epc_get_secondary_dynamic_param_ind_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_get_qos_ind_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_get_tft_ind_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_get_packet_filter_ind_prv_struct;
+typedef d2pm_n3epc_comm_prv_struct d2pm_n3epc_mod_data_call_ind_prv_struct;
+
+#endif /* D2PM_N3EPC_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/d2pm_wo_struct.h b/mcu/protocol/interface/ims/d2pm_wo_struct.h
new file mode 100644
index 0000000..a376564
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2pm_wo_struct.h
@@ -0,0 +1,139 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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:
+ * ---------
+ * d2pm_wo_struct.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *
+ * ==========================================================================
+ *
+ ****************************************************************************/
+
+#ifndef _D2PM_WO_STRUCT_H_
+#define _D2PM_WO_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+#include "d2pm_public_defs.h"
+#include "netinfo_common_struct.h"
+
+// Implementation
+/*******************************************************************************
+* D2PM to WO REQ *
+*******************************************************************************/
+typedef struct
+{
+ kal_uint32 src_id;
+}d2pm_wo_comm_prv_struct;
+
+typedef ip_info_struct d2pm_wo_ip_info_struct;
+typedef net_info_struct d2pm_wo_net_info_struct;
+typedef if_info_struct d2pm_wo_if_info_struct;
+
+typedef struct
+{
+ kal_uint32 src_id;
+ d2pm_wo_ip_info_struct ip_info;
+ d2pm_wo_if_info_struct if_info;
+ kal_bool pcscf_restore;
+ kal_bool fb_cid_present;
+ kal_uint32 fb_cid;
+}d2pm_wo_act_data_call_req_prv_struct;
+
+typedef d2pm_wo_comm_prv_struct d2pm_wo_deact_data_call_req_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_abort_data_call_req_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_mod_data_call_req_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_get_data_call_list_req_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_get_dynamic_param_req_prv_struct;
+
+typedef struct
+{
+ kal_uint32 src_id;
+ kal_uint32 linked_pfid;
+}d2pm_wo_set_packet_filter_req_prv_struct;
+
+/*******************************************************************************
+* WO TO D2PM CNF *
+*******************************************************************************/
+typedef d2pm_wo_comm_prv_struct d2pm_wo_act_data_call_cnf_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_deact_data_call_cnf_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_abort_data_call_cnf_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_mod_data_call_cnf_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_get_data_call_list_cnf_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_get_dynamic_param_cnf_prv_struct;
+
+/*******************************************************************************
+* WO TO D2PM IND *
+*******************************************************************************/
+typedef struct
+{
+ kal_uint32 src_id;
+ kal_uint8 apn[APN_STRING_LEN];
+ d2pm_wo_net_info_struct net_info;
+}d2pm_wo_get_dynamic_param_ind_prv_struct;
+
+typedef struct
+{
+ kal_uint32 src_id;
+ d2pm_wo_ip_info_struct ip_info;
+}d2pm_wo_get_pdp_address_ind_prv_struct;
+
+typedef d2pm_wo_comm_prv_struct d2pm_wo_pdn_disconn_ind_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_pdn_nw_act_ind_prv_struct;
+typedef d2pm_wo_pdn_disconn_ind_prv_struct d2pm_wo_pdn_nw_deact_ind_prv_struct; // D2PM uses this one
+typedef d2pm_wo_comm_prv_struct d2pm_wo_get_data_call_list_ind_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_get_secondary_dynamic_param_ind_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_get_qos_ind_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_get_tft_ind_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_get_packet_filter_ind_prv_struct;
+typedef d2pm_wo_comm_prv_struct d2pm_wo_mod_data_call_ind_prv_struct;
+
+#endif /* _D2PM_WO_STRUCT_H */
+
diff --git a/mcu/protocol/interface/ims/d2rm_d2am_struct.h b/mcu/protocol/interface/ims/d2rm_d2am_struct.h
new file mode 100644
index 0000000..2c291ec
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2rm_d2am_struct.h
@@ -0,0 +1,65 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _D2RM_D2AM_STRUCT_H
+#define _D2RM_D2AM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+#include "atcmd_enum.h"
+#include "ps_public_enum.h"
+#include "ddm_common_struct.h"
+#include "d2pm_ddm_struct.h"
+#include "d2pm_d2rm_struct.h"
+
+// for MSG_ID_D2RM_D2AM_HANDOVER_ATTACH_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+}d2rm_d2am_handover_attach_req_struct;
+
+// for MSG_ID_D2RM_D2AM_HANDOVER_ATTACH_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+}d2rm_d2am_handover_attach_cnf_struct;
+
+
+#endif
+
diff --git a/mcu/protocol/interface/ims/d2rm_ddm_struct.h b/mcu/protocol/interface/ims/d2rm_ddm_struct.h
new file mode 100644
index 0000000..56af80e
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2rm_ddm_struct.h
@@ -0,0 +1,806 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _D2RM_DDM_STRUCT_H
+#define _D2RM_DDM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+#include "atcmd_enum.h"
+#include "ps_public_enum.h"
+#include "ddm_common_struct.h"
+#include "d2pm_ddm_struct.h"
+#include "d2pm_d2rm_struct.h"
+
+// Implementation
+/*******************************************************************************
+* D2RM to DDM REQ *
+*******************************************************************************/
+typedef ddm_ip_info_struct d2rm_ddm_ip_info_struct;
+typedef ddm_net_info_struct d2rm_ddm_net_info_struct;
+typedef ddm_retry_info_struct d2rm_ddm_retry_info_struct;
+typedef ddm_ims_info_struct d2rm_ddm_ims_info_struct;
+
+typedef enum
+{
+ D2RM_DDM_DEACT_MODE_NORMAL = 0x0,
+ D2RM_DDM_DEACT_MODE_GRT = 0x1,
+}d2rm_ddm_deact_mode_enum;
+
+typedef enum
+{
+ D2RM_DDM_PCO_FF03H_VALUE_0 = 0x0,
+ D2RM_DDM_PCO_FF03H_VALUE_1 = 0x1,
+ D2RM_DDM_PCO_FF03H_VALUE_MAX = 0x7FFFFFFF,
+}d2rm_ddm_pco_ff03h_enum;
+
+typedef struct
+{
+ d2rm_ddm_deact_mode_enum mode;
+}d2rm_ddm_deact_data_call_req_prv_struct;
+
+// MSG_ID_D2RM_DDM_ACT_DATA_CALL_REQ
+typedef struct
+{
+ ddm_pdp_type_enum pdp_type;
+}d2rm_ddm_param_roam_struct;
+
+typedef struct
+{
+ ddm_pdp_type_enum pdp_type;
+}d2rm_ddm_param_5g_roam_struct;
+
+typedef struct
+{
+ kal_bool qos_param_present;
+ kal_uint32 qos_reliability;
+ kal_uint32 qos_precedence_class;
+ kal_uint32 qos_delay_class;
+ kal_uint32 qos_peak_throughput_class;
+ kal_uint32 qos_mean_throughput_class;
+}d2rm_ddm_param_qos_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_int32 cid;
+ kal_char apn[APN_STRING_LEN];
+ kal_int32 apn_idx;
+ kal_uint32 src_id;
+
+ atcmd_request_type_enum req_type;
+ atcmd_rat_enum cell_rat;
+
+ apn_type_info_struct apn_type_info; // ddm_common_struct.h
+ cid_info_struct cid_info;
+
+ /* conditional part */
+ struct
+ {
+ struct
+ {
+ pdp_addr_type_enum pdx_type; // by default NULL_PDP_ADDR_TYPE
+ }roam;
+
+ struct
+ {
+ kal_char dnn[APN_STRING_LEN]; // by default a NULL string
+ pdp_addr_type_enum pdx_type; // by default NULL_PDP_ADDR_TYPE in ps_public_enum_public.h
+ atcmd_SSC_mode_enum ssc_mode; // by default ATCMD_SSC_MODE_MAX
+ at_s_nssai_struct s_nssai; // by default is_sst_present, is_sd_present, is_mapped_configured_sst_present, is_mapped_configured_sd_present) = (KAL_FALSE, KAL_FALSE, KAL_FALSE, KAL_FALSE)
+ atcmd_Access_type_enum access_type; // by default ATCMD_ACCESS_TYPE_MAX
+ }vg;
+
+ struct
+ {
+ pdp_addr_type_enum pdx_type; // by default NULL_PDP_ADDR_TYPE
+ }vg_roam;
+
+ /* operator part */
+ struct
+ {
+ kal_uint32 wapn; // by default 0 to disable VzW
+ kal_uint32 apncl;
+ kal_uint32 apned;
+ kal_uint32 max_conn;
+ kal_uint32 max_conn_t;
+ kal_uint32 wait_time;
+ }vzw;
+
+ struct
+ {
+ kal_uint32 inact_time; // by default 0
+ }sprint;
+ }cond;
+
+ /* ---- 234G HPLMN ---- */
+ kal_bool fb_ipv4_first;
+ kal_uint32 auth_type;
+ pdp_addr_type_enum pdp_type;
+ kal_uint8 username[USERID_STRING_LEN];
+ kal_uint8 passwd[PASSWORD_STRING_LEN];
+ // kal_bool carrier_enabled; // renamed to cond.vzw.apned
+ // kal_uint32 max_conn;
+ // kal_uint32 max_conn_time;
+ // kal_uint32 wait_time;
+ // kal_uint32 inact_time;
+ kal_bool pcscf_restore;
+ /* ++++ 234G HPLMN ++++ */
+
+ kal_bool is_dangling;
+ kal_bool is_acttest;
+
+ d2rm_ddm_param_qos_struct param_qos;
+ d2rm_ddm_pco_ff03h_enum pco_ff03h;
+ //d2rm_ddm_param_roam_struct param_roam;
+ //d2rm_ddm_param_5g_roam_struct param_5g_roam;
+ d2_legacy_at_struct param_legacy_at;
+}d2rm_ddm_act_data_call_req_struct;
+
+// MSG_ID_D2RM_DDM_DEACT_DATA_CALL_REQ
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+
+ /* private part */
+ d2pm_ddm_deact_data_call_req_prv_struct d2pm_ddm_prv;
+ d2am_ddm_deact_data_call_req_prv_struct d2am_ddm_prv;
+ d2rm_ddm_deact_data_call_req_prv_struct d2rm_ddm_prv;
+}d2rm_ddm_deact_data_call_req_struct;
+
+// MSG_ID_D2RM_DDM_ABORT_DATA_CALL_REQ
+typedef d2rm_ddm_deact_data_call_req_struct d2rm_ddm_abort_data_call_req_struct;
+
+// MSG_ID_D2RM_DDM_GET_DATA_CALL_LIST_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgact_req_struct cmd;
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_data_call_list_req_struct;
+
+// MSG_ID_D2RM_DDM_GET_DYNAMIC_PARAM_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgcontrdp_req_struct cmd;
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_dynamic_param_req_struct;
+
+// MSG_ID_D2RM_DDM_GET_PDP_ADDRESS_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgpaddr_req_struct cmd;
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_pdp_address_req_struct;
+
+//MSG_ID_D2RM_DDM_GET_SECONDARY_DYNAMIC_PARAM_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgscontrdp_req_struct cmd;
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_secondary_dynamic_param_req_struct;
+
+// MSG_ID_D2RM_DDM_GET_QOS_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgeqosrdp_req_struct cmd;
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_qos_req_struct;
+
+// MSG_ID_D2RM_DDM_GET_5GQOS_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_c5gqosrdp_req_struct cmd;
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_5gqos_req_struct;
+
+// MSG_ID_D2RM_DDM_GET_TFT_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgtftrdp_req_struct cmd;
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_tft_req_struct;
+
+// MSG_ID_D2RM_DDM_SET_PACKET_FILTER_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_eglnkpf_req_struct cmd;
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_set_packet_filter_req_struct;
+
+//MSG_ID_D2RM_DDM_GET_PACKET_FILTER_REQ
+/*atp_cmd_mode_enum: ATP_READ_MODE, cid_parse_result: AT_TOKEN_PARSE_RESULT_NOT_FOUND*/
+typedef d2rm_ddm_set_packet_filter_req_struct d2rm_ddm_get_packet_filter_req_struct;
+
+// MSG_ID_D2RM_DDM_MODIFY_DATA_CALL_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgcmod_req_struct cmd;
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_modify_data_call_req_struct;
+
+// MSG_ID_D2RM_DDM_GET_RETRYTMR_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_char apn[APN_STRING_LEN];
+
+ /* private part */
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_retrytmr_req_struct;
+
+// MSG_ID_D2RM_DDM_SET_RETRYTMR_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_char apn[APN_STRING_LEN];
+ kal_uint8 cmd;
+
+ /* private part */
+ d2pm_ddm_comm_req_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_set_retrytmr_req_struct;
+
+// MSG_ID_D2RM_DDM_GET_EPDG_INFO_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 cid;
+} d2rm_ddm_get_epdg_info_req_struct;
+
+// MSG_ID_D2RM_DDM_VZWAPNE_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 txid, num_of_apn;
+ struct
+ {
+ kal_char apn[APN_STRING_LEN];
+ kal_int32 apn_idx;
+ }apn_list[DDM_MAX_NUM_OF_APN];
+
+ /* private part */
+ // N/A
+}d2rm_ddm_vzwapne_req_struct;
+
+// MSG_ID_D2RM_DDM_VZWAPNETMR_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 txid, num_of_apn;
+ struct
+ {
+ kal_char apn[APN_STRING_LEN];
+ kal_int32 apn_idx;
+ }apn_list[DDM_MAX_NUM_OF_APN];
+
+ /* private part */
+ // N/A
+}d2rm_ddm_vzwapnetmr_req_struct;
+
+/*******************************************************************************
+* DDM TO D2RM CNF *
+*******************************************************************************/
+
+
+// MSG_ID_D2RM_DDM_ACT_DATA_CALL_CNF
+typedef struct
+{
+ kal_bool errcause_present;
+ kal_int32 errcause;
+ kal_bool retrytime_present;
+ kal_int32 retrytime;
+}d2rm_ddm_act_data_call_cnf_prv_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /*common part*/
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint8 req_apn[APN_STRING_LEN];
+#if 0
+/* under construction !*/
+/* under construction !*/
+#endif
+ d2rm_ddm_ip_info_struct ip_info; // for IP address
+ d2rm_ddm_net_info_struct net_info; // for Internet information
+
+ // ddm_res_enum res_code;
+ kal_uint32 res_code;
+ /* private part */
+ d2rm_ddm_act_data_call_cnf_prv_struct d2rm_ddm_prv;
+ d2pm_ddm_act_data_call_cnf_prv_struct d2pm_ddm_prv;
+
+ d2rm_ddm_retry_info_struct retry_info;
+ d2rm_ddm_pco_ff03h_enum pco_ff03h;
+}d2rm_ddm_act_data_call_cnf_struct;
+
+// MSG_ID_D2RM_DDM_DEACT_DATA_CALL_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ ddm_res_enum res_code;
+ /* private part */
+ d2pm_ddm_deact_data_call_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_deact_data_call_cnf_struct;
+
+// MSG_ID_D2RM_DDM_ABORT_DATA_CALL_CNF
+typedef d2rm_ddm_deact_data_call_cnf_struct d2rm_ddm_abort_data_call_cnf_struct;
+
+// MSG_ID_D2RM_DDM_GET_DATA_CALL_LIST_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ ddm_res_enum res_code;
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_data_call_list_cnf_struct;
+
+// MSG_ID_D2RM_DDM_GET_DYNAMIC_PARAM_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ ddm_res_enum res_code;
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_dynamic_param_cnf_struct;
+
+// MSG_ID_D2RM_DDM_GET_PDP_ADDRESS_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ ddm_res_enum res_code;
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_pdp_address_cnf_struct;
+
+//MSG_ID_D2RM_DDM_GET_SECONDARY_DYNAMIC_PARAM_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ ddm_res_enum res_code;
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_secondary_dynamic_param_cnf_struct;
+
+// MSG_ID_D2RM_DDM_GET_QOS_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ ddm_res_enum res_code;
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_qos_cnf_struct;
+
+// MSG_ID_D2RM_DDM_GET_TFT_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ ddm_res_enum res_code;
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_tft_cnf_struct;
+
+//MSG_ID_D2RM_DDM_SET_PACKET_FILTER_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ ddm_res_enum res_code;
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_set_packet_filter_cnf_struct;
+//MSG_ID_D2RM_DDM_GET_PACKET_FILTER_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ ddm_res_enum res_code;
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_packet_filter_cnf_struct;
+//MSG_ID_D2RM_DDM_MODIFY_DATA_CALL_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ ddm_res_enum res_code;
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_modify_data_call_cnf_struct;
+
+// MSG_ID_D2RM_DDM_GET_RETRYTMR_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_char apn[APN_STRING_LEN];
+ d2rm_ddm_retry_info_struct retry_info;
+
+ /* private part */
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_retrytmr_cnf_struct;
+
+// MSG_ID_D2RM_DDM_SET_RETRYTMR_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_char apn[APN_STRING_LEN];
+ kal_bool is_succ;
+
+ /* private part */
+ d2pm_ddm_comm_cnf_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_set_retrytmr_cnf_struct;
+
+// MSG_ID_D2RM_DDM_GET_EPDG_INFO_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_int32 cid;
+ kal_bool is_success;
+}d2rm_ddm_get_epdg_info_cnf_struct;
+
+
+/*******************************************************************************
+* DDM TO D2RM IND *
+*******************************************************************************/
+
+
+// MSG_ID_D2RM_DDM_ACT_DATA_CALL_IND
+typedef d2rm_ddm_act_data_call_cnf_prv_struct d2rm_ddm_act_data_call_ind_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /*common part*/
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint8 req_apn[APN_STRING_LEN];
+#if 0
+/* under construction !*/
+/* under construction !*/
+#endif
+ d2rm_ddm_ip_info_struct ip_info;
+ d2rm_ddm_net_info_struct net_info;
+ ddm_res_enum res_code;
+ /* private part */
+ d2rm_ddm_act_data_call_ind_prv_struct d2rm_ddm_prv;
+ d2pm_ddm_act_data_call_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_act_data_call_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_bool apn_present;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_bool req_apn_present;
+ kal_uint8 req_apn[APN_STRING_LEN];
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+ kal_bool ip_info_present;
+ d2rm_ddm_ip_info_struct ip_info;
+ kal_bool net_info_present;
+ d2rm_ddm_net_info_struct net_info;
+ at_cgev_ind_struct cgev_cmd;
+ kal_uint32 cid;
+ ps_cause_enum deact_cause;
+ d2pm_ddm_res_enum res;
+ kal_uint32 pdx_attr;
+ /*private part */
+ d2pm_ddm_urc_cgev_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_urc_cgev_ind_struct;
+
+// MSG_ID_D2RM_DDM_GET_DATA_CALL_LIST_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgact_ind_struct cmd;
+ d2pm_ddm_comm_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_data_call_list_ind_struct;
+
+// MSG_ID_D2RM_DDM_GET_DYNAMIC_PARAM_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+
+ d2pm_ddm_get_dynamic_param_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_dynamic_param_ind_struct;
+
+// MSG_ID_D2RM_DDM_GET_PDP_ADDRESS_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgpaddr_ind_struct cmd;
+ d2pm_ddm_comm_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_pdp_address_ind_struct;
+
+//MSG_ID_D2RM_DDM_GET_SECONDARY_DYNAMIC_PARAM_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgscontrdp_ind_struct cmd;
+ d2pm_ddm_comm_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_secondary_dynamic_param_ind_struct;
+
+// MSG_ID_D2RM_DDM_GET_QOS_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgeqosrdp_ind_struct cmd;
+ d2pm_ddm_comm_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_qos_ind_struct;
+
+// MSG_ID_D2RM_DDM_GET_5GQOS_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_c5gqosrdp_ind_struct cmd;
+ d2pm_ddm_comm_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_5gqos_ind_struct;
+
+// MSG_ID_D2RM_DDM_GET_TFT_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_cgtftrdp_ind_struct cmd;
+ d2pm_ddm_comm_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_tft_ind_struct;
+
+//MSG_ID_D2RM_DDM_GET_PACKET_FILTER_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ at_eglnkpf_ind_struct cmd;
+ d2pm_ddm_comm_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_get_packet_filter_ind_struct;
+
+// MSG_ID_D2RM_DDM_URC_EGEV_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ d2rm_ddm_ip_info_struct ip_info;
+ d2rm_ddm_net_info_struct net_info;
+ d2rm_ddm_ims_info_struct ims_info;
+ /* private part */
+ d2pm_ddm_mod_data_call_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_mod_data_call_ind_struct;
+
+// MSG_ID_D2RM_DDM_RST_RETRYTMR_IND
+typedef struct{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_bool apn_present;
+ kal_char apn[APN_STRING_LEN];
+ kal_uint32 cause; //TBD: if needed
+
+ /* private part */
+ d2pm_ddm_comm_ind_prv_struct d2pm_ddm_prv;
+}d2rm_ddm_rst_retrytmr_ind_struct;
+
+// MSG_ID_D2RM_DDM_GET_EPDG_INFO_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_int32 cid;
+ d2rm_ddm_ip_info_struct ip_info;
+}d2rm_ddm_get_epdg_info_ind_struct;
+/*******************************************************************************
+* D2RM TO DDM RSP *
+*******************************************************************************/
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 rat_src;
+ kal_uint8 rat_dst;
+ kal_uint32 context_id;
+ kal_uint32 network_interface_id;
+ char cmd[128];
+} d2rm_db_test_req_struct;
+
+typedef struct d2rm_db_test_cnf_struct{
+ LOCAL_PARA_HDR
+ kal_bool is_successful;
+ ps_cause_enum error_result;
+ kal_uint8 ps_id;
+ kal_uint32 action;
+ kal_uint32 rat;
+ kal_uint32 cid;
+ kal_uint32 network_interface_id;
+ void *user_data;
+} d2rm_db_test_cnf_struct;
+
+//MSG_ID_D2RM_DB_DUMP_IND
+
+typedef enum {
+ RMDB_STATE_UNBIND = 0,
+ RMDB_STATE_UNBINDING = 1,
+ RMDB_STATE_BIND = 2,
+ RMDB_STATE_BINDING = 3,
+} rmdb_state_e;
+
+typedef enum {
+ RMDB_RAT_INVALID = ERR,
+ RMDB_RAT_CELLULAR = CELL,
+ RMDB_RAT_WIFI = WLAN,
+
+ RMDB_RAT_DATA_1 = DATA_1,
+ RMDB_RAT_DATA_2 = DATA_2,
+ RMDB_RAT_DATA_3 = DATA_3,
+ RMDB_RAT_DATA_4 = DATA_4
+} rmdb_rat_e;
+
+/* action */
+typedef enum {
+ RMDB_ACTION_NONE = 0,
+ RMDB_ACTION_NOTIFY_ONLY,
+ RMDB_ACTION_BIND,
+ RMDB_ACTION_UNBIND,
+ RMDB_ACTION_REBIND,
+
+ RMDB_ACTION_REBIND_BIND,
+ RMDB_ACTION_REBIND_UNBIND,
+} rmdb_action_e;
+
+typedef struct {
+ rmdb_action_e action;
+ rmdb_rat_e rat_src;
+ rmdb_rat_e rat_dst;
+ kal_uint32 cid;
+ kal_uint32 network_interface_id;
+} rmdb_action_info_t;
+
+typedef struct {
+ kal_uint32 cid;
+ rmdb_state_e state;
+ rmdb_rat_e rat;
+ kal_uint32 network_interface_id;
+} rmdb_cid_info_t;
+
+
+#define D2RM_DB_MAX_ACTION_INFO_NUM (16)
+#define D2RM_DB_MAX_CID_INFO_NUM (32)
+typedef struct {
+ LOCAL_PARA_HDR
+ char event[32];
+ kal_uint32 act_todo_num;
+ rmdb_action_info_t act_todo[D2RM_DB_MAX_ACTION_INFO_NUM];
+ kal_uint32 act_going_num;
+ rmdb_action_info_t act_going[D2RM_DB_MAX_ACTION_INFO_NUM];
+ kal_uint32 cid_num;
+ rmdb_cid_info_t cid[D2RM_DB_MAX_CID_INFO_NUM];
+} d2rm_db_dump_all_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ char event[32];
+ rmdb_action_info_t act_info;
+ rmdb_cid_info_t cid_info;
+} d2rm_db_dump_info_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#else
+ at_cgdata_req_struct cmd;
+ network_interface_id_info_struct selected_network_interface_id_info;
+ apn_type_info_struct apn_type_info;
+#endif
+} d2rm_ddm_pdn_bind_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 context_id;
+ kal_bool is_successful;
+ ps_cause_enum error_result;
+} d2rm_ddm_pdn_bind_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+#if 0
+/* under construction !*/
+#else
+ at_egld_req_struct cmd;
+#endif
+} d2rm_ddm_pdn_unbind_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 context_id;
+ kal_bool is_successful;
+ ps_cause_enum error_result;
+} d2rm_ddm_pdn_unbind_cnf_struct;
+
+
+#endif
+
diff --git a/mcu/protocol/interface/ims/d2rm_iwlan_struct.h b/mcu/protocol/interface/ims/d2rm_iwlan_struct.h
new file mode 100644
index 0000000..11145c2
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2rm_iwlan_struct.h
@@ -0,0 +1,141 @@
+/*****************************************************************************
+* 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) 2016
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef __D2RM_IWLAN_STRUCT_H__
+#define __D2RM_IWLAN_STRUCT_H__
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+#include "kal_trace.h"
+#include "sbp_public_utility.h"
+#include "ps_public_utility.h"
+#include "dhl_def.h"
+
+#include "sim_ps_struct.h"
+#include "pdn_public_defs.h"
+#include "iwlan_public_defs.h"
+
+typedef enum {
+ RPL_3GPP_RAT_ALL = 0x00,
+ RPL_3GPP_RAT_23G = 0x01,
+ RPL_3GPP_RAT_4G = 0x02,
+ RPL_3GPP_RAT_234G = 0x03,
+ RPL_3GPP_RAT_5G = 0x04,
+ RPL_3GPP_RAT_45G = 0x06,
+ RPL_3GPP_RAT_2345G = 0x07
+} rpl_3gpp_rat_specified_e;
+
+typedef enum {
+ NORMAL = 0,
+ WUIOFF
+} d2rm_iwlan_event_enum;
+
+typedef struct {
+ kal_uint8 rpl_eran[IWLAN_RAN_TYPE_CNT][RPL_RAN_PRIOR_MAX];
+ rpl_3gpp_rat_specified_e rpl_3gpp_rat_specified_initial;
+ rpl_3gpp_rat_specified_e rpl_3gpp_rat_specified_handover;
+ /* RPL param? */
+ d2rm_iwlan_event_enum event;
+ kal_bool cell_no_ps;
+} d2rm_iwlan_rpl_struct;
+
+typedef enum {
+ D2RM_PDN_STATUS_IDLE, // cur_ran must be NONE
+ D2RM_PDN_STATUS_SETUP, // PDN acting, start update RPL ind to D2
+ D2RM_PDN_STATUS_ACTIVE, // cur_ran must not be NONE
+ D2RM_PDN_STATUS_TEARDOWN, // PDN deacting, stop update RPL ind to D2
+
+ D2RM_PDN_STATUS_CNT
+} d2rm_pdn_status_e;
+
+
+
+
+/******************************************************************************/
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 cid;
+ kal_uint32 sid; // session id
+
+ /* PDN attributes */
+ iwlan_ran_e setup_ran;
+ iwlan_pdn_apn_type_e type;
+
+ /* PDN status */
+ iwlan_ran_e cur_ran;
+ d2rm_pdn_status_e status;
+ kal_uint32 default_bid; // LTE: Default EBI, NR: Default QFI
+ kal_uint8 pdu_session_id; // LTE: 0, NR: PDU Session ID
+} d2rm_iwlan_pdn_info_ntf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint8 cid;
+} d2rm_iwlan_pdn_accsel_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint8 cid;
+ kal_uint32 sid; // session id
+ d2rm_iwlan_rpl_struct rpl;
+} d2rm_iwlan_pdn_accsel_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool cell_available; //TRUE: cell is avilable, FALSE cell is not avilable
+
+} d2rm_iwlan_pdn_accsel_event_ind_struct;
+
+// for re-trigger RPL internally
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint8 cid;
+ kal_uint32 ps_id;
+} d2rm_d2rm_pdn_accsel_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint8 cid;
+ kal_uint32 sid; // session id
+} d2rm_iwlan_pdn_accsel_rsp_struct;
+/******************************************************************************/
+
+
+#endif // __IWLAN_STRUCT_H__
diff --git a/mcu/protocol/interface/ims/d2rm_n3epc_struct.h b/mcu/protocol/interface/ims/d2rm_n3epc_struct.h
new file mode 100644
index 0000000..304c70a
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2rm_n3epc_struct.h
@@ -0,0 +1,560 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef D2RM_N3EPC_STRUCT_H
+#define D2RM_N3EPC_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "netinfo_common_struct.h"
+
+#include "atcmd_struct.h"
+
+#include "d2pm_n3epc_struct.h"
+#include "n3epc_public_defs.h"
+#include "iwlan_public_defs.h"
+#include "pdn_public_defs.h"
+
+/*MD common type redefinition*/
+typedef ip_info_struct d2rm_n3epc_ip_info_struct;
+typedef net_info_struct d2rm_n3epc_net_info_struct;
+typedef ip_info_struct n3epc_ip_info_struct;
+typedef net_info_struct n3epc_net_info_struct;
+typedef retry_info_struct d2rm_n3epc_retry_info_struct;
+typedef iwlan_ran_e d2rm_n3epc_ran_enum;
+typedef d2rm_ho_state_e d2rm_n3epc_ho_state_enum;
+typedef enum {
+ N3EPC_PROTO_IPV4 = 1,
+ N3EPC_PROTO_IPV6,
+ N3EPC_PROTO_IPV4V6,
+} n3epc_protocol_enum;
+
+typedef enum {
+ // a single CID or the final CID
+ N3EPC_RES_NONE = D2PM_RES_NONE,
+ N3EPC_RES_FAIL = D2PM_RES_FAIL,
+ N3EPC_RES_SUCC = D2PM_RES_SUCC,
+ // a subsequent CID
+ N3EPC_RES_FAIL_ABORT = D2PM_RES_FAIL_ABORT,
+ N3EPC_RES_SUCC_ABORT = D2PM_RES_SUCC_ABORT,
+ N3EPC_RES_MAX = 0x7FFFFFFF
+} n3epc_res_enum;
+
+typedef enum {
+ N3EPC_RETRY_NO_SUGGEST = -2,
+ N3EPC_RETRY_NO_RETRY = -1,
+ N3EPC_RETRY_IMMEDIATE = 0,
+ N3EPC_RETRY_1_SEC = 1,
+} n3epc_retry_enum;
+
+typedef enum n3epc_apn_unblock_condition_enum {
+ N3EPC_APN_UNBLOCK_CONDITION_NONE = 0,
+ N3EPC_APN_UNBLOCK_CONDITION_POWEROFF = 1 << 1,
+ N3EPC_APN_UNBLOCK_CONDITION_SIM_INSERTED =
+ N3EPC_APN_UNBLOCK_CONDITION_POWEROFF,
+ N3EPC_APN_UNBLOCK_CONDITION_WIFI_OFF_ON = 1 << 2,
+ N3EPC_APN_UNBLOCK_CONDITION_WIFI_ASSOCIATED = 1 << 3,
+ N3EPC_APN_UNBLOCK_CONDITION_SSID_CHANGED = 1 << 4,
+ N3EPC_APN_UNBLOCK_CONDITION_PDN_DISCONNECTED = 1 << 5,
+ N3EPC_APN_UNBLOCK_CONDITION_TIMER_EXPIRED = 1 << 6,
+ N3EPC_APN_UNBLOCK_CONDITION_IMS_OFF_ON = 1 << 7,
+ N3EPC_APN_UNBLOCK_CONDITION_WFC_OFF_ON = 1 << 8,
+} n3epc_apn_unblock_condition_enum;
+
+// Implementation
+/*******************************************************************************
+* D2RM to WO REQ *
+*******************************************************************************/
+// MSG_ID_D2RM_N3EPC_ACT_DATA_CALL_REQ
+typedef struct {
+ kal_bool isIMS;
+ kal_bool isEmergency;
+ n3epc_protocol_enum protocol;
+} d2rm_n3epc_act_data_call_req_prv_struct;
+
+typedef struct {
+ kal_uint8 psi;
+} d2rm_n3epc_param_5g_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ iwlan_ran_e src_ran;
+ iwlan_ran_e tgt_ran;
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint32 quick_abort_time; // in seconds, 0 means no quick abort and follow normal flow
+
+ /* private part */
+ d2rm_n3epc_act_data_call_req_prv_struct d2rm_n3epc_prv;
+ d2pm_n3epc_act_data_call_req_prv_struct d2pm_n3epc_prv;
+
+ d2rm_n3epc_param_5g_struct param_5g;
+} d2rm_n3epc_act_data_call_req_struct;
+
+// MSG_ID_D2RM_N3EPC_DEACT_DATA_CALL_REQ
+typedef struct {
+ kal_uint8 apn[APN_STRING_LEN];
+} d2rm_n3epc_comm_prv_struct;
+
+typedef d2rm_n3epc_comm_prv_struct d2rm_n3epc_deact_data_call_req_prv_struct;
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ iwlan_ran_e ran;
+ kal_uint32 cid;
+ kal_bool force;
+ /* private part */
+ d2rm_n3epc_deact_data_call_req_prv_struct d2rm_n3epc_prv;
+ d2pm_n3epc_deact_data_call_req_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_deact_data_call_req_struct;
+
+// MSG_ID_D2RM_N3EPC_ABORT_DATA_CALL_REQ
+typedef d2rm_n3epc_comm_prv_struct d2rm_n3epc_abort_data_call_req_prv_struct;
+typedef struct {
+ LOCAL_PARA_HDR
+ /* common part */
+ iwlan_ran_e ran;
+ kal_uint32 cid;
+ /* private part */
+ d2rm_n3epc_abort_data_call_req_prv_struct d2rm_n3epc_prv;
+ d2pm_n3epc_abort_data_call_req_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_abort_data_call_req_struct;
+
+// MSG_ID_D2RM_N3EPC_PDN_HO_NOTIFY_REQ
+typedef d2rm_n3epc_comm_prv_struct d2rm_n3epc_pdn_ho_notify_req_prv_struct;
+typedef struct {
+ LOCAL_PARA_HDR
+ /* common part */
+ kal_uint32 cid;
+ d2rm_n3epc_ho_state_enum hostate;
+ kal_uint8 is_succ;
+ d2rm_n3epc_ran_enum src_ran;
+ d2rm_n3epc_ran_enum tgt_ran;
+ /* private part */
+ d2rm_n3epc_pdn_ho_notify_req_prv_struct d2rm_n3epc_prv;
+} d2rm_n3epc_pdn_ho_notify_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_bool is_all;
+ iwlan_ran_e ran;
+ kal_uint32 cid;
+ d2rm_n3epc_comm_prv_struct d2rm_n3epc_prv;
+ d2pm_n3epc_comm_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_pdn_info_req_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_DATA_CALL_LIST_REQ: query PDN active status per cid/apn
+typedef d2rm_n3epc_get_pdn_info_req_struct
+ d2rm_n3epc_get_data_call_list_req_struct;
+// MSG_ID_D2RM_N3EPC_GET_DYNAMIC_PARAM_REQ
+typedef d2rm_n3epc_get_pdn_info_req_struct
+ d2rm_n3epc_get_dynamic_param_req_struct;
+// MSG_ID_D2RM_N3EPC_GET_PDP_ADDRESS_REQ
+typedef d2rm_n3epc_get_pdn_info_req_struct
+ d2rm_n3epc_get_pdp_address_req_struct;
+// MSG_ID_D2RM_N3EPC_GET_SECONDARY_DYNAMIC_PARAM_REQ
+typedef d2rm_n3epc_get_pdn_info_req_struct
+ d2rm_n3epc_get_secondary_dynamic_param_req_struct;
+// MSG_ID_D2RM_N3EPC_GET_QOS_REQ
+typedef d2rm_n3epc_get_pdn_info_req_struct d2rm_n3epc_get_qos_req_struct;
+// MSG_ID_D2RM_N3EPC_GET_TFT_REQ
+typedef d2rm_n3epc_get_pdn_info_req_struct d2rm_n3epc_get_tft_req_struct;
+// MSG_ID_D2RM_N3EPC_GET_PACKET_FILTER_REQ
+typedef d2rm_n3epc_get_pdn_info_req_struct
+ d2rm_n3epc_get_packet_filter_req_struct;
+
+// MSG_ID_D2RM_N3EPC_SET_PACKET_FILTER_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ d2pm_n3epc_set_packet_filter_req_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_set_packet_filter_req_struct;
+
+// MSG_ID_D2RM_N3EPC_MODIFY_DATA_CALL_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ d2pm_n3epc_mod_data_call_req_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_modify_data_call_req_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_RETRYTMR_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ iwlan_ran_e ran;
+ kal_char apn[APN_STRING_LEN];
+
+ /* private part */
+ d2pm_n3epc_comm_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_retrytmr_req_struct;
+
+// MSG_ID_D2RM_N3EPC_SET_RETRYTMR_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ iwlan_ran_e ran;
+ kal_char apn[APN_STRING_LEN];
+ kal_uint8 cmd;
+
+ /* private part */
+ d2pm_n3epc_comm_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_set_retrytmr_req_struct;
+
+/*******************************************************************************
+* WO TO D2RM CNF *
+*******************************************************************************/
+// MSG_ID_D2RM_N3EPC_ACT_DATA_CALL_CNF
+typedef struct {
+ kal_bool errcause_present;
+ n3epc_pdn_reject_enum errcause;
+ kal_bool sub_errcause_present;
+ n3epc_ike_error_notify_enum sub_errcause;
+
+ kal_bool is_visited;
+} d2rm_n3epc_act_data_call_cnf_prv_struct;
+
+// workaround for "mcd_l3_inc_struct.h" not found in custom_protocol when building FIGEAC_FPGA(BASIC)
+typedef struct {
+ kal_uint8 mcc1;
+ kal_uint8 mcc2;
+ kal_uint8 mcc3;
+ kal_uint8 mnc1;
+ kal_uint8 mnc2;
+ kal_uint8 mnc3;
+} n3epc_plmn_id_struct;
+
+typedef struct {
+ /* Mapped for 5GC Network Slicing */
+ at_s_nssai_struct s_nssai;
+ n3epc_plmn_id_struct s_nssai_plmn_id;
+} epdg_mapped_info_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /*common part*/
+ iwlan_ran_e ran;
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ d2rm_n3epc_ip_info_struct ip_info;
+ d2rm_n3epc_net_info_struct net_info;
+ d2rm_n3epc_retry_info_struct retry_info;
+ epdg_mapped_info_struct epdg_mapped_info;
+
+ kal_bool is_succ;
+ n3epc_res_enum res_code;
+
+ /* private part */
+ d2rm_n3epc_act_data_call_cnf_prv_struct d2rm_n3epc_prv;
+ d2pm_n3epc_act_data_call_cnf_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_act_data_call_cnf_struct;
+
+// MSG_ID_D2RM_N3EPC_DEACT_DATA_CALL_CNF
+typedef d2rm_n3epc_comm_prv_struct d2rm_n3epc_deact_data_call_cnf_prv_struct;
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ iwlan_ran_e ran;
+ kal_uint32 cid;
+ kal_bool is_succ;
+ /* private part */
+ d2rm_n3epc_deact_data_call_cnf_prv_struct d2rm_n3epc_prv;
+ d2pm_n3epc_deact_data_call_cnf_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_deact_data_call_cnf_struct;
+
+// MSG_ID_D2RM_N3EPC_ABORT_DATA_CALL_CNF
+typedef d2rm_n3epc_comm_prv_struct d2rm_n3epc_abort_data_call_cnf_prv_struct;
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ iwlan_ran_e ran;
+ kal_uint32 cid;
+ kal_bool is_succ;
+ /* private part */
+ d2rm_n3epc_abort_data_call_cnf_prv_struct d2rm_n3epc_prv;
+ d2pm_n3epc_abort_data_call_cnf_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_abort_data_call_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ iwlan_ran_e ran;
+ kal_bool is_succ;
+ d2pm_n3epc_comm_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_pdn_info_cnf_struct;
+
+typedef d2rm_n3epc_get_pdn_info_cnf_struct d2rm_n3epc_configure_pdn_cnf_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_DATA_CALL_LIST_CNF
+typedef d2rm_n3epc_get_pdn_info_cnf_struct
+ d2rm_n3epc_get_data_call_list_cnf_struct;
+// MSG_ID_D2RM_N3EPC_GET_DYNAMIC_PARAM_CNF
+typedef d2rm_n3epc_get_pdn_info_cnf_struct
+ d2rm_n3epc_get_dynamic_param_cnf_struct;
+// MSG_ID_D2RM_N3EPC_GET_PDP_ADDRESS_CNF
+typedef d2rm_n3epc_get_pdn_info_cnf_struct
+ d2rm_n3epc_get_pdp_address_cnf_struct;
+// MSG_ID_D2RM_N3EPC_GET_SECONDARY_DYNAMIC_PARAM_CNF
+typedef d2rm_n3epc_get_pdn_info_cnf_struct
+ d2rm_n3epc_get_secondary_dynamic_param_cnf_struct;
+// MSG_ID_D2RM_N3EPC_GET_QOS_CNF
+typedef d2rm_n3epc_get_pdn_info_cnf_struct d2rm_n3epc_get_qos_cnf_struct;
+// MSG_ID_D2RM_N3EPC_GET_TFT_CNF
+typedef d2rm_n3epc_get_pdn_info_cnf_struct d2rm_n3epc_get_tft_cnf_struct;
+// MSG_ID_D2RM_N3EPC_GET_PACKET_FILTER_CNF
+typedef d2rm_n3epc_get_pdn_info_cnf_struct
+ d2rm_n3epc_get_packet_filter_cnf_struct;
+
+// MSG_ID_D2RM_N3EPC_SET_PACKET_FILTER_CNF
+typedef d2rm_n3epc_configure_pdn_cnf_struct
+ d2rm_n3epc_set_packet_filter_cnf_struct;
+// MSG_ID_D2RM_N3EPC_MODIFY_DATA_CALL_CNF
+typedef d2rm_n3epc_configure_pdn_cnf_struct
+ d2rm_n3epc_modify_data_call_cnf_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_RETRYTMR_CNF
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ iwlan_ran_e ran;
+ kal_char apn[APN_STRING_LEN];
+ d2rm_n3epc_retry_info_struct retry_info;
+
+ /* private part */
+ d2pm_n3epc_comm_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_retrytmr_cnf_struct;
+
+// MSG_ID_D2RM_N3EPC_SET_RETRYTMR_CNF
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ iwlan_ran_e ran;
+ kal_char apn[APN_STRING_LEN];
+ kal_bool is_succ;
+
+ /* private part */
+ d2pm_n3epc_comm_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_set_retrytmr_cnf_struct;
+
+/*******************************************************************************
+* WO TO D2RM IND *
+*******************************************************************************/
+// MSG_ID_D2RM_N3EPC_PDN_DISCONN_IND
+typedef struct {
+ n3epc_status_enum errcause;
+ n3epc_ike_error_notify_enum sub_errcause;
+} d2rm_n3epc_pdn_disconn_ind_prv_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ iwlan_ran_e ran;
+ kal_uint32 cid;
+ kal_bool apn_present; // can be removed
+ kal_uint8 apn[APN_STRING_LEN];
+ /*private part */
+ d2rm_n3epc_pdn_disconn_ind_prv_struct d2rm_n3epc_prv;
+ d2pm_n3epc_pdn_disconn_ind_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_pdn_disconn_ind_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_DATA_CALL_LIST_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ iwlan_ran_e ran;
+ kal_uint32 cid;
+ kal_uint8 is_act;
+ d2pm_n3epc_get_data_call_list_ind_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_data_call_list_ind_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_DYNAMIC_PARAM_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ iwlan_ran_e ran;
+ kal_uint32 cid;
+ d2pm_n3epc_get_dynamic_param_ind_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_dynamic_param_ind_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_PDP_ADDRESS_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ d2pm_n3epc_get_pdp_address_ind_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_pdp_address_ind_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_SECONDARY_DYNAMIC_PARAM_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ // TODO: content
+ d2pm_n3epc_get_secondary_dynamic_param_ind_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_secondary_dynamic_param_ind_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_QOS_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ // TODO: content
+ d2pm_n3epc_get_qos_ind_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_qos_ind_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_TFT_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ // TODO: content
+ d2pm_n3epc_get_tft_ind_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_tft_ind_struct;
+
+// MSG_ID_D2RM_N3EPC_GET_PACKET_FILTER_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ // TODO: content
+ kal_uint32 cid;
+ d2pm_n3epc_get_packet_filter_ind_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_get_packet_filter_ind_struct;
+
+// MSG_ID_D2RM_N3EPC_PING_STATUS_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 avg_latency;
+ kal_uint8 pkt_loss_rate;
+ kal_bool need_ho;
+} d2rm_n3epc_ping_status_ind_struct;
+
+// MSG_ID_D2RM_N3EPC_MODIFY_DATA_CALL_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /*common part*/
+ iwlan_ran_e ran;
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ d2rm_n3epc_ip_info_struct ip_info;
+ d2rm_n3epc_net_info_struct net_info;
+
+ /* private part */
+ d2pm_n3epc_mod_data_call_ind_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_modify_data_call_ind_struct;
+
+// MSG_ID_D2RM_N3EPC_RST_RETRYTMR_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ /* common part */
+ iwlan_ran_e ran;
+ kal_bool apn_present;
+ kal_char apn[APN_STRING_LEN];
+ n3epc_apn_unblock_condition_enum cause;
+
+ /* private part */
+ d2pm_n3epc_comm_prv_struct d2pm_n3epc_prv;
+} d2rm_n3epc_rst_retrytmr_ind_struct;
+
+/*******************************************************************************
+* WO to D2RM REQ *
+*******************************************************************************/
+// MSG_ID_N3EPC_D2RM_GET_EPDG_INFO_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+} n3epc_d2rm_get_epdg_info_req_struct;
+
+/*******************************************************************************
+* WO to D2RM CNF *
+*******************************************************************************/
+// MSG_ID_N3EPC_D2RM_GET_EPDG_INFO_CNF
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ kal_bool is_succ;
+} n3epc_d2rm_get_epdg_info_cnf_struct;
+
+/*******************************************************************************
+* WO to D2RM IND *
+*******************************************************************************/
+// MSG_ID_N3EPC_D2RM_GET_EPDG_INFO_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ d2rm_n3epc_ip_info_struct ip_info;
+} n3epc_d2rm_get_epdg_info_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 context_id;
+ kal_uint32 network_interface_id;
+ apn_type_info_struct apn_type_info;
+} d2rm_n3epc_pdn_bind_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 context_id;
+ kal_bool is_successful;
+ ps_cause_enum error_result;
+} d2rm_n3epc_pdn_bind_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 context_id;
+} d2rm_n3epc_pdn_unbind_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 context_id;
+ kal_bool is_successful;
+ ps_cause_enum error_result;
+} d2rm_n3epc_pdn_unbind_cnf_struct;
+
+#endif //_D2RM_N3EPC_STRUCT_H
diff --git a/mcu/protocol/interface/ims/d2rm_wo_struct.h b/mcu/protocol/interface/ims/d2rm_wo_struct.h
new file mode 100644
index 0000000..a6edc11
--- /dev/null
+++ b/mcu/protocol/interface/ims/d2rm_wo_struct.h
@@ -0,0 +1,516 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _D2RM_WO_STRUCT_H
+#define _D2RM_WO_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "netinfo_common_struct.h"
+
+#include "d2pm_wo_struct.h"
+#include "wo_public_defs.h"
+#include "pdn_public_defs.h"
+
+/*MD common type redefinition*/
+typedef ip_info_struct d2rm_wo_ip_info_struct;
+typedef net_info_struct d2rm_wo_net_info_struct;
+typedef retry_info_struct d2rm_wo_retry_info_struct;
+typedef atcmd_request_type_enum d2rm_wo_act_data_call_req_type_enum;
+typedef iwlan_ran_e d2rm_wo_ran_enum;
+typedef d2rm_ho_state_e d2rm_wo_ho_state_enum;
+typedef enum {
+ WO_PROTO_IPV4 = 1,
+ WO_PROTO_IPV6,
+ WO_PROTO_IPV4V6,
+} wo_protocol_enum;
+
+typedef enum
+{
+ // a single CID or the final CID
+ WO_RES_NONE = D2PM_RES_NONE,
+ WO_RES_FAIL = D2PM_RES_FAIL,
+ WO_RES_SUCC = D2PM_RES_SUCC,
+ // a subsequent CID
+ WO_RES_FAIL_ABORT = D2PM_RES_FAIL_ABORT,
+ WO_RES_SUCC_ABORT = D2PM_RES_SUCC_ABORT,
+ WO_RES_MAX = 0x7FFFFFFF
+} wo_res_enum;
+
+typedef enum {
+ WO_RETRY_NO_SUGGEST = -2,
+ WO_RETRY_NO_RETRY = -1,
+} wo_retry_enum;
+
+// Implementation
+/*******************************************************************************
+* D2RM to WO REQ *
+*******************************************************************************/
+// MSG_ID_D2RM_WO_ACT_DATA_CALL_REQ
+typedef struct
+{
+ kal_bool isIMS;
+ kal_bool isEmergency;
+ wo_protocol_enum protocol;
+}d2rm_wo_act_data_call_req_prv_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ d2rm_wo_act_data_call_req_type_enum req_type;
+ /* private part */
+ d2rm_wo_act_data_call_req_prv_struct d2rm_wo_prv;
+ d2pm_wo_act_data_call_req_prv_struct d2pm_wo_prv;
+}d2rm_wo_act_data_call_req_struct;
+
+// MSG_ID_D2RM_WO_DEACT_DATA_CALL_REQ
+typedef struct
+{
+ kal_uint8 apn[APN_STRING_LEN];
+}d2rm_wo_comm_prv_struct;
+
+typedef d2rm_wo_comm_prv_struct d2rm_wo_deact_data_call_req_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ /* private part */
+ d2rm_wo_deact_data_call_req_prv_struct d2rm_wo_prv;
+ d2pm_wo_deact_data_call_req_prv_struct d2pm_wo_prv;
+}d2rm_wo_deact_data_call_req_struct;
+
+// MSG_ID_D2RM_WO_ABORT_DATA_CALL_REQ
+typedef d2rm_wo_comm_prv_struct d2rm_wo_abort_data_call_req_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+ /* common part */
+ kal_uint32 cid;
+ /* private part */
+ d2rm_wo_abort_data_call_req_prv_struct d2rm_wo_prv;
+ d2pm_wo_abort_data_call_req_prv_struct d2pm_wo_prv;
+}d2rm_wo_abort_data_call_req_struct;
+
+// MSG_ID_D2RM_WO_PDN_HO_NOTIFY_REQ
+typedef d2rm_wo_comm_prv_struct d2rm_wo_pdn_ho_notify_req_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+ /* common part */
+ kal_uint32 cid;
+ d2rm_wo_ho_state_enum hostate;
+ kal_uint8 is_succ;
+ d2rm_wo_ran_enum src_ran;
+ d2rm_wo_ran_enum tgt_ran;
+ /* private part */
+ d2rm_wo_pdn_ho_notify_req_prv_struct d2rm_wo_prv;
+}d2rm_wo_pdn_ho_notify_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_bool is_all;
+ kal_uint32 cid;
+ d2rm_wo_comm_prv_struct d2rm_wo_prv;
+ d2pm_wo_comm_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_pdn_info_req_struct;
+
+// MSG_ID_D2RM_WO_GET_DATA_CALL_LIST_REQ: query PDN active status per cid/apn
+typedef d2rm_wo_get_pdn_info_req_struct d2rm_wo_get_data_call_list_req_struct;
+// MSG_ID_D2RM_WO_GET_DYNAMIC_PARAM_REQ
+typedef d2rm_wo_get_pdn_info_req_struct d2rm_wo_get_dynamic_param_req_struct;
+// MSG_ID_D2RM_WO_GET_PDP_ADDRESS_REQ
+typedef d2rm_wo_get_pdn_info_req_struct d2rm_wo_get_pdp_address_req_struct;
+// MSG_ID_D2RM_WO_GET_SECONDARY_DYNAMIC_PARAM_REQ
+typedef d2rm_wo_get_pdn_info_req_struct d2rm_wo_get_secondary_dynamic_param_req_struct;
+// MSG_ID_D2RM_WO_GET_QOS_REQ
+typedef d2rm_wo_get_pdn_info_req_struct d2rm_wo_get_qos_req_struct;
+// MSG_ID_D2RM_WO_GET_TFT_REQ
+typedef d2rm_wo_get_pdn_info_req_struct d2rm_wo_get_tft_req_struct;
+// MSG_ID_D2RM_WO_GET_PACKET_FILTER_REQ
+typedef d2rm_wo_get_pdn_info_req_struct d2rm_wo_get_packet_filter_req_struct;
+
+// MSG_ID_D2RM_WO_SET_PACKET_FILTER_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ d2pm_wo_set_packet_filter_req_prv_struct d2pm_wo_prv;
+}d2rm_wo_set_packet_filter_req_struct;
+
+// MSG_ID_D2RM_WO_MODIFY_DATA_CALL_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ d2pm_wo_mod_data_call_req_prv_struct d2pm_wo_prv;
+}d2rm_wo_modify_data_call_req_struct;
+
+// MSG_ID_D2RM_WO_GET_RETRYTMR_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_char apn[APN_STRING_LEN];
+
+ /* private part */
+ d2pm_wo_comm_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_retrytmr_req_struct;
+
+// MSG_ID_D2RM_WO_SET_RETRYTMR_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_char apn[APN_STRING_LEN];
+ kal_uint8 cmd;
+
+ /* private part */
+ d2pm_wo_comm_prv_struct d2pm_wo_prv;
+}d2rm_wo_set_retrytmr_req_struct;
+
+/*******************************************************************************
+* WO TO D2RM CNF *
+*******************************************************************************/
+// MSG_ID_D2RM_WO_ACT_DATA_CALL_CNF
+typedef struct
+{
+ kal_bool errcause_present;
+ wo_status_enum errcause;
+ kal_bool sub_errcause_present;
+ wo_ike_err_status_enum sub_errcause;
+ kal_bool is_visited;
+}d2rm_wo_act_data_call_cnf_prv_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /*common part*/
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ d2rm_wo_ip_info_struct ip_info;
+ d2rm_wo_net_info_struct net_info;
+ d2rm_wo_retry_info_struct retry_info;
+ kal_bool is_succ;
+ wo_res_enum res_code;
+ /* private part */
+ d2rm_wo_act_data_call_cnf_prv_struct d2rm_wo_prv;
+ d2pm_wo_act_data_call_cnf_prv_struct d2pm_wo_prv;
+}d2rm_wo_act_data_call_cnf_struct;
+
+// MSG_ID_D2RM_WO_DEACT_DATA_CALL_CNF
+typedef d2rm_wo_comm_prv_struct d2rm_wo_deact_data_call_cnf_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ kal_bool is_succ;
+ /* private part */
+ d2rm_wo_deact_data_call_cnf_prv_struct d2rm_wo_prv;
+ d2pm_wo_deact_data_call_cnf_prv_struct d2pm_wo_prv;
+}d2rm_wo_deact_data_call_cnf_struct;
+
+// MSG_ID_D2RM_WO_ABORT_DATA_CALL_CNF
+typedef d2rm_wo_comm_prv_struct d2rm_wo_abort_data_call_cnf_prv_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_uint32 cid;
+ kal_bool is_succ;
+ /* private part */
+ d2rm_wo_abort_data_call_cnf_prv_struct d2rm_wo_prv;
+ d2pm_wo_abort_data_call_cnf_prv_struct d2pm_wo_prv;
+}d2rm_wo_abort_data_call_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_bool is_succ;
+ d2pm_wo_comm_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_pdn_info_cnf_struct;
+
+typedef d2rm_wo_get_pdn_info_cnf_struct d2rm_wo_configure_pdn_cnf_struct;
+
+// MSG_ID_D2RM_WO_GET_DATA_CALL_LIST_CNF
+typedef d2rm_wo_get_pdn_info_cnf_struct d2rm_wo_get_data_call_list_cnf_struct;
+// MSG_ID_D2RM_WO_GET_DYNAMIC_PARAM_CNF
+typedef d2rm_wo_get_pdn_info_cnf_struct d2rm_wo_get_dynamic_param_cnf_struct;
+// MSG_ID_D2RM_WO_GET_PDP_ADDRESS_CNF
+typedef d2rm_wo_get_pdn_info_cnf_struct d2rm_wo_get_pdp_address_cnf_struct;
+//MSG_ID_D2RM_WO_GET_SECONDARY_DYNAMIC_PARAM_CNF
+typedef d2rm_wo_get_pdn_info_cnf_struct d2rm_wo_get_secondary_dynamic_param_cnf_struct;
+// MSG_ID_D2RM_WO_GET_QOS_CNF
+typedef d2rm_wo_get_pdn_info_cnf_struct d2rm_wo_get_qos_cnf_struct;
+// MSG_ID_D2RM_WO_GET_TFT_CNF
+typedef d2rm_wo_get_pdn_info_cnf_struct d2rm_wo_get_tft_cnf_struct;
+// MSG_ID_D2RM_WO_GET_PACKET_FILTER_CNF
+typedef d2rm_wo_get_pdn_info_cnf_struct d2rm_wo_get_packet_filter_cnf_struct;
+
+// MSG_ID_D2RM_WO_SET_PACKET_FILTER_CNF
+typedef d2rm_wo_configure_pdn_cnf_struct d2rm_wo_set_packet_filter_cnf_struct;
+// MSG_ID_D2RM_WO_MODIFY_DATA_CALL_CNF
+typedef d2rm_wo_configure_pdn_cnf_struct d2rm_wo_modify_data_call_cnf_struct;
+
+// MSG_ID_D2RM_WO_GET_RETRYTMR_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_char apn[APN_STRING_LEN];
+ d2rm_wo_retry_info_struct retry_info;
+
+ /* private part */
+ d2pm_wo_comm_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_retrytmr_cnf_struct;
+
+// MSG_ID_D2RM_WO_SET_RETRYTMR_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_char apn[APN_STRING_LEN];
+ kal_bool is_succ;
+
+ /* private part */
+ d2pm_wo_comm_prv_struct d2pm_wo_prv;
+}d2rm_wo_set_retrytmr_cnf_struct;
+
+/*******************************************************************************
+* WO TO D2RM IND *
+*******************************************************************************/
+// MSG_ID_D2RM_WO_PDN_DISCONN_IND
+typedef struct
+{
+ wo_status_enum errcause;
+ wo_ike_err_status_enum sub_errcause;
+}d2rm_wo_pdn_disconn_ind_prv_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ kal_bool apn_present; //can be removed
+ kal_uint8 apn[APN_STRING_LEN];
+ /*private part */
+ d2rm_wo_pdn_disconn_ind_prv_struct d2rm_wo_prv;
+ d2pm_wo_pdn_disconn_ind_prv_struct d2pm_wo_prv;
+}d2rm_wo_pdn_disconn_ind_struct;
+
+// MSG_ID_D2RM_WO_GET_DATA_CALL_LIST_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ kal_uint8 is_act;
+ d2pm_wo_get_data_call_list_ind_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_data_call_list_ind_struct;
+
+// MSG_ID_D2RM_WO_GET_DYNAMIC_PARAM_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ d2pm_wo_get_dynamic_param_ind_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_dynamic_param_ind_struct;
+
+// MSG_ID_D2RM_WO_GET_PDP_ADDRESS_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ d2pm_wo_get_pdp_address_ind_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_pdp_address_ind_struct;
+
+//MSG_ID_D2RM_WO_GET_SECONDARY_DYNAMIC_PARAM_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ // TODO: content
+ d2pm_wo_get_secondary_dynamic_param_ind_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_secondary_dynamic_param_ind_struct;
+
+// MSG_ID_D2RM_WO_GET_QOS_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ // TODO: content
+ d2pm_wo_get_qos_ind_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_qos_ind_struct;
+
+// MSG_ID_D2RM_WO_GET_TFT_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ // TODO: content
+ d2pm_wo_get_tft_ind_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_tft_ind_struct;
+
+//MSG_ID_D2RM_WO_GET_PACKET_FILTER_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ // TODO: content
+ kal_uint32 cid;
+ d2pm_wo_get_packet_filter_ind_prv_struct d2pm_wo_prv;
+}d2rm_wo_get_packet_filter_ind_struct;
+
+//MSG_ID_D2RM_WO_PING_STATUS_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 avg_latency;
+ kal_uint8 pkt_loss_rate;
+ kal_bool need_ho;
+}d2rm_wo_ping_status_ind_struct;
+
+// MSG_ID_D2RM_WO_MODIFY_DATA_CALL_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ /*common part*/
+ kal_uint32 cid;
+ kal_uint8 apn[APN_STRING_LEN];
+ d2rm_wo_ip_info_struct ip_info;
+ d2rm_wo_net_info_struct net_info;
+
+ /* private part */
+ d2pm_wo_mod_data_call_ind_prv_struct d2pm_wo_prv;
+}d2rm_wo_modify_data_call_ind_struct;
+
+// MSG_ID_D2RM_WO_RST_RETRYTMR_IND
+typedef struct{
+ LOCAL_PARA_HDR
+
+ /* common part */
+ kal_bool apn_present;
+ kal_char apn[APN_STRING_LEN];
+ kal_uint32 cause; //TBD: if needed
+
+ /* private part */
+ d2pm_wo_comm_prv_struct d2pm_wo_prv;
+}d2rm_wo_rst_retrytmr_ind_struct;
+
+/*******************************************************************************
+* WO to D2RM REQ *
+*******************************************************************************/
+// MSG_ID_WO_D2RM_GET_EPDG_INFO_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+}wo_d2rm_get_epdg_info_req_struct;
+
+/*******************************************************************************
+* WO to D2RM CNF *
+*******************************************************************************/
+// MSG_ID_WO_D2RM_GET_EPDG_INFO_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ kal_bool is_succ;
+}wo_d2rm_get_epdg_info_cnf_struct;
+
+/*******************************************************************************
+* WO to D2RM IND *
+*******************************************************************************/
+// MSG_ID_WO_D2RM_GET_EPDG_INFO_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ d2rm_wo_ip_info_struct ip_info;
+}wo_d2rm_get_epdg_info_ind_struct;
+
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 context_id;
+ kal_uint32 network_interface_id;
+ apn_type_info_struct apn_type_info;
+} d2rm_wo_pdn_bind_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 context_id;
+ kal_bool is_successful;
+ ps_cause_enum error_result;
+} d2rm_wo_pdn_bind_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 context_id;
+} d2rm_wo_pdn_unbind_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 context_id;
+ kal_bool is_successful;
+ ps_cause_enum error_result;
+} d2rm_wo_pdn_unbind_cnf_struct;
+
+#endif //_D2RM_WO_STRUCT_H
diff --git a/mcu/protocol/interface/ims/dast_ddm_struct.h b/mcu/protocol/interface/ims/dast_ddm_struct.h
new file mode 100644
index 0000000..0c4df4f
--- /dev/null
+++ b/mcu/protocol/interface/ims/dast_ddm_struct.h
@@ -0,0 +1,446 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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:
+ * ---------
+ * dast_ddm_struct.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 12 06 2016 dennis.tsai
+ * [MOLY00212031] [MT6293]Integration checking for DAST/DDM
+ * add last pdn member for deact pdn cnf.
+ *
+ * 12 05 2016 chia-yu.ku
+ * [MOLY00213562] [DDM][93MD] The initial version of DAST_DATA
+ *
+ * [Detail]
+ * CGEV
+ * - NW PDN DEACT handling
+ * [Solution ] DAST Data
+ *
+ * CR-Id: MOLY00213562
+ * Feature: Data Domain Service
+ *
+ * 12 01 2016 dennis.tsai
+ * [MOLY00212031] [MT6293]Integration checking for DAST/DDM
+ * Add MSG_ID_DAST_DDM_BIND_NW_INTF_REQ for binding nw interface.
+ *
+ * 12 01 2016 dennis.tsai
+ * [MOLY00212031] [MT6293]Integration checking for DAST/DDM
+ * Add interface id and apn type to act_data_call_req_struct.
+ *
+ * 11 30 2016 dennis.tsai
+ * [MOLY00212031] [MT6293]Integration checking for DAST/DDM
+ * query apn, ipaddr, mtu after receiving +cgev.
+ * add MSG_ID_DDM_L4BPDN_CGDATA_CNF handling.
+ *
+ * 11 30 2016 chia-yu.ku
+ * [MOLY00213562] [DDM][93MD] The initial version of DAST_DATA
+ *
+ * [Detail]
+ * EAPNLOCK / EAPNSET
+ * - ATP_SET_OR_EXECUTE_MODE
+ * - ATP_READ_MODE
+ * - + Removed
+ * EAPNACT
+ * - ACT & DEACT reviewed
+ * - Co-operating with Netagent
+ * - Functionization
+ * - Bugfixing
+ * EPDN
+ * CGEV
+ * - APN from DDM
+ * IA
+ * - Not to send ACT_DATA_CALL req. and make AP interfaces up
+ * - Removing mod_dast_eapnact_set_or_execute()
+ * CGCONTRDP
+ * - Dummy
+ * CGACT
+ * - Dummy
+ *
+ * [Solution ] DAST Data
+ *
+ * CR-Id: MOLY00213562
+ * Feature: Data Domain Service
+ *
+ * 11 29 2016 chia-yu.ku
+ * [MOLY00213562] [DDM][93MD] The initial version of DAST_DATA
+ *
+ * [Detail]
+ * EAPNLOCK / EAPNSET
+ * - ATP_SET_OR_EXECUTE_MODE
+ * - ATP_READ_MODE
+ * - + Removed
+ * EAPNACT
+ * - ACT & DEACT reviewed
+ * - Co-operating with Netagent
+ * - Functionization
+ * - Bugfixing
+ * EPDN
+ * CGEV
+ * IA
+ * - Not to send ACT_DATA_CALL req. and make AP interfaces up
+ * - Removing mod_dast_eapnact_set_or_execute()
+ * CGCONTRDP
+ * - Dummy
+ * CGACT
+ * - Dummy
+ *
+ * [Solution ] DAST Data
+ *
+ * CR-Id: MOLY00213562
+ * Feature: Data Domain Service
+ *
+ * 11 23 2016 dennis.tsai
+ * [MOLY00212031] [MT6293]Integration checking for DAST/DDM
+ * change dast_ddm_act_data_call_cnf_struct member.
+ *
+ * 11 22 2016 dennis.tsai
+ * [MOLY00212031] [MT6293]Integration checking for DAST/DDM
+ * Fix dast_ddm_define_attach_pdn_ind_struct name.
+ *
+ * 11 22 2016 dennis.tsai
+ * [MOLY00212031] [MT6293]Integration checking for DAST/DDM
+ * Add urc cgev ind message interface for DAST/DDM.
+ *
+ * 11 21 2016 chia-yu.ku
+ * [MOLY00213562] [DDM][93MD] The initial version of DAST_DATA
+ *
+ * [Detail]
+ * EAPNLOCK / EAPNSET
+ * - ATP_SET_OR_EXECUTE_MODE
+ * - ATP_READ_MODE
+ * EAPNACT
+ * - ACT & DEACT reviewed
+ *
+ * [Solution ] DAST Data
+ *
+ * CR-Id: MOLY00213562
+ * Feature: Data Domain Service
+ *
+ * 11 19 2016 chia-yu.ku
+ * [MOLY00213562] [DDM][93MD] The initial version of DAST_DATA
+ *
+ * [Detail]
+ * EAPNLOCK / EAPNSET
+ * - ATP_SET_OR_EXECUTE_MODE
+ * - ATP_READ_MODE
+ * EAPNACT
+ *
+ * [Solution ] DAST Data
+ *
+ * CR-Id: MOLY00213562
+ * Feature: Data Domain Service
+ *
+ * 11 18 2016 dennis.tsai
+ * [MOLY00212031] [MT6293]Integration checking for DAST/DDM
+ * add define_attach_pdn_rsp error handling.
+ *
+ * 11 18 2016 chia-yu.ku
+ * [MOLY00213562] [DDM][93MD] The initial version of DAST_DATA
+ *
+ * [Detail]
+ * EAPNLOCK / EAPNSET
+ * EAPNACT
+ * ps_id for mutli-PS
+ * Rmoving limits.h
+ *
+ * [Solution ] DAST Data
+ *
+ * CR-Id: MOLY00213562
+ * Feature: Data Domain Service
+ *
+ * 11 16 2016 yts.chen
+ * [MOLY00211239] [6293][DAST] dast_nw check-in
+ *
+ * .
+ *
+ * 11 16 2016 yts.chen
+ * [MOLY00211239] [6293][DAST] dast_nw check-in
+ *
+ * .
+ *
+ * 11 16 2016 chia-yu.ku
+ * [MOLY00211618] [DDM][93MD] The initial version of MAL System Service Leverage
+ * .
+ *
+ * 11 16 2016 yts.chen
+ * [MOLY00211239] [6293][DAST] dast_nw check-in modify dast_ddm_define_attach_pdn_rsp_struct
+ *
+ * .
+ *
+ * 11 14 2016 dennis.tsai
+ * [MOLY00212031] [MT6293]Integration checking for DAST/DDM
+ * fix mtu set/read method.
+ *
+ * 11 14 2016 mingchun.cheng
+ * [MOLY00210549] [MT6293] DAST/DDM integration check in
+ * .
+ *
+ * 11 13 2016 mingchun.cheng
+ * [MOLY00210549] [MT6293] DAST/DDM integration check in
+ * rollback
+ *
+ * 11 10 2016 yts.chen
+ * [MOLY00211239] [6293][DAST] dast_nw check-in
+ *
+ * .
+ *
+ * 11 03 2016 mingchun.cheng
+ * [MOLY00210549] [MT6293] DAST/DDM integration check in
+ * .
+ *
+ *
+ * [MOLY00210968] [MT6293] DAST modify include header files
+ *
+ * .
+ *
+ ****************************************************************************/
+
+#ifndef _DAST_DDM_STRUCT_H
+#define _DAST_DDM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+#include "ps_public_enum.h"
+#include "ddm_common_struct.h"
+
+// Type definitions
+typedef enum
+{
+ DAST_DDM_RES_FAIL = -1,
+ DAST_DDM_RES_SUCC,
+ DAST_DDM_RES_FAIL_ABORT,
+ DAST_DDM_RES_SUCC_ABORT,
+ DAST_DDM_RES_FAIL_RETRY,
+// DAST_DDM_RES_SUCC_RETRY, not exist
+ DAST_DDM_RES_FAIL_CONT,
+ DAST_DDM_RES_SUCC_CONT,
+ DAST_DDM_RES_MAX = 0xFFFFFFFF
+}dast_ddm_res_enum;
+
+// Macros
+#define DDM_APN_LEN (32)
+#define DDM_USRNAME_LEN (32)
+#define DDM_PASSWD_LEN (32)
+#define DAST_DDM_REQ_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define DAST_DDM_CNF_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define DAST_DDM_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define DAST_DDM_RSP_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+// Functions
+// N/A
+
+// Implementation
+/*******************************************************************************
+* DAST to DDM REQ *
+*******************************************************************************/
+
+typedef struct
+{
+ DAST_DDM_REQ_LOCAL_PARA_HDR
+}dast_ddm_common_req_struct;
+
+// MSG_ID_DAST_DDM_ACT_DATA_CALL_REQ
+typedef struct
+{
+ DAST_DDM_REQ_LOCAL_PARA_HDR
+
+ kal_int32 cid, vcid; // NEED_TO_BE_NOTICED, just a temporary solution, but NOT the final one
+ atcmd_request_type_enum req_type;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint8 pdp_type[PDP_TYPE_STRING_LEN];
+ kal_uint8 roam_prot[ROAMING_IP_TYPE_STRING_LEN];
+ kal_uint32 auth_type;
+ kal_uint8 username[USERID_STRING_LEN];
+ kal_uint8 passwd[PASSWORD_STRING_LEN];
+ kal_bool carrier_enabled;
+ kal_uint32 max_conn;
+ kal_uint32 max_conn_time;
+ kal_uint32 wait_time;
+ kal_uint32 inact_time;
+ network_interface_id_info_struct interface_id;
+ apn_type_info_struct apn_type_info;
+}dast_ddm_act_data_call_req_struct;
+
+// MSG_ID_DAST_DDM_DEACT_DATA_CALL_REQ
+typedef struct
+{
+ DAST_DDM_REQ_LOCAL_PARA_HDR
+
+ kal_int32 cid, vcid;
+}dast_ddm_deact_data_call_req_struct;
+
+// MSG_ID_DAST_DDM_GET_DATA_CALL_LIST_REQ
+typedef struct
+{
+ DAST_DDM_REQ_LOCAL_PARA_HDR
+
+ at_cgact_req_struct cmd;
+}dast_ddm_get_data_call_list_req_struct;
+
+// MSG_ID_DAST_DDM_GET_DYNAMIC_PARAM_REQ
+typedef struct
+{
+ DAST_DDM_REQ_LOCAL_PARA_HDR
+
+ at_cgcontrdp_req_struct cmd;
+}dast_ddm_get_dynamic_param_req_struct;
+
+// MSG_ID_DAST_DDM_BIND_NW_INTF_REQ
+typedef struct
+{
+ DAST_DDM_REQ_LOCAL_PARA_HDR
+
+ network_interface_id_info_struct interface_id;
+ apn_type_info_struct apn_type_info;
+}dast_ddm_bind_nw_intf_req_struct;
+
+/*******************************************************************************
+* DDM TO DAST CNF *
+*******************************************************************************/
+
+// MSG_ID_DAST_DDM_ACT_DATA_CALL_CNF
+typedef struct
+{
+ DAST_DDM_CNF_LOCAL_PARA_HDR
+
+ kal_int32 cid, vcid;
+ at_cgpaddr_ind_struct cgpaddr_cmd;//for ip address
+ kal_uint32 IPv4_MTU;// for mtu
+ dast_ddm_res_enum res_code;
+}dast_ddm_act_data_call_cnf_struct;
+
+// MSG_ID_DAST_DDM_DEACT_SETUP_DATA_CALL_CNF
+typedef struct
+{
+ DAST_DDM_CNF_LOCAL_PARA_HDR
+ kal_bool is_last_pdn;
+ kal_int32 cid;
+ dast_ddm_res_enum res_code;
+}dast_ddm_deact_data_call_cnf_struct;
+
+// MSG_ID_DAST_DDM_GET_DATA_CALL_LIST_CNF
+typedef struct
+{
+ DAST_DDM_CNF_LOCAL_PARA_HDR
+
+ at_cgact_ind_struct cmd;
+ kal_uint32 cmd_count;
+ dast_ddm_res_enum res_code;
+}dast_ddm_get_data_call_list_cnf_struct;
+
+// MSG_ID_DAST_DDM_GET_DYNAMIC_PARAM_CNF
+typedef struct
+{
+ DAST_DDM_CNF_LOCAL_PARA_HDR
+ at_cgcontrdp_ind_struct cmd;
+ kal_uint32 cmd_count;
+ dast_ddm_res_enum res_code;
+}dast_ddm_get_dynamic_param_cnf_struct;
+
+/*******************************************************************************
+* DDM TO DAST IND *
+*******************************************************************************/
+
+// +CGEV: use at_cgev_ind_struct directly
+
+typedef struct
+{
+ DAST_DDM_IND_LOCAL_PARA_HDR
+ kal_bool apn_present;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_bool cgpaddr_cmd_present;
+ at_cgpaddr_ind_struct cgpaddr_cmd;
+ kal_bool IPv4_MTU_present;
+ kal_uint32 IPv4_MTU;
+ at_cgev_ind_struct cgev_cmd;
+ kal_uint32 cid;
+}dast_ddm_urc_cgev_ind_struct;
+
+// MSG_ID_DAST_DDM_DEFINE_ATTACH_PDN_IND
+typedef struct
+{
+ DAST_DDM_IND_LOCAL_PARA_HDR
+}dast_ddm_define_attach_pdn_ind_struct;
+
+/*******************************************************************************
+* DAST TO DDM RSP *
+*******************************************************************************/
+
+// MSG_ID_DAST_DDM_DEFINE_ATTACH_PDN_RSP
+typedef struct {
+ DAST_DDM_RSP_LOCAL_PARA_HDR
+ kal_bool is_success;
+ ps_cause_enum err_cause;
+ kal_uint32 cid;
+ atcmd_request_type_enum req_type;
+ kal_uint8 apn[APN_STRING_LEN];
+ kal_uint8 pdp_type[PDP_TYPE_STRING_LEN];
+ kal_uint8 roam_prot[ROAMING_IP_TYPE_STRING_LEN];
+ kal_uint32 auth_type;
+ kal_uint8 username[USERID_STRING_LEN];
+ kal_uint8 passwd[PASSWORD_STRING_LEN];
+} dast_ddm_define_attach_pdn_rsp_struct;
+
+#endif
diff --git a/mcu/protocol/interface/ims/imc_imsua_struct.h b/mcu/protocol/interface/ims/imc_imsua_struct.h
new file mode 100644
index 0000000..d764cd5
--- /dev/null
+++ b/mcu/protocol/interface/ims/imc_imsua_struct.h
@@ -0,0 +1,85 @@
+/*****************************************************************************
+* 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!
+*
+*------------------------------------------------------------------------------
+* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+*==============================================================================
+*******************************************************************************/
+#ifndef _IMC_IMSUA_STRUCT_H_
+#define _IMC_IMSUA_STRUCT_H_
+
+#include "ims_common_def.h"
+
+/*****imc_imsua_struct.h START*****/
+
+/*
+ * Description
+ * - the primitive is used to notify UA the evoltesi value configured by AP
+ * Direction
+ * - IMC --> IMSUA
+ */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ imcf_uint32 acct_id;
+ enh_volte_si_enum evoltesi_config;
+} imsua_call_imc_evoltesi_config_ind_struct;
+
+/*
+ * Description
+ * - the primitive is used to indicate IMC(and then VDM) the change of call status
+ * Direction
+ * - IMC <-- IMSUA
+ */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ imcf_uint32 acct_id;
+ imcf_uint32 call_id;
+ ims_enh_volte_si_call_status_enum call_status;
+} imsua_call_imc_evoltesi_call_status_ind_struct;
+
+/*****imc_imsua_struct.h END*****/
+
+
+#endif /* _IMC_IMSUA_STRUCT_H_ */
+
+
diff --git a/mcu/protocol/interface/ims/imc_iwlan_struct.h b/mcu/protocol/interface/ims/imc_iwlan_struct.h
new file mode 100644
index 0000000..329ec68
--- /dev/null
+++ b/mcu/protocol/interface/ims/imc_iwlan_struct.h
@@ -0,0 +1,236 @@
+#ifndef _IMC_IWLAN_STRUCT_H
+#define _IMC_IWLAN_STRUCT_H
+
+#include "ps_public_enum.h"
+#include "ims_common_def.h"
+#include "ims_interface_md.h"
+#include "atp_imc_struct.h"
+#include "codec_def.h"
+#include "custom_iwlan_config.h"
+
+typedef enum {
+ IMC_IWLAN_MEDIA_UNSPEC = 0,
+ IMC_IWLAN_MEDIA_NEW,
+ IMC_IWLAN_MEDIA_UPDATE,
+ IMC_IWLAN_MEDIA_DEL
+} imc_iwlan_media_state_enum;
+
+typedef enum {
+ IMC_IWLAN_IMS_CALL_STATUS_UNSPEC = 0,
+ IMC_IWLAN_IMS_CALL_STATUS_REQ,
+ IMC_IWLAN_IMS_CALL_STATUS_BEGIN,
+ IMC_IWLAN_IMS_CALL_STATUS_CONNECTED,
+ IMC_IWLAN_IMS_CALL_STATUS_END,
+} imc_iwlan_ims_call_status_enum;
+
+typedef enum
+{
+ IMS_STATE_IDLE = 0,
+ IMS_STATE_ONCELL,
+ IMS_STATE_ONWIFI,
+ IMS_STATE_CNT,
+ IMS_STATE_ONALL = 0xCC,
+}ims_state_enum;
+
+typedef enum {
+ IMS_ACTIVE_NOT_ALLOW = 0,
+ IMS_ACTIVE_ALLOW = 1,
+ IMS_ACTIVE_MAINTAIN = 2,
+} ims_active_status_enum;
+
+typedef enum {
+ IMS_NOT_ALLOW_UNSPEC = 0,
+ IMS_RF_OFF = BITMASK(1),
+ IMS_23G_RAU = BITMASK(2),
+ IMS_AFR_DEREG = BITMASK(3),
+ IMS_SIM_INVALID = BITMASK(4),
+ IMS_NOT_ALLOW_CELL = BITMASK(5),
+ IMS_WIFI_ONLY_OR_NA = BITMASK(6),
+ IMS_RAT_NOT_SUPPORT = BITMASK(7),
+ IMS_ROAM_BAR = BITMASK(8),
+ IMS_VOPS_BAR = BITMASK(9),
+ IMS_VOPS_BAR_WITH_CALL = BITMASK(10),
+ IMS_C2K_DEREG = BITMASK(11),
+ IMS_NOT_ALLOW_WIFI = BITMASK(12),
+ IMS_CS_PREFER = BITMASK(13),
+ IMS_POOR_WIFI = BITMASK(14),
+ IMS_DEAD_ZONE = BITMASK(15),
+ IMS_SIP403 = BITMASK(16),
+ IMS_CELL_ONLY_OR_NA = BITMASK(17),
+} ims_not_allow_cause_enum;
+
+typedef enum {
+ IMS_ROAMING_DISABLE = 0,
+ IMS_ROAMING_ENABLE = 1,
+} ims_roaming_status_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_roaming_status_enum allow_3gpp_roaming;
+} imc_iwlan_ims_roaming_status_ind_struct;
+
+/*
+ * @brief IMS diable by IWLAN
+ * @note MSG_ID_IMC_IWLAN_IMS_DEREG_IND/RSP
+ * AT+EIMSDEREG=4
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 dereg_cause;
+} imc_iwlan_ims_dereg_ind_struct,
+ imc_iwlan_ims_dereg_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_acct_type_enum acct_type; //defined in ims_interface_md.h
+ kal_uint32 call_id;
+ ims_call_mode_enum call_mode; //defined in ims_interface_md.h
+ imc_iwlan_ims_call_status_enum call_status;
+} imc_iwlan_ims_call_status_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ hvolte_call_domain_enum call_domain;
+ kal_bool is_for_silent_redial;
+ hvolte_mode_change_cause_enum cause;
+} imc_iwlan_ims_cc_set_hvolte_call_domain_req_struct;
+
+typedef struct {
+ kal_uint8 domain; // 3gpp domain
+ ims_rat_type_enum gsm_rat; // detail 3gpp rat
+ c2k_rat_type_enum c2k_rat; // detail c2k rat
+
+ /* 3GPP cell info */
+ nas_ps_reg_status_enum nas_ps_reg_status;
+ kal_bool is_roaming;
+ kal_uint8 plmn[MAX_PLMN_LEN + 1]; /* in string format, from +EOPS */
+ kal_uint64 cell_id;
+ kal_uint32 area_code; /* lac or tac */
+ cell_service_enum service_state; /* +EIMSINFO */
+ // TBD: kal_bool is_emc_supported;
+
+ /* C2K cell info */
+ kal_uint16 sid;
+ kal_uint16 nid;
+ kal_uint8 pzid;
+ kal_uint16 base_id;
+ kal_uint32 sector_id[4];
+ kal_uint8 subnet_length;
+ kal_uint8 carrier_id[7];
+ domain_id_enum c2k_domain; //c2k domain
+ c2k_cell_service_enum c2k_service_state; /* +EC2KREG */
+ /*ecall over IMS*/
+#ifdef __NG_ECALL_SUPPORT__
+ imcf_bool support_ecl; /*network support ecall over ims or not*/
+#endif
+} ims_cell_info_t;
+
+typedef struct {
+ kal_bool sms;
+ kal_bool voice;
+ kal_bool video;
+} ims_ft_tag_onwifi_t;
+
+typedef struct {
+ kal_bool sms;
+ ims_cap_rat_enum voice;
+ ims_cap_rat_enum video;
+} ims_ft_tag_oncell_t;
+
+typedef struct {
+ ims_ft_tag_oncell_t oncell;
+ ims_ft_tag_onwifi_t onwifi;
+} ims_ft_tags_t;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool ims_enable;
+ ims_active_status_enum allow_active;
+ kal_uint32 not_allow_cause; //bitmap, indicate the ims not allow cause
+ ims_ft_tags_t ft_tags;
+ ims_cell_info_t ims_cell_info;
+} imc_iwlan_ims_cap_info_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ voip_codec_enum audio_codec;
+ imc_iwlan_media_state_enum media_state;
+} imc_iwlan_call_media_info_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 hplmn_voice_capability;// 0:disable,1:enable,0xFF:not seted by NW
+ kal_uint8 hplmn_video_capability;// 0:disable,1:enable,0xFF:not seted by NW
+ kal_uint8 vplmn_voice_capability;// 0:disable,1:enable,0xFF:not seted by NW
+ kal_uint8 vplmn_video_capability;// 0:disable,1:enable,0xFF:not seted by NW
+} imc_iwlan_mo_config_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} imc_iwlan_wifi_service_fail_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ srvcc_status_enum srvcc_status;
+} imc_iwlan_srvcc_status_update_req_struct;
+
+typedef enum {
+ REG_CAUSE_NONE = 0,
+ REG_SIP_NO_RSP,
+ REG_SIP403_ROAMING,
+ REG_SIP403_3,
+ REG_PCSCF_ERR,
+ PRIO_CAUSE_CNT,
+} imc_iwlan_prio_cause_e;
+
+typedef enum {
+ IMC_IWLAN_RAN_PRIO_NONE = 0,
+ IMC_IWLAN_RAN_PRIO_LOW,
+ IMC_IWLAN_RAN_PRIO_BLOCK,
+ IMC_IWLAN_RAN_PRIO_OP_CNT,
+} imc_iwlan_ran_prio_e;
+
+typedef enum {
+ IMC_IWLAN_WIFI_RE_ASOC = (1),
+ IMC_IWLAN_VOWIFI_ON_OFF = (1<<1),
+ IMC_IWLAN_LOCAEN_ON_OFF = (1<<2),
+ IMC_IWLAN_CELL_REGHOME = (1<<3),
+} imc_iwlan_reset_event_e;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ ims_state_enum ran;
+ imc_iwlan_prio_cause_e cause;
+ imc_iwlan_ran_prio_e prio;
+ kal_uint32 reset_event;
+} imc_iwlan_reg_ran_prio_update_req_struct;
+
+typedef enum
+{
+ IMC_IWLAN_HO_UNSPEC = 0,
+ IMC_IWLAN_HO_W2L,
+ IMC_IWLAN_HO_L2W,
+ IMC_IWLAN_HO_CNT,
+}imc_iwlan_ho_action_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_iwlan_ho_action_enum ho_action;
+} imc_iwlan_ims_ecc_ho_req_struct;
+
+typedef enum
+{
+ IMC_IWLAN_HO_NONE = 0,
+ IMC_IWLAN_HO_TRIG,
+ IMC_IWLAN_HO_NO_DEST,
+ IMC_IWLAN_HO_END,
+}imc_iwlan_ho_result_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_iwlan_ho_result_enum result;
+} imc_iwlan_ims_ecc_ho_rsp_struct;
+
+#endif /* _IMC_IWLAN_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/imcb_imc_struct.h b/mcu/protocol/interface/ims/imcb_imc_struct.h
new file mode 100644
index 0000000..14ea0b7
--- /dev/null
+++ b/mcu/protocol/interface/ims/imcb_imc_struct.h
@@ -0,0 +1,3077 @@
+/*****************************************************************************
+* 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).
+*
+*****************************************************************************/
+
+#ifndef IMC_IMCB_STRUCT_H
+#define IMC_IMCB_STRUCT_H
+
+#include "ims_common_def.h"
+
+#define IMCB_IMC_MAX_RTP_ADDRESS_LENGTH (64)
+#define IMCB_IMC_MAX_SDP_EGBYTE_LENGTH (8)
+#define IMCB_IMC_MAX_CALL_NUM (7)
+#define IMCB_IMC_MAX_DATA_TO_IMC_LENGTH (512)
+#define IMCB_IMC_MAX_CNAME_LENGTH (52)
+
+typedef enum {
+ IMCB_IMC_QUERY_TYPE_INVALID = 0,
+ IMCB_IMC_QUERY_TYPE_CELL_ID = 1
+} imcb_imc_query_type_enum;
+
+//IMS SIM Enum
+typedef enum {
+ IMCB_IMC_SIM_PLUG_OUT = 0,
+ IMCB_IMC_SIM_USIM_REFRESH = 1,
+ IMCB_IMC_ISIM_REFRESH = 2,
+ IMCB_IMC_SIM_USIM_RESET = 3, //unused
+ IMCB_IMC_ISIM_RESET = 4, //unused
+ IMCB_IMC_SIM_USIM_INIT = 5, //unused
+ IMCB_IMC_ISIM_INIT = 6 //unused
+} imcb_imc_sim_error_reason_enum;
+
+typedef enum {
+ IMCB_IMC_IMS_AKA_USING_USIM = 0,
+ IMCB_IMC_IMS_AKA_USING_ISIM
+} imcb_imc_ims_aka_cal_decision_enum;
+
+//IMS Bearer Enum
+typedef enum {
+ IMCB_IMC_SIP_TYPE = 0,
+ IMCB_IMC_NON_SIP_TYPE,
+ IMCB_IMC_VOICE_TYPE,
+ IMCB_IMC_VIDEO_TYPE,
+ IMCB_IMC_TEXT_TYPE
+} imcb_imc_ebi_filter_type_enum,
+ imcb_imc_bearer_filter_type_enum;
+
+//IMS P-CSCF Enum
+typedef enum {
+ IMCB_IMC_PCSCF_P_LIST_NONE = 0,
+ IMCB_IMC_PCSCF_P_LIST_DHCP = 1,
+ IMCB_IMC_PCSCF_P_LIST_PCO = 2,
+ IMCB_IMC_PCSCF_P_LIST_SIM = 3,
+ IMCB_IMC_PCSCF_P_LIST_MO = 4,
+ IMCB_IMC_PCSCF_P_LIST_MANUAL = 5,
+ IMCB_IMC_PCSCF_P_LIST_END
+} imcb_imc_pcscf_priority_list_enum; // copy from imcb_imcb_struct.h, imcb_pcscf_type_enum
+
+typedef enum {
+ IMCB_IMC_USE_DEDICATED_BEAERER = 0,
+ IMCB_IMC_USE_SIGNALLING_BEARER = 1,
+ IMCB_IMC_FORCE_SIGNALLING_BEARER = 2
+} imcb_imc_voice_bearer_ctrl_enum;
+
+//IMS Registration Enum
+typedef enum {
+ IMC_REG_STATE_UNREGISTERED = 0,
+ IMC_REG_STATE_REGISTERING,
+ IMC_REG_STATE_REGISTERED,
+ IMC_REG_STATE_UNREGISTERING
+} imc_reg_state_enum;
+
+typedef enum {
+ IMC_CAUSE_NORMAL = 0,
+ IMC_CAUSE_INTERNAL_ERROR = 1,
+ IMC_CAUSE_STACK_ERROR = 2,
+ IMC_CAUSE_TIMER_ERROR = 3,
+ IMC_CAUSE_TRY_NEXT_PCSCF = 4,
+ IMC_CAUSE_PCSCF_ALL_FAILED = 5,
+ IMC_CAUSE_AUTH_ERROR = 6,
+ IMC_CAUSE_RESET = 7,
+ IMC_CAUSE_ASSURI_CHANGED = 8,
+ IMC_CAUSE_NETWORK_INITIATED = 10,
+ IMC_CAUSE_CHANNEL_BIND = 11,
+ IMC_CAUSE_OOS = 12,
+ IMC_CAUSE_SIP_ERROR = 13,
+ IMC_CAUSE_PARAMETER_ERROR = 14,
+ IMC_CAUSE_NOT_BIND = 15,
+ IMC_CAUSE_NOT_AUTO_RE_REG = 16,
+ IMC_CAUSE_RETRY_AFTER = 17,
+ IMC_CAUSE_IMS_PDN_FATAL_FAIL = 18,
+ IMC_CAUSE_MD_LOWER_LAYER_ERR = 19,
+ IMC_CAUSE_C2K_FAIL = 20,
+ IMC_CAUSE_RETRY_BY_RFC5626 = 21,
+ IMC_CAUSE_REL_EMC_PDN_AFR_Timer_Expr = 22,
+ IMC_CAUSE_IMS_PDN_DEACT_DETACH_REATTACH = 23,
+ IMC_CAUSE_Teardown_for_State_Unsync = 24,
+ IMC_CAUSE_IMS_SERVICE_NR_RECOVER = 25,
+ IMC_CAUSE_NOT_IMS_RETRY = 26,
+ IMC_CAUSE_NOT_AUTO_RE_REG_UNTIL_RAT_CHANGE = 28,
+ IMC_CAUSE_IMS_PDN_INFINITE_SUGGEST_TIME = 29,
+ IMC_CAUSE_INIT_REGISTER_SENT = 30,
+ IMC_CAUSE_UNKNOWN = 99,
+ IMC_CAUSE_MAX = IMC_CAUSE_UNKNOWN,
+} imcb_imc_reg_cause_enum;
+
+typedef enum {
+ IMCB_IMC_EM_REG_SCHEME_NONE = 0,
+ IMCB_IMC_EM_REG_SCHEME_WITH_EM_REG = 1,
+ IMCB_IMC_EM_REG_SCHEME_WITHOUT_EM_REG = 2,
+ IMCB_IMC_EM_REG_SCHEME_BY_NORMAL_IMS_PDN = 3
+} imcb_imc_em_reg_scheme_enum;
+
+typedef enum {
+ IMCB_IMC_DEREG_REASON_NORMAL = 0,
+ IMCB_IMC_DEREG_REASON_23G_WITHOUT_IMS_DEREG = 1,
+ IMCB_IMC_DEREG_REASON_23G_WITH_IMS_DEREG = 2,
+ IMCB_IMC_DEREG_REASON_WITHOUT_IMS_DEREG = 3
+} imcb_imc_dereg_reason_enum;
+
+typedef enum {
+ IMCB_IMC_DEREG_CS_NONE,
+ IMCB_IMC_DEREG_CS_PWR_OFF,
+ IMCB_IMC_DEREG_CS_RF_OFF,
+ IMCB_IMC_DEREG_CS_RUNTIME
+} imcb_imc_dereg_cause_enum;
+
+//IMS Call Enum
+typedef enum {
+ IMCB_IMC_ECCTRL_STATE_CHANGE_HELD = 131,
+ IMCB_IMC_ECCTRL_STATE_CHANGE_ACTIVE = 132
+} imcb_imc_ecctrl_enum;
+
+typedef enum {
+ IMCB_IMC_CALL_CAUSE_NORMAL = 0,
+ IMCB_IMC_CALL_CAUSE_ABNORMAL,
+ IMCB_IMC_CALL_CAUSE_NONUMBER,
+ IMCB_IMC_CALL_CAUSE_UNREGISTERED,
+ IMCB_IMC_CALL_CAUSE_DISCONNECT,
+ IMCB_IMC_CALL_CAUSE_BECANCEL,
+ IMCB_IMC_CALL_CAUSE_BEREJECT,
+ IMCB_IMC_CALL_CAUSE_BEREJECT_380,
+ IMCB_IMC_CALL_CAUSE_BEREJECT_380_EMERGENCY_TO_CS,
+ IMCB_IMC_CALL_CAUSE_BEREJECT_380_EMERGENCY_REREG,
+ IMCB_IMC_CALL_CAUSE_BEREJECT_380_EMERGENCY_TO_NORMAL_CS,
+ IMCB_IMC_CALL_CAUSE_BEREJECT_480,
+ IMCB_IMC_CALL_CAUSE_BEREJECT_503,
+ IMCB_IMC_CALL_CAUSE_TX_TIMEOUT,
+ IMCB_IMC_CALL_CAUSE_NO_PRIVACY,
+ IMCB_IMC_CALL_CAUSE_PRECONDFAIL,
+ IMCB_IMC_CALL_CAUSE_SECONDCALL,
+ IMCB_IMC_CALL_CAUSE_NOMEDIACONTENT,
+ IMCB_IMC_CALL_CAUSE_INVALIDMSG,
+ IMCB_IMC_CALL_CAUSE_INVALIDCMD,
+ IMCB_IMC_CALL_CAUSE_INVALIDIDX,
+ IMCB_IMC_CALL_CAUSE_SRVCC,
+ IMCB_IMC_CALL_CAUSE_FACILITY_REJECTED,
+ IMCB_IMC_CALL_CAUSE_DEDICATED_BEARER_TIMEOUT,
+ IMCB_IMC_CALL_CAUSE_RETRY_CS,
+ IMCB_IMC_CALL_CAUSE_NO_RETRY,
+ IMCB_IMC_CALL_CAUSE_RETRY_IMS_CS,
+ IMCB_IMC_CALL_CAUSE_ABORTED,
+ IMCB_IMC_CALL_CAUSE_TIMER_B_EXPIRY,
+ IMCB_IMC_CALL_CAUSE_ECT_TIMEOUT,
+ IMCB_IMC_CALL_CAUSE_TIMER_VZW_EXPIRY,
+ IMCB_IMC_CALL_CAUSE_AC_BARRED,
+ IMCB_IMC_CALL_CAUSE_NW_REJ_CONN,
+ IMCB_IMC_CALL_CAUSE_BEREJECT_503_OUTAGE_TEXT,
+ IMCB_IMC_CALL_CAUSE_CHANGE_PCSCF,
+ IMCB_IMC_CALL_CAUSE_RTT_EMC_FAIL,
+ IMCB_IMC_CALL_CAUSE_BEREJECT_380_EMERGENCY_NORMAL_CS_TO_IMS,
+ IMCB_IMC_CALL_CAUSE_BEREJECT_380_EMERGENCY_ACTION_ELEM_UNKNOWN,
+ IMCB_IMC_CALL_CAUSE_RETRY_IMS_VIDEO_TO_VOICE,
+ IMCB_IMC_CALL_CAUSE_NO_RETRY_BAR_IMS,
+ IMCB_IMC_CALL_CAUSE_BEREJECT_380_FLIGHTMODE_CS,
+ IMCB_IMC_CALL_CAUSE_UA_MAX,
+ IMCB_IMC_CALL_CAUSE_AVAIABLE_OF_CALLS,
+ IMCB_IMC_CALL_CAUSE_EMERG_REG_TIMEOUT, /* AT&T <CDR-LTE-2424>, CS domain search after emerg-reg-timer expires */
+ /* WFC */
+ IMCB_IMC_CALL_CAUSE_RAT_MISMATCH,
+ IMCB_IMC_CALL_CAUSE_RECOVERY_FOR_IMS_REG,
+ IMCB_IMC_CALL_CAUSE_MAX,
+} imcb_imc_call_stop_cause_enum;
+
+typedef enum {
+ IMCB_IMC_CALL_MODE_AUDIO = 0, // 0, normal voice call
+ IMCB_IMC_CALL_MODE_VIDEO_AUDIO, // 1, normal video call
+ IMCB_IMC_CALL_MODE_VIDEO_ONLY, // 2, only video call
+
+ /* specifical call */
+ IMCB_IMC_CALL_MODE_AUDIO_CONF = 11, // 11, audio conference call
+ IMCB_IMC_CALL_MODE_VIDEO_CONF, // 12, video conference call
+
+ IMCB_IMC_CALL_MODE_AUDIO_CONF_PARTS = 21, // 21, audio conference call participant
+ IMCB_IMC_CALL_MODE_VIDEO_CONF_PARTS, // 22, video conference call participant
+
+ /* emergency */
+ IMCB_IMC_CALL_MODE_EMERGENCY = 81, // 81, emergency call
+ IMCB_IMC_CALL_MODE_EMER_POLICE, // 82, police emergency call
+ IMCB_IMC_CALL_MODE_EMER_FIRE, // 83, fire emergency call
+ IMCB_IMC_CALL_MODE_EMER_GAS,
+ IMCB_IMC_CALL_MODE_EMER_AMBULANCE,
+ IMCB_IMC_CALL_MODE_EMER_ANIMAL,
+ IMCB_IMC_CALL_MODE_EMER_MARINE,
+ IMCB_IMC_CALL_MODE_EMER_MOUNTAIN,
+ IMCB_IMC_CALL_MODE_EMER_PHYSICIAN,
+ IMCB_IMC_CALL_MODE_EMER_POISON,
+ IMCB_IMC_CALL_MODE_EMER_TRAFFIC,
+ IMCB_IMC_CALL_MODE_EMER_COUNTRY_SPECIFIC,
+ IMCB_IMC_CALL_MODE_EMER_MANUAL_ECALL, // manual initiated ecall
+ IMCB_IMC_CALL_MODE_EMER_AUTO_ECALL, //auto initiated ecall
+ IMCB_IMC_CALL_MODE_EMER_UNRECOGNIZED = 99,
+
+ /*Korea TTA special emergency service*/
+ IMCB_IMC_CALL_MODE_EMER_KR_INTELLIGENCE = 201,
+ IMCB_IMC_CALL_MODE_EMER_KR_SPIES,
+ IMCB_IMC_CALL_MODE_EMER_KR_SCHOOL_VIOLENCE,
+ IMCB_IMC_CALL_MODE_EMER_KR_CYBERTERRORISM,
+ IMCB_IMC_CALL_MODE_EMER_KR_SMUGGLING,
+ IMCB_IMC_CALL_MODE_MAX,
+} imcb_imc_call_mode_enum;
+
+typedef enum {
+ IMCB_IMC_CALL_PROG_ECPI_0 = 0,
+ IMCB_IMC_CALL_PROG_ECPI_2 = 2,
+ IMCB_IMC_CALL_PROG_ECPI_6 = 6,
+ IMCB_IMC_CALL_PROG_ECPI_7 = 7,
+ IMCB_IMC_CALL_PROG_ECPI_131 = 131,
+ IMCB_IMC_CALL_PROG_ECPI_132 = 132,
+ IMCB_IMC_CALL_PROG_ECPI_133 = 133,
+ IMCB_IMC_CALL_PROG_ECPI_135 = 135,
+ IMCB_IMC_CALL_PROG_ECPI_136 = 136,
+ IMCB_IMC_CALL_PROG_ECPI_MAX,
+} imcb_imc_call_prog_ecpi_enum;
+
+typedef enum {
+ IMCB_IMC_CALL_HOLD_BY_LOCAL = 0,
+ IMCB_IMC_CALL_HOLD_BY_REMOTE = 1,
+ IMCB_IMC_CALL_ECT_HOLD_BY_REMOTE = 2,
+ IMCB_IMC_CALL_HOLD_BY_MAX,
+} imcb_imc_call_hold_by_enum;
+
+typedef enum {
+ IMCB_IMC_CALL_MDEIA_OFF = 0,
+ IMCB_IMC_CALL_MEDIA_ON,
+ IMCB_IMC_CALL_MEDIA_MAX,
+} imcb_imc_media_enum;
+
+typedef enum {
+ IMCB_IMC_CALL_RESULT_OK = 0,
+ IMCB_IMC_CALL_RESULT_FAILED,
+ IMCB_IMC_CALL_RESULT_MAX,
+} imcb_imc_call_stop_result_enum;
+
+typedef enum {
+ IMCB_IMC_MD_LOWER_LAYER_ERR_AC_BARRED = 0,
+ IMCB_IMC_MD_LOWER_LAYER_ERR_NW_REJ_CONN = 1,
+ IMCB_IMC_MD_LOWER_LAYER_ERR_T3346_START = 2,
+ IMCB_IMC_MD_LOWER_LAYER_ERR_T3346_STOP = 3,
+ IMCB_IMC_MD_LOWER_LAYER_ERR_T3346_EXPIRY = 4,
+ IMCB_IMC_MD_LOWER_LAYER_ERR_CONN_FAIL = 5,
+ IMCB_IMC_MD_LOWER_LAYER_ERR_T3525_START = 6,
+ IMCB_IMC_MD_LOWER_LAYER_ERR_T3540_START = 7,
+
+ IMCB_IMC_MD_LOWER_LAYER_NON_ESRFAIL_ERR =100,
+ IMCB_IMC_MD_LOWER_LAYER_NON_ESRFAIL_ERR_TAU_FAIL = 101,
+ IMCB_IMC_MD_LOWER_LAYER_NON_ESRFAIL_ERR_EPSFB_FAIL = 102,
+ IMCB_IMC_MD_LOWER_LAYER_ERR_MAX,
+} imcb_imc_md_lower_layer_err_enum;
+
+typedef enum
+{
+ IMCB_IMC_MD_EPSFB_TYPE_HANDOVER = 0,
+ IMCB_IMC_MD_EPSFB_TYPE_REDIRECTION =1
+}imcb_imc_md_epsfb_type_enum;
+
+typedef enum {
+ IMCB_IMC_OPERATION_UNKNOWN = 0,
+ IMCB_IMC_OPERATION_HOLD = 1,
+ IMCB_IMC_OPERATION_UNHOLD = 2,
+ IMCB_IMC_OPERATION_HOLD_N_UNHOLD = 3,
+ IMCB_IMC_OPERATION_HOLD_N_ACCEPT = 4,
+ IMCB_IMC_OPERATION_REMOTE_HOLD = 5,
+ IMCB_IMC_OPERATION_REMOTE_UNHOLD = 6,
+ IMCB_IMC_OPERATION_REL_ALL = 11,
+ IMCB_IMC_OPERATION_ATH_REL_ALL = 12,
+ IMCB_IMC_OPERATION_REL_BG = 13,
+ IMCB_IMC_OPERATION_REL_WAIT = 14,
+ IMCB_IMC_OPERATION_REL_ACTIVE_N_RESUME = 15,
+ IMCB_IMC_OPERATION_CREATE_3WAY_CONF = 16,
+ IMCB_IMC_OPERATION_ADD_OTHER_TO_CONF = 17,
+ IMCB_IMC_OPERATION_CREATE_CONF_BRIDGE = 18,
+ IMCB_IMC_OPERATION_REMOVE_OTHER_FROM_CONF = 19,
+ IMCB_IMC_OPERATION_JOIN_OTHER_TO_CONF = 20,
+ IMCB_IMC_OPERATION_REL_ACTIVE_N_ACCEPT = 21,
+ IMCB_IMC_OPERATION_ACCEPT = 22,
+ IMCB_IMC_OPERATION_ECCTRL = 23,
+ IMCB_IMC_OPERATION_CONF_W_RESOURCE_LIST = 24,
+ IMCB_IMC_OPERATION_ECT = 25,
+ IMCB_IMC_OPERATION_REL_MAX,
+} imcb_imc_ss_operation_enum;
+
+typedef enum {
+ IMCB_IMC_NOTIFY_CALL_WAITING = 0,
+ IMCB_IMC_NOTIFY_CALL_BARRING = 1,
+ IMCB_IMC_NOTIFY_CALL_FORWARDING = 2,
+ IMCB_IMC_NOTIFY_MWI = 3,
+ IMCB_IMC_NOTIFY_CONFERENCE = 4,
+ IMCB_IMC_NOTIFY_MT_CALL_FORWARDING = 5,
+ IMCB_IMC_NOTIFY_DIALOG = 6,
+ IMCB_IMC_NOTIFY_MAX,
+} imcb_imc_ss_notify_service_enum;
+
+typedef enum {
+ IMCB_IMC_SUB_EVENT_UNKNOWN = 0,
+ IMCB_IMC_SUB_EVENT_CONF = 1,
+ IMCB_IMC_SUB_EVENT_MAX,
+} imcb_imc_ss_sub_event_enum;
+
+typedef enum {
+ IMCB_IMC_URI_SCHEME_TYPE_NONE = 0,
+ IMCB_IMC_URI_SCHEME_TYPE_SIP,
+ IMCB_IMC_URI_SCHEME_TYPE_TEL,
+ IMCB_IMC_URI_SCHEME_TYPE_URN,
+ IMCB_IMC_URI_SCHEME_TYPE_MAX
+} imcb_imc_uri_scheme_type_enum;
+
+//IMS SRVCC Enum
+typedef enum {
+ IMCB_IMC_SRVCC_RESULT_STARTED = 0,
+ IMCB_IMC_SRVCC_RESULT_SUCCESS,
+ IMCB_IMC_SRVCC_RESULT_FAILED,
+ IMCB_IMC_SRVCC_RESULT_CANCELLED,
+ IMCB_IMC_SRVCC_RESULT_UNKNOWN,
+ IMCB_IMC_SRVCC_RESULT_MAX
+} imcb_imc_srvcc_status_enum;
+
+typedef enum {
+ IMCB_IMC_SRVCC_CALL_DIRECTION_MO = 0,
+ IMCB_IMC_SRVCC_CALL_DIRECTION_MT,
+ IMCB_IMC_SRVCC_CALL_DIRECTION_MAX,
+} imcb_imc_srvcc_call_direction_enum;
+
+typedef enum {
+ IMCB_IMC_SRVCC_CALL_STATE_EARLY = 0,
+ IMCB_IMC_SRVCC_CALL_STATE_EARLY_WITH_MEDIA,
+ IMCB_IMC_SRVCC_CALL_STATE_ACTIVE,
+ IMCB_IMC_SRVCC_CALL_STATE_ON_HOLD,
+ IMCB_IMC_SRVCC_CALL_STATE_PRE_ALERTING,
+ IMCB_IMC_SRVCC_CALL_STATE_PRE_ALERTING_WITH_MEDIA,
+ IMCB_IMC_SRVCC_CALL_STATE_ACTIVE_RETRY_CC_CONNECT,
+ IMCB_IMC_SRVCC_CALL_STATE_MAX
+} imcb_imc_srvcc_call_state_enum;
+
+typedef enum {
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_UNSPECIFIED = 0,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_POLICE = 0x1,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_AMBULANCE = 0x2,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_FIRE = 0x4,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_MARINE = 0x8,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_MOUNTAIN = 0x10,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_MANUALLY = 0x40,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_AUTO = 0x80,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_GAS = 0x100,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_ANIMAL = 0x200,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_PHYSICIAN = 0x400,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_POISON = 0x800,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_TRAFFIC = 0x1000,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_COUNTRY_SPECIFIC = 0x2000,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_UNRECOGNIZED = 0x8000,
+
+ /*Korea TTA special emergency Ctgy*/
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_KR_SPIES = 0x3,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_KR_INTELLIGENCE = 0x6,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_KR_INTELLIGENCE_01 = 0x7,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_KR_SMUGGLING = 0x9,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_KR_SCHOOL_VIOLENCE = 0x12,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_KR_CYBERTERRORISM = 0x13,
+ IMCB_IMC_SRVCC_CALL_ECC_CTGY_MAX = 0xFFFF
+} imcb_imc_srvcc_call_ecc_category_enum;
+
+/* Ref 3GPP 26.445 Table A.3 */
+/* Only for Primary mode */
+typedef enum {
+ IMCB_IMC_EVS_CODEC_BITRATE_5_9 = 0x0,
+ IMCB_IMC_EVS_CODEC_BITRATE_7_2,
+ IMCB_IMC_EVS_CODEC_BITRATE_8_0,
+ IMCB_IMC_EVS_CODEC_BITRATE_9_6,
+ IMCB_IMC_EVS_CODEC_BITRATE_13_2,
+ IMCB_IMC_EVS_CODEC_BITRATE_16_4,
+ IMCB_IMC_EVS_CODEC_BITRATE_24_4,
+ IMCB_IMC_EVS_CODEC_BITRATE_32_0,
+ IMCB_IMC_EVS_CODEC_BITRATE_48_0,
+ IMCB_IMC_EVS_CODEC_BITRATE_64_0,
+ IMCB_IMC_EVS_CODEC_BITRATE_96_0,
+ IMCB_IMC_EVS_CODEC_BITRATE_128_0 = 0xB,
+ IMCB_IMC_EVS_CODEC_BITRATE_MAX,
+ IMCB_IMC_EVS_CODEC_BITRATE_NONE = 0xF,
+} imcb_imc_evs_codec_bitrate_enum;
+
+typedef enum {
+ IMCB_IMC_EVS_BANDWIDTH_NB,
+ IMCB_IMC_EVS_BANDWIDTH_WB,
+ IMCB_IMC_EVS_BANDWIDTH_SWB,
+ IMCB_IMC_EVS_BANDWIDTH_FB,
+ IMCB_IMC_EVS_BANDWIDTH_MAX,
+ IMCB_IMC_EVS_BANDWIDTH_NONE = 0xF,
+} imcb_imc_evs_bandwidth_enum;
+
+//IMS USSI Enum
+typedef enum {
+ IMCB_IMC_USSD_URC_STATUS_DISABLED = 0,
+ IMCB_IMC_USSD_URC_STATUS_ENABLED = 1,
+} imcb_imc_ussd_urc_status_enum;
+
+typedef enum {
+ IMCB_IMC_380_XML_TYPE_NOT_SET = 0,
+ IMCB_IMC_380_XML_TYPE_EMERGENCY,
+ IMCB_IMC_380_XML_TYPE_RESTORATION,
+ IMCB_IMC_380_XML_TYPE_UNKNOWN,
+ /*add here*/
+ IMCB_IMC_380_XML_TYPE_MAX,
+} imcb_imc_380_xml_type_enum;
+
+typedef enum {
+ IMCB_IMC_380_XML_ACTION_NOT_SET = 0,
+ IMCB_IMC_380_XML_ACTION_EMERGENCY_REGISTRATION,
+ IMCB_IMC_380_XML_ACTION_INITIAL_REGISTRATION,
+ IMCB_IMC_380_XML_ACTION_ANONYMOUS_EMERGECYCALL,
+ IMCB_IMC_380_XML_ACTION_UNKNOWN,
+ /*add here*/
+ IMCB_IMC_380_XML_ACTION_MAX,
+} imcb_imc_380_xml_action_enum;
+
+typedef enum {
+ IMCB_IMC_CALL_CAUSE_380_CONTACT_NOT_SET = 0,
+ IMCB_IMC_CALL_CAUSE_380_CONTACT_SOS_AND_CATEGORY_KNOWN,
+ IMCB_IMC_CALL_CAUSE_380_CONTACT_SOS_AND_CATEGORY_UNKNOWN,
+ IMCB_IMC_CALL_CAUSE_380_CONTACT_NOT_SOS,
+ IMCB_IMC_CALL_CAUSE_380_CONTACT_NO_CONTACT,
+ /*add here*/
+ IMCB_IMC_CALL_CAUSE_380_CONTACT_MAX,
+} imcb_imc_call_cause_380_contact_enum;
+
+typedef enum {
+ IMCB_IMC_CALL_CAUSE_380_XML_NOT_SET = 0,
+ IMCB_IMC_CALL_CAUSE_380_XML_ACTION_EMERGECY_REG,
+ IMCB_IMC_CALL_CAUSE_380_XML_ACTION_UNKNOWN_CATEGORY_MAPPED,
+ IMCB_IMC_CALL_CAUSE_380_XML_ACTION_UNKNOWN_CATEGORY_NOT_MAPPED,
+ IMCB_IMC_CALL_CAUSE_380_XML_ACTION_UNKNOWN_NO_CONTACT,
+ /*add here*/
+ IMCB_IMC_CALL_CAUSE_380_XML_MAX,
+} imcb_imc_call_cause_380_xml_enum;
+
+/*****imc_general_enum.h START*****/
+typedef enum {
+ IMS_SIM_TYPE_SIM_USIM_INVALID = 0,
+ IMS_SIM_TYPE_SIM_USIM_VALID,
+ IMS_SIM_TYPE_ISIM_UNKNOWN,
+ IMS_SIM_TYPE_ISIM_INVALID,
+ IMS_SIM_TYPE_ISIM_VALID,
+ IMS_SIM_TYPE_SIM_USIM_RELOAD_DONE,
+ IMS_SIM_TYPE_ISIM_RELOAD_DONE
+} ims_sim_type_enum;
+
+typedef enum {
+ IMS_SIM_USIM_IMSI = 0,
+ IMS_SIM_USIM_PSISMSC,
+ IMS_SIM_USIM_SMSP,
+ IMS_SIM_USIM_MSISDN,
+ IMS_SIM_USIM_FROMPREFERRED,
+ IMS_SIM_USIM_GID1,
+ IMS_SIM_USIM_GID2
+} ims_sim_usim_data_enum;
+
+typedef enum {
+ IMS_ISIM_IMPI = 0,
+ IMS_ISIM_IMPU,
+ IMS_ISIM_DOMAIN_NAME,
+ IMS_ISIM_PSISMSC,
+ IMS_ISIM_IST,
+ IMS_ISIM_FROMPREFERRED
+} ims_isim_data_enum;
+
+/* WFC */
+typedef enum {
+ IMC_ECMP_NONE=0,
+ IMC_ECMP_UNSPEC,
+ IMC_ECMP_3GPP,
+ IMC_ECMP_WLAN,
+ IMC_ECMP_EHRPD,
+ IMC_ECMP_MAX,
+} imc_ecmp_enum;
+
+/* initial configuration */
+typedef enum {
+ IMC_V4_ONLY = 0,
+ IMC_V6_ONLY,
+ IMC_V4_PREFER,
+ IMC_V6_PREFER
+} imc_v4v6_preference_enum;
+
+typedef enum {
+ IMC_NOT_FOR_IM_CN_SIGNALING = 0,
+ IMC_FOR_IM_CN_SIGNALING
+} imc_im_cn_signaling_flag_enum;
+
+typedef enum {
+ IMC_PCSCF_ADDR_DISCOVERY_VIA_NONE = 0,
+ IMC_PCSCF_ADDR_DISCOVERY_VIA_NAS_SIGNALLING = 1,
+ IMC_PCSCF_ADDR_DISCOVERY_VIA_DHCP = 2
+} imc_pcscf_discovery_enum;
+
+typedef enum {
+ IMC_RLM_DISABLED = 0,
+ IMC_RLM_ENABLED
+} imc_rlm_enum;
+
+typedef enum {
+ IMC_CC_RESULT_NONE,
+ IMC_CC_RESULT_SUCCESS,
+ IMC_CC_RESULT_FAIL,
+ IMC_CC_RESULT_END
+} imc_cc_result_enum;
+
+typedef enum {
+ IMC_CC_CALL_MOD_NONE,
+ IMC_CC_CALL_MOD_NORAMAL,
+ IMC_CC_CALL_MOD_EMERGENCY,
+ IMC_CC_CALL_MOD_END
+} imc_cc_call_mode_enum;
+
+typedef enum {
+ IMC_CC_CAUSE_NONE,
+ IMC_CC_CAUSE_END
+} imc_cc_cause_enum;
+
+typedef enum {
+ IMC_ECPI_NONE,
+ IMC_ECPI_END
+} imc_ecpi_enum;
+
+//IMS Common Enum
+typedef enum {
+ IMCB_IMC_OPERATOR_DEFAULT = 0x00, //0
+ /* WWOP system */
+ IMCB_IMC_OPERATOR_CMCC = 0x01, // 1
+ IMCB_IMC_OPERATOR_CU = 0x02, // 2
+ IMCB_IMC_OPERATOR_ORANGE = 0x03, // 3
+ IMCB_IMC_OPERATOR_TMOEU = 0x05, //5
+ IMCB_IMC_OPERATOR_VDF = 0x06, //6
+ IMCB_IMC_OPERATOR_ATT = 0x07, //7
+ IMCB_IMC_OPERATOR_TMOUS = 0x08, //8
+ IMCB_IMC_OPERATOR_CT = 0x09, //9
+ IMCB_IMC_OPERATOR_TIER2 = 0x0A, //10
+ IMCB_IMC_OPERATOR_H3G = 0x0B, //11
+ IMCB_IMC_OPERATOR_VZW = 0x0C, //12
+ IMCB_IMC_OPERATOR_TELEFONICA = 0x0F, //15
+ IMCB_IMC_OPERATOR_EE = 0x10, //16
+ IMCB_IMC_OPERATOR_DCM = 0x11, //17
+ IMCB_IMC_OPERATOR_RJIL = 0x12, //18
+ IMCB_IMC_OPERATOR_TELSTRA = 0x13, //19
+ IMCB_IMC_OPERATOR_SPRINT = 0x14, //20
+ IMCB_IMC_OPERATOR_DISH = 0x15, //21
+ IMCB_IMC_OPERATOR_SOFTBANK = 0x32, //50
+ IMCB_IMC_OPERATOR_CSL = 0x64, //100
+ IMCB_IMC_OPERATOR_PCCW = 0x65, //101
+ IMCB_IMC_OPERATOR_SMT = 0x66, //102
+ IMCB_IMC_OPERATOR_SINGTEL = 0x67, //103
+ IMCB_IMC_OPERATOR_STARHUB = 0x68, //104
+ IMCB_IMC_OPERATOR_AMX = 0x69, //105
+ IMCB_IMC_OPERATOR_3HK = 0x6A, //106
+ IMCB_IMC_OPERATOR_SFR = 0x6B, //107
+ IMCB_IMC_OPERATOR_TWN = 0x6C, //108
+ IMCB_IMC_OPERATOR_CHT = 0x6D, //109
+ IMCB_IMC_OPERATOR_FET = 0x6E, //110
+ IMCB_IMC_OPERATOR_TELCEL = 0x70, //112
+ IMCB_IMC_OPERATOR_BEELINE = 0x71, //113
+ IMCB_IMC_OPERATOR_KT = 0x72, //114
+ IMCB_IMC_OPERATOR_SKT = 0x73, //115
+ IMCB_IMC_OPERATOR_UPLUS = 0x74, //116
+ IMCB_IMC_OPERATOR_SMARTFREN = 0x75, //117
+ IMCB_IMC_OPERATOR_YTL = 0x76, //118
+ IMCB_IMC_OPERATOR_NATCOM = 0x77, //119
+ IMCB_IMC_OPERATOR_CLARO = 0x78, //120
+ IMCB_IMC_OPERATOR_BELL = 0x79, //121
+ IMCB_IMC_OPERATOR_AIS = 0x7A, //122
+ IMCB_IMC_OPERATOR_CMCC_2 = 0x7B, //123
+ IMCB_IMC_OPERATOR_APTG = 0x7C, //124
+ IMCB_IMC_OPERATOR_DTAC = 0x7D, //125
+ IMCB_IMC_OPERATOR_AVEA = 0x7E, //126
+ IMCB_IMC_OPERATOR_MEGAFONE = 0x7F, //127
+ IMCB_IMC_OPERATOR_DNA = 0x80, //128
+ IMCB_IMC_OPERATOR_KDDI = 0x81, //129
+ IMCB_IMC_OPERATOR_TIM = 0x82, //130
+ IMCB_IMC_OPERATOR_TRUEMOVE = 0x83, //131
+ IMCB_IMC_OPERATOR_MOVISTAR = 0x84, //132
+ IMCB_IMC_OPERATOR_DU = 0x85, //133
+ IMCB_IMC_OPERATOR_ELISA = 0x86, //134
+ IMCB_IMC_OPERATOR_MTS = 0x87, //135
+ IMCB_IMC_OPERATOR_ENTEL = 0x88, //136
+ IMCB_IMC_OPERATOR_TELE2 = 0x89, //137
+ IMCB_IMC_OPERATOR_CRICKET = 0x91, //145
+ IMCB_IMC_OPERATOR_M1 = 0x97, //151
+ IMCB_IMC_OPERATOR_FIRSTNET = 0xC4, //196
+ IMCB_IMC_OPERATOR_TPG = 0xDD, //221
+
+ /* For Any IODT Activities */
+ IMCB_IMC_OPERATOR_ERICSSON_IMS_IWLAN = 0x03E9, //1001
+ IMCB_IMC_OPERATOR_NOKIA = 0x03EA, //1002
+ IMCB_IMC_OPERATOR_MTK_HQLAB_ERICSSON = 0x03EB, //1003
+ IMCB_IMC_OPERATOR_HUAWEI_IMS = 0x03EC, // 1004
+ /* VoLTE internal */
+ IMCB_IMC_OPERATOR_8475 = 0x4000, //16384
+ IMCB_IMC_OPERATOR_ERICSSON = 0x4001, //16385
+ IMCB_IMC_OPERATOR_CMW500 = 0x4002, //16386
+ IMCB_IMC_OPERATOR_PCT = 0x4003, //16387
+ /* Lab testing */
+ IMCB_IMC_OPERATOR_NSN = 0x5000, //20480
+
+ /* Free Test */
+ IMCB_IMC_OPERATOR_FREE_TEST = 0xFEE0, //no charge for testing
+} imcb_imc_operator_id_enum;
+
+/*****imc_general_enum.h END*****/
+
+/*****imc_general_struct.h START*****/
+
+/* in modem, sim_id = sim_idx */
+/* please ref modem/general/sim_public_enum.h */
+
+typedef struct imc_em_cfg_struct {
+ imcf_bool dbg_log;
+ imcf_bool log_to_msg;
+ imcf_bool dbg_assert;
+
+} imc_em_cfg_struct;
+
+typedef struct {
+ imc_rat_type_enum rat_type;
+ imc_rat_type_enum sub_rat_type;
+ imcf_uint8 pad[2];
+
+ imcf_uint8 plmn[IMC_MAX_PLMN_LEN]; /* in string format */
+ imcf_uint8 lac [IMC_MAX_LAC_LEN]; /* in string format, lac or tac */
+ imcf_uint8 ci [IMC_MAX_CI_LEN]; /* in string format */
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN]; /* ignore 3gpp or non-3gpp */
+ imcf_uint8 ssid[IMC_MAX_SSID_LEN];
+
+ imcf_uint8 is_ems_support;
+ imcf_uint8 pad2[3];
+
+ /* C2K */
+ imcf_uint8 sid[IMC_MAX_SID_LEN]; /* in string format */
+ imcf_uint8 nid[IMC_MAX_NID_LEN]; /* in string format */
+ imcf_uint8 pzid[IMC_MAX_PZID_LEN]; /* in string format */
+ imcf_uint8 base_id[IMC_MAX_BASE_ID_LEN]; /* in string format */
+
+ imcf_uint8 sector_id[IMC_MAX_SECTOR_ID_LEN]; /* in string format */
+ imcf_uint8 subnet_length[IMC_MAX_SUBNET_LENGTH_LEN]; /* in string format */
+ imcf_uint8 carrier_id[IMC_MAX_CARRIER_ID_LEN]; /* in string format */
+} imc_rat_cell_info_struct;
+/*****imc_general_struct.h END*****/
+
+typedef enum {
+ /* UA TLV setting */
+ /* ------------------------------------------------ */
+ /* System */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_SYSTEM_START_CODE = 0,
+ IMCB_IMC_TLV_SYSTEM_OPERATOR_ID = IMCB_IMC_TLV_SYSTEM_START_CODE + 1, ///< DATA TYPE INT
+ IMCB_IMC_TLV_SYSTEM_GENERAL_SETTING = IMCB_IMC_TLV_SYSTEM_START_CODE + 2,
+
+ /* ------------------------------------------------ */
+ /* Network Information */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE = 1000,
+ IMCB_IMC_TLV_NETWORK_INFORMATION_LOCAL_ADDRESS = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 1, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_NETWORK_INFORMATION_LOCAL_PORT = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 2, ///< DATA TYPE INT
+ IMCB_IMC_TLV_NETWORK_INFORMATION_LOCAL_PROTOCOL_TYPE = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 3, ///< UDP: 0, TCP: 1
+ IMCB_IMC_TLV_NETWORK_INFORMATION_LOCAL_PROTOCOL_VERSION = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 4, ///< IPV4: 1, IPV6: 2
+ IMCB_IMC_TLV_NETWORK_INFORMATION_LOCAL_IPSEC_PORT_START = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 5,
+ IMCB_IMC_TLV_NETWORK_INFORMATION_LOCAL_IPSEC_PORT_RANGE = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 6,
+ IMCB_IMC_TLV_NETWORK_INFORMATION_LOCAL_RTP_RTCP_PORT_START = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 7,
+ IMCB_IMC_TLV_NETWORK_INFORMATION_LOCAL_RTP_RTCP_PORT_RANGE = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 8,
+ IMCB_IMC_TLV_NETWORK_INFORMATION_IPSEC = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 9, ///< DISABLE: 0, ENABLE: 1
+ IMCB_IMC_TLV_NETWORK_INFORMATION_CELL_ID = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 10, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_NETWORK_INFORMATION_RTP_DSCP = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 11, /// FOR BUILD PASS, NEED TO REMOVE
+ IMCB_IMC_TLV_NETWORK_INFORMATION_IF_NAME = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 12, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_NETWORK_INFORMATION_NETWORK_ID = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 13, ///< DATA TYPE IS INTEGER
+ IMCB_IMC_TLV_NETWORK_INFORMATION_SIP_DSCP = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 14, ///< DATA TYPE IS INTEGER
+ IMCB_IMC_TLV_NETWORK_INFORMATION_RTP_VOICE_DSCP = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 15, ///< DATA TYPE IS INTEGER
+ IMCB_IMC_TLV_NETWORK_INFORMATION_RTP_VIDEO_DSCP = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 16, ///< DATA TYPE IS INTEGER
+ IMCB_IMC_TLV_NETWORK_INFORMATION_SIP_SOC_PRIORITY = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 17, ///< DATA TYPE IS INTEGER
+ IMCB_IMC_TLV_NETWORK_INFORMATION_SIP_SOC_TCP_MSS = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 18, ///< DATA TYPE IS INTEGER
+ IMCB_IMC_TLV_NETWORK_INFORMATION_RTP_VOICE_SOC_PRIORITY = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 19, ///< DATA TYPE IS INTEGER
+ IMCB_IMC_TLV_NETWORK_INFORMATION_RTP_VIDEO_SOC_PRIORITY = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 20, ///< DATA TYPE IS INTEGER
+ IMCB_IMC_TLV_NETWORK_INFORMATION_LBS_LOCATION_INFO = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 21, ///< DATA TYPE IS INTEGER
+ IMCB_IMC_TLV_NETWORK_INFORMATION_SECURITY = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 22,
+ IMCB_IMC_TLV_NETWORK_INFORMATION_AUTHENTICATION = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 23,
+ IMCB_IMC_TLV_NETWORK_INFORMATION_PCSCF_PORT = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 24,
+ IMCB_IMC_TLV_NETWORK_INFORMATION_EMERGENCY_AID = IMCB_IMC_TLV_NETWORK_INFORMATION_START_CODE + 25,
+
+ /* ------------------------------------------------ */
+ /* Account Settings */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_ACCOUNT_SETTINGS_START_CODE = 2000,
+ IMCB_IMC_TLV_ACCOUNT_SETTINGS_PUBLIC_UID = IMCB_IMC_TLV_ACCOUNT_SETTINGS_START_CODE + 1, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_ACCOUNT_SETTINGS_PRIVATE_UID = IMCB_IMC_TLV_ACCOUNT_SETTINGS_START_CODE + 2, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_ACCOUNT_SETTINGS_HOME_URI = IMCB_IMC_TLV_ACCOUNT_SETTINGS_START_CODE + 3, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_ACCOUNT_SETTINGS_IMEI = IMCB_IMC_TLV_ACCOUNT_SETTINGS_START_CODE + 4, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_ACCOUNT_SETTINGS_CONFFACTORYURI = IMCB_IMC_TLV_ACCOUNT_SETTINGS_START_CODE + 5,
+ IMCB_IMC_TLV_ACCOUNT_SETTINGS_IMSI_MNC = IMCB_IMC_TLV_ACCOUNT_SETTINGS_START_CODE + 6,
+ IMCB_IMC_TLV_ACCOUNT_SETTINGS_IMSI_MCC = IMCB_IMC_TLV_ACCOUNT_SETTINGS_START_CODE + 7,
+ IMCB_IMC_TLV_ACCOUNT_SETTINGS_MSISDN = IMCB_IMC_TLV_ACCOUNT_SETTINGS_START_CODE + 8,
+
+ /* ------------------------------------------------ */
+ /* Server Settings */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_SERVER_SETTINGS_START_CODE = 3000,
+ IMCB_IMC_TLV_SERVER_SETTINGS_PCSCF_LIST = IMCB_IMC_TLV_SERVER_SETTINGS_START_CODE + 1, ///< DATA TYPE IS STRING
+
+ /* ------------------------------------------------ */
+ /* VoLTE Service Settings */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_SERVICE_START_CODE = 10000,
+
+ /* ------------------------------------------------ */
+ /* VoLTE Call Settings */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_CALL_START_CODE = 11000,
+ IMCB_IMC_TLV_CALL_SESSION_FLAG = IMCB_IMC_TLV_CALL_START_CODE + 1,
+ IMCB_IMC_TLV_CALL_SESSION_TIMER = IMCB_IMC_TLV_CALL_START_CODE + 2, ///< IN SECONDS
+ IMCB_IMC_TLV_CALL_SESSION_MINSE = IMCB_IMC_TLV_CALL_START_CODE + 3, ///< IN SECONDS
+ IMCB_IMC_TLV_CALL_PRIVACY = IMCB_IMC_TLV_CALL_START_CODE + 4,
+ IMCB_IMC_TLV_CALL_CAPABILITY = IMCB_IMC_TLV_CALL_START_CODE + 5, ///< DATA TYPE IS ::VOLTE_CALL_CAPABILITY_TYPE_E
+ IMCB_IMC_TLV_CALL_RTCP_INTERVAL = IMCB_IMC_TLV_CALL_START_CODE + 6, ///< IN MS
+ IMCB_IMC_TLV_CALL_EARLY_MEDIA = IMCB_IMC_TLV_CALL_START_CODE + 7, ///< IF THE INCOMING CALL SUPPORT EARLY MEDIA, SHALL WE REQUIRE IT TO PLAY?
+ IMCB_IMC_TLV_CALL_CODECORDER1 = IMCB_IMC_TLV_CALL_START_CODE + 8, ///< VOIP_CODEC_ENUM
+ IMCB_IMC_TLV_CALL_CODECORDER2 = IMCB_IMC_TLV_CALL_START_CODE + 9, ///< VOIP_CODEC_ENUM
+ IMCB_IMC_TLV_CALL_CODECORDER3 = IMCB_IMC_TLV_CALL_START_CODE + 10, ///< VOIP_CODEC_ENUM
+ IMCB_IMC_TLV_CALL_DEF_MAX_PTIME = IMCB_IMC_TLV_CALL_START_CODE + 11,
+ IMCB_IMC_TLV_CALL_DEF_PTIME = IMCB_IMC_TLV_CALL_START_CODE + 12,
+ IMCB_IMC_TLV_CALL_G711_PTIME = IMCB_IMC_TLV_CALL_START_CODE + 13,
+ IMCB_IMC_TLV_CALL_G726_PTIME = IMCB_IMC_TLV_CALL_START_CODE + 14,
+ IMCB_IMC_TLV_CALL_G729_PTIME = IMCB_IMC_TLV_CALL_START_CODE + 15,
+ IMCB_IMC_TLV_CALL_AMR_PT = IMCB_IMC_TLV_CALL_START_CODE + 16,
+ IMCB_IMC_TLV_CALL_AMR_WB_PT = IMCB_IMC_TLV_CALL_START_CODE + 17,
+ IMCB_IMC_TLV_CALL_H264_PT = IMCB_IMC_TLV_CALL_START_CODE + 18,
+ IMCB_IMC_TLV_CALL_G729_ANNEXB = IMCB_IMC_TLV_CALL_START_CODE + 19,
+ IMCB_IMC_TLV_CALL_TELEVT = IMCB_IMC_TLV_CALL_START_CODE + 20,
+ IMCB_IMC_TLV_CALL_TELEVT_PT = IMCB_IMC_TLV_CALL_START_CODE + 21,
+ IMCB_IMC_TLV_CALL_PRIORITY = IMCB_IMC_TLV_CALL_START_CODE + 22,
+ IMCB_IMC_TLV_CALL_USERAGENT = IMCB_IMC_TLV_CALL_START_CODE + 23, ///< VOLTE_MAX_ADDRESS_LENGTH
+ IMCB_IMC_TLV_CALL_REJCODE = IMCB_IMC_TLV_CALL_START_CODE + 24,
+ IMCB_IMC_TLV_CALL_NORESOURCECODE = IMCB_IMC_TLV_CALL_START_CODE + 25,
+ IMCB_IMC_TLV_CALL_REJMEDIACODE = IMCB_IMC_TLV_CALL_START_CODE + 26,
+ IMCB_IMC_TLV_CALL_REJBYUSERCODE = IMCB_IMC_TLV_CALL_START_CODE + 27,
+ IMCB_IMC_TLV_CALL_CONF_SUBTIMER = IMCB_IMC_TLV_CALL_START_CODE + 28,
+ IMCB_IMC_TLV_CALL_AMR_MODE_SET = IMCB_IMC_TLV_CALL_START_CODE + 29,
+ IMCB_IMC_TLV_CALL_AMR_WB_MODE_SET = IMCB_IMC_TLV_CALL_START_CODE + 30,
+ IMCB_IMC_TLV_CALL_AMR_FMT_VARIANT = IMCB_IMC_TLV_CALL_START_CODE + 31,
+ IMCB_IMC_TLV_CALL_PRECONDITION = IMCB_IMC_TLV_CALL_START_CODE + 32,
+ IMCB_IMC_TLV_CALL_MO_INVITE_TO_BWCNF_TIME = IMCB_IMC_TLV_CALL_START_CODE + 33,
+ IMCB_IMC_TLV_CALL_H264_PT2 = IMCB_IMC_TLV_CALL_START_CODE + 34,
+ IMCB_IMC_TLV_CALL_H265_PT = IMCB_IMC_TLV_CALL_START_CODE + 35,
+ IMCB_IMC_TLV_CALL_H265_PT2 = IMCB_IMC_TLV_CALL_START_CODE + 36,
+ IMCB_IMC_TLV_CALL_AMR_OCT_PT = IMCB_IMC_TLV_CALL_START_CODE + 37,
+ IMCB_IMC_TLV_CALL_AMR_OPEN_PT = IMCB_IMC_TLV_CALL_START_CODE + 38,
+ IMCB_IMC_TLV_CALL_AMR_WB_OCT_PT = IMCB_IMC_TLV_CALL_START_CODE + 39,
+ IMCB_IMC_TLV_CALL_TELEVT_WB_PT = IMCB_IMC_TLV_CALL_START_CODE + 40,
+
+ IMCB_IMC_TLV_CALL_CONTACT_WITH_USERNAME_INCALL = IMCB_IMC_TLV_CALL_START_CODE + 41,
+ IMCB_IMC_TLV_CALL_SENDRECV_BEFORE_PRCD = IMCB_IMC_TLV_CALL_START_CODE + 42,
+ IMCB_IMC_TLV_CALL_ALWAYS_USE_UPDATE_FOR_PRCD = IMCB_IMC_TLV_CALL_START_CODE + 43,
+ IMCB_IMC_TLV_CALL_MERGE_NEED_SWAP = IMCB_IMC_TLV_CALL_START_CODE + 44,
+ IMCB_IMC_TLV_CALL_ALWAYS_USE_SIP_URI_FOR_MO_CALL = IMCB_IMC_TLV_CALL_START_CODE + 45,
+ IMCB_IMC_TLV_CALL_SET_STRENGTH_MANDATORY = IMCB_IMC_TLV_CALL_START_CODE + 46,
+ IMCB_IMC_TLV_CALL_SEND_REFER_TO_PEER = IMCB_IMC_TLV_CALL_START_CODE + 47,
+ IMCB_IMC_TLV_CALL_ADD_3GPP_IMS_IN_ACCEPT = IMCB_IMC_TLV_CALL_START_CODE + 48,
+ IMCB_IMC_TLV_CALL_TERMINAL_BASED_CW = IMCB_IMC_TLV_CALL_START_CODE + 49,
+ IMCB_IMC_TLV_CALL_REFER_DIALOG_TO_SERVER = IMCB_IMC_TLV_CALL_START_CODE + 50,
+ IMCB_IMC_TLV_CALL_CHECK_REASON_PHRASE = IMCB_IMC_TLV_CALL_START_CODE + 51,
+ IMCB_IMC_TLV_CALL_MERGE_SEND_BYE = IMCB_IMC_TLV_CALL_START_CODE + 52,
+ IMCB_IMC_TLV_CALL_WHEN_STOP_TCALL = IMCB_IMC_TLV_CALL_START_CODE + 53,
+ IMCB_IMC_TLV_CALL_SET_RTCP_0 = IMCB_IMC_TLV_CALL_START_CODE + 54,
+ IMCB_IMC_TLV_CALL_CHECK_CONTACT_380 = IMCB_IMC_TLV_CALL_START_CODE + 55,
+ IMCB_IMC_TLV_CALL_CONF_PARTICIPANT_NOT_SUBSCRIBE = IMCB_IMC_TLV_CALL_START_CODE + 56,
+ IMCB_IMC_TLV_CALL_ADD_SDP_IN_180_FOR_NON_PRECOND = IMCB_IMC_TLV_CALL_START_CODE + 57,
+ IMCB_IMC_TLV_CALL_ADD_PRECONDITION_IN_HOLD_UNHOLD_SDP = IMCB_IMC_TLV_CALL_START_CODE + 58,
+ IMCB_IMC_TLV_CALL_USE_ORG_SDP_FOR_INVITE_WITHOUT_SDP = IMCB_IMC_TLV_CALL_START_CODE + 59,
+ IMCB_IMC_TLV_CALL_OIR_PRIVACY_TO_HEADER = IMCB_IMC_TLV_CALL_START_CODE + 60,
+ IMCB_IMC_TLV_CALL_REGISTER_CAP_WHENEVER = IMCB_IMC_TLV_CALL_START_CODE + 61,
+ IMCB_IMC_TLV_CALL_NO_AUTO_RETRY_FOR_MO_CALL = IMCB_IMC_TLV_CALL_START_CODE + 62,
+ IMCB_IMC_TLV_CALL_USE_EPS_PREFIX_IN_PHONE_CONTEXT = IMCB_IMC_TLV_CALL_START_CODE + 63,
+ IMCB_IMC_TLV_CALL_FOLLOW_NW_IMS_VOPS_SUPPORT = IMCB_IMC_TLV_CALL_START_CODE + 64,
+ IMCB_IMC_TLV_CALL_ATTEMPT_REG_WHEN_RECEIVE403 = IMCB_IMC_TLV_CALL_START_CODE + 65,
+ IMCB_IMC_TLV_CALL_WAITING_487_FOR_CANCEL_TIMER_TIMEOUT = IMCB_IMC_TLV_CALL_START_CODE + 66,
+ IMCB_IMC_TLV_CALL_BCSFB_FEATURE_ENABLE = IMCB_IMC_TLV_CALL_START_CODE + 67,
+ IMCB_IMC_TLV_CALL_SEND_183_WHEN_PRCD_NONE = IMCB_IMC_TLV_CALL_START_CODE + 68,
+ IMCB_IMC_TLV_CALL_CALL_ID_WITH_HOST_INCALL = IMCB_IMC_TLV_CALL_START_CODE + 69,
+ IMCB_IMC_TLV_CALL_ADD_RTCP_PORT_INTO_SDP = IMCB_IMC_TLV_CALL_START_CODE + 70,
+ IMCB_IMC_TLV_CALL_ECC_SESSION_TIMER_ENABLE = IMCB_IMC_TLV_CALL_START_CODE + 71,
+ IMCB_IMC_TLV_CALL_SUBSCRIBE_DIALOG_TO_SERVER = IMCB_IMC_TLV_CALL_START_CODE + 72,
+ IMCB_IMC_TLV_CALL_CHECK_CONFERENCE_SUBSCRIBE = IMCB_IMC_TLV_CALL_START_CODE + 73,
+ IMCB_IMC_TLV_CALL_CONFERENCE_SUBSCRIBE_TIMING = IMCB_IMC_TLV_CALL_START_CODE + 74,
+ IMCB_IMC_TLV_CALL_GENERAL_AMR_NB_WB = IMCB_IMC_TLV_CALL_START_CODE + 75,
+ IMCB_IMC_TLV_CALL_DISABLE_CONF_CALL_PRCD = IMCB_IMC_TLV_CALL_START_CODE + 76,
+ IMCB_IMC_TLV_CALL_WAIT_CANCEL_IN_SRVCC_END = IMCB_IMC_TLV_CALL_START_CODE + 77,
+ IMCB_IMC_TLV_CALL_REJECT_1W_IF_1A1H = IMCB_IMC_TLV_CALL_START_CODE + 78,
+ IMCB_IMC_TLV_CALL_NO_AUTO_RETRY_FOR_DCM_MO_CALL = IMCB_IMC_TLV_CALL_START_CODE + 79,
+ IMCB_IMC_TLV_CALL_JOIN_SEND_BYE = IMCB_IMC_TLV_CALL_START_CODE + 80,
+ IMCB_IMC_TLV_CALL_SET_ZERO_CELL_ID_IN_WIFI = IMCB_IMC_TLV_CALL_START_CODE + 81,
+ IMCB_IMC_TLV_CALL_REJECT_MTCALL_BY_VOPS = IMCB_IMC_TLV_CALL_START_CODE + 82,
+ IMCB_IMC_TLV_CALL_REJECT_MTCALL_WHEN_VILTE = IMCB_IMC_TLV_CALL_START_CODE + 83,
+ IMCB_IMC_TLV_CALL_NOT_ADD_SDP_IN_OPTIONS = IMCB_IMC_TLV_CALL_START_CODE + 84,
+ IMCB_IMC_TLV_CALL_PCSCF_ERROR_WHEN663 = IMCB_IMC_TLV_CALL_START_CODE + 85,
+ IMCB_IMC_TLV_CALL_REL_CONF_IF_NO_PARTICIPANT = IMCB_IMC_TLV_CALL_START_CODE + 86,
+ IMCB_IMC_TLV_CALL_ADD_NO_FORK = IMCB_IMC_TLV_CALL_START_CODE + 87,
+ IMCB_IMC_TLV_CALL_TMO_SPECIFIC_SDP = IMCB_IMC_TLV_CALL_START_CODE + 88,
+ IMCB_IMC_TLV_CALL_CALL_RINGING_TIMER_TIMEOUT = IMCB_IMC_TLV_CALL_START_CODE + 89,
+ IMCB_IMC_TLV_CALL_CALL_RINGBACK_TIMER_TIMEOUT = IMCB_IMC_TLV_CALL_START_CODE + 90,
+ IMCB_IMC_TLV_CALL_CALL_TCALL_TIMER_TIMEOUT = IMCB_IMC_TLV_CALL_START_CODE + 91,
+ IMCB_IMC_TLV_CALL_REJECT_CODE_IN23G = IMCB_IMC_TLV_CALL_START_CODE + 92,
+ IMCB_IMC_TLV_CALL_CALL_REFRESHCALL_TIMER_EXPIRE = IMCB_IMC_TLV_CALL_START_CODE + 93,
+ IMCB_IMC_TLV_CALL_CALL_CALLEND_TIMER_TIMEOUT = IMCB_IMC_TLV_CALL_START_CODE + 94,
+ IMCB_IMC_TLV_CALL_WAITING_MT_CNF_TIMER_TIMEOUT = IMCB_IMC_TLV_CALL_START_CODE + 95,
+ IMCB_IMC_TLV_CALL_CONF_SUB_TIMER_TIMEOUT = IMCB_IMC_TLV_CALL_START_CODE + 96,
+ IMCB_IMC_TLV_CALL_MO_INVITE_TO_BW_CNF_TIMER_TIMEOUT = IMCB_IMC_TLV_CALL_START_CODE + 97,
+ IMCB_IMC_TLV_CALL_SRVCC_CAPABILITY = IMCB_IMC_TLV_CALL_START_CODE + 98,
+ IMCB_IMC_TLV_CALL_EVS_SUPPORT = IMCB_IMC_TLV_CALL_START_CODE + 99,
+ IMCB_IMC_TLV_CALL_EVS_MODE_SWITCH = IMCB_IMC_TLV_CALL_START_CODE + 100,
+ IMCB_IMC_TLV_CALL_HF_ONLY = IMCB_IMC_TLV_CALL_START_CODE + 101,
+ IMCB_IMC_TLV_CALL_DTX = IMCB_IMC_TLV_CALL_START_CODE + 102,
+ IMCB_IMC_TLV_CALL_DTX_RECV = IMCB_IMC_TLV_CALL_START_CODE + 103,
+ IMCB_IMC_TLV_CALL_BR_BEGIN = IMCB_IMC_TLV_CALL_START_CODE + 104,
+ IMCB_IMC_TLV_CALL_BR_END = IMCB_IMC_TLV_CALL_START_CODE + 105,
+ IMCB_IMC_TLV_CALL_BR_SEND_BEGIN = IMCB_IMC_TLV_CALL_START_CODE + 106,
+ IMCB_IMC_TLV_CALL_BR_SEND_END = IMCB_IMC_TLV_CALL_START_CODE + 107,
+ IMCB_IMC_TLV_CALL_BR_RECV_BEGIN = IMCB_IMC_TLV_CALL_START_CODE + 108,
+ IMCB_IMC_TLV_CALL_BR_RECV_END = IMCB_IMC_TLV_CALL_START_CODE + 109,
+ IMCB_IMC_TLV_CALL_BW_BEGIN = IMCB_IMC_TLV_CALL_START_CODE + 110,
+ IMCB_IMC_TLV_CALL_BW_END = IMCB_IMC_TLV_CALL_START_CODE + 111,
+ IMCB_IMC_TLV_CALL_BW_SEND_BEGIN = IMCB_IMC_TLV_CALL_START_CODE + 112,
+ IMCB_IMC_TLV_CALL_BW_SEND_END = IMCB_IMC_TLV_CALL_START_CODE + 113,
+ IMCB_IMC_TLV_CALL_BW_RECV_BEGIN = IMCB_IMC_TLV_CALL_START_CODE + 114,
+ IMCB_IMC_TLV_CALL_BW_RECV_END = IMCB_IMC_TLV_CALL_START_CODE + 115,
+ IMCB_IMC_TLV_CALL_CH_SEND = IMCB_IMC_TLV_CALL_START_CODE + 116,
+ IMCB_IMC_TLV_CALL_CH_RECV = IMCB_IMC_TLV_CALL_START_CODE + 117,
+ IMCB_IMC_TLV_CALL_CH_AW_RECV = IMCB_IMC_TLV_CALL_START_CODE + 118,
+ IMCB_IMC_TLV_CALL_CMR = IMCB_IMC_TLV_CALL_START_CODE + 119,
+ IMCB_IMC_TLV_CALL_WHEN_STOP_EPSFB_TIMER = IMCB_IMC_TLV_CALL_START_CODE + 457,
+
+ /* ------------------------------------------------ */
+ /* VoLTE MWI Settings */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_MWI_START_CODE = IMCB_IMC_TLV_CALL_START_CODE + 900,
+
+ /* ------------------------------------------------ */
+ /* VoLTE SMS Settings */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_SMS_START_CODE = 12000,
+ IMCB_IMC_TLV_SMS_CAPABILITY = IMCB_IMC_TLV_SMS_START_CODE + 1, ///< DATA TYPE IS BOOLEAN (1 OR 0) */
+ IMCB_IMC_TLV_SMS_3GPP_SMS_PSI = IMCB_IMC_TLV_SMS_START_CODE + 2, ///< DATA TYPE IS STRING
+
+ IMCB_IMC_TLV_SMS_PSISMSC_FROM_USER = IMCB_IMC_TLV_SMS_START_CODE + 3,
+ IMCB_IMC_TLV_SMS_FORCE_PSI_SCHEME_TO_TEL = IMCB_IMC_TLV_SMS_START_CODE + 4,
+ IMCB_IMC_TLV_SMS_ADD_USER_PHONE = IMCB_IMC_TLV_SMS_START_CODE + 5,
+ IMCB_IMC_TLV_SMS_UPDATE_CALL_ID_WITH_HOST = IMCB_IMC_TLV_SMS_START_CODE + 6,
+ IMCB_IMC_TLV_SMS_ADD_NO_FORK_IN_SMS = IMCB_IMC_TLV_SMS_START_CODE + 7,
+ IMCB_IMC_TLV_SMS_NSN_SPECIFIC = IMCB_IMC_TLV_SMS_START_CODE + 8,
+ IMCB_IMC_TLV_SMS_MO_RETRY_AFTER_504 = IMCB_IMC_TLV_SMS_START_CODE + 9,
+ IMCB_IMC_TLV_SMS_SEND_TIMERF_EXPIRY = IMCB_IMC_TLV_SMS_START_CODE + 10,
+ IMCB_IMC_TLV_SMS_IMSI_REGED_DISABLE_SMS = IMCB_IMC_TLV_SMS_START_CODE + 11,
+
+ /* ------------------------------------------------ */
+ /* VoLTE XDM Settings */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_XDM_START_CODE = 13000,
+
+ /* ------------------------------------------------ */
+ /* VoLTE REG Settings */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_REG_START_CODE = 14000,
+ IMCB_IMC_TLV_REG_REGISTER_EXPIRY = IMCB_IMC_TLV_REG_START_CODE + 1, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_REG_EVENT_SUBSCRIBE = IMCB_IMC_TLV_REG_START_CODE + 2, ///< DISABLE: 0, ENABLE: 1
+ IMCB_IMC_TLV_REG_EMERGENCY = IMCB_IMC_TLV_REG_START_CODE + 3, ///< DISABLE: 0, ENABLE: 1
+ IMCB_IMC_TLV_REG_RETRY_FIRST_TIME = IMCB_IMC_TLV_REG_START_CODE + 4, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_REG_RETRY_BASE_TIME = IMCB_IMC_TLV_REG_START_CODE + 5, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_REG_RETRY_MAX_TIME = IMCB_IMC_TLV_REG_START_CODE + 6, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_REG_CONTACT_WITH_USERNAME = IMCB_IMC_TLV_REG_START_CODE + 7, ///< DISABLE: 0, ENABLE: 1
+ IMCB_IMC_TLV_REG_URI_WITH_PORT = IMCB_IMC_TLV_REG_START_CODE + 8, ///< DISABLE: 0, ENABLE: 1
+ IMCB_IMC_TLV_REG_IPSEC_ALGO_SET = IMCB_IMC_TLV_REG_START_CODE + 9, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_REG_ENABLE_HTTP_DIGEST = IMCB_IMC_TLV_REG_START_CODE + 10, ///< DISABLE: 0, ENABLE: 1
+ IMCB_IMC_TLV_REG_AUTH_NAME = IMCB_IMC_TLV_REG_START_CODE + 11, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_REG_AUTH_PASSWORD = IMCB_IMC_TLV_REG_START_CODE + 12, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_REG_SPECIFIC_IPSEC_ALGO = IMCB_IMC_TLV_REG_START_CODE + 13, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_REG_CONTACT_WITH_TRANSPORT = IMCB_IMC_TLV_REG_START_CODE + 14,
+ IMCB_IMC_TLV_REG_CONTACT_WITH_REGID = IMCB_IMC_TLV_REG_START_CODE + 15,
+ IMCB_IMC_TLV_REG_CONTACT_WITH_MOBILITY = IMCB_IMC_TLV_REG_START_CODE + 16,
+ IMCB_IMC_TLV_REG_CONTACT_WITH_EXPIRES = IMCB_IMC_TLV_REG_START_CODE + 17,
+ IMCB_IMC_TLV_REG_AUTHORIZATION_WITH_ALGO = IMCB_IMC_TLV_REG_START_CODE + 18,
+ IMCB_IMC_TLV_REG_REREG_IN_RAT_CHANGE = IMCB_IMC_TLV_REG_START_CODE + 19,
+ IMCB_IMC_TLV_REG_REREG_IN_OOS_END = IMCB_IMC_TLV_REG_START_CODE + 20,
+ IMCB_IMC_TLV_REG_DE_SUBSCRIBE = IMCB_IMC_TLV_REG_START_CODE + 21,
+ IMCB_IMC_TLV_REG_USE_SPECIFIC_IPSEC_ALGO = IMCB_IMC_TLV_REG_START_CODE + 22,
+ IMCB_IMC_TLV_REG_TRY_NEXT_PCSCF = IMCB_IMC_TLV_REG_START_CODE + 23,
+ IMCB_IMC_TLV_REG_DEREG_CLEAR_IPSEC = IMCB_IMC_TLV_REG_START_CODE + 24,
+ IMCB_IMC_TLV_REG_INITIAL_REG_WITHOUT_PANI = IMCB_IMC_TLV_REG_START_CODE + 25,
+ IMCB_IMC_TLV_REG_DEREG_RESET_TCP_CLIENT = IMCB_IMC_TLV_REG_START_CODE + 26,
+ IMCB_IMC_TLV_REG_TREG = IMCB_IMC_TLV_REG_START_CODE + 27,
+ IMCB_IMC_TLV_REG_REREG_23G4 = IMCB_IMC_TLV_REG_START_CODE + 28,
+ IMCB_IMC_TLV_REG_RESUB_23G4 = IMCB_IMC_TLV_REG_START_CODE + 29,
+ IMCB_IMC_TLV_REG_NOT_AUTO_REG_403 = IMCB_IMC_TLV_REG_START_CODE + 30,
+ IMCB_IMC_TLV_REG_CALL_ID_WITH_HOST_INREG = IMCB_IMC_TLV_REG_START_CODE + 31,
+ IMCB_IMC_TLV_REG_KEEP_ALIVE_MODE = IMCB_IMC_TLV_REG_START_CODE + 32,
+ IMCB_IMC_TLV_REG_TCP_CONNECT_MAX_TIME_INVITE = IMCB_IMC_TLV_REG_START_CODE + 33,
+ IMCB_IMC_TLV_REG_EMS_MODE_IND = IMCB_IMC_TLV_REG_START_CODE + 34,
+ IMCB_IMC_TLV_REG_CONTACT_WITH_ACCESSTYPE = IMCB_IMC_TLV_REG_START_CODE + 35,
+ IMCB_IMC_TLV_REG_WFC_WITH_PLANI = IMCB_IMC_TLV_REG_START_CODE + 36,
+ IMCB_IMC_TLV_REG_USE_UDP_ON_TCP_FAIL = IMCB_IMC_TLV_REG_START_CODE + 37,
+ IMCB_IMC_TLV_REG_IPSEC_FAIL_ALLOWED = IMCB_IMC_TLV_REG_START_CODE + 38,
+ IMCB_IMC_TLV_REG_CONTACT_WITH_VIDEO_FEATURE_TAG_IN_SUBSCRIBE = IMCB_IMC_TLV_REG_START_CODE + 39,
+ IMCB_IMC_TLV_REG_VIA_WITHOUT_RPORT = IMCB_IMC_TLV_REG_START_CODE + 40,
+ IMCB_IMC_TLV_REG_REG_ROUTE_HDR = IMCB_IMC_TLV_REG_START_CODE + 41,
+ IMCB_IMC_TLV_REG_VIA_URI_WITH_DEFAULT_PORT = IMCB_IMC_TLV_REG_START_CODE + 42,
+ IMCB_IMC_TLV_REG_NOTIFY_SMS_NOTIFY_DONE = IMCB_IMC_TLV_REG_START_CODE + 43,
+ IMCB_IMC_TLV_REG_EMERGENCY_USE_IMSI = IMCB_IMC_TLV_REG_START_CODE + 44,
+ IMCB_IMC_TLV_REG_CHECK_MSISDN = IMCB_IMC_TLV_REG_START_CODE + 45,
+ IMCB_IMC_TLV_REG_RETRY_INTERVAL_AFTER_403 = IMCB_IMC_TLV_REG_START_CODE + 46,
+ IMCB_IMC_TLV_REG_SUPPORT_THROTTLING_ALGO = IMCB_IMC_TLV_REG_START_CODE + 47,
+ IMCB_IMC_TLV_REG_REG_AFTER_NW_DEREG_60S = IMCB_IMC_TLV_REG_START_CODE + 48,
+ IMCB_IMC_TLV_REG_SUB_CONTACT_WITH_SIP_INSTANCE = IMCB_IMC_TLV_REG_START_CODE + 49,
+ IMCB_IMC_TLV_REG_STOP_REG_MD_LOWER_LAYER_ERR = IMCB_IMC_TLV_REG_START_CODE + 50,
+ IMCB_IMC_TLV_REG_REG_GRUU_SUPPORT = IMCB_IMC_TLV_REG_START_CODE + 51,
+
+ /* ------------------------------------------------ */
+ /* VoLTE SIP Settings */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_SIP_START_CODE = 15000,
+ IMCB_IMC_TLV_SIP_T1_TIMER = IMCB_IMC_TLV_SIP_START_CODE + 1, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_SIP_T2_TIMER = IMCB_IMC_TLV_SIP_START_CODE + 2, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_SIP_T4_TIMER = IMCB_IMC_TLV_SIP_START_CODE + 3, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_SIP_KEEP_ALIVE = IMCB_IMC_TLV_SIP_START_CODE + 4, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_SIP_FORCE_USE_UDP = IMCB_IMC_TLV_SIP_START_CODE + 5, ///< DISABLE: 0, ENABLE: 1
+ IMCB_IMC_TLV_SIP_TCP_ON_DEMAND = IMCB_IMC_TLV_SIP_START_CODE + 6, ///< DISABLE: 0, ENABLE: 1
+ IMCB_IMC_TLV_SIP_TCP_MTU_SIZE = IMCB_IMC_TLV_SIP_START_CODE + 7, ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_SIP_REG_TIMESTAMP = IMCB_IMC_TLV_SIP_START_CODE + 8, ///< DATA TYPE IS STRING, FOR WFC PLANI HEADER
+ IMCB_IMC_TLV_SIP_TRANSACTION_TIMER = IMCB_IMC_TLV_SIP_START_CODE + 9, ///< DATA TYPE IS INT
+
+ /* ------------------------------------------------ */
+ /* VoLTE USSD Settings */
+ /* ------------------------------------------------ */
+ IMCB_IMC_TLV_USSD_START_CODE = 16000,
+ IMCB_IMC_TLV_USSD_NW_TIMEOUT_TIMER = IMCB_IMC_TLV_USSD_START_CODE + 1, ///< DATA TYPE IS UINT8 */
+ IMCB_IMC_TLV_USSD_SETUP_TIMEOUT_TIMER = IMCB_IMC_TLV_USSD_START_CODE + 2, ///< DATA TYPE IS UINT8 */
+ IMCB_IMC_TLV_USSD_CAPABILITY = IMCB_IMC_TLV_USSD_START_CODE + 3, ///< DATA TYPE IS UINT8 */
+
+ /* IMCB <-> IMC internal */
+ IMCB_IMC_TLV_START_CODE = 100000,
+ IMCB_IMC_TLV_VIDEO_CAPABILITY = IMCB_IMC_TLV_START_CODE + 1,
+ IMCB_IMC_TLV_VOICE_CAPABILITY = IMCB_IMC_TLV_START_CODE + 2,
+ IMCB_IMC_TLV_IGNORE_SGN_QCI_CHECK = IMCB_IMC_TLV_START_CODE + 3,
+ IMCB_IMC_TLV_IGNORE_MEDIA_QOS_CHECK = IMCB_IMC_TLV_START_CODE + 4,
+ IMCB_IMC_TLV_DEFAULT_FALLBACK_SUPPORT = IMCB_IMC_TLV_START_CODE + 5,
+ IMCB_IMC_TLV_DEDICATED_FALLBACK_SUPPORT = IMCB_IMC_TLV_START_CODE + 6,
+ IMCB_IMC_TLV_RESTORE_PCSCF = IMCB_IMC_TLV_START_CODE + 7,
+ IMCB_IMC_TLV_NOT_ACQUIRE_AUDIO_RTCP = IMCB_IMC_TLV_START_CODE + 8,
+ IMCB_IMC_TLV_NOT_ACQUIRE_VIDEO_RTCP = IMCB_IMC_TLV_START_CODE + 9,
+ IMCB_IMC_TLV_IMCB_SETTING_STRING = IMCB_IMC_TLV_START_CODE + 10,
+ IMCB_IMC_TLV_PCSCF_HOME_POLICY_LIST = IMCB_IMC_TLV_START_CODE + 11, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_PCSCF_VISIT_POLICY_LIST = IMCB_IMC_TLV_START_CODE + 12, ///< DATA TYPE IS STRING
+ IMCB_IMC_TLV_GENERAL_SETTING = IMCB_IMC_TLV_START_CODE + 13,
+
+ IMCB_IMC_TLV_SILENTDEACT_TMOUS_CAT_REGFAIL = IMCB_IMC_TLV_START_CODE + 14, //100014
+ IMCB_IMC_TLV_SGN_WEIGHT_OF_QCI_SFLAG_DEFAULT = IMCB_IMC_TLV_START_CODE + 15, //100015
+ IMCB_IMC_TLV_NOT_DECOUPLE_DEREG_AND_PDN_DEACT = IMCB_IMC_TLV_START_CODE + 16, //100016
+ IMCB_IMC_TLV_SILENT_PDN_DEACT = IMCB_IMC_TLV_START_CODE + 17, //100017
+ IMCB_IMC_TLV_SEND_TIMERF_EXPIRY = IMCB_IMC_TLV_START_CODE + 18, //100018
+ IMCB_IMC_TLV_SEND_TIMERB_EXPIRY = IMCB_IMC_TLV_START_CODE + 19, //100019
+ //IMCB_IMC_TLV_IGNORE_VIDEO_QOS_CHECK = IMCB_IMC_TLV_START_CODE + 20, //100020
+ IMCB_IMC_TLV_PDN_REJ_HANDLE = IMCB_IMC_TLV_START_CODE + 21, //100021
+ IMCB_IMC_TLV_VIDEO_RESOURCE_RETAIN_TIMER = IMCB_IMC_TLV_START_CODE + 22, //100022 ///< DATA TYPE IS INT
+ IMCB_IMC_TLV_VIDEO_DEFAULT_FALLBACK_SUPPORT = IMCB_IMC_TLV_START_CODE + 23, //100023
+ IMCB_IMC_TLV_ENABLE_AUDIO_PRECONDITION = IMCB_IMC_TLV_START_CODE + 24, //100024
+ IMCB_IMC_TLV_ENABLE_VIDEO_PRECONDITION = IMCB_IMC_TLV_START_CODE + 25, //100025
+ IMCB_IMC_TLV_VIDEO_DEDICATED_FALLBACK_SUPPORT = IMCB_IMC_TLV_START_CODE + 26, //100026
+ IMCB_IMC_TLV_DEREG_DEFER_PDN_RELEASE_TIMER = IMCB_IMC_TLV_START_CODE + 27, //100027
+ IMCB_IMC_TLV_NORMAL_PDN_RETRY_COUNT = IMCB_IMC_TLV_START_CODE + 28, //100028
+ IMCB_IMC_TLV_EXT_TIMER_CONFIG = IMCB_IMC_TLV_START_CODE + 29, //100029
+ IMCB_IMC_TLV_RETRY_AFTER_IN_IMCB = IMCB_IMC_TLV_START_CODE + 30, //100030
+ IMCB_IMC_TLV_RESET_RETRY_AFTER_TIMER_CRITERIA = IMCB_IMC_TLV_START_CODE + 31, //100031
+ IMCB_IMC_TLV_VZW_DEVICE_TYPE = IMCB_IMC_TLV_START_CODE + 32, //100032
+ IMCB_IMC_TLV_ENABLE_PREPCSCF_DISCOVER_SUPPORT = IMCB_IMC_TLV_START_CODE + 33, //100033
+ IMCB_IMC_TLV_E911_RESOURCE_RETAIN_TIMER = IMCB_IMC_TLV_START_CODE + 34, //100034
+ IMCB_IMC_TLV_AUDIO_BEARER_LOST_RETAINTIMER = IMCB_IMC_TLV_START_CODE + 35, //100035
+ IMCB_IMC_TLV_VIDEO_BEARER_LOST_RETAINTIMER = IMCB_IMC_TLV_START_CODE + 36, //100036
+ // RTT related - start
+ IMCB_IMC_TLV_NOT_ACQUIRE_TEXT_RTCP = IMCB_IMC_TLV_START_CODE + 37, //100037
+ IMCB_IMC_TLV_IGNORE_TEXT_QOS_CHECK = IMCB_IMC_TLV_START_CODE + 38, //100038
+ IMCB_IMC_TLV_TEXT_RESOURCE_RETAIN_TIMER = IMCB_IMC_TLV_START_CODE + 39, //100039
+ IMCB_IMC_TLV_TEXT_DEFAULT_FALLBACK_SUPPORT = IMCB_IMC_TLV_START_CODE + 40, //100040
+ IMCB_IMC_TLV_ENABLE_TEXT_PRECONDITION = IMCB_IMC_TLV_START_CODE + 41, //100041
+ IMCB_IMC_TLV_TEXT_DEDICATED_FALLBACK_SUPPORT = IMCB_IMC_TLV_START_CODE + 42, //100042
+ // RTT related - end
+ IMCB_IMC_TLV_PCSCF_RESELECT_FLAG = IMCB_IMC_TLV_START_CODE + 43, //100043
+ IMCB_IMC_TLV_EMPTY_PCSCF_LIST_FAIL_CAUSE = IMCB_IMC_TLV_START_CODE + 44, //100044
+ /*
+ A is the first incoming, B is the later incoming bearer.
+
+ pf(bigger), qos (bigger) | prefer PF | prefer qos
+ --------------------------+-------------+---------------
+ CASE 1: A , A | A | A
+ CASE 2: A , B | A | B
+ CASE 3: B , A | B | A
+ CASE 4: B , B | B | B
+ */
+ IMCB_IMC_TLV_BEARER_MATCHING_PREFERENCE = IMCB_IMC_TLV_START_CODE + 45, //100045 0: disabled, 1: prefer PF, 2: prefer qos
+ IMCB_IMC_TLV_PDN_RETRY_PRE_BACKOFF_COUNT = IMCB_IMC_TLV_START_CODE + 46, //100046
+ IMCB_IMC_TLV_PDN_RETRY_BASE_TIME = IMCB_IMC_TLV_START_CODE + 47, //100047
+ IMCB_IMC_TLV_PDN_RETRY_MAX_TIME = IMCB_IMC_TLV_START_CODE + 48, //100048
+ IMCB_IMC_TLV_PDN_RETRY_BACKOFF_ENABLE = IMCB_IMC_TLV_START_CODE + 49, //100049
+ IMCB_IMC_TLV_LOGGING_EVENT_NOTIFY = IMCB_IMC_TLV_START_CODE + 50, //100050
+ IMCB_IMC_TLV_WIFI_VOICE_CAPABILITY = IMCB_IMC_TLV_START_CODE + 51, //100051
+ IMCB_IMC_TLV_WIFI_VIDEO_CAPABILITY = IMCB_IMC_TLV_START_CODE + 52, //100052
+ IMCB_IMC_TLV_E911_E1_RESET = IMCB_IMC_TLV_START_CODE + 53, //100053
+ // HPS TLV
+ IMCB_IMC_TLV_REQ_HPS = IMCB_IMC_TLV_START_CODE + 54, //100054
+ IMCB_IMC_TLV_REL_HPS = IMCB_IMC_TLV_START_CODE + 55, //100055
+ IMCB_IMC_TLV_REL_HPS_THRESHOLD = IMCB_IMC_TLV_START_CODE + 56, //100056
+ IMCB_IMC_TLV_REREG_FOR_PCSCF_RESTORATION = IMCB_IMC_TLV_START_CODE + 57, //100057
+ IMCB_IMC_TLV_REPLACE_PCSCF_LIST_FOR_RESTORATION = IMCB_IMC_TLV_START_CODE + 58, //100058
+ IMCB_IMC_TLV_LTE_ONLY_DISABLE_RES_RETAIN_TIMER = IMCB_IMC_TLV_START_CODE + 59, //100059
+ IMCB_IMC_TLV_WAIT_FOR_SGN_TIMER = IMCB_IMC_TLV_START_CODE + 60, //100060
+ IMCB_IMC_TLV_PSDATAOFF_PDNGW_SUPPORT = IMCB_IMC_TLV_START_CODE + 61, //100061
+ IMCB_IMC_TLV_IGNORE_MEDIA_QCI_CHECK = IMCB_IMC_TLV_START_CODE + 62, //100062
+ IMCB_IMC_TLV_RF_OWNER = IMCB_IMC_TLV_START_CODE + 63, //100063
+ IMCB_IMC_TLV_IMS_PROGRESS_SLOW_TIMER = IMCB_IMC_TLV_START_CODE + 64, //100064
+ IMCB_IMC_TLV_REREG_CSCM_IND = IMCB_IMC_TLV_START_CODE + 65, //100065
+ IMCB_IMC_TLV_REREG_CSCM_CNF = IMCB_IMC_TLV_START_CODE + 66, //100066
+ IMCB_IMC_TLV_USE_NORMAL_PCSCF = IMCB_IMC_TLV_START_CODE + 67, //100067
+ IMCB_IMC_TLV_REL_EMC_PDN_AFR_TIMER_EXPR = IMCB_IMC_TLV_START_CODE + 68, //100068
+ IMCB_IMC_TLV_TEXT_BEARER_LOST_RETAINTIMER = IMCB_IMC_TLV_START_CODE + 69, //100069
+ IMCB_IMC_TLV_NR_NORMAL_PDN_RETRY_COUNT = IMCB_IMC_TLV_START_CODE + 70, //100070
+ IMCB_IMC_TLV_NR_QUICK_DISABLE_SUPPORT = IMCB_IMC_TLV_START_CODE + 71, //100071
+} imcb_imc_tlv_para_enum;
+
+//IMS Common Interface
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 is_test_mode_on;
+} imcb_imc_set_test_mode_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 reserved;
+} imcb_imc_set_test_mode_cell_info_req_struct;
+
+typedef struct {
+ imcf_uint8 is_connected; //boolean, IMSA is connected to UA or not
+ imcf_uint8 pad[3];
+} imcb_imc_comm_error_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 account_id;
+ imcf_uint8 rat_type; //imc_rat_type_enum
+ imcf_uint8 pad[2];
+ /* WFC */
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+} imcb_imc_rat_change_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 account_id;
+ imcf_uint8 event_type;// 0: Signal is weak 1: LTE OOS search is on-going and may not recover
+ imcf_uint16 lte_band;// the LTE band number, UA don't use it currently, just reserve(0: Invalid, 1-256: possible LTE band range)
+} imcb_imc_rlm_event_ind_struct;
+
+//IMS SIM Interface
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 sim_type; //ims_sim_type_enum
+ imcf_uint8 session_id;
+ imcf_uint8 pad[2];
+} imcb_imc_sim_ready_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 sim_type; //ims_sim_type_enum
+ imcf_uint8 session_id;
+ imcf_uint8 pad[2];
+} imcb_imc_sim_refresh_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 reason;
+} imcb_imc_sim_error_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 reason;
+} imcb_imc_sim_query_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 sim_usim_type; //ims_sim_type_enum
+ imcf_uint8 isim_type; //ims_sim_type_enum
+ imcf_uint8 session_id;
+ imcf_uint8 pad[2];
+} imcb_imc_sim_query_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 data_type; //ims_sim_usim_data_enum
+ imcf_uint8 pad[3];
+} imcb_imc_read_sim_usim_ind_struct;
+
+typedef struct {
+ imcf_uint8 length;
+ imcf_uint8 data[IMC_MAX_IMPU_LEN];
+} ims_impu_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 is_success; //boolean
+ imcf_uint8 data_type; //ims_sim_usim_data_enum
+ imcf_uint8 num_of_data;
+ imcf_uint8 mnc_len;
+ ims_sim_usim_data_struct sim_usim_data;
+} imcb_imc_read_sim_usim_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 data_type; //ims_isim_data_enum
+ imcf_uint8 pad[3];
+} imcb_imc_read_isim_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 is_success;
+ imcf_uint8 data_type; // ims_isim_data_enum
+ imcf_uint8 num_of_data;
+ imcf_uint8 pad[1];
+ ims_isim_data_struct isim_data[5];
+} imcb_imc_read_isim_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 data_type; // ims_isim_data_enum
+ imcf_uint8 num_of_data;
+ imcf_uint8 pad[2];
+ ims_isim_data_struct isim_data[5];
+} imcb_imc_read_isim_ntf_req_struct;
+
+//IMS Registration Interface
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 account_id;
+ imcf_int32 type; // imcb_imc_query_type_enum
+} imcb_imc_query_state_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 account_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+} imcb_imc_query_state_cnf_struct;
+
+/**
+ * Description
+ * - the primitive is used for IMC indicate information to IMCB,
+ * and IMCB will mapping(relay) to UA by UA's event msessage - VoLTE_REQ_UPDATE_RT_SETTING
+ * Direction
+ * - IMC -> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 account_id;
+ imcf_uint8 imei_len;
+ imcf_uint8 pad[2];
+ imcf_uint8 imei[IMC_MAX_IMEI_LEN];
+
+ imcf_uint8 imsi_mnc_len;
+ imcf_uint8 pad1[3];
+ imcf_uint8 imsi_mnc[IMC_MAX_MNC_MCC_LEN];
+
+ imcf_uint8 imsi_mcc_len;
+ imcf_uint8 pad2[3];
+ imcf_uint8 imsi_mcc[IMC_MAX_MNC_MCC_LEN];
+
+ imcf_uint8 impi_len;
+ imcf_uint8 pad3[3];
+ imcf_uint8 impi[IMC_MAX_IMPI_LEN];
+
+ imcf_uint8 num_of_impu;
+ imcf_uint8 pad4[3];
+ ims_impu_struct impu[IMC_MAX_IMPU_NUM];
+
+ imcf_uint8 domain_name_len;
+ imcf_uint8 pad5[3];
+ imcf_uint8 domain_name[IMC_MAX_DOMAIN_NAME_LEN];
+
+ imcf_uint8 psismsc_len;
+ imcf_uint8 pad6[3];
+ imcf_uint8 psismsc[IMC_MAX_ISIM_PSISMSC_LEN]; // should equal IMC_MAX_USIM_PSISMSC_LEN and IMC_MAX_SIM_SMSP_LEN
+
+ /********************INIT Configuration ****************/
+ /* IMCB part */
+ imcf_uint32 resource_retain_timer;
+ imcf_uint32 emergency_pdn_retain_timer;
+ imcf_uint32 poweroff_ims_dereg_timer;
+ imcf_uint8 pcscf_priority_list[8];
+ imcf_uint8 set_ue_im_cn_signaling_flag;
+ imcf_uint8 check_nw_im_cn_signaling_flag;
+ imcf_uint8 ims_signaling_qci;
+ imcf_uint8 ims_voice_qci;
+ imcf_uint8 ims_video_qci;
+ imcf_uint8 ims_v4v6_preference; // imc_v4v6_preference_enum
+ imcf_uint8 pcscf_manual_support;
+ imcf_uint8 pcscf_mo_support;
+ imcf_uint8 pcscf_sim_support;
+ imcf_uint8 pcscf_pco_renew_support;
+ imcf_uint8 resource_allocation_mode; //config UE initial or NW initial dedicated EPS bearer activation
+ imcf_uint8 is_roaming;
+ imcf_uint8 set_pcscf_discovery_via_nas;
+ imcf_uint8 em_reg_scheme;
+ imcf_uint8 ims_aka_cal_decision;
+ imcf_uint8 voice_bearer_ctrl; // imcb_imc_voice_bearer_ctrl_enum
+ imcf_uint8 pcscf_manual_list[16];
+ imcf_uint8 default_pcscf_address_is_v4;
+ imcf_uint8 ims_text_qci;
+ imcf_uint8 wifi_voice_support;
+ imcf_uint8 wifi_video_over_ps_support;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+
+ /* UA part */
+ imcf_uint32 local_port;
+ imcf_uint32 ipsec_local_port_start;
+ imcf_uint32 ipsec_local_port_range;
+ imcf_uint32 rtp_rtcp_local_port_start;
+ imcf_uint32 rtp_rtcp_local_port_range;
+ imcf_uint32 rtcp_interval;
+
+ /* WFC */
+ imcf_uint32 sip_dscp;
+ imcf_uint32 sip_priority;
+ imcf_uint32 dscp; /*audio*/
+ imcf_uint32 audio_priority;
+ imcf_uint32 video_dscp;
+ imcf_uint32 video_priority;
+
+ imcf_uint32 register_expiry;
+ imcf_uint32 UA_reg_t1_timer;
+ imcf_uint32 UA_reg_t2_timer;
+ imcf_uint32 UA_reg_t4_timer;
+ imcf_uint32 UA_call_conf_subtimer;
+ imcf_uint32 UA_call_session_timer;
+ imcf_uint32 UA_call_amr_fmt_variant;
+
+ imcf_uint8 VoLTE_Setting_SIP_Force_Use_UDP;
+ imcf_uint8 VoLTE_Setting_SIP_TCP_On_Demand;
+ imcf_uint16 VoLTE_Setting_SIP_TCP_MTU_Size;
+ /* WFC */
+ imcf_uint32 VoLTE_Setting_SIP_TCP_MSS;
+
+ imcf_uint16 UA_call_session_min_se;
+ imcf_uint16 UA_call_rej_code;
+ imcf_uint16 UA_call_no_resource_code;
+ imcf_uint16 UA_call_rej_media_code;
+ imcf_uint16 UA_call_rej_by_user_code;
+ imcf_uint16 operator_code;
+ imcf_uint8 local_sip_protocol_type;
+ imcf_uint8 UA_g711_ptime;
+ imcf_uint8 UA_g726_ptime;
+ imcf_uint8 UA_call_codec_order1;
+ imcf_uint8 UA_call_codec_order2;
+ imcf_uint8 UA_call_codec_order3;
+ imcf_uint8 UA_call_def_max_ptime;
+ imcf_uint8 UA_call_def_ptime;
+ imcf_uint8 UA_call_amr_pt;
+ imcf_uint8 UA_call_amr_wb_pt;
+ imcf_uint8 UA_call_h264_pt;
+ imcf_uint8 UA_call_g729_annexb;
+ imcf_uint8 UA_call_g729_ptime;
+ imcf_uint8 UA_call_priority;
+ imcf_uint8 UA_call_privacy;
+ imcf_uint8 UA_call_session_flag;
+ imcf_uint8 UA_call_tel_evt;
+ imcf_uint8 UA_call_tel_evt_pt;
+ imcf_uint8 UA_call_precondition;
+ imcf_uint8 early_media;
+ imcf_uint8 sms_support;
+ imcf_uint8 voice_support;
+ imcf_uint8 video_over_ps_support;
+ imcf_uint8 mwi_license;
+ imcf_uint8 UA_reg_keep_alive;
+ imcf_uint8 UA_net_ipsec;
+ imcf_uint8 UA_reg_uri_with_port;
+ imcf_uint8 UA_reg_ipsec_algo;
+ imcf_uint8 UA_reg_http_digest;
+ imcf_uint8 UA_reg_specific_ipsec_algo;
+ imcf_uint8 UA_call_mo_invite_to_bw_cnf_time;
+ imcf_uint8 amr_nb_codec_support;
+ imcf_uint8 amr_wb_codec_support;
+ imcf_uint8 g_series_codec_support;
+ imcf_uint8 user_agent[128];
+ imcf_uint8 UA_call_amr_mode_set[16];
+ imcf_uint8 UA_call_amr_wb_mode_set[20];
+ imcf_uint8 UA_reg_auth_name[64];
+ imcf_uint8 UA_reg_auth_password[32];
+ imcf_uint8 UA_conf_factory_uri[128];
+ /* WFC */
+ imcf_uint8 wfc_support;
+ imcf_uint8 UA_call_h264_pt2;
+ imcf_uint8 UA_call_h265_pt;
+ imcf_uint8 ipv6_zero_compression;
+ imcf_uint8 UA_call_h265_pt2;
+ /* USSI */
+ imcf_uint8 ussd_support;
+ imcf_uint8 UA_ussd_nw_timeout_timer;
+ imcf_uint8 UA_ussd_setup_timeout_timer;
+ imcf_uint32 pcscf_port_number;
+ imcf_uint32 UA_reg_f_timer;
+ imcf_uint8 msisdn_len;
+ imcf_uint8 pad9[3];
+ imcf_uint8 msisdn[IMC_MAX_USIM_MSISDN_LEN];
+} imcb_imc_req_update_rt_setting_struct; //relay
+
+/* size(LOCAL_PARA_HDR) = 4 */
+#define IMC_MAX_DEBUG_INFO_IND_LEN 500
+
+#define IMC_EM_TAG_LEN 2
+#define IMC_EM_LENGTH_LEN 2
+
+/* For TLV parsing prototype */
+
+/**
+ * Description
+ * - the primitive is used for IMC requesting IMCB to do IMS registration,
+ * IMCB will mapping to two UA's event message - VoLTE_REQ_NETWORK_CHANGE, VoLTE_REQ_REG
+ * Direction
+ * - IMC -> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 account_id;
+ imcf_uint8 rat_type; //imc_rat_type_enum
+ imcf_uint8 pad[2];
+
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ /* WFC */
+ imcf_uint32 access_rat_type; /* imc_access_rat_type_enum */
+ imcb_imc_loc_ts_struct loc_info;
+} imcb_imc_ims_reg_ind_struct;
+
+/**
+ * Description
+ * - the primitive is used for IMCB notifing IMC current IMS registration state,
+ * the message is mapping from UA's event message - VoLTE_IND_REG_STATE
+ * Direction
+ * - IMCB -> IMC
+ */
+
+typedef enum {
+ IMC_EMERGENCY_OVER_NORMAL = 0,
+ IMC_EMERGENCY_REGISTERED = 1,
+ IMC_EMERGENCY_UNREGISTERED = 2,
+} imc_emergency_type_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 account_id;
+ imcf_uint8 reg_state; //imc_reg_state_enum
+ imcf_uint16 cause; //imcb_imc_reg_cause_enum
+ imcf_uint32 sip_cause; //imcb_imc_sip_cause_enum
+ imcf_int32 retry_after; // time delay for IMC retrying initial registration
+
+ /* WFC */
+ imcf_uint8 rat_type; /* imc_rat_type_enum */
+ imcf_uint8 ecmp; /* imc_ecmp_enum */
+ imcf_uint8 is_ems_support;
+ imcf_uint8 pdn_alive;
+
+ imcf_uint32 reg_service; /* ims_reg_service_enum */
+ imcf_uint32 reg_event; /* ims_reg_event_enum */
+ imcf_uint32 sip_uri_type; /* ims_reg_sip_uri_type_enum */
+ imcf_uint8 retry_after_ongoing;
+ imcf_uint8 emergency_type;
+ imcf_uint8 has_sent_register;
+ imcf_uint8 pad[1];
+} imcb_imc_ims_reg_state_req_struct;
+
+/**
+ * Description
+ * - the primitive is used for IMC indicating IMCB to do IMS deregistration,
+ * the message will map to UA's event message - VoLTE_REQ_DEREG
+ * Direction
+ * - IMC -> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 account_id;
+ imcf_uint8 reason; // imcb_imc_dereg_reason_enum
+ imcf_uint8 cause; // imcb_imc_dereg_cause_enum
+ imcf_uint8 pad[1];
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_bool keep_pdn_alive;
+} imcb_imc_ims_dereg_ind_struct;
+
+/**
+ * Description
+ * - the primitive is used for IMC indicating IMCB to send OOS_start event msg to UA
+ * the message mapping to UA's event message - VoLTE_XXX
+ * Direction
+ * - IMC -> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 account_id;
+ imcf_uint8 pad[3];
+} imcb_imc_oos_start_ind_struct;
+
+/**
+ * Description
+ * - the primitive is used for IMC indicating IMCB to send OOS_end event msg to UA
+ * the message mapping to UA's event message - VoLTE_XXX
+ * Direction
+ * - IMC -> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 account_id;
+ imcf_uint8 pad[3];
+} imcb_imc_oos_end_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id;
+ imcf_uint32 vops;
+} imcb_imc_ims_vops_notification_ind_struct;
+
+#define VSIM_ID_GET_SIM_ID(x) (x >> 4 )
+#define VSIM_ID_GET_TYPE(x) (x & 0x0F)
+
+typedef imcf_uint8 imc_vsim_id_t;
+
+typedef union {
+ imc_vsim_id_t vsim_id;
+ imc_acct_id_t acct_id;
+ imcf_uint8 pad[1];
+} imc_ctxt_map_t;
+
+typedef enum {
+ IMC_LOOP_TEST_NONE,
+ IMC_LOOP_TEST_E2E,
+ IMC_LOOP_TEST_E2E_TIMER,
+ IMC_LOOP_TEST_2WAY_BV,
+ IMC_LOOP_TEST_2WAY_VV,
+
+ IMC_LOOP_TEST_LAST
+} imc_loop_test_enum;
+
+typedef enum {
+ IMC_LOOP_TEST_CAUSE_NONE,
+ IMC_LOOP_TEST_CAUSE_OK,
+ IMC_LOOP_TEST_CAUSE_UNDER_TESTING,
+ IMC_LOOP_TEST_CAUSE_OTHER_FAIL,
+
+ IMC_LOOP_TEST_CAUSE_LAST
+} imc_loop_test_cause_enum;
+
+#define IMC_LOOP_TEST_DATA_LEN (1000)
+typedef struct {
+
+ imc_ctxt_map_t ctxt;
+ imcf_uint8 ttl;
+ imc_loop_test_enum type;
+ union {
+ imcf_uint8 timeout; /* in sec */
+ imcf_uint8 pad[1];
+ } data;
+
+ imcf_uint32 token;
+ imcf_uint8 chk_data[IMC_LOOP_TEST_DATA_LEN];
+
+} imc_loop_test_send_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_loop_test_send_struct test_send;
+} imcb_imc_loop_test_ind_struct;
+
+typedef struct {
+
+ imc_ctxt_map_t ctxt;
+ imc_loop_test_cause_enum cause;
+ imcf_uint8 ttl;
+ imcf_uint8 pad[1];
+
+ imcf_uint32 token;
+ imcf_uint8 chk_data[IMC_LOOP_TEST_DATA_LEN];
+
+} imc_loop_test_ack_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_loop_test_ack_struct test_ack;
+} imcb_imc_loop_test_rsp_struct;
+
+typedef struct imc_ipc_cfg_struct {
+
+ /* we reserve 10 * 4 bytes for config */
+ imcf_uint32 pad[10];
+
+}imc_ipc_cfg_struct;
+
+typedef struct imc_ipc_header_struct {
+ imcf_uint32 msg_id;
+
+ imcf_uint16 sqn;
+ imcf_uint8 dst_id;
+ imcf_uint8 log_flag;
+
+ imcf_uint32 sim_slot_id; // For multiple IMS
+ imcf_uint32 resrv2;
+
+ imcf_uint32 ctrl_len;
+ imcf_uint32 data_len;
+
+ imc_ipc_cfg_struct cfg;
+
+}imc_ipc_header_struct;
+
+typedef struct imc_ipc_struct {
+ imc_ipc_header_struct header;
+
+ /* content ctrl + data part */
+ imcf_uint8 body[IMC_IPC_BODY_LNE];
+
+} imc_ipc_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_ipc_struct ipc;
+} imcb_imc_ipc_ind_struct;
+
+typedef imcb_imc_ipc_ind_struct imcb_imc_ipc_req_struct;
+
+
+/* volte_event_media_config */
+typedef struct imcb_imc_media_param_struct {
+ imcf_int8 local_address[IMCB_IMC_IPADDR_LENGTH];
+
+ // RTP and RTCP session for audio and video
+ imcf_uint32 audio_b_as; // RTP bandwidth
+ imcf_uint32 audio_b_rs; // RTCP sender bandwidth
+ imcf_uint32 audio_b_rr; // RTCP receiver bandwidth
+ imcf_uint16 audio_remote_rtp_port;
+ imcf_uint16 audio_remote_rtcp_port;
+ imcf_uint16 audio_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
+ imcf_uint16 audio_local_rtp_port; ///< rtp port number for media attribute in SDP message
+ imcf_int8 audio_remote_rtp_address[IMCB_IMC_IPADDR_LENGTH];
+ imcf_int8 audio_remote_rtcp_address[IMCB_IMC_IPADDR_LENGTH];
+
+ imcf_uint32 video_b_as; // RTP bandwidth
+ imcf_uint32 video_b_rs; // RTCP sender bandwidth
+ imcf_uint32 video_b_rr; // RTCP receiver bandwidth
+ imcf_uint16 video_remote_rtp_port;
+ imcf_uint16 video_remote_rtcp_port;
+ imcf_uint16 video_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
+ imcf_uint16 video_local_rtp_port; ///< rtp port number for media attribute in SDP message
+ imcf_int8 video_remote_rtp_address[IMCB_IMC_IPADDR_LENGTH];
+ imcf_int8 video_remote_rtcp_address[IMCB_IMC_IPADDR_LENGTH];
+
+ imcf_uint8 remote_addr_type; ///< VoLTE_Event_IP_Version_e, apply to RTP audio & video session, RTCP audio & video session
+ imcf_uint8 audio_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
+ imcf_uint8 video_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
+ // required by video codec
+ imcf_uint8 video_payload_type;
+ imcf_uint32 rtcp_interval; ///< IMCB will get value from NVRAM
+ /* WFC */
+ imcf_uint32 dscp; /* audio */
+ imcf_uint32 video_dscp;
+ imcf_uint32 voice_soc_priority;
+ imcf_uint32 video_soc_priority;
+
+ // required by voice codec driver
+ imcf_uint8 audio_codec; ///< voip_codec_enum in codec_def.h
+ imcf_uint8 audio_payload_type; ///< payload type
+ imcf_uint8 audio_clock_rate; ///< dynamic rate, clock rate, see sdp_clock_rate_enum
+ imcf_uint8 is_dtmf; ///< is dtmf tone useing telephony event
+
+ imcf_uint8 tele_evt_payload_type; ///< telephony event payload type
+ imcf_uint8 tele_evt_clock_rate; ///< telephony event rate
+ imcf_uint8 g723_bitrate; ///< VoLTE_Event_G7231_BitRate_e
+ imcf_uint8 is_g723_annexAYES; ///< G.723.1 annexA Yes:1, No:0
+
+ imcf_uint8 is_g729_annexBYES; ///< G.729 annexB Yes:1, No:0
+ imcf_uint8 ilbc_mode; ///< VoLTE_Event_iLBC_Rate_e
+ // required by RFC 6679 ECN
+ imcf_uint8 ecn_capable_rtp_method; ///< VoLTE_Event_ECN_RTP_METHOD_e
+ imcf_uint8 ecn_capable_ect; //0, 1
+
+ imcf_uint32 ptime; ///< ptime of the codec
+ imcf_uint32 max_ptime; ///< max ptime is the buffer size for data plane. may not the same to ptime
+ // required by AMR and AMR WB codec
+ imcf_int8 mode_set[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+
+ imcf_uint8 is_octet_align; ///< 0:default, bandwidth-efficient, 1: octet_align
+ imcf_uint8 mode_change_period; ///< the period should be N. but currently only 1(default) or 2.
+ imcf_uint8 mode_change_cap; ///< 1(default) or 2(recommended to support)
+ imcf_uint8 mode_change_neighbor;///< 0(default) or 1
+
+ imcf_uint8 crc; ///< 0 or 1
+ imcf_uint8 robust; ///< 0 or 1
+ imcf_uint8 interleaving; ///< the maximum number of frame-blocks. 0: not present
+ imcf_uint8 channel; ///< the number of audio channel. must be 1 currently
+ imcf_uint16 max_red; // the maximum duration in ms
+// required by RTCP FB
+ imcf_uint16 rtcp_rsize;
+ imcf_uint32 rtcpfb_type; ///< bitmap, VoLTE_Event_RTCP_FB_Type_e
+ /* WFC */
+ imcf_uint32 network_id;
+ imcf_int8 id[IMCB_IMC_MAX_SDP_EGBYTE_LENGTH];
+ imcf_int8 trr_int[IMCB_IMC_MAX_SDP_EGBYTE_LENGTH];
+ imcf_int8 id_app_string[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+ imcf_int8 ack_app_string[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+ imcf_int8 nack_app_string[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+ imcf_int8 tmmbr_string[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+ imcf_int8 vbcm_string[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+ imcf_int8 cname_string[IMCB_IMC_MAX_CNAME_LENGTH];
+
+ /* EVS Support */
+ imcf_uint8 evs_support;
+ imcf_uint8 evs_mode_switch;
+ imcf_uint8 hf_only;
+ imcf_uint8 dtx;
+ imcf_uint8 dtx_recv;
+ imcf_uint8 pading[3];
+ imcf_uint8 br[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ imcf_uint8 br_send[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ imcf_uint8 br_recv[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ imcf_uint8 bw[2]; ///< VoLTE_EVS_Bandwidth_e
+ imcf_uint8 bw_send[2]; ///< VoLTE_EVS_Bandwidth_e
+ imcf_uint8 bw_recv[2]; ///< VoLTE_EVS_Bandwidth_e
+ imcf_uint8 ch_send;
+ imcf_uint8 ch_recv;
+ imcf_int8 ch_aw_recv;
+ imcf_int8 cmr;
+
+ /* RTCP-XR */
+ imcf_uint16 rtcp_xr_format;
+ imcf_uint16 rtcp_xr_loss_maxsize;
+ imcf_uint16 rtcp_xr_dup_maxsize;
+ imcf_uint16 rtcp_xr_rcpt_maxsize;
+ imcf_uint16 rtcp_xr_rtt_maxsize;
+ imcf_uint8 rtcp_xr_rtt_mode;
+ imcf_uint8 rtcp_xr_stat_flags;
+
+ /* TTY */
+ /* 2000 - 4 * (3+2+4+4 + 1 + 1) = 1940*/
+ /* ======================================================================================*/
+ imcf_uint32 text_b_as; //RTP bandwidth
+ imcf_uint32 text_b_rs; //RTCP sender bandwidth
+ imcf_uint32 text_b_rr; //RTCP receiver bandwidth
+
+ imcf_uint16 text_remote_rtp_port;
+ imcf_uint16 text_remote_rtcp_port;
+
+ imcf_uint16 text_local_rtcp_port; // < rtcp port number
+ imcf_uint16 text_local_rtp_port; // < rtp port number
+
+ imcf_int8 text_remote_rtp_address[IMCB_IMC_IPADDR_LENGTH];
+ imcf_int8 text_remote_rtcp_address[IMCB_IMC_IPADDR_LENGTH];
+
+ imcf_uint8 text_rtp_direction; // < VoLTE_EVENT_RTP_Direction
+ imcf_uint8 text_t140_payload_type; // < payload
+ imcf_uint8 text_red_payload_type; //payload type
+ imcf_uint8 text_red_level; //< T140 Red level
+
+ imcf_uint8 text_cps; // < T140 Red level
+ /* ALTC ================================================================================*/
+ imcf_uint8 text_addr_type;
+ imcf_uint8 text_pad[2];
+
+ /* 1940 - 4 = 1936*/
+ /* offline define feature flag */
+ /* ex. used by ALTC feautre */
+ imcf_uint32 feature_flag;
+
+ /* ALTC 1936 - 16 = 1920 */
+ /* ======================================================================================*/
+ imcf_uint8 text_local_address[IMCB_IMC_IPADDR_LENGTH];
+ /* ======================================================================================*/
+
+ //imcf_uint8 resv[1920];
+ /* Asymmetric RTP payload type support 1920 - 4 - 736*8 = 1180 */
+ imcf_uint32 recv_codec_num;
+ imcb_imc_ltecsr_media_codec_struct recv_codec_list[IMCB_IMC_MAX_RECV_CODEC_LIST_LENGTH];
+
+ imcf_uint8 resv[1180];
+
+} imcb_imc_media_param_struct;
+
+typedef enum imcb_imc_xmit_mode_enum {
+ IMCB_IMC_XMIT_MODE_NONE=0,
+ IMCB_IMC_XMIT_MODE_SENDONLY,
+ IMCB_IMC_XMIT_MODE_RECVONLY,
+ IMCB_IMC_XMIT_MODE_SENDRECV,
+ IMCB_IMC_XMIT_MODE_INACTIVE,
+ IMCB_IMC_XMIT_MODE_ACTIVE,
+} imcb_imc_xmit_mode_enum;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct imcb_imc_bearer_mbr_gbr {
+ imcf_int32 dl_gbr;
+ imcf_int32 dl_mbr;
+ imcf_int32 ul_gbr;
+ imcf_int32 ul_mbr;
+} imcb_imc_bearer_mbr_gbr_t;
+
+typedef struct imcb_imc_xxx2ltecsr_param_struct {
+
+ /* call id */
+ imcf_int32 call_id;
+
+ /* session id */
+ imcf_int32 voice_sid;
+ imcf_int32 video_sid;
+
+ /* BID for voice and video */
+ /* for media_del, BID is not used */
+ imcf_int32 voice_bid; /* LTE: EBI, NR: PSI|QFI */
+ imcf_int32 video_bid; /* LTE: EBI, NR: PSI|QFI */
+
+ /* WFC */
+ imcf_uint16 voice_type; /* 0 (LTE), 1 (WIFI), 2 (NR) */
+ imcf_uint16 video_type; /* 0 (LTE), 1 (WIFI), 2 (NR) */
+
+ /* op code */
+ /* for media_new, we should set all 1's */
+ /* for media_del, only vioce/viedeo fc are used */
+ imcf_uint32 func_class;
+
+ /* Default Bearer ID */
+ imcf_uint32 default_bid; /* LTE: Default EBI, NR: PSI|Default QFI */
+
+ /* PDN Context ID */
+ imcf_uint32 pdn_cid;
+
+ /* all parameters */
+ /* for media_del, params is not used */
+ imcb_imc_media_param_struct params;
+
+ /* pcscf */
+ imcf_uint32 ip_version; /* 1 (IPv4), 2 (IPv6) */
+ imcf_int8 pcscf_address[IMCB_IMC_IPADDR_LENGTH];
+ imcf_uint8 if_name[IMC_MAX_IF_NAME_LENGTH];
+
+ /* text sid for TTY/RTT
+ 0 default value
+ -1 delete tty/rtt
+ others tty/rtt alive
+ */
+ imcf_int32 tty_sid;
+ imcf_int32 tty_bid; /* LTE: EBI, NR: PSI|QFI */
+
+ imcf_uint16 tty_type; /* 0 (LTE), 1 (WIFI), 2 (NR) */
+ imcf_uint16 gbr_mbr_present_mask; /* 0x1 voice, 0x2 video, 0x4 tty */
+
+ imcb_imc_bearer_mbr_gbr_t voice_bearer_quatlity;
+ imcb_imc_bearer_mbr_gbr_t video_bearer_quatlity;
+ imcb_imc_bearer_mbr_gbr_t tty_bearer_quatlity;
+} imcb_imc_xxx2ltecsr_param_struct ;
+
+typedef struct imcb_imc_media_new {
+ LOCAL_PARA_HDR
+ imcf_uint32 tv_sec;
+ imcb_imc_xxx2ltecsr_param_struct param;
+} imcb_imc_media_new_struct;
+
+typedef struct imcb_imc_media_del {
+ LOCAL_PARA_HDR
+ imcb_imc_xxx2ltecsr_param_struct param;
+} imcb_imc_media_del_struct;
+
+typedef struct imcb_imc_media_update {
+ LOCAL_PARA_HDR
+ imcb_imc_xxx2ltecsr_param_struct param;
+} imcb_imc_media_update_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 account_id;
+ imcf_int32 call_id;
+ imcf_uint32 anbr_value;
+} imcb_imc_cc_media_anbr_notify_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 account_id;
+ imcf_int32 call_id;
+ imcf_uint32 anbr_result;
+} imcb_imc_cc_media_anbr_notify_rsp_struct;
+
+//IMS Call Interface
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_CALL_PROGRESS_IND
+ * - struct: VoLTE_Event_Call_Prog_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_int32 is_ibt;
+ imcf_uint8 p_assert_uri[IMC_MAX_ASSERTED_URI];
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+ imcf_int32 call_mode; //imcb_imc_call_mode_enum
+ imcf_int32 ecpi; //imcb_imc_call_prog_ecpi_enum
+ imcf_int32 hold_by; //imcb_imc_call_hold_by_enum
+ imcf_int32 dir;
+ imcf_int32 q850_cause; // 0 means that Q.850 cause was not received in Reason: header.
+ imcf_uint16 terminal_resp; // Terminal response for STK call
+ imcf_uint8 wait_rtp_pkt;//if ibt = 1 run wait RTP pkts from N/W if timeout UA Rxs IMS_NOTIFY_REQ
+ imcf_uint8 pad[1];
+} imcb_imc_cc_call_progress_req_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_SIP_CALL_PROGRESS_IND
+ * - struct: VoLTE_Event_SIP_Call_Prog_Ind_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint64 ua_id; /*reg client information*/
+ imcf_uint32 call_id;
+ imcf_uint8 call_mode;
+ imcf_uint8 dir; /*0: send, 1: receive*/
+ imcf_uint8 sip_msg_type; /*0: request, 1: response*/
+ imcf_uint8 method; /*1:SIP_INVITE_METHOD,2:SIP_REFER_METHOD ..etc , refer to inet_method_enum*/
+
+ imcf_uint16 response_code; /*0:only used when SIP type is request, else: response code(100~600)*/
+ imcf_uint8 pad[2];
+ imcf_uint8 reason_text[IMC_MAX_REASON_TEXT_LENGTH];
+} imcb_imc_cc_sip_call_progress_ind_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MEDIA_IND
+ * - struct: VoLTE_Event_MediaInfo_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_int32 is_on; //imcb_imc_media_enum
+} imcb_imc_cc_media_req_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MO_CALL_REQ
+ * - struct: VoLTE_Event_Call_Start_t
+ * Direction
+ * - IMC --> IMCB
+ */
+
+typedef enum {
+ IMCB_IMC_CALL_SERVICE_NORMAL = 0,
+ IMCB_IMC_CALL_SERVICE_CALL_PULL = 1,
+ IMCB_IMC_CALL_SERVICE_STK_CALL = 2,
+
+ //ecall
+ IMCB_IMC_CALL_SERVICE_ECALL_TEST = 100,
+ IMCB_IMC_CALL_SERVICE_ECALL_RECONFIGURE = 101,
+
+ //add here
+ IMCB_IMC_CALL_SERVICE_END
+} imcb_imc_call_service_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 dial_number[128];
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 clir;
+ imcb_imc_call_mode_enum call_mode;
+ imcb_imc_uri_scheme_type_enum uri_scheme;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcb_imc_call_service_enum service;
+ plmn_type_enum plmn;
+ imcf_uint8 rtt_setting;
+ imcf_uint8 redial_setting; /* ims_stk_setup_call_enum */
+ imcf_uint8 digit_from_line_number[IMC_MAX_URI_LENGTH];
+ imcf_uint8 stk_type; /* ims_stk_type_enum */
+
+ /*ecall over IMS*/
+#ifdef __NG_ECALL_SUPPORT__
+ imcf_uint8 msd_data_len;
+ imcf_uint8 msd_data[IMS_MAX_MSD_LENGTH];
+#endif
+} imcb_imc_cc_mo_call_ind_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MO_CALL_CNF
+ * - struct: VoLTE_Event_MO_Call_Cnf_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcb_imc_call_stop_cause_enum cause;
+ imcb_imc_call_stop_result_enum result;
+ imcb_imc_call_mode_enum call_mode;
+ imcf_uint8 is_international; // 0:no, 1: the phone is number is national number
+ imcf_uint8 isDateString; // 0: not a date string, 1: it is a date string in time variable
+ imcf_uint32 time;
+ imcf_int32 duration;
+ imcf_uint8 reason[128];
+ imcb_imc_srvcc_call_ecc_category_enum ecc_category;
+ imcb_imc_call_service_enum service;
+ imcf_uint8 pad[3];
+ imcf_int32 q850_cause; // 0 means that Q.850 cause was not received in Reason: header.
+ imcf_uint8 country_specific_urn[IMC_MAX_URI_LENGTH];
+ imcb_imc_call_cause_380_contact_enum cause_380_contact;
+ imcb_imc_call_cause_380_xml_enum cause_380_xml;
+ imcb_imc_380_xml_type_enum xml_type_380;
+ imcb_imc_380_xml_action_enum xml_action_380;
+} imcb_imc_cc_mo_call_rsp_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MT_CALL_ABORT_IND
+ * - struct: VoLTE_Event_MT_Call_Abort_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 seq_no; /* acctually uint8, or 4-byte align */
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_cc_mt_call_abort_req_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MT_CALL_PRESENT_IND
+ * - struct: VoLTE_Event_MT_Call_Ind_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint8 seq_no;
+ imcf_uint8 is_national_num; // 0: local number, 1: national number
+ imcf_uint8 call_mode; //imcb_imc_call_mode_enum
+ imcf_uint8 uri_scheme; //imcb_imc_uri_scheme_type_enum
+ imcf_uint8 dial_number[128];
+ imcf_uint8 digit_to_line_number[IMC_MAX_URI_LENGTH];
+} imcb_imc_cc_mt_call_present_req_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MT_CALL_PRESENT_RSP
+ * - struct: VoLTE_Event_MT_Call_Rsp_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 seq_no;
+ imcf_uint8 call_mode; //imcb_imc_call_mode_enum
+ imcf_wchar result; //imcb_imc_call_stop_result_enum
+ imcf_int32 response_code;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint8 rtt_setting;
+ imcf_uint8 pad[3];
+} imcb_imc_cc_mt_call_present_cnf_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MT_CALL_RING_IND
+ * - struct: VoLTE_Event_Call_Refresh_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 p_assert_uri[IMC_MAX_ASSERTED_URI];
+} imcb_imc_cc_mt_call_ring_req_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MO_HANGUP_REQ
+ * - struct: VoLTE_Event_Req_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_cc_mo_force_hangup_ind_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MO_HANGUP_REQ
+ * - struct: VoLTE_Event_Req_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause; // use ims_cc_mo_disconnect_cause_enum to passmo call disconnect cause (AT+ECHLD)
+} imcb_imc_cc_mo_hangup_ind_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MO_HANGUP_CNF
+ * - struct: VoLTE_Event_Call_Stop_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_cc_mo_hangup_rsp_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MT_ACCEPT_REQ
+ * - struct: VoLTE_Event_Req_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_cc_mt_accept_ind_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_NO_RTPPKT_REQ
+ * - struct: VoLTE_Event_Req_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_cc_no_rtppkt_ind_struct;
+
+/**
+ * Description
+ * - This message is used to inform when call receives
+ * RTP packets before media is activated.
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_INCOMING_RTPPKT_REQ
+ * - struct: VoLTE_Event_Req_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_cc_incoming_rtppkt_ind_struct;
+
+/**
+ * Description
+ * - This message is used to inform Call UA the
+ * domain conflict event.
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MO_CALL_DOMAIN_CONFLICT_REQ
+ * - struct: VoLTE_Event_Req_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_cc_mo_call_domain_conflict_ind_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MO_CALL_DOMAIN_CONFLICT_CNF
+ * - struct: VoLTE_Event_Call_Stop_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_int32 result;
+ imcf_int32 cause;
+} imcb_imc_cc_mo_call_domain_conflict_rsp_struct;
+
+#ifdef __NG_ECALL_SUPPORT__
+/**
+ * Description
+ * -
+ * Remark
+ * - header file:
+ * - MSG_ID: VOLTE_ECALL_IN_BAND_MSD_TRANSFER_RSP
+ * - struct: VoLTE_Event_ecall_In_Band_MSD_Transfer_Rsp_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+} imcb_imc_cc_ecall_in_band_msd_transfer_rsp_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file:
+ * - MSG_ID: VOLTE_ECALL_UPDATE_MSD_RSP
+ * - struct: VoLTE_Event_ecall_update_MSD_Rsp_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 msd_len;
+ imcf_uint8 msd_data[IMS_MAX_MSD_LENGTH];
+} imcb_imc_cc_ecall_update_msd_rsp_struct;
+#endif
+
+/**
+ * Description
+ * - This message indicates that LTECSR want to notify IMCB/UA.
+ * Remark
+ * - header file: ltecsr_struct.h,
+ * - MSG_ID: MSG_ID_IMCB_IMC_CC_IMS_NOTIFY_IND
+ * - struct: ltecsr_ims_notify_msg_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 msg_id; // imcb_imc_ims_notify_enum
+ imcf_uint8 ver; // structure version number start from 0
+ imcf_uint16 rsv; // reserve bit must fill 0 (for 4 byte alignment)
+ imcf_uint8 ext[IMC_MAX_IMS_NOTIFY_EXT_LEN]; // reserve for future other usage
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+} imcb_imc_cc_ims_notify_ind_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MT_ACCEPT_RSP
+ * - struct: VoLTE_Event_Call_Stop_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_cc_mt_accept_rsp_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_IMCB_IMC_CALL_CONTROL_IND
+ * AT>AT+ECCTRL=<call_id>,<call_state>
+ */
+ typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_int32 expected_call_state; //imcb_imc_ecctrl_enum
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ } imcb_imc_call_control_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_IMC_SS_CALL_CONTROL_RSP
+ * AT< OK | ...
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 operation; //imcb_imc_ss_operation_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_call_control_rsp_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MO_CONF_CALL_REQ
+ * - struct: VoLTE_Event_Conf_Call_Start_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcb_imc_call_mode_enum call_mode;
+ imcf_uint8 conf_call_participants;
+ imcf_uint8 pad[2];
+ imcf_uint8 conf_call_number_list[IMC_MAX_CALL_NUM_IN_CONFERENCE][IMC_MAX_CONF_CONTROL_URI_LENGTH];
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ plmn_type_enum plmn;
+} imcb_imc_cc_mo_conf_call_ind_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_MO_CONF_CALL_CNF
+ * - struct: VoLTE_Event_MO_Conf_Call_Cnf_t
+ * Direction
+ * - IMCB --> IMC
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcb_imc_call_stop_cause_enum cause;
+ imcb_imc_call_stop_result_enum result;
+ imcb_imc_call_mode_enum call_mode;
+ imcf_uint8 pad[2];
+ imcf_int32 q850_cause; // 0 means that Q.850 cause was not received in Reason: header.
+} imcb_imc_cc_mo_conf_call_rsp_struct;
+
+/**
+ * Description
+ * -
+ * Remark
+ * - header file: volte_event.h
+ * - MSG_ID: VOLTE_REQ_MD_LOWER_LAYER_ERR
+ * - struct: VoLTE_Event_MD_Lower_Layer_Err_t
+ * Direction
+ * - IMC --> IMCB
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint32 cause; //imcb_imc_md_lower_layer_err_enum
+ imcf_uint32 type; //imcb_imc_md_epsfb_type_enum
+} imcb_imc_md_lower_layer_err_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_ss_switch_waiting_or_holding_and_active_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 operation; //imcb_imc_ss_operation_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_switch_waiting_or_holding_and_active_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_ss_release_waiting_or_all_bg_calls_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 operation; //imcb_imc_ss_operation_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_release_waiting_or_all_bg_calls_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_ss_release_all_fg_and_resume_bg_call_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 operation; //imcb_imc_ss_operation_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_release_all_fg_and_resume_bg_call_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_ss_release_all_fg_and_bg_calls_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 operation; //imcb_imc_ss_operation_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_release_all_fg_and_bg_calls_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_ss_explicit_call_transfer_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 operation; //imcb_imc_ss_operation_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_explicit_call_transfer_rsp_struct;
+
+/* For ECT blind/assured */
+
+typedef enum {
+ IMS_ECT_TYPE_NONE = 0,
+ IMS_ECT_TYPE_BLIND = 1,
+ IMS_ECT_TYPE_ASSURED = 2, /* default */
+ IMS_ECT_TYPE_ASSURED_PUSH = 3, /* TMOUS Digit device transfer */
+ IMS_ECT_TYPE_CANCEL = 4,
+} imcb_imc_ect_type_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint8 ect_type; // imcb_imc_ect_type_enum
+ imcf_uint8 pad[3];
+ imcf_int8 p_assert_uri[IMC_MAX_ASSERTED_URI];
+ imcf_uint8 device_id[IMC_MAX_UUID_LEN];
+} imcb_imc_ss_ect_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_ect_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_ect_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ plmn_type_enum plmn;
+} imcb_imc_ss_create_conference_call_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 operation; //imcb_imc_ss_operation_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_create_conference_call_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+ imcf_uint32 cause;
+} imcb_imc_ss_ath_rel_all_calls_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 operation; //imcb_imc_ss_operation_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_ath_rel_all_calls_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 reserved;
+} imcb_imc_ss_list_current_calls_ind_struct;
+
+typedef struct {
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 is_mt_call;
+ imcf_uint8 state_of_the_call;
+ imcf_uint8 mode;
+ imcf_uint8 is_conference_call;
+ imcf_uint8 phone_number[128];
+ imcf_uint32 is_international; // 0:no, 1: the phone number is a national number
+} imcb_list_one_call_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 total_call;
+ imcb_list_one_call_struct call_list[12]; // max_account*3, may changed??
+} imcb_imc_ss_list_current_calls_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint32 service; //imcb_imc_ss_notify_service_enum
+ imcf_uint8 data[IMCB_IMC_MAX_DATA_TO_IMC_LENGTH];
+} imcb_imc_ss_progress_notify_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 conf_call_id;
+ imcf_uint32 joined_call_id;
+ imcf_uint8 dial_number[IMC_MAX_CONF_CONTROL_URI_LENGTH];
+ imcf_int32 operation; //imcb_imc_ss_operation_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_conference_control_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_int32 event; //imcb_imc_ss_sub_event_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_subscribe_control_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 conf_call_id;
+ imcf_int32 joined_call_id;
+ imcf_uint32 op; //imcb_imc_ss_operation_enum
+ imcf_uint8 number[IMC_MAX_CONF_CONTROL_URI_LENGTH];
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcb_imc_loc_ts_struct loc_info;
+} imcb_imc_ss_conference_control_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 operation; //imcb_imc_ss_operation_enum
+ imcf_int32 result; //imcb_imc_call_stop_result_enum
+ imcf_int32 cause; //imcb_imc_call_stop_cause_enum
+} imcb_imc_ss_conference_control_rsp_struct;
+
+//IMS SRVCC Interface
+typedef struct {
+ imcf_int32 call_id;
+ imcf_uint32 ecc_category; /* imcb_imc_srvcc_call_ecc_category_enum */
+ imcf_uint8 call_mode; /* imcb_imc_call_mode_enum */
+ imcf_uint8 direction; /* imcb_imc_srvcc_call_direction_enum */
+ imcf_uint8 dlg_state; /* imcb_imc_srvcc_call_state_enum */
+ imcf_uint8 num_of_conf_parts;
+} imcb_imc_srvcc_call_ctxt_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 num_calls;
+ imcb_imc_srvcc_call_ctxt_struct srvcc_call_ctxt_from_ims[IMCB_IMC_MAX_CALL_NUM];
+ imcf_uint32 acct_id;
+ imcf_uint8 conf_call_number_list[IMC_MAX_CALL_NUM_IN_CONFERENCE][IMC_MAX_URI_LENGTH];
+} imcb_imc_srvcc_context_transfer_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_int32 srvcc_ho_status; /* imcb_imc_srvcc_status_enum */
+} imcb_imc_srvcc_status_update_ind_struct;
+
+//Auto Test Tool Interface
+typedef struct {
+ imcf_uint8 src_ip[64];
+ imcf_uint8 dst_ip[64];
+ imcf_uint8 src_port[16];
+ imcf_uint8 dst_port[16];
+ imcf_uint8 spi[32];
+ imcf_uint8 dir; //0:in 1:out
+ imcf_uint8 padding[3];
+} imcb_imc_reg_ipsec_info_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 acct_id;
+} imcb_imc_reg_ipsec_flush_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcb_imc_reg_ipsec_info_struct ipsec_info[4];
+ imcf_uint8 index;
+ imcf_uint8 transport; //0:udp 1:tcp
+ imcf_uint8 mode; //0:Transport 1:Tunnel
+ imcf_uint8 protocol; //0:AH 1:ESP
+ imcf_uint8 encry_algo; /* VoLTE_Stack_IPSec_Encry_Algo_e */
+ imcf_uint8 integrity_algo; /* enum VoLTE_Stack_IPSec_Integrity_Algo_e */
+ imcf_uint8 padding[2];
+ imcf_uint8 ck[256];
+ imcf_uint8 ik[256];
+ imcf_uint32 acct_id;
+} imcb_imc_reg_ipsec_add_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 index;
+ imcf_uint8 padding[3];
+ imcf_uint32 acct_id;
+} imcb_imc_reg_ipsec_delete_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcb_imc_bearer_filter_type_enum type;
+ imcf_bid_t bid;
+} imcb_imc_start_bearer_filter_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcb_imc_bearer_filter_type_enum type;
+ imcf_bid_t bid;
+} imcb_imc_stop_bearer_filter_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 type; // imcb_imc_ebi_filter_type_enum
+ imcf_uint8 pad[3];
+ imcf_uint32 ebi;
+} imcb_imc_start_ebi_filter_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 type; // imcb_imc_ebi_filter_type_enum
+ imcf_uint8 pad[3];
+ imcf_uint32 ebi;
+} imcb_imc_stop_ebi_filter_req_struct;
+
+//IMS USSI Interface
+typedef struct imcb_imc_send_ussd_ind {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id; /*< Account ID*/
+ imcf_uint8 cmd_class; /*< class */
+ imcf_uint8 operation; /*< oper */
+ imcf_uint16 action; /*< action */
+ imcf_uint8 language[IMC_USSD_LANGUANGE_LEN]; /*< language */
+ imcf_int16 error_code; /*< error_code */
+ imcf_int16 message_len; /*< message length */
+ imcf_uint8 message[IMC_USSD_MAX_MSG_LEN];
+ imcf_uint8 digit_from_line_number[IMC_MAX_URI_LENGTH];
+} imcb_imc_send_ussd_ind_struct;
+
+typedef struct imcb_imc_send_ussd_rsp {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id; /*< Account ID*/
+ imcf_uint32 response; /*< OK or ERROR, may be extended to CME ERROR later on*/
+} imcb_imc_send_ussd_rsp_struct;
+
+typedef struct imcb_imc_recv_ussd_req {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id; /*< Account ID*/
+ imcf_uint8 urc_class; /*< class */
+ imcf_uint8 alert_pattern; /*< Alertin Pattern for AP */
+ imcf_uint8 padding[2]; /*< oper */
+ imcf_uint16 status; /*< status */
+ imcf_uint16 sip_cause; /*< status */
+ imcf_uint8 language[IMC_USSD_LANGUANGE_LEN]; /*< language */
+ imcf_int16 error_code; /*< error_code */
+ imcf_int16 message_len; /*< message length */
+ imcf_uint8 message[IMC_USSD_MAX_MSG_LEN];
+} imcb_imc_recv_ussd_req_struct;
+
+
+typedef struct imcb_imc_ussd_urc_status_ind {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id; /*< Account ID*/
+ imcf_uint32 status; /*< USSI URC enabled status */
+} imcb_imc_ussd_urc_status_ind_struct;
+
+//IMS VT Service Interface
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id;
+ imcf_uint32 is_connected;
+} imcb_imc_vt_connect_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id;
+ imcf_uint16 operator_code;
+ imcf_uint8 pad[2];
+} imcb_imc_vt_cap_query_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id;
+ imcf_uint32 result; //0: success, 1: fail
+ imcf_uint16 operator_code;
+ imcf_uint8 pad[2];
+} imcb_imc_vt_cap_query_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id;
+ imcf_uint32 call_id;
+ imcf_int32 direction;
+} imcb_imc_cc_vt_active_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 account_id;
+ imcf_uint32 call_id;
+ imcf_uint8 call_mode; //imcb_imc_call_mode_enum
+ // 0 : inactive
+ // 1 : send_only
+ // 2 : recv_only
+ // 3 : send_recv
+ imcf_uint8 camera_direction;
+ imcf_uint8 audio_direction;
+ imcf_uint8 audio_codec; //opaque
+ imcf_int8 p_assert_uri[IMC_MAX_ASSERTED_URI];
+} imcb_imc_cc_media_mod_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 account_id;
+ imcf_uint32 call_id;
+ imcf_uint8 local_video_cap;
+ imcf_uint8 remote_video_cap;
+ imcf_uint8 pad[2];
+} imcb_imc_cc_video_cap_req_struct;
+
+typedef enum {
+ IMCB_IMC_EVTA_MODE_UNKNOWN = 0,
+ IMCB_IMC_EVTA_MODE_ACCEPT_AS_VOICE = 1,
+ IMCB_IMC_EVTA_MODE_ACCEPT_AS_ONE_WAY_VIDEO_RX = 2,
+ IMCB_IMC_EVTA_MODE_ACCEPT_AS_ONE_WAY_VIDEO_TX = 3,
+ IMCB_IMC_EVTA_MODE_MAX,
+} imcb_imc_evta_mode_enum;
+
+typedef enum
+{
+ IMCB_IMC_SEND_USSD_RESULT_SUCCESS = 0,
+ IMCB_IMC_SEND_USSD_RESULT_FAILURE = 1,
+ IMCB_IMC_SEND_USSD_RESULT_MAX ,
+} imcb_imc_send_ussd_result_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ imcf_uint32 mode; /* imcb_imc_evta_mode_enum */
+ imcb_imc_loc_ts_struct loc_info;
+} imcb_imc_cc_mt_vt_special_accept_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id;
+ imcf_int32 result; /*0: success, 1: fail*/
+ imcf_int32 cause; /*imcb_imc_call_stop_cause_enum*/
+} imcb_imc_cc_mt_vt_special_accept_rsp_struct;
+
+//WFC
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 source_rat_type;
+ imcf_uint8 target_rat_type;
+ imcf_uint8 pad[2];
+} imcb_imc_handover_start_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 source_rat_type;
+ imcf_uint8 target_rat_type;
+ imcf_uint8 is_success;
+ imcf_uint8 pad;
+} imcb_imc_handover_stop_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 source_rat_type;
+ imcf_uint8 target_rat_type;
+ imcf_uint8 pdn_id; /* LTE: Default EBI, NR: PDU Session ID */
+ imcf_uint8 acct_id;
+ imcf_uint32 network_id;
+ imcf_uint8 if_name[IMC_MAX_IF_NAME_LENGTH];
+} imcb_imc_handover_begin_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 source_rat_type;
+ imcf_uint8 target_rat_type;
+ imcf_uint8 is_success;
+ imcf_uint8 pdn_id; /* LTE: Default EBI, NR: PDU Session ID */
+ imcf_uint32 network_id;
+ imcf_uint8 if_name[IMC_MAX_IF_NAME_LENGTH];
+ imcf_uint8 acct_id;
+ imcf_uint8 pad[3];
+} imcb_imc_handover_end_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 account_id;
+ imcf_uint8 rat_type; //imc_rat_type_enum
+ imcf_uint8 ecmp; /* imc_ecmp_enum */
+ imcf_uint8 need_broadcast;
+ imcf_uint32 reg_service; /* ims_reg_service_enum */
+ imcf_uint32 reg_event; // ims_reg_event_enum
+ imcf_uint32 sip_uri_type;// ims_reg_sip_uri_type_enum
+} imcb_imc_reg_ems_mode_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 tlv_data[IMC_MAX_ILM_BUFFER_LEN];
+} imcb_imc_ims_debug_info_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 tlv_data[IMC_MAX_DEBUG_INFO_IND_LEN];
+} imcb_imc_ims_debug_info_ind_struct;
+
+
+/* TTY */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id; /*< Account ID*/
+ imcf_uint32 enable;
+} imcb_imc_cc_tty_enable_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id; /*< Account ID*/
+ imcf_uint32 result; // imcb_imc_call_stop_result_enum
+} imcb_imc_cc_tty_enable_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_int32 acct_id;
+ imcf_uint32 call_id; /*assigned by CC*/
+ imcf_uint8 local_text_capability; /* GTT/RTT on/off */
+ imcf_uint8 remote_text_capability; /* remote sdp text status */
+ imcf_uint8 local_text_status; /* local sdp text status */
+ imcf_uint8 real_remote_text_capability; /* remote Contact header text cap */
+} imcb_imc_cc_tty_capability_req_struct;
+
+/* RTT */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 acct_id; /*< Account ID*/
+ imcf_uint32 call_id;
+ imcf_uint32 op; /* 0: downgrade, 1: upgrade */
+} imcb_imc_cc_rtt_op_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 acct_id; /*< Account ID*/
+ imcf_uint32 call_id;
+ imcf_uint32 result;
+} imcb_imc_cc_rtt_op_rsp_struct;
+
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id;
+} imcb_imc_release_pdn_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id;
+} imcb_imc_release_pdn_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id; /* Account ID, normal account of the SIM */
+ imcf_uint32 atcmd_id;
+ imcf_uint32 pad[2];
+ imcf_uint8 cmdline[IMC_ATCMD_MAX_CMDLINE_LEN];
+} imcb_imc_atcmd_relay_req_struct,
+imcb_imc_atcmd_relay_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_IMCB_IMC_IMS_TIMER_STATUS_IND
+ * AT+EITMR=<timer_type>,<timer_status>,<timer_length>
+ */
+typedef struct imcb_imc_ims_timer_status_ind {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id; /*< Account ID*/
+ imcf_uint32 timer_type; // ims_timer_type_enum
+ imcf_uint32 timer_status; // ims_timer_status_enum
+ imcf_uint16 timer_length;
+ imcf_uint8 pad[2];
+} imcb_imc_ims_timer_status_ind_struct;
+
+typedef enum {
+ IMCB_IMC_SRU_OP_UNSPEC = 0,
+ IMCB_IMC_SRU_OP_REQUEST_RF = 1,
+ IMCB_IMC_SRU_OP_RELEASE_RF = 2
+} imcb_imc_sru_operation_enum;
+
+typedef enum {
+ IMCB_IMC_SRU_METHOD_UNSPEC = 0,
+ IMCB_IMC_SRU_METHOD_INIT_REG = 1,
+ IMCB_IMC_SRU_METHOD_RE_REG = 2,
+ IMCB_IMC_SRU_METHOD_SUBSCRIBE = 3,
+ IMCB_IMC_SRU_METHOD_USSD = 4,
+ IMCB_IMC_SRU_METHOD_CONF_SUBSCRIBE = 5,
+ IMCB_IMC_SRU_METHOD_MWI_SUBSCRIBE = 6,
+ IMCB_IMC_SRU_METHOD_CALLPULL_SUBSCRIBE = 7,
+ IMCB_IMC_SRU_METHOD_INIT_REG_LOW = 8
+} imcb_imc_sru_method_enum;
+
+/*
+ * @brief
+ * @note MSG_ID_IMCB_IMC_SRU_INFO_REQ
+ * To control RF resource from REG UA module (Initial reqiester, re-register, subscribe)
+ */
+typedef struct imcb_imc_sru_info_req {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id; /*< Account ID*/
+ imcf_uint8 op; //imcb_imc_sru_operation_enum
+ imcf_uint8 method; //imcb_imc_sru_method_enum
+ imcf_uint8 pad[2];
+ imcf_uint32 access_rat_type; //imc_access_rat_type
+} imcb_imc_sru_info_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_IMCB_IMC_PS_DATA_OFF_IND
+ *
+ */
+typedef struct imcb_imc_ps_data_off_ind {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id;
+ imcf_uint32 psdataoff_status; // ims_ps_data_off_status_enum
+ imcf_uint32 exempt_service; // ims_ps_data_off_exempt_service_enum
+} imcb_imc_ps_data_off_ind_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_IMCB_IMC_SMS_CS_AVAILABILITY_REQ
+ *
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 acct_id;
+ imcf_uint32 request_id;
+} imcb_imc_sms_cs_availability_req_struct;
+
+typedef enum {
+ IMCB_IMC_CS_NETWORK_NOT_AVAILABLE = 0,
+ IMCB_IMC_CS_NETWORK_HOME,
+ IMCB_IMC_CS_NETWORK_ROAMING,
+} imcb_imc_cs_network_status_enum;
+
+/*
+ * @brief
+ * @note MSG_ID_IMCB_IMC_SMS_CS_AVAILABILITY_CNF
+ *
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 acct_id;
+ imcf_uint32 request_id;
+ imcf_uint32 cs_network_status; /* imcb_imc_cs_network_status_enum */
+} imcb_imc_sms_cs_availability_cnf_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_IMCB_IMC_CC_CS_AVAILABILITY_REQ
+ *
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 acct_id;
+ imcf_uint32 call_id;
+} imcb_imc_cc_cs_availability_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_IMCB_IMC_CC_CS_AVAILABILITY_CNF
+ *
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 acct_id;
+ imcf_uint32 call_id;
+ imcf_uint32 cs_network_status; /* imcb_imc_cs_network_status_enum */
+} imcb_imc_cc_cs_availability_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 transaction_id;
+} imcb_imc_pcscf_discovery_via_sim_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 transaction_id;
+ imc_pcscf_list_struct pcscf_list;
+} imcb_imc_pcscf_discovery_via_sim_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 transaction_id;
+ imcf_uint8 cause;
+} imcb_imc_pcscf_discovery_via_sim_rej_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_acct_id_t acct_id;
+ imcf_uint8 cause;
+} imcb_imc_ims_reset_suggestion_timer_req_struct;
+
+#endif /* IMC_IMCB_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/imcb_imsua_struct.h b/mcu/protocol/interface/ims/imcb_imsua_struct.h
new file mode 100644
index 0000000..63498c3
--- /dev/null
+++ b/mcu/protocol/interface/ims/imcb_imsua_struct.h
@@ -0,0 +1,2218 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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:
+ * ---------
+ * imsua_struct.h
+ *
+ * Project:
+ * --------
+ * VMOLY
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 06 10 2022 yung-liang.tsou
+ * [MOLY00876156] [T750][AT]AT+CLCC????
+ *
+ * .AT+CLCC support in IMS
+ *
+ * 01 21 2022 ari.simonen
+ * [MOLY00681724] [Gen97][MT6891][Petrus-P][R0][SQC][VDF][WW FT][Germany][Hannover][SA][TCID: FreeTest]WFC-VoLTE handover issues when pcscf addresses have been changed
+ *
+ * Changed REG to wait for IP ready during HO to prevent it from trying to re-register with an old local IP address.
+ *
+ * 12 16 2021 xin.ni
+ * [MOLY00774161] [mt2735][CS eCall][NG eCall][patch back] ecall patch back from NR15.R3.MD700.MP.ECAll.DEV. IMS interface part
+ *
+ * .
+ *
+ * 12 14 2021 ot_gang.zhang
+ * [MOLY00729679] [MT6873][Margaux][Q0][R3][JAPAN][SOFTBANK][SA][SIM][Lab][Voice-06-01-02] Please help to support OTR-Voice-032069
+ * 08 09 2021 rohit.sharma
+ *
+ * .
+ *
+ *
+ * .
+ *
+ * [MOLY00629619] [Gen97][In-house][India][Delhi][MT6853][4GMM][IFT][RJIO][TCID: DSCP_002][STATIC] Device is not sending DSCP marking for Video packets when upgrading from Volte to Vilte call, it sends CS0 instead of AF31
+ * .
+ * 05 17 2021 zhongyong.wang
+ * [MOLY00606601] [MT6853][Mouton][R0][WW FT][Colombia][IMS][Regression][SQC Excluded][VoLTE][Claro] IPv4 CP and IPv6 UP requirement by AMX
+ *
+ * .
+ *
+ * 11 13 2020 peng.pan
+ * [MOLY00589298] [MT6853][Mouton][VzW][CCP2][LC][HQ][RnS][E911][2.41][UE Without UICC, SIB1 PS 911 Supported and SIB2 Emergency Call Not Barred, UE Recently Acquired List has LTE, PS 911 Call Unsuccessful, 911 call Completes on available System ]911 call on the UMTS fail
+ * support handle invite 407 with "Proxy-Authenticate" header.
+ *
+ * 11 13 2020 peng.pan
+ * [MOLY00589298] [MT6853][Mouton][VzW][CCP2][LC][HQ][RnS][E911][2.41][UE Without UICC, SIB1 PS 911 Supported and SIB2 Emergency Call Not Barred, UE Recently Acquired List has LTE, PS 911 Call Unsuccessful, 911 call Completes on available System ]911 call on the UMTS fail
+ * support handle invite 407 with "Proxy-Authenticate" header.
+ *
+ * 11 13 2020 peng.pan
+ * support handle invite 407 with "Proxy-Authenticate" header.
+ *
+ * 11 02 2020 ari.simonen
+ * [MOLY00589251] [Gen97][MP7][Memory reduction] Stage V - IMCB cleanup and dialog/account# reduce
+ *
+ * Memory optimizations: created common CC context and stream pools to be shared between SIMs/accounts.
+ * This helps to reduce SIM structure memory consumption, as all SIMs and accounts don't need to support the maximum dialog count simultaneously.
+ * Also cleaned up some unused video parameters from IMCB structures.
+ *
+ * 11 02 2020 ari.simonen
+ * [MOLY00578691] [Gen97][IMS] IMCB memory optimizations
+ *
+ * Memory optimizations: created common CC context and stream pools to be shared between SIMs/accounts.
+ * This helps to reduce SIM structure memory consumption, as all SIMs and accounts don't need to support the maximum dialog count simultaneously.
+ * Also cleaned up some unused video parameters from IMCB structures.
+ *
+ * 09 30 2020 vend_mti_wspsd_012
+ * [MOLY00551167] �?�?测必解】�?19420】�?NZ】�?OP_Spark】�?FT】�?DVT】与QC视频通�?,无hold call tone
+ *
+ * .
+ *
+ * 09 18 2020 shu-lin.yang
+ * [MOLY00569420] [US_DEV] VZW 2020JUN IMSUA
+ *
+ * R3 TC3 VLIST.
+ *
+ * 07 29 2020 jin.liang
+ * [MOLY00550525] [Oppo] Please provide CMCC, CT and CU來電影?feature
+ * .
+ *
+ * 07 15 2020 jin.liang
+ * [MOLY00517562] [self]503???问题?请优??
+ * .
+ *
+ * 06 30 2020 tsung-kun.shih
+ * [MOLY00508983] [Call UA][TCL][Tokyo Lite TMO][RCS][Android Q]Apply RCS enriched calling feature patch for platform part.
+ *
+ * .
+ *
+ * 06 17 2020 tsung-kun.shih
+ * [MOLY00508983] [Call UA][TCL][Tokyo Lite TMO][RCS][Android Q]Apply RCS enriched calling feature patch for platform part.
+ *
+ * .
+ *
+ * 05 07 2020 yun.bai
+ * [MOLY00514296] ??19131??PVT??海??测??19131CU+CT?(IMS+IMS),�?�1CU??MO???3G,???2/20
+ *
+ * .
+ *
+ * 03 17 2020 rahul.gupta
+ * [MOLY00505502] [MT6885][Petrus][MP3][in-house FTA][FDD][4G][RnS][34.229-1][SIM1][TCID:G.15.18] unexpected receive event at the IMS_Server port
+ *
+ * .
+ *
+ * 12 04 2019 yuheng.li
+ * [MOLY00443618] [VMOLY]Gen97 Common Feature : Call and Supplementary Service �� IMSProtoc9-support 607
+ *
+ * .
+ *
+ * 10 29 2019 yuheng.li
+ * [MOLY00443618] [VMOLY]Gen97 Common Feature : Call and Supplementary Service �� IMSProtoc9-support 607
+ *
+ * .
+ * 11 08 2019 mika.leinonen
+ * [MOLY00457775] [MT6885][Petrus][MP1][India][Delhi][FT][VoLTE][JIO][IDEA][Auto][SWIFT][ASSERT] file:mcu/protocol/ims/stack/src/reg/reg.c line:9665
+ * Change Reg UA client field to 64-bit because there can be more than 32 UA contexts
+ *
+ * 11 08 2019 mika.leinonen
+ * [MOLY00457775] [MT6885][Petrus][MP1][India][Delhi][FT][VoLTE][JIO][IDEA][Auto][SWIFT][ASSERT] file:mcu/protocol/ims/stack/src/reg/reg.c line:9665
+ * Change Reg UA client field to 64-bit because there can be more than 32 UA contexts
+ *
+ * 10 07 2019 mika.leinonen
+ * [MOLY00445818] [Pre-sanity][Exception][alps-mp-q0.mp2][k6885v1_64_kasan][2019.09.20.13.00][BootAfterFlash] Externel (EE) Current Executing Process: Trigger time:[2019-09-20 15:38:38.220423] md1:(MCU_core0,vpe1,tc2
+ * Optimized routing of video capability settings from VTS to IMSUA.
+ *
+ * 10 07 2019 mika.leinonen
+ * [MOLY00445818] [Pre-sanity][Exception][alps-mp-q0.mp2][k6885v1_64_kasan][2019.09.20.13.00][BootAfterFlash] Externel (EE) Current Executing Process: Trigger time:[2019-09-20 15:38:38.220423] md1:(MCU_core0,vpe1,tc2
+ * Optimized routing of video capability settings from VTS to IMSUA.
+ *
+ * 09 23 2019 ssu-hsien.wu
+ * [MOLY00438070] [Gen97][IMS] STKCALL and STKUSSD over IMS
+ *
+ * .
+ *
+ * 09 04 2019 mika.leinonen
+ * [MOLY00437261] [MT6297][UESIM][VMOLY APOLLO][VoLTE][TC 15_17] PANI header wrong value
+ * Fixed IMSUA message definition to use enum type to be in sync with IMC interface
+ *
+ * 07 18 2019 sami.jutila
+ * [MOLY00423377] [Gen97][IMS] UT test case enabling.
+ *
+ * .
+ *
+ * 07 12 2019 theresa.yang
+ * [MOLY00357356] [US_DEV][VzW][2018_JUN] CALL/SMS UA dev
+ *
+ * Patch back VZW -MOLY00357356.
+ *
+ * [MOLY00357356] 97 Submarine scope patches sync to Submarine DEVs
+ * [MOLY00357356][US_DEV][VzW][2018_JUN] CALL/SMS UA dev
+ * [MOLY00382398][VZW][ZTE][6761] Client API patch back
+ * [MOLY00386977][US_DEV][VzW][2018_OCT] CALLUA dev
+ * [MOLY00394340][US_DEV][MDMI] CALL UA part
+ * [MOLY00395789][US_DEV][VZW][PST tool] phone context uri
+ *
+ *
+ * 04 29 2019 xw.wang
+ * [MOLY00399953] [Korea TTA][IMS][volte_stack][TTA] Registration fail retry for 403 error response
+ * 05 10 2019 shu-lin.yang
+ * [MOLY00357356] [US_DEV][VzW][2018_JUN] CALL/SMS UA dev
+ *
+ * [MOLY00357356] 97 Submarine scope patches sync to Submarine DEVs
+ * [MOLY00357356][US_DEV][VzW][2018_JUN] CALL/SMS UA dev
+ * [MOLY00382398][VZW][ZTE][6761] Client API patch back
+ * [MOLY00386977][US_DEV][VzW][2018_OCT] CALLUA dev
+ * [MOLY00394340][US_DEV][MDMI] CALL UA part
+ * [MOLY00395789][US_DEV][VZW][PST tool] phone context uri
+ *
+ * .
+ * tta submarine
+ * 07 04 2019 mika.leinonen
+ * [MOLY00367126] [Gen97][IMS] VoLTE porting
+ * IMS UT enhancements
+ *
+ * 07 03 2019 olli.kettunen
+ * [MOLY00401775] [Submarine] Improve UA to VDM mo call cnf/rsp SAP trace output
+ *
+ * - Improve tracing of UA-IMCB SAP mo_call_cnf by using enum type
+ * - Improve tracing of IMCB-IMC SAP mo_call_rsp by using enum instead of imcf_uint8 in SAP message struct definitions.
+ * - Improve IMC-VDM SAP mo_call_cnf tracing by using enum definitions in message structure.
+ * .
+ *
+ * 04 01 2019 olli.kettunen
+ * [MOLY00396145] IMS interface version 0x71 to submarine dev
+ * .
+ * Update to IMS IF version 0x71 content
+ *
+ * 03 21 2019 sami.jutila
+ * [MOLY00393545] [Submarine][M1] Plmn_type used wrongly
+ * .
+ *
+ * 02 25 2019 tsung-kun.shih
+ * [MOLY00386710] [Submarine][M1][TMOUS][CAT][18Q4][54658][L_IR94_174811_1]fail to established MO video call
+ * Caculate suggest resource_retain_timer to IMCB for TMO.
+ * UA should send pqos to IMCB for TMO normal call combine attach case where
+ * pqos = mo_invite_to_bw_cnf_timer_timeout - Dur_INVITE_to_SIP183.
+ *
+ * 01 29 2019 szu-chieh.chiu
+ * [MOLY00381194] [Submarine][M1][1stCall] decode fail on the ILM messages between IMSUA/IMCB/IMS_STACK
+ * ua naming refine.
+ *
+ * 01 25 2019 szu-chieh.chiu
+ * [MOLY00381194] [Submarine][M1][1stCall] decode fail on the ILM messages between IMSUA/IMCB/IMS_STACK
+ * call ua naming refine.
+ *
+ * 01 25 2019 szu-chieh.chiu
+ * [MOLY00381194] [Submarine][M1][1stCall] decode fail on the ILM messages between IMSUA/IMCB/IMS_STACK
+ * .
+ *
+ * 01 24 2019 szu-chieh.chiu
+ * [MOLY00381194] [Submarine][M1][1stCall] decode fail on the ILM messages between IMSUA/IMCB/IMS_STACK
+ * [gen97] UA msg/struct refine.
+ *
+ * 01 23 2019 mika.leinonen
+ * [MOLY00380857] [Submarine][M1][1stCall][CMCC]IMS register fail
+ * Update IMS Stack interface - flag field usage
+ *
+ * 01 21 2019 ari.simonen
+ * [MOLY00367126] [Gen97][IMS] VoLTE porting
+ * IMS structure reorganization to make BW message tracing work.
+ *
+ * 01 10 2019 ari.simonen
+ * [MOLY00367126] [Gen97][IMS] VoLTE porting
+ *
+ * RTP port allocation and REG message handling fixes.
+ *
+ * 01 07 2019 kari.suvivaara
+ * [MOLY00373280] [Gen97][IMS][VoLTE Porting] Coding/UT Phase 1
+ *
+ * IMS UA and Stack ramp up on MD side.
+ *
+ * 01 07 2019 kari.suvivaara
+ * [MOLY00373280] [Gen97][IMS][VoLTE Porting] Coding/UT Phase 1
+ *
+ * IMS UA and Stack ramp up on MD side.
+ *
+ ****************************************************************************/
+
+#ifndef _IMSUA_STRUCT_H_
+#define _IMSUA_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ims_common_def.h"
+#include "ims_dbg_enum.h"
+#if 0
+/* under construction !*/
+#endif
+
+#define VOLTE_MAX_SUB_PARAM_LENGTH (128)
+
+
+enum VoLTE_Event_Timer_ID_e {
+ VoLTE_Event_Timer_Reg = 1,
+ VoLTE_Event_Timer_UA = 2,
+ VoLTE_Event_Timer_IMCB = 3,
+ VoLTE_Event_Timer_Stack = 4,
+};
+
+enum VoLTE_Event_3gpp_OOS_State_e {
+ VoLTE_Event_3gpp_OOS_Start = 1,
+ VoLTE_Event_3gpp_OOS_End = 2,
+};
+
+enum VoLTE_SRVCC_info_result_e {
+ VOLTE_SRVCC_Result_STARTED = 0, // when VOLTE_SRVCC_START, this is the result
+ VoLTE_SRVCC_Result_SUCCESS, // when VOLTE_SRVCC_END, this is the result if SRVCC is success
+ VoLTE_SRVCC_Result_FAILED, // when VOLTE_SRVCC_END, this is the result if SRVCC is failed
+ VoLTE_SRVCC_Result_CANCELLED, // when VOLTE_SRVCC_END without VOLTE_SRVCC_START before, this must be the result. it indicates UA need to send reINVITE
+ VoLTE_SRVCC_Result_Unknown,
+ VoLTE_SRVCC_Result_Max,
+};
+
+typedef enum VoLTE_Event_Call_stop_cause_e {
+ VoLTE_Event_Call_Cause_Normal = 0, /*receive BYE request, MO hangup, or User reject to receive the all. mapping to CS NORMAL_CLEARING = 16. */
+ VoLTE_Event_Call_Cause_Abnormal, /*memory allocation failed, or no resource for call session in the very first begin!!! VDM can require CS to make call, mapping to CS RESOURCE_UNAVAILABLE = 47*/
+ VoLTE_Event_Call_Cause_NoNumber, /*no dialing number for MO call. mapping to CS Unassigned/Unobtainable number, VDM can require CS to make call. UNOBTAINABLE_NUMBER = 1*/
+ VoLTE_Event_Call_Cause_Unregistered, /*Account is not registered, VDM can require CS to make call, mapping to CS NORMAL_UNSPECIFIED = 31*/
+ VoLTE_Event_Call_Cause_Disconnect, /* register state go to disconnect state, mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone*/
+ VoLTE_Event_Call_Cause_BeCancel, /* we cancel the call, which is receive MO_HANGUP_REQ from AP side. Mapping to CS_NORMAL_CLEANING = 16*/
+ VoLTE_Event_Call_Cause_BeReject, /* receive 4xx,5xx,6xx from the peer side to cancel request, mapping to CS USER_BUSY = 17, play busy tone*/
+ VoLTE_Event_Call_Cause_BeReject_380,/* receive 380 alternative service, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make call */
+ VoLTE_Event_Call_Cause_BeReject_380_emergency_to_CS,/* receive 380 alternative service, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make call */
+ VoLTE_Event_Call_Cause_BeReject_380_emergency_rereg,/* receive 380 alternative service with reason, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make call */
+ VoLTE_Event_Call_Cause_BeReject_380_emergency_to_normal_CS, /* receive 380 alternative service, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make a normal call*/
+ VoLTE_Event_Call_Cause_BeReject_480,/*receive 480, mapping to CS TEMPORARY_FAILURE = 41, play congestion tone*/
+ VoLTE_Event_Call_Cause_BeReject_503,/*receive 503 Service Unavailable, retry-after time period is reported. In this time period, UE cannot use VoLTE to make call. mapping to CS SERVICE_NOT_AVAILABLE = 63.*/
+ VoLTE_Event_Call_Cause_TX_Timeout, /*receive internal error from SIPTX, or AP side do not send confirmation for this MT call until we timeout, we abort the MT call presentation. mapping to CS SERVICE_NOT_AVAILABLE = 63.*/
+ VoLTE_Event_Call_Cause_No_Privacy, /* network cannot support privacy service when user requires critical level. mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone */
+ VoLTE_Event_Call_Cause_PrecondFail, /* receive 580 precondition failure, mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone*/
+ VoLTE_Event_Call_Cause_SecondCall, /* receive second call request, VDM can have its policy, mapping to CS NORMAL_UNSPECIFIED = 31*/
+ VoLTE_Event_Call_Cause_NoMediaContent,/* peer side do not provide SDP for media content or receive 488, mapping to CS QOS_NOT_AVAIL = 49, play congestion tone*/
+ VoLTE_Event_Call_Cause_InvalidMsg, /*SIP message is not valid, so that the related SS command cannot be executed. This happens in SS function. mapping to CS FACILITY_REJECTED = 29. no tone.*/
+ VoLTE_Event_Call_Cause_InvalidCmd, /*The command cannot be executed since no related call session is existed. This happens in SS function. cannot mapping to CS, AP side require to send 0. no tone.*/
+ VoLTE_Event_Call_Cause_InvalidIdx, /*Cannot find the acct_id or call_id in the Request command, we send Confirmation with failure result and this cause. mapping to CS NORMAL_UNSPECIFIED = 31*/
+ VoLTE_Event_Call_Cause_SRVCC, /*1. for MO call, we do not send VOLTE_MO_CALL_CNF and SRVCC, 2. For MT call, we do not receive EAIC from AP and SRVCC, then we shall reject the call by this cause.*/
+ VoLTE_Event_Call_Cause_Facility_Rejected, /*receive 504 with XML body for Registrartion Restoration. Mapping to CS FACILITY_REJECTED =29*/
+ VoLTE_Event_Call_Cause_dedicated_bearer_timeout, /*for MO call, send INVITE but no response and timeout, send indication to VDM and VDM can use CS (TMO, CMCC requirement), mapping to CS BEARER_NOT_AVAIL = 58*/
+ VoLTE_Event_Call_Cause_Retry_CS, /*for TMO requirenment, some Error code need to retry CS */
+ VoLTE_Event_Call_Cause_No_Retry, /*for TMO requirenment, some Error code need to do no action */
+ VoLTE_Event_Call_Cause_Retry_IMS_CS, /*for TMO requirenment, some Error code need to retry IMS first then CSFB */
+ VoLTE_Event_Call_Cause_Aborted, /*pending operation was aborted*/
+ VoLTE_Event_Call_Cause_Timer_B_Expiry, /*for DCM requirement, do PCSCF error handling */
+ VoLTE_Event_Call_Cause_ECT_Timeout, /*for assured ECT timeout, mapping to 899 AT-interface cause value. */
+ VoLTE_Event_Call_Cause_Timer_VZW_Expiry, /*for VZW HVOLTE*/
+ VoLTE_Event_Call_Cause_AC_Barred, /*for VZW HVOLTE*/
+ VoLTE_Event_Call_Cause_NW_Rej_Conn, /*for VZW HVOLTE*/
+ VoLTE_Event_Call_Cause_BeReject_503_Outage_text, /*for VZW HVOLTE*/
+ VoLTE_Event_Call_Cause_Change_PCSCF, /*for TMOUS EMC*/
+ VoLTE_Event_Call_Cause_RTT_EMC_Fail, /*for TMOUS RTT EMC*/
+ VoLTE_Event_Call_Cause_BeReject_380_emergency_normal_CS_to_IMS, /* receive 380 alternative service,VDM can require CS to make a normal call and after that a normal IMS call to 380 contact urn. */
+ VoLTE_Event_Call_Cause_BeReject_380_emergency_action_elem_unknown, /* receive 380 alternative service, without contact header, XML type is emergency but unknown or missing action element. */
+ VoLTE_Event_Call_Cause_Retry_IMS_Video_To_Voice, /*for CMCC requirement, if original call type is video, some error codes need to retry ims as voice*/
+ VoLTE_Event_Call_Cause_No_Retry_Bar_IMS, /*Huawei's requirement, bar IMS for some specific scenarios, then VDM will only try CS during a time period*/
+ VoLTE_Event_Call_Cause_BeReject_380_FlightMode_CS, /* For Claro requirement , UI should pop-up message when receive 380 alternative service during FlightMode, mapping to CS SERVICE_NOT_AVAILABLE = 380. Other behavior is same as Bereject_380 (cause = 7)*/
+ /*add here*/
+ VoLTE_Event_Call_Cause_Max,
+} VoLTE_Event_Call_stop_cause_e;
+
+
+typedef enum VoLTE_Event_Call_Stop_result_e {
+ VoLTE_Event_Call_Result_OK = 0,
+ VoLTE_Event_Call_Result_FAILED,
+ /*add here*/
+ VoLTE_Event_Call_Result_Max,
+} VoLTE_Event_Call_Stop_result_e;
+
+enum VoLTE_Event_Call_Rel_cause_e {
+ VoLTE_Event_Call_Rel_Cause_None = 0,
+ VoLTE_Event_Call_Rel_Cause_eHRPD,
+ VoLTE_Event_Call_Rel_Cause_3Way,
+ VoLTE_Event_Call_Rel_Cause_Econf,
+ VoLTE_Event_Call_Rel_Cause_Release,
+ VoLTE_Event_Call_Rel_Cause_Unregistered,
+ VoLTE_Event_Call_Rel_Cause_Ect,
+ VoLTE_Event_Call_Rel_Cause_DeReg,
+ VoLTE_Event_Call_Rel_Cause_Altclost,
+ VoLTE_Event_Call_Rel_Cause_Twlan911,
+ VoLTE_Event_Call_Rel_Cause_psdataoff,
+ VoLTE_Event_Call_Rel_Cause_low_battery,
+ VoLTE_Event_Call_Rel_Cause_no_coverage,
+ VoLTE_Event_Call_Rel_Cause_607_unwanted,
+ VoLTE_Event_Call_Rel_Cause_rereg_403,
+ VoLTE_Event_Call_Rel_Cause_TAU_fail,
+ VoLTE_Event_Call_Rel_Cause_EPSFB_fail,
+ VoLTE_Event_Call_Rel_Cause_EPSFB_Redirection_fail,
+ /*add here*/
+ VoLTE_Event_Call_Rel_Cause_Max,
+};
+
+typedef enum VoLTE_Event_Call_Mode_e {
+ VoLTE_Event_Call_Mode_AUDIO = 0, ///< 0, normal voice call
+ VoLTE_Event_Call_Mode_VIDEO_AUDIO, ///< 1, normal video call
+ VoLTE_Event_Call_Mode_VIDEO_ONLY, ///< 2, only video call
+ /*add here*/
+ /* specifical call */
+ VoLTE_Event_Call_Mode_AUDIO_CONF = 11, ///< 11, audio conference call
+ VoLTE_Event_Call_Mode_VIDEO_CONF, ///< 12, video conference call
+
+ VoLTE_Event_Call_Mode_AUDIO_CONF_PARTS = 21, ///< 21, audio conference call participant
+ VoLTE_Event_Call_Mode_VIDEO_CONF_PARTS, ///< 22, video conference call participant
+ /*add here*/
+ /* emergency */
+ VoLTE_Event_Call_Mode_EMERGENCY = 81, ///< 81, generic emergency call
+ VoLTE_Event_Call_Mode_EMER_POLICE, ///< 82, police emergency call
+ VoLTE_Event_Call_Mode_EMER_FIRE, ///< 83, fire emergency call
+ VoLTE_Event_Call_Mode_EMER_GAS,
+ VoLTE_Event_Call_Mode_EMER_AMBULANCE,
+ VoLTE_Event_Call_Mode_EMER_ANIMAL,
+ VoLTE_Event_Call_Mode_EMER_MARINE,
+ VoLTE_Event_Call_Mode_EMER_MOUNTAIN,
+ VoLTE_Event_Call_Mode_EMER_PHYSICIAN,
+ VoLTE_Event_Call_Mode_EMER_POISON,
+ VoLTE_Event_Call_Mode_EMER_TRAFFIC, ///< 91, for CMCC 122, traffic emergency call
+ VoLTE_Event_Call_Mode_EMER_COUNTRY_SPECIFIC,
+ VoLTE_Event_Call_Mode_EMER_MANUAL_ECALL,
+ VoLTE_Event_Call_Mode_EMER_AUTO_ECALL,
+ VoLTE_Event_Call_Mode_EMER_UNRECOGNIZED = 99, ///< for any unrecognized emergency call by upperlayer
+
+ /*Korea TTA special emergency service*/
+ VoLTE_Event_Call_Mode_EMER_KR_INTELLIGENCE = 201,
+ VoLTE_Event_Call_Mode_EMER_KR_SPIES,
+ VoLTE_Event_Call_Mode_EMER_KR_SCHOOL_VIOLENCE,
+ VoLTE_Event_Call_Mode_EMER_KR_CYBERTERRORISM,
+ VoLTE_Event_Call_Mode_EMER_KR_SMUGGLING,
+
+ /*add here*/
+ VoLTE_Event_Call_Mode_Max,
+} VoLTE_Event_Call_Mode_e;
+
+enum VoLTE_Event_EVTA_Mode_e {
+ VoLTE_Event_EVTA_MODE_UNKNOWN = 0,
+ VoLTE_Event_EVTA_MODE_ACCEPT_AS_VOICE = 1,
+ VoLTE_Event_EVTA_MODE_ACCEPT_AS_ONEWAY_VIDEO_RX = 2,
+ VoLTE_Event_EVTA_MODE_ACCEPT_AS_ONEWAY_VIDEO_TX = 3,
+ VoLTE_Event_EVTA_MODE_MAX,
+};
+
+enum VoLTE_Event_IMS_call_mode_e {
+ VoLTE_Event_IMS_call_mode_none = 0,
+ VoLTE_Event_IMS_call_mode_original = 1,
+ VoLTE_Event_IMS_call_mode_client_api = 2,
+ VoLTE_Event_IMS_call_mode_max,
+};
+
+/**************
+VoLTE_Event_BW_Act_e
+
+Feature: (1~8bit)
+1. Audio: (1st bit)
+2. Video: (2nd bit)
+3. Text: (3rd bit)
+
+Action: (9~16bit)
+1. 00: VoLTE UA requires (used in BW_IND/BW_MOD/BW_CNF)
+2. 01: IMCB notify that the bandwidth is modified (used in BW_NEGO)
+3. 10: IMCB notify that the Audio bandwidth is released (used in BW_NEGO)
+***************/
+
+enum VoLTE_Event_BW_Act_e {
+ VoLTE_Event_BW_Act_Required_Failed = 0, //0x00 0000 0000
+ VoLTE_Event_BW_Act_Audio_only = 1, //0x00 0000 0001
+ VoLTE_Event_BW_Act_Video_only = 2, //0x00 0000 0010
+ VoLTE_Event_BW_Act_Audio_Video = 3, //0x00 0000 0011
+ VoLTE_Event_BW_Act_Text_only = 4, //0x00 0000 0100
+ VoLTE_Event_BW_Act_Audio_Text = 5, //0x00 0000 0101
+ VoLTE_Event_BW_Act_Video_Text = 6, //0x00 0000 0110
+ VoLTE_Event_BW_Act_Audio_Video_Text = 7, //0x00 0000 0111
+
+ VoLTE_Event_BW_Modify = 256, //0x01 0000 0000
+
+ VoLTE_Event_BW_Rel_Audio_only = 513, //0x10 0000 0001
+ VoLTE_Event_BW_Rel_Video_only = 514, //0x10 0000 0010
+ VoLTE_Event_BW_Rel_Audio_Video = 515, //0x10 0000 0011
+ VoLTE_Event_BW_Rel_Text_only = 516, //0x10 0000 0100
+ VoLTE_Event_BW_Rel_Audio_Text = 517, //0x10 0000 0101
+ VoLTE_Event_BW_Rel_Video_Text = 518, //0x10 0000 0110
+ VoLTE_Event_BW_Rel_Audio_Video_Text = 519, //0x10 0000 0111
+
+ VoLTE_Event_BW_Act_Max,
+};
+
+typedef enum VoLTE_MO_Call_Uri_Scheme_Type_e {
+ VOLTE_MO_CALL_URI_SCHEME_TYPE_NONE = 0,
+ VOLTE_MO_CALL_URI_SCHEME_TYPE_SIP = 1,
+ VOLTE_MO_CALL_URI_SCHEME_TYPE_TEL = 2,
+ VOLTE_MO_CALL_URI_SCHEME_TYPE_URN = 3,
+ /*add here*/
+ VOLTE_MO_CALL_URI_SCHEME_TYPE_Max,
+} VoLTE_MO_Call_Uri_Scheme_Type_e;
+
+/*Emergency Call Category may be multiple. We use bitmap to specify it.
+ Currently, this is used for SRVCC call context transfer.
+*/
+typedef enum VoLTE_Event_ECC_Category_e {
+ VoLTE_Event_Ecc_Ctgy_Unspecified = 0,
+ VoLTE_Event_Ecc_Ctgy_POLICE = 0x1,
+ VoLTE_Event_Ecc_Ctgy_AMBULANCE = 0x2,
+ VoLTE_Event_Ecc_Ctgy_FIRE = 0x4,
+ VoLTE_Event_Ecc_Ctgy_MARINE = 0x8,
+ VoLTE_Event_Ecc_Ctgy_MOUNTAIN = 0x10,
+ VoLTE_Event_Ecc_Ctgy_eCall_Manual = 0x20,
+ VoLTE_Event_Ecc_Ctgy_eCall_Automatic = 0x40,
+ VoLTE_Event_Ecc_Ctgy_GAS = 0x100,
+ VoLTE_Event_Ecc_Ctgy_ANIMAL = 0x200,
+ VoLTE_Event_Ecc_Ctgy_PHYSICIAN = 0x400,
+ VoLTE_Event_Ecc_Ctgy_POISON = 0x800,
+ VoLTE_Event_Ecc_Ctgy_TRAFFIC = 0x1000, /// for CMCC requirement
+ VoLTE_Event_Ecc_Ctgy_COUNTRY_SPECIFIC = 0x2000,
+ VoLTE_Event_Ecc_Ctgy_Unrecognized = 0x8000, /// for any unrecognized sos type
+
+ /*Korea TTA special emergency Ctgy*/
+ VoLTE_Event_Ecc_Ctgy_KR_SPIES = 0x3,
+ VoLTE_Event_Ecc_Ctgy_KR_INTELLIGENCE = 0x6,
+ VoLTE_Event_Ecc_Ctgy_KR_SMUGGLING = 0x9,
+ VoLTE_Event_Ecc_Ctgy_KR_SCHOOL_VIOLENCE = 0x12,
+ VoLTE_Event_Ecc_Ctgy_KR_CYBERTERRORISM = 0x13,
+
+ VoLTE_Event_Ecc_Ctgy_Max = 0xFFFF,
+} VoLTE_Event_ECC_Category_e;
+
+
+/****************eCall part************************/
+#ifdef __NG_ECALL_SUPPORT__
+typedef struct _VoLTE_Event_eCall_In_Band_MSD_Transfer_Rsp {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id; /*acct whom send the MSD*/
+ kal_uint32 call_id; /*assigned by CC*/
+} VoLTE_Event_eCall_In_Band_MSD_Transfer_Rsp_t;
+
+typedef struct _VoLTE_Event_eCall_Update_MSD_Rsp {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id; /*acct whom send the MSD*/
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint8 msd_data_len;
+ kal_uint8 msd_data[IMS_MAX_MSD_LENGTH];
+} VoLTE_Event_eCall_Update_MSD_Rsp_t;
+#endif
+/************end of eCall part*********************/
+
+typedef enum VoLTE_Event_Call_Service_e {
+ VoLTE_Event_Call_Service_Normal = 0,
+ VoLTE_Event_Call_Service_Call_Pull = 1,
+ VoLTE_Event_Call_Service_STK = 2,
+ VoLTE_Event_Call_Service_eCAll_test = 100,
+ VoLTE_Event_Call_Service_eCAll_reconfiguration = 101,
+
+ /*add here*/
+ VoLTE_Event_Call_Service_Max,
+} VoLTE_Event_Call_Service_e;
+
+enum VoLTE_Event_Call_Prog_ECPI_e {
+ VoLTE_Event_Call_Prog_ECPI_0 = 0,
+ VoLTE_Event_Call_Prog_ECPI_2 = 2,
+ VoLTE_Event_Call_Prog_ECPI_6 = 6,
+ VoLTE_Event_Call_Prog_ECPI_7 = 7,
+ VoLTE_Event_Call_Prog_ECPI_131 = 131,
+ VoLTE_Event_Call_Prog_ECPI_132 = 132,
+ VoLTE_Event_Call_Prog_ECPI_133 = 133,
+ /*IMS only*/
+ VoLTE_Event_Call_Prog_ECPI_135 = 135,
+ VoLTE_Event_Call_Prog_ECPI_136 = 136,
+ /*add here*/
+ VoLTE_Event_Call_Prog_ECPI_Max,
+};
+
+enum VoLTE_Event_Call_Hold_By_e {
+ VoLTE_Event_Call_Hold_By_Local = 0,
+ VoLTE_Event_Call_Hold_By_Remote = 1,
+ VoLTE_Event_Call_ECT_Hold_By_Remote = 2,
+ /*add here*/
+ VoLTE_Event_Call_Hold_By_Max,
+};
+
+enum VoLTE_Event_Call_Media_e {
+ VoLTE_Event_Call_Media_OFF = 0,
+ VoLTE_Event_Call_Media_ON,
+ /*add here*/
+ VoLTE_Event_Call_Media_Max,
+};
+
+enum VoLTE_SRVCC_dlg_state_e {
+ VoLTE_SRVCC_DlgState_EARLY = 0, // local generated ringback tone or MT ringing
+ VoLTE_SRVCC_DlgState_EARLY_WITH_MEDIA, // network generated ringback tone, for MO only
+ VoLTE_SRVCC_DlgState_ACTIVE,
+ VoLTE_SRVCC_DlgState_ON_HOLD,
+ VoLTE_SRVCC_DlgState_PRE_ALERTING,
+ VoLTE_SRVCC_DlgState_PRE_ALERTING_WITH_MEDIA, // network generated ringback tone, for MO only
+ VOLTE_SRVCC_DlgState_ACTIVE_RETRY_CC_CONNECT, // MT call not receive Invite 200 OK ACK in IMS,
+ // after SRVCC, CS retry CC_CONNECT
+ VoLTE_SRVCC_DlgState_Max,
+};
+
+enum VoLTE_SRVCC_direction_e {
+ VoLTE_SRVCC_Direction_MOBILE_ORIGINATED = 0,
+ VoLTE_SRVCC_Direction_MOBILE_TERMINATING,
+ VoLTE_SRVCC_Direction_Max,
+};
+
+enum VoLTE_Event_Mod_session_result_e {
+ VoLTE_Event_VT_Result_OK = 0,
+ VoLTE_Event_VT_Result_WrongVideoDir, /*wrong video direction cause up/downgrade failed*/
+ VoLTE_Event_VT_Result_InternalError, /*acct or session object broken*/
+ VoLTE_Event_VT_Result_BW_ModifyFailed, /*bandwidth modify require failed*/
+ VoLTE_Event_VT_Result_NotActiveState, /*call session not in active state*/
+ VoLTE_Event_VT_Result_LocalRel, /*local release:Ex.SRVCC,Hungup,call refresh timer timeout,no rpt packets*/
+ VoLTE_Event_VT_Result_IsHold, /*the call at hold state*/
+ VoLTE_Event_VT_Result_NoNeed, /*acorrding the video action state, not need up/downgrade */
+ VoLTE_Event_VT_Result_InvalidPara, /*input parameter invalid*/
+ VoLTE_Event_VT_Result_ReqTimeout, /*SIPTX error,transaction timeout*/
+ VoLTE_Event_VT_Result_RejectByRemote, /*reject by remote*/
+ VoLTE_Event_VT_Result_Canceled, /*canceled by user*/
+ VoLTE_Event_VT_Result_InVideoAction, /*video action is ongoing*/
+ VoLTE_Event_VT_Result_IsReinvite, /*is_reinvite*/
+};
+
+enum VoLTE_Event_Mod_session_cancel_cause_e {
+ VoLTE_Event_Mod_session_cancel_cause_cancel = 0,
+ VoLTE_Event_Mod_session_cancel_cause_timeout,
+};
+
+enum VoLTE_Event_Mod_session_cancel_result_e {
+ VoLTE_Event_Mod_session_cancel_success = 0,
+ VoLTE_Event_Mod_session_cancel_fail_downgrade,
+ VoLTE_Event_Mod_session_cancel_fail_normal,
+ VoLTE_Event_Mod_session_cancel_fail_disable,
+ VoLTE_Event_Mod_session_cancel_fail_remote_reject, /*remote reject the upgrade while local cancel*/
+ VoLTE_Event_Mod_session_cancel_fail_internal_error,
+ VoLTE_Event_Mod_session_cancel_fail_local_rel,
+ VoLTE_Event_Mod_session_cancel_fail_bw_modify_fail,
+ VoLTE_Event_Mod_session_cancel_fail_req_timeout,
+};
+
+enum VoLTE_Event_ims_timer_type_e {
+ VoLTE_Event_IMS_TIMER_THROTTLING = 0,
+ VoLTE_Event_IMS_TIMER_ESTABLISHMENT,
+ VoLTE_Event_IMS_TIMER_VZW,
+ VoLTE_Event_IMS_TIMER_EPSFBWATCHDOG,
+};
+
+enum VoLTE_Event_ims_timer_status_e {
+ VoLTE_Event_IMS_TIMER_STATUS_START = 0,
+ VoLTE_Event_IMS_TIMER_STATUS_STOP,
+ VoLTE_Event_IMS_TIMER_STATUS_EXPIRY
+};
+
+enum VoLTE_Event_ect_type_e {
+ VoLTE_Event_ect_type_none = 0,
+ VoLTE_Event_ect_type_blind = 1,
+ VoLTE_Event_ect_type_assured = 2, // default
+ VoLTE_Event_ect_type_assured_push = 3, // TMOUS Digit
+ VoLTE_Event_ect_type_cancel = 4,
+};
+
+enum VoLTE_Event_SS_Operation_e {
+ VoLTE_Event_Operation_Unknown = 0,
+ VoLTE_Event_Operation_Hold = 1,
+ VoLTE_Event_Operation_Unhold = 2,
+ VoLTE_Event_Operation_Hold_n_Unhold = 3,
+ VoLTE_Event_Operation_Hold_n_Accept = 4,
+ VoLTE_Event_Operation_Remote_Hold = 5,
+ VoLTE_Event_Operation_Remote_Unhold = 6,
+ VoLTE_Event_Operation_Rel_All = 11, // AT+CHLD=6, AT+CHLD=1 if no holding session, we shall release all active sessions
+ VoLTE_Event_Operation_ATH_Rel_All = 12, // ATH
+ VoLTE_Event_Operation_Rel_Bg = 13, //AT+CHLD=0
+ VoLTE_Event_Operation_Rel_Wait = 14, //AT+CHLD=0
+ VoLTE_Event_Operation_Rel_Active_n_Resume = 15, // AT+CHLD=1 for holding session
+ VoLTE_Event_Operation_Create_3way_Conf = 16, // AT+CHLD=3, create 3-way conference
+ VoLTE_Event_Operation_Add_Other_To_Conf = 17, // AT+ECONF, Add conference participant
+ VoLTE_Event_Operation_Create_Conf_Bridge = 18, // no specifc AT command. send INVITE to conference focus
+ VoLTE_Event_Operation_Remove_Other_From_Conf= 19, // AT+ECONF, Remove conference participant
+ VoLTE_Event_Operation_Join_Other_To_Conf = 20, // AT+ECONF, Join current active session to conference participant
+ VoLTE_Event_Operation_Rel_Active_n_Accept = 21, // AT+CHLD=1, for waiting session
+ VoLTE_Event_Operation_Accept = 22, // AT+CHLD=2, for waiting session
+ VoLTE_Event_Operation_Ecctrl = 23, // AT+ECCTRL
+ VoLTE_Event_Operation_Conf_W_Resource_List = 24, // no specifc AT command. send INVITE to conference focus with resource list
+ VoLTE_Event_Operation_Ect = 25, // AT+CHLD=4
+ /*add here*/
+ VoLTE_Event_Operation_Rel_Max,
+};
+
+enum VoLTE_Event_SS_Sub_event_e {
+ VoLTE_Event_Subscribe_Unknown = 0,
+ VoLTE_Event_Subscribe_Conference = 1,
+ /*add here*/
+ VoLTE_Event_Subscribe_Max,
+};
+
+enum VoLTE_Event_SS_Notify_Service_e {
+ VoLTE_Event_Notify_call_waiting = 0, //data length is VOLTE_MAX_DATA_TO_IMC_LENGTH
+ VoLTE_Event_Notify_call_barring = 1, //data length is VOLTE_MAX_DATA_TO_IMC_LENGTH
+ VoLTE_Event_Notify_call_forwarding = 2, //data length is VOLTE_MAX_DATA_TO_IMC_LENGTH
+ VoLTE_Event_Notify_MWI = 3, //data length is VOLTE_MAX_DATA_TO_UPPER_LENGTH
+ VoLTE_Event_Notify_Conference = 4, //data length is VOLTE_MAX_DATA_TO_UPPER_LENGTH
+ VoLTE_Event_Notify_mt_call_forwarding = 5, //data length is VOLTE_MAX_DATA_TO_IMC_LENGTH
+ VoLTE_Event_Notify_dialog = 6,
+ /*add here*/
+ VoLTE_Event_Notify_Max,
+};
+
+enum VoLTE_Event_SMS_Type_e {
+ VoLTE_Event_SMS_Type_Unknown = 0,
+ VoLTE_Event_SMS_Type_3GPP_SMS = 1, ///< the SMS message
+ VoLTE_Event_SMS_Type_3GPP_SMS_REPORT = 2, ///< the SMS report message
+ VoLTE_Event_SMS_Type_Text = 3, ///< the text message
+ VoLTE_Event_SMS_Type_3GPP2_SMS = 4, ///< the 3GPP2 SMS message
+ /*add here*/
+ VoLTE_Event_SMS_Max,
+};
+
+enum VoLTE_Event_SMS_Result_e {
+ //VoLTE_Event_SMS_Result_Success = 0,
+ VoLTE_Event_SMS_Result_Account_Error = 1, ///< the account id is invalid */
+ VoLTE_Event_SMS_Result_SendSIP_Error = 2, ///< send the SIP message error */
+ VoLTE_Event_SMS_Result_InReplyTo_NoMatch = 3, ///< the In-Reply-To not match */
+ VoLTE_Event_SMS_Result_InReplyTo_Timeout = 4, ///< the In-Reply-To timeout */
+ VoLTE_Event_SMS_Result_NoSlot = 5, ///< can't allocat the resource */
+ VoLTE_Event_SMS_Result_Parameter_Error = 6, ///< the event parameter is invalid */
+ VoLTE_Event_SMS_Result_Unregistered = 7, ///< receive the event or SIP message, in the Non-Registered state */
+ VoLTE_Event_SMS_Result_Timer_F_Expiry = 8,
+ /*add here*/
+ VoLTE_Event_SMS_Result_Max,
+};
+
+typedef enum VoLTE_Event_380_XML_type_e {
+ VoLTE_Event_380_XML_type_not_set = 0,
+ VoLTE_Event_380_XML_type_emergency,
+ VoLTE_Event_380_XML_type_restoration,
+ VoLTE_Event_380_XML_type_unknown,
+ /*add here*/
+ VoLTE_Event_380_XML_type_Max,
+} VoLTE_Event_380_XML_type_e;
+
+typedef enum VoLTE_Event_380_XML_action_e {
+ VoLTE_Event_380_XML_action_not_set = 0,
+ VoLTE_Event_380_XML_action_emergency_registration,
+ VoLTE_Event_380_XML_action_initial_registration,
+ VoLTE_Event_380_XML_action_anonymous_emergencycall,
+ VoLTE_Event_380_XML_action_unknown,
+ /*add here*/
+ VoLTE_Event_380_XML_action_Max,
+} VoLTE_Event_380_XML_action_e;
+
+typedef enum VoLTE_Event_Call_Cause_380_contact_e {
+ VoLTE_Event_Call_Cause_380_contact_not_set = 0,
+ VoLTE_Event_Call_Cause_380_contact_sos_and_category_known,
+ VoLTE_Event_Call_Cause_380_contact_sos_and_category_unknown,
+ VoLTE_Event_Call_Cause_380_contact_not_sos,
+ VoLTE_Event_Call_Cause_380_contact_no_contact,
+ /*add here*/
+ VoLTE_Event_Call_Cause_380_contact_Max,
+} VoLTE_Event_Call_Cause_380_contact_e;
+
+typedef enum VoLTE_Event_Call_Cause_380_xml_e {
+ VoLTE_Event_Call_Cause_380_xml_not_set = 0,
+ VoLTE_Event_Call_Cause_380_xml_action_emergency_reg,
+ VoLTE_Event_Call_Cause_380_xml_action_unknown_category_mapped,
+ VoLTE_Event_Call_Cause_380_xml_action_unknown_category_not_mapped,
+ VoLTE_Event_Call_Cause_380_xml_action_unknown_no_contact,
+ /*add here*/
+ VoLTE_Event_Call_Cause_380_xml_Max,
+} VoLTE_Event_Call_Cause_380_xml_e;
+
+enum VoLTE_Event_STK_Setup_Call_e {
+ VoLTE_Event_STK_Setup_Call_IF_NO_ANOTHER_CALL,
+ VoLTE_Event_STK_Setup_Call_WITH_REDIAL_IF_NO_ANOTHER_CALL,
+ VoLTE_Event_STK_Setup_Call_PUT_ANOTHER_HOLD,
+ VoLTE_Event_STK_Setup_Call_WITH_REDIAL_PUT_ANOTHER_HOLD,
+ VoLTE_Event_STK_Setup_Call_DISCON_ANOTHER,
+ VoLTE_Event_STK_Setup_Call_WITH_REDIAL_DISCON_ANOTHER,
+ VoLTE_Event_STK_Setup_Call_MAX
+};
+
+typedef struct _VoLTE_Event_Init {
+ LOCAL_PARA_HDR
+ kal_int32 max_acct; ///< max account number
+} VoLTE_Event_Init_t;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint32 sip[IMS_DBG_SIP_EVT_TAG_NUM];
+ kal_uint32 em[IMS_DBG_EM_EVT_TAG_NUM];
+} ims_dbg_setting_req_struct;
+
+typedef struct _VoLTE_Event_Radio_Link_Monitor_ {
+ LOCAL_PARA_HDR
+ kal_uint8 id; ///< the acount id
+ kal_uint8 event_type; ///< 0: Signal is weak 1: LTE OOS search is on-going and may not recover
+ kal_uint16 lte_band; ///< the LTE band number, UA don't use it currently, just reserve(0: Invalid, 1-256: possible LTE band range)
+} VoLTE_Event_Radio_Link_Monitor_t ;
+
+typedef struct _VoLTE_Event_Handover_Start_Notify {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+} VoLTE_Event_Handover_Start_Notify_t;
+
+typedef struct _VoLTE_Event_Handover_Stop_Notify {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+} VoLTE_Event_Handover_Stop_Notify_t;
+
+typedef struct _VoLTE_Event_Handover_IP_Ready_Notify {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id; /* reg client information */
+} VoLTE_Event_Handover_IP_Ready_Notify_t;
+
+typedef struct _VoLTE_rtcp_fb_param_type {
+ kal_uint16 rtcp_fb_id; // such as "ack","nack","trr-int","ccm","app"
+ kal_uint16 rtcp_fb_param; // such as "pli"
+ kal_char rtcp_fb_sub_param[VOLTE_MAX_SUB_PARAM_LENGTH]; //such as smaxpr=120 of tmmbr
+} VoLTE_rtcp_fb_param_type_t;
+
+typedef struct _VoLTE_Event_rtp_ext_map {
+ kal_uint8 ext_id;
+ kal_uint8 direction;
+ kal_uint8 reserved[2];
+ kal_char ext_uri[VOLTE_MAX_EXTMAP_URI_SIZE];
+} VoLTE_Event_rtp_ext_map_t;
+
+typedef struct _VoLTE_Event_image {
+ unsigned int x; ///< RFC6236 image attributes
+ unsigned int y;
+ char sar[VOLTE_MAX_SDP_EGBYTE_LENGTH];
+ char par[VOLTE_MAX_SDP_EGBYTE_LENGTH];
+ char q[VOLTE_MAX_SDP_EGBYTE_LENGTH];
+} VoLTE_Event_image_t;
+
+typedef struct _VoLTE_Event_h264_cap_cfg {
+ kal_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
+
+ kal_uint16 max_recv_level; ///< require 2 bytes, reserved.
+ kal_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
+ kal_uint8 pading;
+
+ kal_char sprop_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_char sprop_level_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_uint32 max_mbps; ///< reserved. VT service provides default value
+ kal_uint32 max_smbps; ///< reserved. VT service provides default value
+ kal_uint32 max_fs; ///< reserved. VT service provides default value
+ kal_uint32 max_cpb; ///< reserved. VT service provides default value
+ kal_uint32 max_dpb; ///< reserved. VT service provides default value
+ kal_uint32 max_br; ///< reserved. VT service provides default value
+ kal_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value
+
+ kal_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value
+ kal_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value
+ kal_uint8 in_band_parameter_sets; //0, 1
+ kal_uint8 level_asymmetry_allowed; //0, 1
+ kal_uint32 framerate;
+ kal_uint32 frame_width;
+ kal_uint32 frame_height;
+ VoLTE_Event_image_t image_send[VOLTE_MAX_IMAGE_NUM];
+ VoLTE_Event_image_t image_recv[VOLTE_MAX_IMAGE_NUM];
+} VoLTE_Event_h264_cap_cfg_t;
+
+typedef struct _VoLTE_Event_hevc_cap_cfg {
+ kal_uint8 profile_space; ///< Range: 0~3, 0 if not present.
+ kal_uint8 profile_id; ///< Range: 0~31, 1 if not present.
+ kal_uint8 tier_flag; ///< Range: 0 or 1, 0 if not present.
+ kal_uint8 level_id; ///< Range: 0~255, 93(level 3.1) if not present.
+ kal_uint8 interop_constraints[6]; ///< Range: 0~0xffffff
+ kal_uint8 pad[2];
+ kal_uint8 profile_comp_ind[4]; ///< Range: 0~0xffff
+ kal_uint8 sprop_sub_layer_id; ///< Range: 0~6, 6 if not present.
+ kal_uint8 recv_sub_layer_id; ///< Range: 0~6, sprop_sub_layer_id if not present.
+ kal_uint8 max_recv_level_id; ///< Range: 0~255, level_id if not present.
+ kal_uint8 tx_mode; ///< "SRST", "MRST" or "MRMT"
+ kal_char sprop_vps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_char sprop_sps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_char sprop_pps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_char sprop_sei[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_uint32 max_lsr; ///< Range: MaxLumaSR~16*MaxLumaSR, MaxLumaSR if not present.
+ kal_uint32 max_lps; ///< Range: MaxLumaPS~16*MaxLumaPS, MaxLumaPS if not present.
+ kal_uint32 max_cpb; ///< Range: MaxCPB~16*MaxCPB, MaxCPB if not present.
+ kal_uint32 max_dpb; ///< Range: 1~16, 6 if not present.
+ kal_uint32 max_br; ///< Range: MaxBR~16*MaxBR, MaxBR if not present.
+ kal_uint32 max_tr; ///< Range: MaxTileRows~16*MaxTileRows, MaxTileRows if not present.
+ kal_uint32 max_tc; ///< Range: MaxTileCols~16*MaxTileCols, MaxTileCols if not present.
+ kal_uint32 max_fps;
+ kal_uint32 sprop_max_don_diff; ///< Range: 0~32767, 0 if not present.
+ kal_uint32 sprop_depack_buf_nalus; ///< Range: 0~32767, 0 if not present.
+ kal_uint32 sprop_depack_buf_bytes; ///< Range: 0~4294967295, 0 if not present.
+ kal_uint32 depack_buf_cap; ///< Range: 1~4294967295, 1 if not present.
+ kal_uint32 sprop_seg_id; ///< Range: 0~3, 0 if not present.
+ kal_uint32 sprop_spatial_seg_idc; ///< Range: 0~4095(BASE16), 0 if not present.
+ kal_char dec_parallel_cap[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_char include_dph[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_uint32 framerate;
+ kal_uint32 frame_width;
+ kal_uint32 frame_height;
+ VoLTE_Event_image_t image_send[VOLTE_MAX_IMAGE_NUM];
+ VoLTE_Event_image_t image_recv[VOLTE_MAX_IMAGE_NUM];
+} VoLTE_Event_hevc_cap_cfg_t;
+
+typedef union _VoLTE_Event_Video_Codec_cap_cfg {
+ VoLTE_Event_h264_cap_cfg_t h264_codec;
+ VoLTE_Event_hevc_cap_cfg_t hevc_codec;
+} VoLTE_Event_Video_Codec_cap_cfg_t;
+
+typedef struct _VoLTE_Event_video_media_bitrate {
+ kal_uint32 format; ///<H264 or H265
+ kal_uint32 profile;
+ kal_uint32 level;
+ kal_uint32 minbitrate;
+ kal_uint32 bitrate;
+} VoLTE_Event_video_media_bitrate_t;
+
+typedef struct _VoLTE_Event_H264_PS {
+ kal_uint32 profile_level_id;
+ kal_char sprop_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+} VoLTE_Event_video_H264_PS_t;
+
+typedef struct _VoLTE_Event_HEVC_PS {
+ kal_uint8 profile_id; ///< Range: 0~31, 1 if not present.
+ kal_uint8 level_id; ///< Range: 0~255, 93(level 3.1) if not present.
+ kal_uint8 pad[2];
+ kal_int8 sprop_vps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_int8 sprop_sps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_int8 sprop_pps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_int8 sprop_sei[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+} VoLTE_Event_video_HEVC_PS_t;
+
+typedef struct _VoLTE_Event_video_capability {
+ kal_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
+
+ kal_uint16 max_recv_level; ///< require 2 bytes, reserved.
+ kal_uint8 packetization_mode; ///< VoLTE_Event_Packetize_Mode_e
+ kal_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
+
+ kal_int8 sprop_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_int8 sprop_level_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ kal_uint32 max_mbps; ///< reserved. VT service provides default value
+ kal_uint32 max_smbps; ///< reserved. VT service provides default value
+ kal_uint32 max_fs ; ///< reserved. VT service provides default value
+ kal_uint32 max_cpb ; ///< reserved. VT service provides default value
+ kal_uint32 max_dpb ; ///< reserved. VT service provides default value
+ kal_uint32 max_br ; ///< reserved. VT service provides default value
+ kal_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value
+
+ kal_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value
+ kal_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value
+ kal_uint8 in_band_parameter_sets; //0, 1
+ kal_uint8 level_asymmetry_allowed; //0, 1
+
+
+ /*ViLTE*/
+
+ VoLTE_Event_Video_Codec_cap_cfg_t codec_cap; // Use mime_Type to judge the codec cap.
+
+ /* rtp_rtcp part */
+ kal_uint8 media_type; //such as video/audio
+ kal_uint8 mime_Type; // such as H.264
+ kal_uint8 rtp_profile;//supported rtp_profile for special media such as RTP/AVP,RTP/AVPF
+ kal_uint8 reserved;
+ kal_uint32 sample_rate;//timescale, which use to calculte rtp timestamp
+
+ /*@ rtp packet transmission param
+ *@ contain b=AS,PT,packetization params related to the codec type
+ *@ ----------------------------------------------------------------------
+ *@consider the negotiated params also can set through rtp_rtcp_capability
+ *@ rtp_rtcp_capability must be can for one explicit item
+ *@ then should not contain alternatives in rtp_packetize_params,such as "packetization-moe=1;packetization-mode=0"
+ *@ ----------------------------------------------------------------------
+ */
+ kal_uint32 packetize_mode;
+
+ kal_uint32 extmap_num;
+ VoLTE_Event_rtp_ext_map_t extmap[VOLTE_MAX_EXTMAP_NUM];//now only CVO support
+
+ kal_uint32 rtcp_rsize; //a=rtcp_rsize
+
+
+ /*@ rtcp packet transmission param
+ *@ contain b=RS,b=RR,and feedback message type
+ *@ may be serveral feedback message supported like:
+ *@ ---------sdp--------------
+ *@ a=rtcp-fb:98 ccm tstr
+ *@ a=rtcp-fb:98 ccm fir
+ *@ a=rtcp-fb:* ccm tmmbr smaxpr=120
+ *@ ---------------------------
+ *@ so need a array of rtcp_fb_type_t to represent all thest feedback messages
+ *@ rtcp_fb_param_num represent the size of the array
+ */
+ kal_uint32 rtcp_fb_param_num;
+ VoLTE_rtcp_fb_param_type_t rtcp_fb_type[VOLTE_MAX_RTCP_FB_SIZE]; // SIZE 5
+} VoLTE_Event_video_capability_t;
+
+typedef struct _VoLTE_Event_VT_Cap_Setting {
+ /* This structure needs to be in sync with imsvt_imcb_get_cap_rsp_struct */
+ PEER_BUFF_HDR
+ unsigned int request_id;
+ unsigned int data_len;
+ kal_int32 id; ///< the account id
+ kal_int32 video_cap_num; ///< number of cap.
+ VoLTE_Event_video_capability_t video_cap[VOLTE_MAX_VIDEO_CAP_NUM]; ///< video capability from MA
+ VoLTE_Event_video_H264_PS_t h264_ps[VOLTE_MAX_PS_NUM]; // SIZE 32
+ VoLTE_Event_video_HEVC_PS_t hevc_ps[VOLTE_MAX_PS_NUM]; // SIZE 32
+ VoLTE_Event_video_media_bitrate_t bitrate_info[VOLTE_MAX_PROFILELEVEL_SIZE]; // SIZE 32
+ kal_uint8 sim_slot_id; /* start from 0 */
+ kal_uint8 pad2;
+ kal_uint16 operator_code;
+} VoLTE_Event_VT_Cap_Setting_t;
+
+typedef struct _VoLTE_Event_Call_Start {
+ LOCAL_PARA_HDR
+ kal_char dial_number[VOLTE_MAX_URI_LENGTH];
+ kal_int32 acct_id; /*acct whom to make the call */
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint8 clir; /* for MO call */
+ VoLTE_Event_Call_Mode_e call_mode;
+ VoLTE_MO_Call_Uri_Scheme_Type_e uri_scheme;
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; /*cell id from modem*/
+ VoLTE_Event_LBS_Location_t loc_info;
+ VoLTE_Event_Call_Service_e service;
+ plmn_type_enum plmn;
+ kal_uint8 rtt_setting;
+ kal_uint8 redial_setting; /*VoLTE_Event_STK_Setup_Call_e*/
+ kal_char digit_from_line_number[VOLTE_MAX_URI_LENGTH];
+ kal_uint8 stk_type; /*ims_stk_type_enum*/
+
+/*ecall over IMS*/
+#ifdef __NG_ECALL_SUPPORT__
+ kal_uint8 msd_data_len;
+ kal_uint8 msd_data[IMS_MAX_MSD_LENGTH];
+#endif
+
+} VoLTE_Event_Call_Start_t;
+
+typedef struct _VoLTE_Event_MT_Call_Rsp {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id; /*acct whom to make the call */
+ kal_uint32 call_id; /*assigned by CC, so we give 254 as INVALID_CALL_ID*/
+ kal_uint8 seq_no; /*sequence number assigned by Call UA*/
+ kal_uint8 call_mode; /*VoLTE_Event_Call_Mode_e*/
+ kal_uint16 result; /*VoLTE_Event_Call_Stop_result_e*/
+ kal_int32 response_code; /*SIP response code, 0: means we use default value*/
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; /*cell id from modem*/
+ VoLTE_Event_LBS_Location_t loc_info;
+ kal_uint8 rtt_setting;
+ kal_uint8 pad[3];
+} VoLTE_Event_MT_Call_Rsp_t;
+
+typedef struct _VoLTE_Event_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; /*cell id from modem*/
+ VoLTE_Event_LBS_Location_t loc_info;
+ kal_uint32 cause;
+} VoLTE_Event_Req_t;
+
+typedef struct _VoLTE_Event_Call_Refresh {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_int8 p_assert_uri[VOLTE_MAX_ASSERTED_URI];
+} VoLTE_Event_Call_Refresh_t;
+
+typedef struct _VoLTE_Event_SRVCC_Info {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 result; /*VoLTE_Event_srvcc_info_result_e*/
+} VoLTE_Event_SRVCC_Info_t;
+
+typedef struct _VoLTE_Event_Conf_Call_Start {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ VoLTE_Event_Call_Mode_e call_mode;
+ kal_uint8 conf_call_participants;
+ kal_uint8 pad[2];
+ kal_uint8 conf_call_number_list[VOLTE_MAX_CALL_NUM_IN_CONF][VOLTE_MAX_CONF_CONTROL_URI_LENGTH];
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH];
+ VoLTE_Event_LBS_Location_t loc_info;
+ plmn_type_enum plmn;
+} VoLTE_Event_Conf_Call_Start_t;
+
+typedef struct _VoLTE_Event_Ims_Notify_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint8 msg_id; // VoLTE_Event_Ims_Notify_e
+ kal_uint8 ver; // structure version number start from 0
+ kal_uint16 rsv; // reserve bit must fill 0 (for 4 byte alignment)
+ kal_uint8 ext[IMC_MAX_IMS_NOTIFY_EXT_LEN]; // reserve for future other usage
+ kal_uint8 cell_id[IMC_MAX_CELL_ID_LEN];
+ VoLTE_Event_LBS_Location_t loc_info;
+} VoLTE_Event_Ims_Notify_Req_t;
+
+typedef struct _VoLTE_Event_Altc_Address_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 status; //0:V6_changed,1:V4_changed
+ kal_uint8 v6_address[VOLTE_MAX_ADDRESS_LENGTH];
+ kal_uint8 v4_address[VOLTE_MAX_ADDRESS_LENGTH];
+ kal_int16 v6_on; //1:TURE,0:FALSE
+ kal_int16 v4_on; //1:TURE,0:FALSE
+} VoLTE_Event_Altc_Address_Req_t;
+
+typedef struct _VoLTE_Event_Call_Rel {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id; /*reg client information*/
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_int32 result; /*VoLTE_Event_Call_Stop_result_e*/
+ kal_int32 cause; /*VoLTE_Event_Call_stop_cause_e*/
+ kal_int32 rel_cause; /*VoLTE_Event_Call_Rel_cause_e*/
+} VoLTE_Event_Call_Rel_t;
+
+typedef struct _VoLTE_Event_Queue_SIP {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_int32 cmd_type;
+ void *sip_msg; // 97 TODO: change bac kto sip_message_struct*?
+} VoLTE_Event_Queue_SIP_t;
+
+typedef struct _VoLTE_Event_MT_Call_Abort {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id; /*acct whom to make the call */
+ kal_uint32 seq_no; /*sequence number assigned by Call UA*/
+ kal_int32 cause; /*VoLTE_Event_Call_stop_cause_e*/
+} VoLTE_Event_MT_Call_Abort_t;
+
+typedef struct _VoLTE_Event_Media_Mod_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint8 call_mode; /*VoLTE_Event_Call_Mode_e*/
+ kal_uint8 camera_direction; /*VoLTE_Event_RTP_DIRECTION_e*/
+ kal_uint8 audio_direction; /*VoLTE_Event_RTP_DIRECTION_e*/
+ kal_uint8 audio_codec; // voip_codec_enum(opaque)
+ kal_int8 p_assert_uri[VOLTE_MAX_ASSERTED_URI];
+} VoLTE_Event_Media_Mod_Ind_t;
+
+typedef struct _VoLTE_Event_Mod_Session_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint8 call_id; /* identify this call */
+
+ // 0 : inactive (VoLTE)
+ // 1 : active (ViLTE)
+ kal_uint8 mode;
+ kal_uint8 camera_direction; /*VoLTE_Event_RTP_DIRECTION_e*/
+ kal_uint8 result; /*VoLTE_Event_Mod_session_result_e*/
+} VoLTE_Event_Mod_Session_Req_t;
+
+typedef struct _VoLTE_Event_Mod_Session_Rsp {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint8 call_id; /* identify this call */
+
+ // 0 : inactive (VoLTE)
+ // 1 : active (ViLTE)
+ kal_uint8 mode;
+ kal_uint8 camera_direction; /*VoLTE_Event_RTP_DIRECTION_e*/
+ kal_uint8 result; /*VoLTE_Event_Call_Stop_result_e*/
+} VoLTE_Event_Mod_Session_Rsp_t;
+
+typedef struct _VoLTE_Event_MT_VT_Special_Accept_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH];
+ kal_uint32 mode; /* VoLTE_Event_EVTA_Mode_e */
+ VoLTE_Event_LBS_Location_t loc_info;
+} VoLTE_Event_MT_VT_Special_Accept_Req_t;
+
+typedef struct _VoLTE_Event_Mod_Session_Cancel_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint8 call_id; /* identify this call */
+ kal_uint8 cause; /*VoLTE_Event_Mod_session_cancel_cause_e*/
+} VoLTE_Event_Mod_Session_Cancel_Req_t;
+
+typedef struct _VoLTE_Event_Text_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 mode; /*0:off 1:on*/
+} VoLTE_Event_Text_Req_t;
+
+typedef struct _VoLTE_Event_Media_Anbr_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ kal_uint32 anbr_value; /* Audio AS value comes from ANBR */
+} VoLTE_Event_Media_Anbr_Ind_t;
+
+typedef struct _VoLTE_Event_Media_Anbr_Rsp {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ kal_uint32 anbr_result; /* SIP negotiation response 0: fail, 1: success */
+} VoLTE_Event_Media_Anbr_Rsp_t;
+
+typedef struct _VoLTE_Event_RTT_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 call_id;
+ kal_int32 op; /* 0: downgrade, 1: upgrade */
+} VoLTE_Event_RTT_Req_t;
+
+typedef struct _VoLTE_Event_RTT_Rsp {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 call_id;
+ kal_int32 result; /* 0: accept, 1: reject */
+} VoLTE_Event_RTT_Rsp_t;
+
+typedef struct _VoLTE_Event_Video_config {
+ // required by RTP and RTCP session
+ kal_uint8 call_id; // identify this call
+ kal_uint8 video_payload_type; // RTP payload type
+ kal_uint8 remote_addr_type; ///< VoLTE_Event_IP_Version_e
+ kal_uint8 rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
+
+ kal_uint16 remote_rtp_port;
+ kal_uint16 remote_rtcp_port;
+ kal_uint16 local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
+ kal_uint16 local_rtp_port; ///< rtp port number for media attribute in SDP message
+ kal_uint8 remote_rtp_address[VOLTE_IPADDR_LENGTH];
+ kal_uint8 remote_rtcp_address[VOLTE_IPADDR_LENGTH];
+ kal_uint8 local_address[VOLTE_IPADDR_LENGTH];
+
+ kal_uint32 video_b_as; // RTP bandwidth
+ kal_uint32 video_b_rs; // RTCP sender bandwidth
+ kal_uint32 video_b_rr; // RTCP receiver bandwidth
+
+
+ /* ViLTE */
+ /* new structure here */
+ kal_uint8 media_type; //such as video/audio
+ kal_uint8 mime_Type; // such as H.264
+ kal_uint16 rtcp_rsize;
+ kal_uint32 packetize_mode;
+ kal_uint32 sample_rate; //timescale, which use to calculte rtp timestamp
+ kal_uint32 rtcp_fb_param_num;
+ VoLTE_rtcp_fb_param_type_t rtcp_fb_type[VOLTE_MAX_RTCP_FB_SIZE];
+ kal_uint8 rtp_profile; //supported rtp_profile for special media such as RTP/AVP,RTP/AVPF
+ kal_uint8 camera_direction; ///<VoLTE_Event_RTP_DIRECTION_e
+ kal_uint8 bHold; //local hold
+ kal_uint8 bHeld; //remote hold
+
+ VoLTE_Event_rtp_ext_map_t extmap;//now only CVO support
+
+ /* WFC */
+ kal_uint32 video_dscp;
+ kal_uint32 video_soc_priority;
+
+ // require by H.264 or H265
+ VoLTE_Event_Video_Codec_cap_cfg_t codec_cfg;
+} VoLTE_Event_Video_config_t,
+volte_event_video_config_struct;
+
+typedef struct _VoLTE_Event_BW_Require {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint32 action; /*VoLTE_Event_BW_Act_e*/
+ kal_uint32 send_bw_nego; /*send bw_nego or not when one media is ok, 0: don't send, 1:send*/
+ kal_uint32 precond_needed; /*0: Precondition not specified, 1: Precondition required, 2: Precondition NOT required*/
+ kal_uint32 pqos; /* use this to override tqos (ms) */
+ volte_event_video_config_struct vt_config;
+ volte_event_media_config_struct media_config;
+} VoLTE_Event_BW_Require_t;
+
+typedef struct _VoLTE_Event_Video_update {
+ // required by RTP and RTCP session
+ kal_uint8 call_id; // identify this call
+ kal_uint8 video_payload_type; // RTP payload type
+ // required by RTP and RTCP session
+ kal_uint8 rtp_direction; //VoLTE_Event_RTP_DIRECTION_e
+ kal_uint8 remote_addr_type; ///< VoLTE_Event_IP_Version_e
+ kal_uint16 remote_rtp_port;
+ kal_uint16 remote_rtcp_port;
+ kal_uint16 local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
+ kal_uint16 local_rtp_port; ///< rtp port number for media attribute in SDP message
+ kal_uint8 remote_rtp_address[VOLTE_IPADDR_LENGTH];
+ kal_uint8 remote_rtcp_address[VOLTE_IPADDR_LENGTH];
+ kal_uint8 local_address[VOLTE_IPADDR_LENGTH];
+
+ kal_uint32 video_b_as; // RTP bandwidth
+ kal_uint32 video_b_rs; // RTCP sender bandwidth
+ kal_uint32 video_b_rr; // RTCP receiver bandwidth
+
+ /* ViLTE */
+ kal_uint8 media_type; //such as video/audio
+ kal_uint8 mime_Type; // such as H.264
+ kal_uint16 rtcp_rsize;
+ kal_uint32 packetize_mode;
+ kal_uint32 sample_rate; //timescale, which use to calculte rtp timestamp
+ kal_uint32 rtcp_fb_param_num;
+ VoLTE_rtcp_fb_param_type_t rtcp_fb_type[VOLTE_MAX_RTCP_FB_SIZE];
+ kal_uint8 rtp_profile; //supported rtp_profile for special media such as RTP/AVP,RTP/AVPF
+ kal_uint8 camera_direction; ///<VoLTE_Event_RTP_DIRECTION_e
+ kal_uint8 bHold; //local hold
+ kal_uint8 bHeld; //remote hold
+
+ VoLTE_Event_rtp_ext_map_t extmap;//now only CVO support
+
+ /* WFC */
+ kal_uint32 video_dscp;
+ kal_uint32 video_soc_priority;
+
+ // require by H.264 or H265
+ VoLTE_Event_Video_Codec_cap_cfg_t codec_cfg;
+} VoLTE_Event_Video_update_t;
+
+typedef struct {
+ kal_int8 mode_set[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+
+ kal_uint8 is_octet_align; //0:default, bandwidth-efficient, 1: octet_align, 2: VzW for general
+ kal_uint8 mode_change_period; //the period should be N. but currently only 1(default) or 2.
+ kal_uint8 mode_change_cap; //1(default) or 2(recommended to support)
+ kal_uint8 mode_change_neighbor;//0(default) or 1
+
+ kal_uint8 crc; //0 or 1. Not support yet.
+ kal_uint8 robust; //0 or 1. Not support yet.
+ kal_uint8 interleaving; //the maximum number of frame-blocks. 0: not present. Not support yet.
+ kal_uint8 channel; // the number of audio channel
+
+ kal_uint16 max_red; // the maximum duration in ms. Not support yet.
+ kal_uint8 padding[2]; //< padding byte for 4bytes align
+} VoLTE_Event_amr_info_t;
+
+typedef struct {
+ kal_int8 mode_set[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+
+ kal_uint8 evs_support;
+ kal_uint8 evs_mode_switch;
+ kal_uint8 hf_only;
+ kal_uint8 dtx;
+
+ kal_uint8 dtx_recv;
+ kal_uint8 ch_send;
+ kal_uint8 ch_recv;
+ kal_uint8 channel; // the number of audio channel
+
+ kal_uint8 br[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ kal_uint8 br_send[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ kal_uint8 br_recv[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ kal_uint8 bw[2]; ///< VoLTE_EVS_Bandwidth_e
+ kal_uint8 bw_send[2]; ///< VoLTE_EVS_Bandwidth_e
+ kal_uint8 bw_recv[2]; ///< VoLTE_EVS_Bandwidth_e
+
+ kal_uint8 mode_change_period; //the period should be N. but currently only 1(default) or 2.
+ kal_uint8 mode_change_cap; //1(default) or 2(recommended to support)
+ kal_uint8 mode_change_neighbor;//0(default) or 1
+ kal_int8 ch_aw_recv;
+
+ kal_int8 cmr;
+ kal_uint8 padding[1]; ///< padding byte for 4 bytes align
+ kal_uint16 max_red; // the maximum duration in ms. Not support yet.
+} VoLTE_Event_evs_info_t;
+
+typedef struct {
+ kal_uint8 red_level;
+ kal_uint8 red_codec_list[VOLTE_MAX_RED_LEVEL];
+} VoLTE_Event_red_info_t;
+
+typedef struct {
+ kal_uint8 payload_type; ///< payload type
+ kal_uint8 codec; ///< voip_codec_enum in codec_def.h
+ kal_uint8 clock_rate; ///< dynamic rate, clock rate, see VoLTE_Event_Clock_Rate_e
+ kal_uint8 g723_bitrate; ///< VoLTE_Event_G7231_BitRate_e
+ kal_uint8 is_g723_annexAYES; ///< G.723.1 annexA Yes:1, No:0
+ kal_uint8 is_g729_annexBYES; ///< G.729 annexB Yes:1, No:0
+ kal_uint8 ilbc_mode; ///< VoLTE_Event_iLBC_Rate_e
+ kal_uint8 text_cps; ///<
+
+ kal_uint32 ptime; ///< play time
+ kal_uint32 max_ptime; ///< maximum play time
+
+ VoLTE_Event_amr_info_t amr_fmtp;
+ VoLTE_Event_evs_info_t evs_fmtp;
+ VoLTE_Event_red_info_t red_fmtp;
+} VoLTE_Event_media_codec_t;
+
+typedef struct VoLTE_Event_Media_update {
+ // RTP and RTCP session for audio
+ kal_uint32 audio_b_as; // RTP bandwidth
+ kal_uint32 audio_b_rs; // RTCP sender bandwidth
+ kal_uint32 audio_b_rr; // RTCP receiver bandwidth
+ kal_uint16 audio_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
+ kal_uint16 video_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
+
+ kal_uint16 audio_remote_rtp_port;
+ kal_uint16 audio_remote_rtcp_port;
+ kal_uint8 audio_remote_rtp_address[VOLTE_IPADDR_LENGTH];
+ kal_uint8 audio_remote_rtcp_address[VOLTE_IPADDR_LENGTH];
+
+ kal_uint32 remote_addr_type; ///< VoLTE_Event_IP_Version_e, apply to RTP audio & video session, RTCP audio & video session
+ // required by RTP and RTCP session for video
+ kal_uint32 video_b_as; // RTP bandwidth
+ kal_uint32 video_b_rs; // RTCP sender bandwidth
+ kal_uint32 video_b_rr; // RTCP receiver bandwidth
+ kal_uint16 video_remote_rtp_port;
+ kal_uint16 video_remote_rtcp_port;
+ kal_uint16 video_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
+ kal_uint16 video_local_rtp_port; ///< rtp port number for media attribute in SDP message
+ kal_uint8 video_remote_rtp_address[VOLTE_IPADDR_LENGTH];
+ kal_uint8 video_remote_rtcp_address[VOLTE_IPADDR_LENGTH];
+
+ kal_uint8 video_payload_type;
+ kal_uint8 pading[3];
+
+ // required by audio codec
+ kal_uint8 audio_codec;
+ kal_uint8 audio_payload_type; // payload type
+ kal_uint8 audio_clock_rate; ///< dynamic rate, clock rate, see sdp_clock_rate_enum
+ kal_uint8 is_dtmf; ///< is dtmf tone useing telephony event
+
+ kal_uint8 tele_evt_payload_type; ///< telephony event payload type
+ kal_uint8 tele_evt_clock_rate; ///< telephony event rate
+ kal_uint8 g723_bitrate; ///< VoLTE_Event_G7231_BitRate_e
+ kal_uint8 is_g723_annexAYES; ///< G.723.1 annexA Yes:1, No:0
+
+ kal_uint8 is_g729_annexBYES; ///< G.729 annexB Yes:1, No:0
+ kal_uint8 ilbc_mode; ///< VoLTE_Event_iLBC_Rate_e
+ // required by RFC 6679 ECN
+ kal_uint8 ecn_capable_rtp_method; ///< VoLTE_Event_ECN_RTP_METHOD_e
+ kal_uint8 ecn_capable_ect; //0, 1
+
+ kal_uint32 ptime; ///< ptime of the codec
+ kal_uint32 max_ptime; ///< max ptime is the buffer size for data plane. may not the same to ptime
+
+ // required by AMR and AMR WB codec
+ kal_int8 mode_set[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+
+ kal_uint8 is_octet_align; ///< 0:default, bandwidth-efficient, 1: octet_align
+ kal_uint8 mode_change_period; ///< the period should be N. but currently only 1(default) or 2.
+ kal_uint8 mode_change_cap; ///< 1(default) or 2(recommended to support)
+ kal_uint8 mode_change_neighbor;///< 0(default) or 1
+
+ kal_uint8 crc; ///< 0 or 1
+ kal_uint8 robust; ///< 0 or 1
+ kal_uint8 interleaving; ///< the maximum number of frame-blocks. 0: not present
+ kal_uint8 channel; ///< the number of audio channel. must be 1 currently
+ kal_uint32 network_id; /* drop on 93MD */
+
+ kal_uint32 max_red; // the maximum duration in ms
+
+ /* EVS Support */
+ kal_uint8 evs_support;
+ kal_uint8 evs_mode_switch;
+ kal_uint8 hf_only;
+ kal_uint8 dtx;
+ kal_uint8 dtx_recv;
+ kal_uint8 reserved[3];
+ kal_uint8 br[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ kal_uint8 br_send[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ kal_uint8 br_recv[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ kal_uint8 bw[2]; ///< VoLTE_EVS_Bandwidth_e
+ kal_uint8 bw_send[2]; ///< VoLTE_EVS_Bandwidth_e
+ kal_uint8 bw_recv[2]; ///< VoLTE_EVS_Bandwidth_e
+ kal_uint8 ch_send;
+ kal_uint8 ch_recv;
+ kal_int8 ch_aw_recv;
+ kal_int8 cmr;
+
+ //required by RTCP XR
+ kal_uint16 rtcp_xr_format; ///<bitmap, VoLTE_Event_RTCP_XR_Type_e
+ kal_uint16 rtcp_xr_loss_maxsize;///
+ kal_uint16 rtcp_xr_dup_maxsize; ///
+ kal_uint16 rtcp_xr_rcpt_maxsize;///
+ kal_uint16 rtcp_xr_rtt_maxsize; ///
+ kal_int8 rtcp_xr_rtt_mode; ///<bitmap, VoLTE_Event_RTCP_XR_RTT_MODE_Type_e
+ kal_int8 rtcp_xr_stat_flags; ///<bitmap, VoLTE_Event_RTCP_XR_STAT_FLAGS_Type_e
+
+
+ /*GTT Support*/
+ kal_uint32 text_b_as;
+ kal_uint32 text_b_rs;
+ kal_uint32 text_b_rr;
+
+ kal_uint16 text_remote_rtp_port;
+ kal_uint16 text_remote_rtcp_port;
+
+ kal_uint16 text_local_rtcp_port;
+ kal_uint16 text_local_rtp_port;
+
+ kal_uint8 text_remote_rtp_address[VOLTE_IPADDR_LENGTH];
+ kal_uint8 text_remote_rtcp_address[VOLTE_IPADDR_LENGTH];
+
+ kal_int8 text_rtp_direction;
+ kal_int8 text_t140_payload_type;
+ kal_int8 text_red_payload_type;
+ kal_int8 text_red_level;
+
+ kal_int8 text_cps;
+ /*ALTC ==================================================================================*/
+ kal_uint8 text_addr_type;
+ kal_int8 text_pad[2];
+
+ kal_uint8 audio_local_address[VOLTE_IPADDR_LENGTH];
+ kal_uint8 text_local_address[VOLTE_IPADDR_LENGTH];
+ /* ======================================================================================*/
+
+ /* Asymmetric RTP payload type support */
+ kal_uint32 recv_codec_num;
+ VoLTE_Event_media_codec_t recv_codec_list[VOLTE_MAX_RECV_CODEC_LIST_LENGTH];
+
+ kal_uint32 dscp; ///< IMCB will get value from NVRAM. Used by data plane.
+ kal_uint32 video_dscp; ///< IMCB will get value from NVRAM. Used by data plane.
+ kal_uint32 voice_soc_priority; ///< IMCB will get value from NVRAM. Used by data plane.
+ kal_uint32 video_soc_priority; ///< IMCB will get value from NVRAM. Used by data plane.
+} VoLTE_Event_Media_update_t;
+
+typedef struct _VoLTE_Event_BW_Update {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint32 action; /*VoLTE_Event_BW_Act_e*/
+ kal_uint32 skip_cnf; ///< 0 or 1, if skip_cnf is 1, IMCB don't need to send BW_CNF for BW_MOD
+ kal_uint32 bw_mod_ctrl_flag; /*the flag used to control the bw_mod behalvor of IMCB */
+ kal_uint32 pqos; ///< CMCC requirment: use this to override tqos (ms)
+ VoLTE_Event_Video_update_t vt_update;
+ VoLTE_Event_Media_update_t media_update;
+} VoLTE_Event_BW_Update_t;
+
+typedef struct _VoLTE_Event_BW_Act {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_int32 action; /*VoLTE_Event_BW_Act_e.
+ in VOLTE_BW_CNF, it is a bandwidth reservation result;
+ in VOLTE_BW_REL, it is a bearer released indication
+ in VOLTE_BW_NEGO, it is a bearer nogotiation notification.
+ The action is not important because we will send re-INVITE
+ for the call session.
+ */
+ kal_uint32 audio_res_alloc; /*only for rsp_bw_add, it means Bearer Qos for audio*/
+ kal_uint32 video_res_alloc; /*only for rsp_bw_add, it means Bearer Qos for video*/
+} VoLTE_Event_BW_Act_t;
+
+typedef struct _VoLTE_Event_MT_Call_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id; /*acct whom to make the call */
+ kal_uint8 seq_no; /*sequence number assigned by Call UA*/
+ kal_uint8 is_national_num;/*0: local number, 1: national number. by finding "+"*/
+ kal_uint8 call_mode; /*VoLTE_Event_Call_Mode_e*/
+ kal_uint8 uri_scheme; /*VoLTE_MO_Call_Uri_Scheme_Type_e */
+ kal_int8 dial_number[VOLTE_MAX_URI_LENGTH];
+ kal_int8 digit_to_line_number[VOLTE_MAX_URI_LENGTH];
+} VoLTE_Event_MT_Call_Ind_t;
+
+typedef struct _VoLTE_Event_Call_Stop {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_int32 result; /*VoLTE_Event_Call_Stop_result_e*/
+ kal_int32 cause; /*VoLTE_Event_Call_stop_cause_e*/
+} VoLTE_Event_Call_Stop_t;
+
+/*
+ VOLTE_MO_CALL_CNF structure
+
+ 1. For reject by 503 response, type is the type in Retry-After header and data is the value from Retry-After header.
+ + a HTTP Date String. We will change it to time seconds
+ example: Retry-After: Sat, 21 May 2000 08:00:00 GMT
+ example: Retry-After: Sat, 21 May 2000 08:00:00 GMT;duration:1800
+ + a period time in ms
+ example: Retry-After: 3600
+ 2. For reject by...
+ */
+typedef struct _VoLTE_Event_MO_Call_Cnf_t {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ VoLTE_Event_Call_stop_cause_e cause;
+ VoLTE_Event_Call_Stop_result_e result;
+ VoLTE_Event_Call_Mode_e call_mode;
+ kal_uint8 is_international; /*0: no, 1: the phone number is a national number*/
+ kal_uint8 isDateString; /*0: not a date string, 1: it is a date string in time variable*/
+ kal_uint32 time;
+ kal_int32 duration;
+ kal_int8 reason[VOLTE_MAX_URI_LENGTH];/*reason when receiving 380 alternative service*/
+ VoLTE_Event_ECC_Category_e ecc_category;
+ VoLTE_Event_Call_Service_e service;
+ kal_uint8 pad[3];
+ kal_int32 q850_cause;
+ kal_uint8 country_specific_urn[VOLTE_MAX_URI_LENGTH];/*contact string when receiving 380 alternative service*/
+ VoLTE_Event_Call_Cause_380_contact_e cause_380_contact;
+ VoLTE_Event_Call_Cause_380_xml_e cause_380_xml;
+ VoLTE_Event_380_XML_type_e xml_type_380;
+ VoLTE_Event_380_XML_action_e xml_action_380;
+} VoLTE_Event_MO_Call_Cnf_t;
+
+typedef struct _VoLTE_Event_MO_Conf_Call_Cnf_t {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ VoLTE_Event_Call_stop_cause_e cause;
+ VoLTE_Event_Call_Stop_result_e result;
+ VoLTE_Event_Call_Mode_e call_mode;
+ kal_uint8 pad[2];
+ kal_int32 q850_cause;
+} VoLTE_Event_MO_Conf_Call_Cnf_t;
+
+typedef struct _VoLTE_Event_Call_Prog_t {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id; /*acct whom to make the call */
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_int32 is_ibt;
+ kal_int8 p_assert_uri[VOLTE_MAX_ASSERTED_URI];
+ kal_int32 cause; /*VoLTE_Event_Call_stop_cause_e*/
+ kal_int32 call_mode; /*VoLTE_Event_Call_Mode_e*/
+ kal_int32 ecpi; /*VoLTE_Event_Call_Prog_ECPI_e*/
+ kal_int32 hold_by; /*VoLTE_Event_Call_Hold_By_e*/
+ kal_int32 dir; /*VoLTE_Event_RTP_DIRECTION_e, reuse the interface*/
+ kal_int32 q850_cause;
+ kal_uint16 terminal_resp; // Terminal response for STK call
+ kal_uint8 wait_rtp_pkt; /* if is_ibt==1, wait for RTP pkts from N/W. if no RTP pkts, notify UA */
+ kal_uint8 pad[1];
+} VoLTE_Event_Call_Prog_t;
+
+typedef struct _VoLTE_Event_MediaInfo {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_int32 is_on; /*VoLTE_Event_Call_Media_e*/
+ kal_uint8 call_mode; /*VoLTE_Event_Call_Mode_e*/
+} VoLTE_Event_MediaInfo_t;
+
+typedef struct _VoLTE_Event_List_Current_Call {
+ LOCAL_PARA_HDR
+ kal_uint32 total_call;
+ VoLTE_Event_List_one_call_t call[VOLTE_MAX_CALL_SESSION];
+} VoLTE_Event_List_Current_Call_t;
+
+typedef struct _VoLTE_Event_SRVCC_Call_Ctxt {
+ kal_int32 call_id;
+ kal_uint32 ecc_category; /*bit map, VoLTE_Event_ECC_Category_e*/
+ kal_uint8 call_mode; /*VoLTE_Event_Call_Mode_e */
+ kal_uint8 direction; /* VoLTE_SRVCC_direction_e */
+ kal_uint8 dlg_state; /*VoLTE_SRVCC_dlg_state_e*/
+ kal_uint8 num_of_conf_parts; /* 1(me) + 7 (participants) in maximum */
+} VoLTE_Event_SRVCC_Call_Ctxt_t;
+
+
+typedef struct _VoLTE_Event_List_SRVCC_Call_Ctxt {
+ LOCAL_PARA_HDR
+ kal_uint32 num_calls;
+ VoLTE_Event_SRVCC_Call_Ctxt_t call[VOLTE_MAX_SRVCC_CALLS];
+ kal_int32 acct_id;
+ kal_uint8 conf_call_number_list[VOLTE_MAX_CALL_NUM_IN_CONF][VOLTE_MAX_URI_LENGTH];
+} VoLTE_Event_List_SRVCC_Call_Ctxt_t;
+
+typedef struct _VoLTE_Event_SIP_Call_Prog_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id; /*acct whom to make the call */
+ kal_uint64 ua_id; /*reg client information*/
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint8 call_mode; /*VoLTE_Event_Call_Mode_e*/
+ kal_uint8 dir; /*0:send,1:receive*/
+ kal_uint8 sip_msg_type; /*0: request, 1: response*/
+ kal_uint8 method; /*1:SIP_INVITE_METHOD,2:SIP_REFER_METHOD ..etc , refer to inet_method_enum*/
+ kal_uint16 response_code; /*0:only used when SIP type is request, else: response code(100~600)*/
+ kal_uint8 pad[2];
+ kal_char reason_text[VOLTE_MAX_REASON_TEXT_LENGTH];
+} VoLTE_Event_SIP_Call_Prog_Ind_t;
+
+typedef struct _VoLTE_Event_Video_Cap_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint8 local_video_cap;
+ kal_uint8 remote_video_cap;
+ kal_uint8 pad[2]; // For alignment
+} VoLTE_Event_Video_Cap_Ind_t;
+
+typedef struct _VoLTE_Event_Mod_Session_Cnf {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint8 call_id; /* identify this call */
+
+ // 0 : inactive (VoLTE)
+ // 1 : active (ViLTE)
+ kal_uint8 mode;
+ kal_uint8 camera_direction; /*VoLTE_Event_RTP_DIRECTION_e*/
+ kal_uint8 result; /*VoLTE_Event_Mod_session_result_e*/
+} VoLTE_Event_Mod_Session_Cnf_t;
+
+typedef struct _VoLTE_Event_Mod_Session_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint8 call_id; /* identify this call */
+
+ // 0 : inactive (VoLTE)
+ // 1 : active (ViLTE)
+ kal_uint8 mode;
+ kal_uint8 camera_direction; /*VoLTE_Event_RTP_DIRECTION_e*/
+ kal_uint8 result; /*VoLTE_Event_Mod_session_result_e*/
+} VoLTE_Event_Mod_Session_Ind_t;
+
+typedef struct _VoLTE_Event_MT_VT_Special_Accept_Cnf {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ kal_int32 result; /*0: success, 1: fail*/
+ kal_int32 cause; /*VoLTE_Event_Call_stop_cause_e*/
+} VoLTE_Event_MT_VT_Special_Accept_Cnf_t;
+
+typedef struct _VoLTE_Event_Mod_Session_Cancel_Cnf {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint8 call_id; /* identify this call */
+ kal_uint8 result; /*VoLTE_Event_Mod_session_cancel_result_e*/
+} VoLTE_Event_Mod_Session_Cancel_Cnf_t;
+
+typedef struct _VoLTE_Event_Mod_Session_Cancel_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint8 call_id;
+}VoLTE_Event_Mod_Session_Cancel_Ind_t;
+
+typedef struct _VoLTE_Event_Local_BW_Ready_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint8 call_id;
+}VoLTE_Event_Local_BW_Ready_Ind_t;
+
+typedef struct _VoLTE_Event_Text_Cnf {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 result;
+} VoLTE_Event_Text_Cnf_t;
+
+typedef struct VoLTE_Event_Text_Cap_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint8 local_text_cap; /* GTT/RTT on/off */
+ kal_uint8 remote_text_cap; /* remote sdp text status */
+ kal_uint8 local_text_status; /* local sdp text status */
+ kal_uint8 real_remote_text_capability; /* remote Contact header text cap */
+} VoLTE_Event_Text_Cap_Ind_t;
+
+typedef struct _VoLTE_Event_IMS_Timer_Status_Ind {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint64 ua_id; // reg client information
+ kal_uint32 timer_type; // VoLTE_Event_ims_timer_type_e
+ kal_uint32 timer_status; // VoLTE_Event_ims_timer_status_e
+ kal_uint16 timer_length;
+ kal_uint8 pad[2];
+} VoLTE_Event_IMS_Timer_Status_Ind_t;
+
+typedef struct _VoLTE_Event_RTT_Cnf {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 call_id;
+ kal_int32 result;
+} VoLTE_Event_RTT_Cnf_t;
+
+typedef struct _VoLTE_Event_SS_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; ///< the current cell id from the modem PS
+ VoLTE_Event_LBS_Location_t loc_info;
+ kal_uint32 cause;
+} VoLTE_Event_SS_Req_t;
+
+typedef struct _VoLTE_Event_SS_Conf_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 alloc_conf_call_id;
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; ///< the current cell id from the modem PS
+ VoLTE_Event_LBS_Location_t loc_info;
+ plmn_type_enum plmn;
+} VoLTE_Event_SS_Conf_Req_t;
+
+typedef struct _VoLTE_Event_SS_List_Calls_Req{
+ LOCAL_PARA_HDR
+ kal_uint32 reserved;
+} VoLTE_Event_SS_List_Calls_Req_t;
+
+typedef struct _VoLTE_Event_SS_Conf_Control_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 conf_call_id;
+ kal_int32 joined_call_id; ///< For Add a new one, joined_call_id is invalid call id--> -1
+ ///< For Add a ongoing one, joined_call_id is its call id,
+ ///< For remove anybody, joined_call_id is invalid call id.
+ kal_uint32 op; ///< VoLTE_Event_Operation_Add_Other_To_Conf or
+ // VoLTE_Event_Operation_Remove_Other_From_Conf
+ kal_char number[VOLTE_MAX_CONF_CONTROL_URI_LENGTH];
+ ///< The participant's number/URI to add or to remove
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH];
+ ///< the current cell id from the modem PS
+ VoLTE_Event_LBS_Location_t loc_info;
+} VoLTE_Event_SS_Conf_Control_Req_t;
+
+typedef struct _VoLTE_Event_SS_Call_Ctrl_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ kal_int32 expected_call_state; /*VoLTE_Event_Call_Prog_ECPI_e*/
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; ///< the current cell id from the modem PS
+ VoLTE_Event_LBS_Location_t loc_info;
+} VoLTE_Event_SS_Call_Ctrl_t;
+
+typedef struct _VoLTE_Event_SS_ect_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; //< the current cell id from the modem PS
+ VoLTE_Event_LBS_Location_t loc_info;
+ kal_uint8 ect_type; // VoLTE_Event_ect_type_e
+ kal_uint8 pad[3];
+ kal_char p_asserted_uri[VOLTE_MAX_URI_LENGTH]; //< The tranfer target number number
+ kal_int8 device_id[VOLTE_MAX_UUID_LENGTH];
+} VoLTE_Event_SS_ect_Req_t;
+
+typedef struct _VoLTE_Event_SS_ect_Resp {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 result; ///< refer to ::VoLTE_Event_Call_Stop_result_e
+ kal_int32 cause; ///< refer to ::VoLTE_Event_Call_stop_cause_e
+} VoLTE_Event_SS_ect_Resp_t;
+
+typedef struct _VoLTE_Event_SS_ect_notify {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ kal_int32 result; ///< refer to ::VoLTE_Event_Call_Stop_result_e
+ kal_int32 cause; ///< refer to ::VoLTE_Event_Call_stop_cause_e
+} VoLTE_Event_SS_ect_notify_t;
+
+typedef struct _VoLTE_Event_SS_Resp {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 operation; ///< refer to ::VoLTE_Event_SS_Operation_e
+ kal_int32 result; ///< refer to ::VoLTE_Event_Call_Stop_result_e
+ kal_int32 cause; ///< refer to ::VoLTE_Event_Call_stop_cause_e
+} VoLTE_Event_SS_Resp_t;
+
+typedef struct _VoLTE_Event_SS_Sub_ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ kal_int32 event; ///< refer to ::VoLTE_Event_SS_Sub_event_e
+ kal_int32 result; ///< refer to ::VoLTE_Event_Call_Stop_result_e
+ kal_int32 cause; ///< refer to ::VoLTE_Event_Call_stop_cause_e
+} VoLTE_Event_SS_Sub_ind_t;
+
+typedef struct _VoLTE_Event_SS_Conf_ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 conf_call_id;
+ kal_uint32 joined_call_id;
+ kal_char dial_number[VOLTE_MAX_CONF_CONTROL_URI_LENGTH];
+ kal_int32 operation; ///< refer to ::VoLTE_Event_SS_Operation_e
+ kal_int32 result; ///< refer to ::VoLTE_Event_Call_Stop_result_e
+ kal_int32 cause; ///< refer to ::VoLTE_Event_Call_stop_cause_e
+} VoLTE_Event_SS_Conf_ind_t;
+
+/*
+The data is a raw data from SIP body.
+For MWI and Conference indication, it is a XML body, so it must use the maximum data length: 4096. And
+IMCB will send to AP side directly.
+For the others, it is a SIP body that must less then 512 (VOLTE_MAX_DATA_TO_IMC_LENGTH). And IMCB will
+send to IMC through CCCI channel. We must not use the data legnth larger then VOLTE_MAX_DATA_TO_IMC_LENGTH,
+or the CCCI channel will have error.
+*/
+typedef struct _VoLTE_Event_SS_Notify {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ kal_uint32 service; ///< VoLTE_Event_SS_Notify_Service_e
+ kal_char data[VOLTE_MAX_DATA_TO_UPPER_LENGTH];
+} VoLTE_Event_SS_Notify_t;
+
+typedef struct _VoLTE_Event_SMS_Send_Message_t {
+ LOCAL_PARA_HDR
+ kal_int32 account_id; ///< the account id
+ kal_uint32 request_id; ///< the request id (provide by app)
+ kal_uint32 type; ///< refer to ::VoLTE_Event_SMS_Type_e
+ kal_uint32 timeout; ///< keep the resouce timer (0: don't keep)
+ kal_char psi[VOLTE_MAX_URI_LENGTH]; ///< PSI
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH];
+ VoLTE_Event_LBS_Location_t loc_info;
+ kal_char tpda[VOLTE_MAX_SMS_TPDA_LENGTH];
+ kal_int8 is_valid_tpda;
+ kal_int8 is_international;
+ kal_int8 pad[1];
+ kal_int32 message_len; ///< the length of message data
+ kal_int8 message[0]; ///< the message data
+} VoLTE_Event_SMS_Send_Message_t;
+
+typedef struct _VoLTE_Event_SMS_Release_t {
+ LOCAL_PARA_HDR
+ kal_int32 account_id; ///< the account id
+ kal_uint32 request_id; ///< the request id
+} VoLTE_Event_SMS_Release_t;
+
+typedef struct _VoLTE_Event_SMS_Confirm_t {
+ LOCAL_PARA_HDR
+ kal_int32 account_id; ///< the account id
+ kal_uint32 request_id; ///< the request id
+ kal_int32 resp_code; ///< SIP response code
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH];
+ VoLTE_Event_LBS_Location_t loc_info;
+} VoLTE_Event_SMS_Confirm_t;
+
+typedef struct _VoLTE_Event_SMS_Result_t {
+ LOCAL_PARA_HDR
+ kal_int32 account_id; ///< the account id
+ kal_uint32 request_id; ///< the request id
+ kal_int32 resp_code; ///< SIP response code or ::VoLTE_Event_SMS_Result_e
+} VoLTE_Event_SMS_Result_t;
+
+typedef struct _VoLTE_Event_SMS_Recv_Message_t {
+ LOCAL_PARA_HDR
+ kal_int32 account_id; ///< the account id
+ kal_uint32 request_id; ///< the request id (provide by SMS-UA)
+ kal_uint32 type; ///< refer to ::VoLTE_Event_SMS_Type_e
+ kal_int8 psi[VOLTE_MAX_URI_LENGTH]; ///< PSI
+ kal_int32 message_len; ///< the length of message data
+ kal_int8 message[0]; ///< the message data
+} VoLTE_Event_SMS_Recv_Message_t;
+
+typedef struct _VoLTE_Event_Ussd_Urc_Status_REQ {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint32 status; //0: disabled, 1: enabled
+}VoLTE_Event_Ussd_Urc_Status_REQ_t;
+
+typedef struct _VoLTE_Event_Ussd_IND {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint8 ind_class;
+ kal_uint8 alert_pattern;
+ kal_uint8 padding[2];
+ kal_uint16 status;
+ kal_uint16 sip_cause;
+ kal_uint8 language[VOLTE_USSD_LANGUAGE_MAX_LENGTH];
+ kal_uint16 error_code;
+ kal_uint16 string_len;
+ kal_uint8 string[0];
+}VoLTE_Event_Ussd_IND_t;
+
+typedef struct _VoLTE_Event_Ussd_RSP {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint32 response;
+} VoLTE_Event_Ussd_RSP_t;
+
+typedef struct _VoLTE_Event_New_Ussd_CMD {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint8 cmd_class;
+ kal_uint8 operation;
+ kal_uint16 action; ///< 1:ussd request, 2: ussd_response
+ kal_uint8 language[VOLTE_USSD_LANGUAGE_MAX_LENGTH];
+ kal_uint16 error_code;
+ kal_uint16 string_len;
+ kal_uint8 string[VOLTE_USSD_STRING_MAX_LENGTH];
+ kal_int8 digit_from_line_number[VOLTE_MAX_URI_LENGTH];
+} VoLTE_Event_New_Ussd_CMD_t;
+
+typedef struct _VoLTE_Event_New_Ussd_IND {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint8 ind_class;
+ kal_uint8 alert_pattern;
+ kal_uint8 padding[2];
+ kal_uint16 status;
+ kal_uint16 sip_cause;
+ kal_uint8 language[VOLTE_USSD_LANGUAGE_MAX_LENGTH];
+ kal_uint16 error_code;
+ kal_uint16 string_len;
+ kal_uint8 string[VOLTE_USSD_STRING_MAX_LENGTH];
+} VoLTE_Event_New_Ussd_IND_t;
+
+typedef struct _VoLTE_Event_CC_CS_Availability_req {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint32 call_id;
+} VoLTE_Event_CC_CS_Availability_req_t;
+
+typedef struct _VoLTE_Event_CC_CS_Availability_cnf {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint32 call_id;
+ kal_uint32 cs_network_status; /*VoLTE_Event_cs_network_status_e*/
+} VoLTE_Event_CC_CS_Availability_cnf_t;
+
+typedef struct _VoLTE_Event_SMS_CS_Availability_req {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint32 request_id;
+} VoLTE_Event_SMS_CS_Availability_req_t;
+
+typedef struct _VoLTE_Event_SMS_CS_Availability_cnf {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint32 request_id;
+ kal_uint32 cs_network_status; /*VoLTE_Event_cs_network_status_e*/
+} VoLTE_Event_SMS_CS_Availability_cnf_t;
+
+typedef struct _VoLTE_Event_Mod_BW_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /* identify this call */
+
+ kal_uint32 video_bandwidth;
+} VoLTE_Event_Mod_BW_Req_t;
+
+typedef struct _VoLTE_Event_Header_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 call_id; /*assigned by CC*/
+ kal_uint32 type; /*refer to inet_header_field_enum*/
+} VoLTE_Event_Header_Req_t;
+
+typedef struct _VoLTE_Event_Call_Mode_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint32 mode; /*VoLTE_Event_IMS_call_mode_e */
+} VoLTE_Event_Call_Mode_Req_t;
+
+typedef struct _VoLTE_Event_EC_Call_Extra_header_Req {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int8 extraHeader[VOLTE_MAX_EXTRA_HEADER_SIZE];
+} VoLTE_Event_EC_Call_Extra_header_Req_t;
+
+typedef struct _VoLTE_Event_EC_Call_Location_Info {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int8 latitude[16];
+ kal_int8 longitude[16];
+ kal_int8 accuracy[8];
+ kal_uint8 timestamp[VOLTE_MAX_TIME_STAMP_LENGTH]; // VOLTE_MAX_TIME_STAMP_LENGTH =32
+} VoLTE_Event_EC_Call_Location_Info_t;
+
+//*****************************
+//*** UA LEGACY TYPE DEFINE ***
+//*****************************
+
+UA_IMCB_MAP_STRUCT(BW_Require, ind_bw_add) /* message: IND_BW_ADD MSG_ID_VOLTE_BW_IND */
+typedef VoLTE_Event_BW_Require_t volte_bw_ind_struct;
+UA_IMCB_MAP_STRUCT(BW_Act, rsp_bw_add) /* message: RSP_BW_ADD MSG_ID_VOLTE_BW_CNF */
+typedef VoLTE_Event_BW_Act_t volte_bw_cnf_struct;
+UA_IMCB_MAP_STRUCT(BW_Update, ind_bw_mod) /* message: IND_BW_MOD MSG_ID_VOLTE_BW_MOD */
+typedef VoLTE_Event_BW_Update_t volte_bw_mod_struct;
+UA_IMCB_MAP_STRUCT(BW_Act, rsp_bw_mod) /* message: RSP_BW_MOD MSG_ID_VOLTE_BW_CNF */
+UA_IMCB_MAP_STRUCT(BW_Act, ind_bw_rel) /* message: IND_BW_REL MSG_ID_VOLTE_BW_REL */
+typedef VoLTE_Event_BW_Act_t volte_bw_rel_struct;
+UA_IMCB_MAP_STRUCT(BW_Act, rsp_bw_rel) /* message: RSP_BW_REL MSG_ID_VOLTE_BW_CNF */
+UA_IMCB_MAP_STRUCT(BW_Act, req_bw_nego) /* message: REQ_BW_NEGO MSG_ID_VOLTE_BW_NEGO */
+typedef VoLTE_Event_BW_Act_t volte_bw_nego_struct;
+
+UA_IMCB_MAP_STRUCT(Radio_Link_Monitor, req_radio_link_monitor) // message: MSG_ID_VOLTE_REQ_RADIO_LINK_MONITOR
+UA_IMCB_MAP_STRUCT(Init, req_init) // message: MSG_ID_VOLTE_REQ_INIT
+
+/***** VT Capability *****/
+UA_IMCB_MAP_STRUCT(VT_Cap_Setting, get_vt_cap_rsp) /* message: VOLTE_GET_VT_CAP_RSP */
+
+UA_IMCB_MAP_STRUCT(VT_Cap_Setting, req_vt_cap_setting) //MSG_ID_VOLTE_REQ_VT_CAP_SETTING
+
+//wait for phase II
+UA_IMCB_MAP_STRUCT(Media_Mod_Ind, ind_media_mod) /* message: IND_MEDIA_MOD MSG_ID_VOLTE_MEDIA_MOD_IND */
+UA_IMCB_MAP_STRUCT(Video_Cap_Ind, ind_video_cap) /* message: IND_VIDEO_CAP MSG_ID_VOLTE_VIDEO_CAP_IND */
+UA_IMCB_MAP_STRUCT(Mod_Session_Req, req_mod_session) /* message: REQ_MOD_SESSION MSG_ID_VOLTE_MOD_SESSION_REQ */
+UA_IMCB_MAP_STRUCT(Mod_Session_Cnf, cnf_mod_session) /* message: CNF_MOD_SESSION MSG_ID_VOLTE_MOD_SESSION_CNF */
+UA_IMCB_MAP_STRUCT(Mod_Session_Ind, ind_mod_session) /* message: IND_MOD_SESSION MSG_ID_VOLTE_MOD_SESSION_IND */
+UA_IMCB_MAP_STRUCT(Mod_Session_Rsp, rsp_mod_session) /* message: RSP_MOD_SESSION MSG_ID_VOLTE_MOD_SESSION_RSP */
+
+UA_IMCB_MAP_STRUCT(Media_Mod_Ind, media_mod_ind) /* message: IND_MEDIA_MOD MSG_ID_VOLTE_MEDIA_MOD_IND */
+UA_IMCB_MAP_STRUCT(Video_Cap_Ind, video_cap_ind) /* message: IND_VIDEO_CAP MSG_ID_VOLTE_VIDEO_CAP_IND */
+UA_IMCB_MAP_STRUCT(Mod_Session_Req, mod_session_req) /* message: REQ_MOD_SESSION MSG_ID_VOLTE_MOD_SESSION_REQ */
+UA_IMCB_MAP_STRUCT(Mod_Session_Cnf, mod_session_cnf) /* message: CNF_MOD_SESSION MSG_ID_VOLTE_MOD_SESSION_CNF */
+UA_IMCB_MAP_STRUCT(Mod_Session_Ind, mod_session_ind) /* message: IND_MOD_SESSION MSG_ID_VOLTE_MOD_SESSION_IND */
+UA_IMCB_MAP_STRUCT(Mod_Session_Rsp, mod_session_rsp) /* message: RSP_MOD_SESSION MSG_ID_VOLTE_MOD_SESSION_RSP */
+UA_IMCB_MAP_STRUCT(Mod_BW_Req, mod_bw_req) /* message: RSP_MOD_SESSION MSG_ID_VOLTE_MOD_BW_REQ */
+UA_IMCB_MAP_STRUCT(Mod_Session_Cancel_Req,mod_session_cancel_req) /* message: RSP_MOD_SESSION_CANCEL VOLTE_MOD_CANCEL_REQ */
+UA_IMCB_MAP_STRUCT(Mod_Session_Cancel_Cnf,mod_session_cancel_cnf) /* message: CNF_MOD_SESSION_CANCEL VOLTE_MOD_CANCEL_CNF */
+UA_IMCB_MAP_STRUCT(Mod_Session_Cancel_Ind,mod_session_cancel_ind) /* message: IND_MOD_SESSION_CANCEL VOLTE_MOD_CANCEL_IND */
+UA_IMCB_MAP_STRUCT(Local_BW_Ready_Ind,local_bw_ready_ind) /* message: LOCAL_BW_READY_IND MSG_ID_VOLTE_LOCAL_BW_READY_IND */
+#ifdef __NG_ECALL_SUPPORT__
+UA_IMCB_MAP_STRUCT(eCall_In_Band_MSD_Transfer_Rsp,ecall_in_band_msd_transfer_rsp) /* message: VOLTE_ECALL_IN_BAND_TRANSFER_RSP */
+UA_IMCB_MAP_STRUCT(eCall_Update_MSD_Rsp,ecall_update_msd_rsp) /* message: VOLTE_ECALL_IN_BAND_TRANSFER_RSP */
+#endif
+/* VILTE */
+UA_IMCB_MAP_STRUCT(MT_VT_Special_Accept_Req, mt_vt_special_accept_req) /* message: MSG_ID_VOLTE_MT_VT_SPECIAL_ACCEPT_REQ */
+UA_IMCB_MAP_STRUCT(MT_VT_Special_Accept_Cnf, mt_vt_special_accept_cnf) /* message: MSG_ID_VOLTE_MT_VT_SPECIAL_ACCEPT_CNF */
+
+
+/***** CC *****/
+UA_IMCB_MAP_STRUCT(Call_Prog, call_progress_ind) /* message: MSG_ID_VOLTE_CALL_PROGRESS_IND */
+UA_IMCB_MAP_STRUCT(MediaInfo, media_ind) /* message: MSG_ID_VOLTE_MEDIA_IND */
+UA_IMCB_MAP_STRUCT(Call_Start, mo_call_req) /* message: MSG_ID_VOLTE_MO_CALL_REQ */
+UA_IMCB_MAP_STRUCT(MO_Call_Cnf, mo_call_cnf) /* message: MSG_ID_VOLTE_MO_CALL_CNF */
+UA_IMCB_MAP_STRUCT(MT_Call_Abort, mt_call_abort_ind) /* message: MSG_ID_VOLTE_MT_CALL_ABORT_IND */
+UA_IMCB_MAP_STRUCT(MT_Call_Ind, mt_call_present_ind) /* message: MSG_ID_VOLTE_MT_CALL_PRESENT_IND */
+UA_IMCB_MAP_STRUCT(MT_Call_Rsp, mt_call_present_rsp) /* message: MSG_ID_VOLTE_MT_CALL_PRESENT_RSP */
+UA_IMCB_MAP_STRUCT(Call_Refresh, mt_call_ring_ind) /* message: MSG_ID_VOLTE_MT_CALL_RING_IND */
+UA_IMCB_MAP_STRUCT(Req, mo_force_hangup_req) /* message: MSG_ID_VOLTE_MO_FORCE_HANGUP_REQ */
+UA_IMCB_MAP_STRUCT(Req, mo_hangup_req) /* message: MSG_ID_VOLTE_MO_HANGUP_REQ */
+UA_IMCB_MAP_STRUCT(Call_Stop, mo_hangup_cnf) /* message: MSG_ID_VOLTE_MO_HANGUP_CNF */
+UA_IMCB_MAP_STRUCT(Req, no_rtppkt_req) /* message: MSG_ID_VOLTE_NO_RTPPKT_REQ */
+UA_IMCB_MAP_STRUCT(Req, incoming_rtppkt_req) /* message: MSG_ID_VOLTE_INCOMING_RTPPKT_REQ */
+UA_IMCB_MAP_STRUCT(Call_Stop, no_rtppkt_cnf) /* message: VOLTE_NO_RTPPKT_CNF */
+UA_IMCB_MAP_STRUCT(Req, mt_accept_req) /* message: MSG_ID_VOLTE_MT_ACCEPT_REQ */
+UA_IMCB_MAP_STRUCT(Call_Stop, mt_accept_cnf) /* message: MSG_ID_VOLTE_MT_ACCEPT_CNF */
+UA_IMCB_MAP_STRUCT(SIP_Call_Prog_Ind, sip_call_progress_ind) /*message: MSG_ID_VOLTE_SIP_CALL_PROGRESS_IND*/
+UA_IMCB_MAP_STRUCT(Conf_Call_Start, mo_conf_call_req) /* message: MSG_ID_VOLTE_MO_CONF_CALL_REQ*/
+UA_IMCB_MAP_STRUCT(MO_Conf_Call_Cnf, mo_conf_call_cnf) /* message: MSG_ID_VOLTE_MO_CONF_CALL_CNF*/
+UA_IMCB_MAP_STRUCT(Req, mo_call_domain_conflict_req) /* message: MSG_ID_VOLTE_MO_CALL_DOMAIN_CONFLICT_REQ*/
+UA_IMCB_MAP_STRUCT(Call_Stop, mo_call_domain_conflict_cnf) /* message: MSG_ID_VOLTE_MO_CALL_DOMAIN_CONFLICT_CNF*/
+UA_IMCB_MAP_STRUCT(Ims_Notify_Req, ims_notify_req) /* message: MSG_ID_VOLTE_IMS_NOTIFY_REQ */
+/* CC CS Availability query*/
+UA_IMCB_MAP_STRUCT(CC_CS_Availability_req, cc_cs_availability_req) /* message: MSG_ID_VOLTE_CC_CS_AVAILABILITY_REQ */
+UA_IMCB_MAP_STRUCT(CC_CS_Availability_cnf, cc_cs_availability_cnf) /* message: MSG_ID_VOLTE_CC_CS_AVAILABILITY_CNF */
+
+
+/***** SS *****/
+UA_IMCB_MAP_STRUCT(SS_Req, ss_switch_waiting_or_holding_and_active_req) /* message: MSG_ID_VOLTE_SS_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE_REQ */
+UA_IMCB_MAP_STRUCT(SS_Resp, ss_switch_waiting_or_holding_and_active_cnf) /* message: MSG_ID_VOLTE_SS_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE_CNF */
+UA_IMCB_MAP_STRUCT(SS_Req, ss_rel_waiting_or_holding_call_req) /* message: MSG_ID_VOLTE_SS_REL_WAITING_OR_HOLDING_CALL_REQ */
+UA_IMCB_MAP_STRUCT(SS_Resp, ss_rel_waiting_or_holding_call_cnf) /* message: MSG_ID_VOLTE_SS_REL_WAITING_OR_HOLDING_CALL_CNF */
+UA_IMCB_MAP_STRUCT(SS_Req, ss_rel_all_active_calls_and_resume_call_req) /* message: MSG_ID_VOLTE_SS_REL_ALL_ACTIVE_CALLS_AND_RESUME_CALL_REQ */
+UA_IMCB_MAP_STRUCT(SS_Resp, ss_rel_all_active_calls_and_resume_call_cnf) /* message: MSG_ID_VOLTE_SS_REL_ALL_ACTIVE_CALLS_AND_RESUME_CALL_CNF */
+UA_IMCB_MAP_STRUCT(SS_Req, ss_rel_all_calls_req) /* message: MSG_ID_VOLTE_SS_REL_ALL_CALLS_REQ */
+UA_IMCB_MAP_STRUCT(SS_Resp, ss_rel_all_calls_cnf) /* message: MSG_ID_VOLTE_SS_REL_ALL_CALLS_CNF */
+UA_IMCB_MAP_STRUCT(SS_Req, ss_explicit_call_transfer_req) /* message: MSG_ID_VOLTE_SS_EXPLICIT_CALL_TRANSFER_REQ */
+UA_IMCB_MAP_STRUCT(SS_Resp, ss_explicit_call_transfer_cnf) /* message: MSG_ID_VOLTE_SS_EXPLICIT_CALL_TRANSFER_CNF */
+UA_IMCB_MAP_STRUCT(SS_Conf_Req, ss_create_conference_call_req) /* message: MSG_ID_VOLTE_SS_CREATE_CONFERENCE_CALL_REQ */
+UA_IMCB_MAP_STRUCT(SS_Resp, ss_create_conference_call_cnf) /* message: MSG_ID_VOLTE_SS_CREATE_CONFERENCE_CALL_CNF */
+UA_IMCB_MAP_STRUCT(SS_Conf_ind, ss_conference_control_ind) /* message: MSG_ID_VOLTE_SS_CONFERENCE_CONTROL_IND */
+UA_IMCB_MAP_STRUCT(SS_Sub_ind, ss_subscribe_control_ind) /* message: MSG_ID_VOLTE_SS_SUBSCRIBE_CONTROL_IND */
+UA_IMCB_MAP_STRUCT(SS_Conf_Control_Req, ss_conference_control_req) /* message: MSG_ID_VOLTE_SS_CONFERENCE_CONTROL_REQ */
+UA_IMCB_MAP_STRUCT(SS_Resp, ss_conference_control_cnf) /* message: MSG_ID_VOLTE_SS_CONFERENCE_CONTROL_CNF */
+UA_IMCB_MAP_STRUCT(SS_Req, ss_ath_rel_all_calls_req) /* message: MSG_ID_VOLTE_SS_ATH_REL_ALL_CALLS_REQ */
+UA_IMCB_MAP_STRUCT(SS_Resp, ss_ath_rel_all_calls_cnf) /* message: MSG_ID_VOLTE_SS_ATH_REL_ALL_CALLS_CNF */
+UA_IMCB_MAP_STRUCT(List_Current_Call, list_call_cnf) /* message: MSG_ID_VOLTE_LIST_CALL_CNF */
+UA_IMCB_MAP_STRUCT(SS_Notify, ss_progress_notify_ind) /* message: MSG_ID_VOLTE_SS_PROGRESS_NOTIFY_IND */
+UA_IMCB_MAP_STRUCT(SS_Call_Ctrl, call_control_req) /* message: MSG_ID_VOLTE_SS_CALL_CONTROL_REQ */
+UA_IMCB_MAP_STRUCT(SS_Resp, call_control_cnf) /* message: MSG_ID_VOLTE_SS_CALL_CONTROL_CNF */
+UA_IMCB_MAP_STRUCT(SS_ect_notify, ss_ect_notify_ind) /* message: MSG_ID_VOLTE_SS_ECT_NOTIFY_IND */
+UA_IMCB_MAP_STRUCT(SS_ect_Req, ss_ect_req) /* message: MSG_ID_VOLTE_SS_ECT_REQ */
+UA_IMCB_MAP_STRUCT(SS_ect_Resp, ss_ect_cnf) /* message: MSG_ID_VOLTE_SS_ECT_CNF */
+UA_IMCB_MAP_STRUCT(SS_List_Calls_Req, ss_list_current_calls_req) /* message: MSG_ID_VOLTE_LIST_CALL_REQ */
+
+/***** SMS *****/
+UA_IMCB_MAP_STRUCT(SMS_Send_Message, req_sms_send) /* message: MSG_ID_VOLTE_REQ_SMS_SEND */
+UA_IMCB_MAP_STRUCT(SMS_Result, rsp_sms_sent) /* message: MSG_ID_VOLTE_RSP_SMS_SENT */
+UA_IMCB_MAP_STRUCT(SMS_Recv_Message, ind_sms_received) /* message: MSG_ID_VOLTE_IND_SMS_RECEIVED */
+UA_IMCB_MAP_STRUCT(SMS_Confirm, cnf_sms_received) /* message: MSG_ID_VOLTE_CNF_SMS_RECEIVED */
+UA_IMCB_MAP_STRUCT(SMS_Release, req_sms_release) /* message: MSG_ID_VOLTE_REQ_SMS_RELEASE */
+UA_IMCB_MAP_STRUCT(SMS_Result, ind_sms_error) /* message: MSG_ID_VOLTE_IND_SMS_ERROR */
+/* SMS CS Availability query*/
+UA_IMCB_MAP_STRUCT(SMS_CS_Availability_req, sms_cs_availability_req) /* message: MSG_ID_VOLTE_SMS_CS_AVAILABILITY_REQ */
+UA_IMCB_MAP_STRUCT(SMS_CS_Availability_cnf, sms_cs_availability_cnf) /* message: MSG_ID_VOLTE_SMS_CS_AVAILABILITY_CNF */
+
+/**** RTT ****/
+UA_IMCB_MAP_STRUCT(RTT_Req, rtt_req) /* message: MSG_ID_VOLTE_RTT_REQ */
+UA_IMCB_MAP_STRUCT(RTT_Cnf, rtt_cnf) /* message: MSG_ID_VOLTE_RTT_CNF */
+
+/**** TTY ****/
+UA_IMCB_MAP_STRUCT(Text_Req, text_req) /* message: MSG_ID_VOLTE_TEXT_REQ */
+UA_IMCB_MAP_STRUCT(Text_Cap_Ind, text_cap_ind) /* message: MSG_ID_VOLTE_TEXT_CAP_IND */
+UA_IMCB_MAP_STRUCT(Text_Cnf, text_cnf) /* message: MSG_ID_VOLTE_TEXT_CNF */
+
+/**** Handover Notify ****/
+UA_IMCB_MAP_STRUCT(Handover_Start_Notify, handover_start_notify_req) /* message: MSG_ID_VOLTE_REQ_HANDOVER_START_NOTIFY */
+typedef VoLTE_Event_Handover_Start_Notify_t volte_req_handover_start_notify_struct;
+UA_IMCB_MAP_STRUCT(Handover_Stop_Notify, handover_stop_notify_req) /* message: MSG_ID_VOLTE_REQ_HANDOVER_STOP_NOTIFY */
+typedef VoLTE_Event_Handover_Stop_Notify_t volte_req_handover_stop_notify_struct;
+UA_IMCB_MAP_STRUCT(Handover_IP_Ready_Notify, handover_ip_ready_notify_req) /* message: MSG_ID_VOLTE_REQ_HANDOVER_IP_READY_NOTIFY */
+typedef VoLTE_Event_Handover_IP_Ready_Notify_t volte_req_handover_ip_ready_notify_struct;
+
+/***** SRVCC *****/
+UA_IMCB_MAP_STRUCT(SRVCC_Info, srvcc_info) /* message: MSG_ID_VOLTE_SRVCC_START, MSG_ID_VOLTE_SRVCC_END */
+typedef VoLTE_Event_SRVCC_Info_t volte_srvcc_start_struct;
+typedef VoLTE_Event_SRVCC_Info_t volte_srvcc_end_struct;
+UA_IMCB_MAP_STRUCT(List_SRVCC_Call_Ctxt, list_srvcc_call_ctxt) /* message: MSG_ID_VOLTE_SRVCC_CALL_CTXT_TRANSFER */
+typedef VoLTE_Event_List_SRVCC_Call_Ctxt_t volte_srvcc_call_ctxt_transfer_struct;
+
+/**** ANBR ****/
+UA_IMCB_MAP_STRUCT(Media_Anbr_Ind, media_anbr_ind) /* message: MSG_ID_VOLTE_MEDIA_ANBR_IND */
+UA_IMCB_MAP_STRUCT(Media_Anbr_Rsp, media_anbr_rsp) /* message: MSG_ID_VOLTE_MEDIA_ANBR_RSP */
+
+/**** CDMA-less ****/
+UA_IMCB_MAP_STRUCT(IMS_Timer_Status_Ind, ims_timer_status_ind) /* message: MSG_ID_VOLTE_IMS_TIMER_STATUS_IND */
+
+/***** Altc_Address_Req to UA *****/
+UA_IMCB_MAP_STRUCT(Altc_Address_Req, altc_address_req) /* message: MSG_ID_VOLTE_ALTC_ADDRESS_STATUS_REQ */
+typedef VoLTE_Event_Altc_Address_Req_t volte_altc_address_status_req_struct;
+
+/**** USSD ****/
+UA_IMCB_MAP_STRUCT(New_Ussd_CMD, req_send_ussd) // message: MSG_ID_VOLTE_USSD_CMD_REQ
+typedef VoLTE_Event_New_Ussd_CMD_t volte_ussd_cmd_req_struct;
+UA_IMCB_MAP_STRUCT(New_Ussd_IND, ind_recv_ussd) // message: VOLTE_USSD_IND
+typedef VoLTE_Event_New_Ussd_IND_t volte_ussd_ind_struct;
+UA_IMCB_MAP_STRUCT(Ussd_RSP, rsp_send_ussd) // message: MSG_ID_VOLTE_USSD_RSP
+typedef VoLTE_Event_Ussd_RSP_t volte_ussd_rsp_struct;
+UA_IMCB_MAP_STRUCT(Ussd_Urc_Status_REQ, req_ussd_urc_status) // message: MSG_ID_VOLTE_USSD_URC_STATUS_REQ
+typedef VoLTE_Event_Ussd_Urc_Status_REQ_t volte_ussd_urc_status_req_struct;
+
+
+UA_VOLTE_ILM_MAP_STRUCT(Notify, ind_reg_notify_conf_subsc) // message: MSG_ID_VOLTE_IND_REG_NOTIFY_CONF_SUBSC
+UA_VOLTE_ILM_MAP_STRUCT(Call_Refresh, refresh_req) // message: MSG_ID_VOLTE_REFRESH_REQ
+UA_VOLTE_ILM_MAP_STRUCT(Call_Refresh, oos_hangup_req) // message: MSG_ID_VOLTE_OOS_HANGUP_REQ
+UA_VOLTE_ILM_MAP_STRUCT(Call_Rel, rel_session_req) // message: MSG_ID_VOLTE_REL_SESSION_REQ
+UA_VOLTE_ILM_MAP_STRUCT(Queue_SIP, queue_sip_msg_req) // message: MSG_ID_VOLTE_QUEUE_SIP_MSG_REQ
+UA_VOLTE_ILM_MAP_STRUCT(MT_Call_Abort, transfer_abort_req) // message: MSG_ID_VOLTE_TRANSFER_ABORT_REQ
+UA_VOLTE_ILM_MAP_STRUCT(Media_Mod_Ind, transfer_finalize_req) // message: MSG_ID_VOLTE_TRANSFER_FINALIZE_REQ
+UA_VOLTE_ILM_MAP_STRUCT(RTT_Rsp, rtt_rsp) // message: MSG_ID_VOLTE_RTT_RSP
+
+#endif /* _IMSUA_STRUCT_H_ */
diff --git a/mcu/protocol/interface/ims/imcsms_imsua_struct.h b/mcu/protocol/interface/ims/imcsms_imsua_struct.h
new file mode 100644
index 0000000..d955f2d
--- /dev/null
+++ b/mcu/protocol/interface/ims/imcsms_imsua_struct.h
@@ -0,0 +1,235 @@
+/*****************************************************************************
+* 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!
+
+*------------------------------------------------------------------------------
+* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+*==============================================================================
+*******************************************************************************/
+#ifndef _IMCSMS_IMSUA_STRUCT_H
+#define _IMCSMS_IMSUA_STRUCT_H
+
+#include "kal_public_defs.h"
+#include "kal_general_types.h"
+#include "ims_common_def.h"
+
+/*****imcsms_imsua_struct.h START*****/
+typedef enum {
+ IMCSMS_DATA_TYPE_3GPP = 0,
+ IMCSMS_DATA_TYPE_MS_NW_RP_DATA = IMCSMS_DATA_TYPE_3GPP,
+ IMCSMS_DATA_TYPE_NW_MS_RP_DATA,
+ IMCSMS_DATA_TYPE_MS_NW_RP_ACK,
+ IMCSMS_DATA_TYPE_NW_MS_RP_ACK,
+ IMCSMS_DATA_TYPE_MS_NW_RP_ERROR,
+ IMCSMS_DATA_TYPE_NW_MS_RP_ERROR,
+ IMCSMS_DATA_TYPE_MS_NW_RP_SMMA,
+ IMCSMS_DATA_TYPE_3GPP2,
+ IMCSMS_DATA_TYPE_C2K_SUBMIT = IMCSMS_DATA_TYPE_3GPP2, // C2K SMS triggered by AP (AT+C2KCMGS)
+ IMCSMS_DATA_TYPE_C2K_ACKNOWLEDGE,
+ IMCSMS_DATA_TYPE_CDMA_SUBMIT // C2K SMS triggered by MD3 (SDM_VAL_C2K_IND)
+}imcsms_sms_data_type_enum;
+
+typedef enum {
+ IMCSMS_SMS_3GPP = 0,
+ IMCSMS_SMS_3GPP2,
+ IMCSMS_SMS_Text,
+}imcsms_sms_content_type_enum;
+
+typedef enum {
+ IMCSMS_SMS_CATEGORY_NORMAL = 0,
+ IMCSMS_SMS_CATEGORY_EMERGENCY,
+}imcsms_sms_category_enum;
+
+/*
+ * Description
+ * - the primitive is used to send SMS RPDU(RP-DATA/RP-ACK/RP-ERROR) to network through IMS domain
+ * Direction
+ * - SMS sub-module(IMCSMS) --> IMSUA
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 account_id; // normal SMS or emergency SMS
+ kal_uint8 request_id;
+ kal_uint8 cb_id;
+ imcsms_sms_content_type_enum sms_type; // 3GPP_SMS or 3GPP2_SMS
+ imcsms_sms_data_type_enum data_type;
+ kal_bool is_da_valid; /*To specify that the TP-DA has valid content*/
+ kal_bool is_international;/* to specify the type of number is International or Not*/
+ /* spec 23.040 9.1.2.5 mentions the MAX size of TP-DA(Address length(1) + Type-of-address(1) +
+ Address Value(max 10 bytes)) can be 12 bytes, and hence the actual address when converted to
+ string will take 21 bytes including '\0'*/
+ kal_uint8 da[21];
+ kal_uint8 psi[128];
+ imcsms_sms_category_enum sms_category;
+} imcsms_imsua_send_sms_req_struct;
+
+/*
+ * Description
+ * - the primitive is used report SMS RPDU sending status
+ * Direction
+ * - SMS sub-module(IMCSMS) <-- IMSUA
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 account_id;
+ kal_uint8 request_id;
+ imcsms_sms_content_type_enum sms_type; // 3GPP_SMS or 3GPP2_SMS
+ imcsms_sms_data_type_enum data_type;
+ kal_bool result;
+ kal_uint8 cause; // mapping to response code
+} imcsms_imsua_send_sms_cnf_struct;
+
+/*
+ * Description
+ * - the primitive is used notify IMCSMS the received RPDU(RP-DATA/RP-ACK/RP-ERROR)
+ * Direction
+ * - SMS sub-module(IMCSMS) <-- IMSUA
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 account_id;
+ kal_uint8 request_id;
+ kal_uint8 cb_id;
+ imcsms_sms_content_type_enum sms_type; // 3GPP_SMS or 3GPP2_SMS
+ kal_uint8 psi[128];
+} imcsms_imsua_recv_sms_ind_struct;
+
+/*
+ * Description
+ * - the primitive is used to notify UA the received RPDU type and status
+ * Direction
+ * - SMS sub-module(IMCSMS) --> IMSUA
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 account_id;
+ kal_uint8 request_id;
+ kal_uint8 cb_id;
+ kal_uint8 result;
+} imcsms_imsua_recv_sms_rsp_struct;
+
+/*
+ * Description
+ * - the primitive is used to notify UA the SMS FSM is complete and UA is able to clean related callback data
+ * Direction
+ * - SMS sub-module(IMCSMS) --> IMSUA
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 account_id;
+ kal_uint8 request_id;
+ kal_uint8 cb_id;
+} imcsms_imsua_rel_sms_req_struct;
+
+
+/*
+ * Description
+ * - the primitive is used report SMS sub-module the error of IMS domain
+ * Direction
+ * - SMS sub-module(IMCSMS) <-- IMSUA
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 account_id;
+ kal_uint8 request_id;
+ kal_uint8 cause;
+ kal_bool result;
+} imcsms_imsua_recv_sms_error_ind_struct;
+
+/*
+ * Description
+ * - the primitive is used to query CS availability
+ * Direction
+ * - SMS sub-module(IMCSMS) <-- IMSUA
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 account_id;
+ kal_uint8 request_id;
+} imcsms_imsua_cs_availability_ind_struct;
+
+/*
+ * Description
+ * - the primitive is used to notify UA the CS availability query result
+ * Direction
+ * - SMS sub-module(IMCSMS) --> IMSUA
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 account_id;
+ kal_uint8 request_id;
+ kal_bool result;
+} imcsms_imsua_cs_availability_cnf_struct;
+
+/*****imcsms_ua_struct.h END*****/
+
+
+#endif /* _IMCSMS_IMSUA_STRUCT_H */
+
+
diff --git a/mcu/protocol/interface/ims/ims_cc_cause_mapping.h b/mcu/protocol/interface/ims/ims_cc_cause_mapping.h
new file mode 100644
index 0000000..3f47d20
--- /dev/null
+++ b/mcu/protocol/interface/ims/ims_cc_cause_mapping.h
@@ -0,0 +1,22 @@
+ERR_ID_MAP(IMS_CC_CAUSE_NORMAL, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_ABNORMAL, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_NONUMBER, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_UNREGISTERED, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_DISCONNECT, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_BECANCEL, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_BEREJECT, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_BEREJECT_380, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_TO_CS, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_REREG, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_BEREJECT_480, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_BEREJECT_503, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_TX_TIMEOUT, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_NO_PRIVACY, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_PRECONDFAIL, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_SECONDCALL, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_NOMEDIACONTENT, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_INVALIDMSG, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_INVALIDCMD, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_INVALIDIDX, IMS_ERR_UNKNOWN)
+ERR_ID_MAP(IMS_CC_CAUSE_UNAVAILABLE_OF_CALLS, IMS_ERR_UNKNOWN)
+
diff --git a/mcu/protocol/interface/ims/ims_common_def.h b/mcu/protocol/interface/ims/ims_common_def.h
new file mode 100644
index 0000000..f81a353
--- /dev/null
+++ b/mcu/protocol/interface/ims/ims_common_def.h
@@ -0,0 +1,3914 @@
+/*****************************************************************************
+* 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) 2013
+*
+* 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:
+ * ------------
+ * ims_common_def.h
+ *
+ * Project:
+ * ------------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ * This file defines structures and enums commonly used by IMC, ATP, and xDM.
+ *
+ * Author:
+ * -----------
+ * -------
+ *
+ *===========================================================
+ * $Log$
+ *
+ * 07 07 2022 jasleen.k
+ * [MOLY00846008] [MT6873][Margaux][Q0][R3][JAPAN][SOFTBANK][SA][SIM][Lab][Degrade, CORE_GEN-10n-22-1001] On W22.14.P1, UE kept sending PDU_REQ(for IMS) after received DEREGISTRATION_REQ(re-registration required). Note that W21.51.P3 didn't have this issue.
+ *
+ * .
+ *
+ * 07 05 2022 ot_fei.teng
+ * [MOLY00860159] [FeatureDevelopment][ALPSAR07137638] VzW Visible-SIM requirement gap
+ *
+ * .
+ *
+ * 06 10 2022 yung-liang.tsou
+ * [MOLY00876156] [T750][AT]AT+CLCC????
+ *
+ * .AT+CLCC support in IMS
+ *
+ * 04 28 2022 ot_fei.teng
+ * [MOLY00775781] [FeatureDevelopment][ALPSAR06336232] TMOUS 2022Q1 Requirement Gaps Development - CallUA
+ *
+ * .
+ *
+ * 03 30 2022 uri.chang
+ * [MOLY00795972] [FeatureDevelopment][ALPSAR06495798] VzW 2021OCT IMS part
+ * [patch back][97R3.MP to 97R3.MD700.MP] [VzW][21OCT] requirement gap development
+ * VZ_REQ_5GNRSA_4105999311948016
+ * - start Teps_fb_watchdog when 183
+ * - stop Teps_fb_watchdog when 5QI=1
+ *
+ * VZ_REQ_5GNRSA_4105999311948012
+ * - poweroff_ims_dereg_timer = 4.
+ *
+ * 03 21 2022 ot_gang.zhang
+ * [MOLY00668814] [moto][Ellis][IMS][8/13] support EXTRA_ADDITIONAL_SIP_INVITE_FIELDS for Call Filter VZ_REQ_RCSVOLTE_34736
+ *
+ * .
+ *
+ * 02 24 2022 kai-cheng.chiu
+ * [MOLY00677249] [FIH][FLC][ATT][IQI][IODT]15.13 VoLTE Metric Verification Test (Package Validator)- missing MM02 and MM03
+ *
+ * .
+ *
+ * 02 18 2022 ot_hui.tu
+ * [MOLY00648435] [MT6761][Merlot][R0][MP2][TMO][21Q1][simulator][in-house][R&S][Protocol_IMS & VoLTE][63884][L_IMS_VoLTE_423129]PIDF-LO header Included in INVITE message and has Coordinate , Civic Address and GML shape - Ellipsoid
+ *
+ * .
+ *
+ * 02 10 2022 ying-cen.lai
+ * [MOLY00808473] [Cogin patch back] NR15.R3.MP_Sync_To_NR15.R3.MD700.MP
+ *
+ * CL 17659181 / MOLY00684273
+ *
+ * 01 27 2022 kai-cheng.chiu
+ * [MOLY00803278] [Gen97][MD700] CR patch-back from R3.MP
+ *
+ * .
+ *
+ * 12 16 2021 xin.ni
+ * [MOLY00774161] [mt2735][CS eCall][NG eCall][patch back] ecall patch back from NR15.R3.MD700.MP.ECAll.DEV. IMS interface part
+ *
+ * .
+ *
+ * 12 14 2021 ot_gang.zhang
+ * [MOLY00729679] [MT6873][Margaux][Q0][R3][JAPAN][SOFTBANK][SA][SIM][Lab][Voice-06-01-02] Please help to support OTR-Voice-032069
+ *
+ * .
+ *
+ * 10 22 2021 tong.li
+ * [MOLY00687896] [Gen97][4N SQC-Lite][W2128][SA_Focus][Internal][FT][China][Yinchuan][5GMM][SA][SA_EPSFB Call][SA+NSA_TC_21][static][CMCC+CMCC][IS:CMCC]CMCC card cannot camp on NR when hang up the call 1/100
+ * .
+ *
+ * 08 06 2021 olli.kettunen
+ * [MOLY00632727] [IMS][B210302-3193][B200214-074][IOT Historical][PLAY][IMS] DUT is not able to make a voice call when is under WiFi with no Internet access.
+ *
+ * .
+ *
+ * 07 21 2021 parmod.garg
+ * [MOLY00670633] [MT6891][Petrus-P][Customer FT][Xiaomi][India][SQC Excluded][Hyderabad][Airtel]DUT fails to Receive USSD code reply message after disconnecting the ongoing VOLTE call for Airtel operator.
+ * Handle CS service notification during ongoing IMS call for airtel operator
+ * .
+ *
+ * 05 17 2021 uri.chang
+ * [MOLY00624439] [TMO][Echolocate] TMOUS 21Q2 Echolocate feature
+ * [patch back][97R3 to 97MD700.MP][TMOUS][21Q2] Echolocate - interface.
+ *
+ * 05 14 2021 ot_jiaxin.zhou
+ * [MOLY00550463] [M505][C3M][????][Claro]SDN Requirements_?????7.31???????ALPS05060303????????patch
+ *
+ * .
+ *
+ * 03 24 2021 mika.leinonen
+ * [MOLY00607912] [5G-B] [Elsa] DT???IMS preferred????? ? Follow ALPS05435102
+ * Add WFC profile IMS_PREFERRED
+ *
+ * 03 22 2021 tsung-kun.shih
+ * [MOLY00578311] [US_DEV][TMO][2021Q1] Call UA
+ *
+ * .
+ *
+ * 03 16 2021 ds_nikesh.kumar
+ * [MOLY00605923] [IMS-RTD Test][NewChip-FT][MT6298][Mercury][MP0.5][SQC][FR1][4GMM][TCID:_009_PCSCF_Restoration][Beyond Conformance][India][Airtel]REGISTER sent after call end when PCSCF is changed two times during call
+ *
+ * .
+ *
+ * 11 13 2020 peng.pan
+ * [MOLY00589298] [MT6853][Mouton][VzW][CCP2][LC][HQ][RnS][E911][2.41][UE Without UICC, SIB1 PS 911 Supported and SIB2 Emergency Call Not Barred, UE Recently Acquired List has LTE, PS 911 Call Unsuccessful, 911 call Completes on available System ]911 call on the UMTS fail
+ * support handle invite 407 with "Proxy-Authenticate" header.
+ *
+ * 11 13 2020 peng.pan
+ * [MOLY00589298] [MT6853][Mouton][VzW][CCP2][LC][HQ][RnS][E911][2.41][UE Without UICC, SIB1 PS 911 Supported and SIB2 Emergency Call Not Barred, UE Recently Acquired List has LTE, PS 911 Call Unsuccessful, 911 call Completes on available System ]911 call on the UMTS fail
+ * support handle invite 407 with "Proxy-Authenticate" header.
+ *
+ * 11 13 2020 peng.pan
+ * support handle invite 407 with "Proxy-Authenticate" header.
+ *
+ * 11 05 2020 larry.liu
+ * [MOLY00582425] [CM_TMUS][PROTOCOL] Question about +EIRAT
+ * [IRAT] enum change
+ *
+ * 11 05 2020 kino.wang
+ * [MOLY00584131] [MT6893][Petrus-P][MP6][Post MP][SQC][Internal][FT][China][Shaoxing][5GMM][SA][SA Self-Cer][TCID:SA_Self-Cer_FT_02_005][CMCC+CMCC][IS:SIM1 CMCC][Shengli Road][LAT2]dial EPSFB Call ,but setup at GSM
+ *
+ * .
+ *
+ * 09 29 2020 uri.chang
+ * [MOLY00574194] [copy CR]�iH+�j�icall�j 6889 R2��?�O�_�i�H����IMS?�u??�M�W?��ICD�ƥ�
+ *
+ * [patch back][97R2.TC3.SP to 97R3.MP][Huawei][ICD] add info. in SIP_Message/ new SDP_Nego_Info_Event/ add end call cause in Call_Status_Event.
+ *
+ * 09 18 2020 szu-chieh.chiu
+ * [MOLY00569477] [IMS][Telus] v11.0 requirement and gap
+ * IMC.
+ *
+ * 09 18 2020 savvas.chou
+ * [MOLY00570287] [Gen97] VzW T_VzW and T_eps_fallback timer Implementation
+ * VzW EPSFB and confidence level for geolocation
+ *
+ * 09 18 2020 shu-lin.yang
+ * [MOLY00569420] [US_DEV] VZW 2020JUN IMSUA
+ *
+ * R3 TC3 VLIST.
+ *
+ * 09 18 2020 uri.chang
+ * [MOLY00569695] [US_DEV][VZW][MP7] P-CSCF handling for handover
+ * P-CSCF handling for IP/PCO change - interface part (MPD)
+ * merge IP_CHANGE_NOTIFY, PCSCF_RESTORE, and REQ_REREG to CONDITION_CHANGE_NOTIFY.
+ *
+ * 08 28 2020 jin.liang
+ * [MOLY00562709] [5GHP][feature][Data&Call]game space mode
+ * .
+ *
+ * 08 17 2020 frank-th.chen
+ * [MOLY00556671] [MT6873][Margaux][N3GPPOVERDATA.DEV][VoData(Enable)][RDIT] [INDIA][JIO+AIRTEL] VoData(Enable) RDIT test call_is_still_active_after_aeroplane_mode_ON
+ *
+ * .
+ *
+ * 08 14 2020 frank-th.chen
+ * [MOLY00556671] [MT6873][Margaux][N3GPPOVERDATA.DEV][VoData(Enable)][RDIT] [INDIA][JIO+AIRTEL] VoData(Enable) RDIT test call_is_still_active_after_aeroplane_mode_ON
+ *
+ * .
+ *
+ * 08 14 2020 frank-th.chen
+ * [MOLY00556671] [MT6873][Margaux][N3GPPOVERDATA.DEV][VoData(Enable)][RDIT] [INDIA][JIO+AIRTEL] VoData(Enable) RDIT test call_is_still_active_after_aeroplane_mode_ON
+ * .
+ *
+ * 07 29 2020 jin.liang
+ * [MOLY00550525] [Oppo] Please provide CMCC, CT and CU來電�feature
+ * .
+ *
+ * 07 27 2020 frank-th.chen
+ * [MOLY00549478] [Gen97][HE3.0]N3GPP offload over data feature
+ *
+ * VoData - IMS - IMCB
+ *
+ * 07 27 2020 zhongyong.wang
+ * [MOLY00546974] [MT6873][Margaux][Q0][R3][IOT][Japan][KDDI][CATv2.10.0.A][In-House CAT][L20_3-6_VoLTE_Error_INV_Retry-After]The DUT failed to send INVITE request after 404 response.
+ *
+ * ALPS05245377.
+ *
+ * 07 27 2020 yulong.chang
+ * [MOLY00549478] [Gen97][HE3.0]N3GPP offload over data feature
+ * VoData VDM part
+ *
+ * 07 20 2020 yingfui.hung
+ * [MOLY00546514] [Gen97][CT][hVolte] add SBP to config default hVolte mode as VoPS
+ *
+ * .
+ *
+ * 07 15 2020 jin.liang
+ * [MOLY00517562] [self]503���请��
+ * .
+ *
+ * 07 14 2020 yingfui.hung
+ * [MOLY00545028] [Gen97][L4] revise AT+EIREG
+ *
+ * .
+ *
+ * 07 10 2020 jin.liang
+ * [MOLY00523315] ?�DM?��?��?��?�语?��??��?��?��?��?��??200OK,�?��?�失?
+ *
+ * .
+ *
+ * 07 06 2020 huifeng.jing
+ * [MOLY00529481] [B200526-2172]??????????????5G NV-IOT-SA??SA+NSA??????NSA?????SA?????
+ * NR_recover.
+ *
+ * 07 04 2020 frank-th.chen
+ * [MOLY00538261] [Blocking][CCP2-P0][MT6885][Petrus][TMO-US][MP5][SQC][20Q2][q0][HQ][Keysight][Protocol_Wi-Fi Calling][60474][L-ePDG -97602-7]The msg doesn't contain header field P-Location-Object - Error
+ * +EIMSGEO after AT+ELOCAEN
+ *
+ * 06 30 2020 tsung-kun.shih
+ * [MOLY00508983] [Call UA][TCL][Tokyo Lite TMO][RCS][Android Q]Apply RCS enriched calling feature patch for platform part.
+ *
+ * .
+ *
+ * 06 30 2020 frank-th.chen
+ * [MOLY00526066] ALPS05120134 [TCL][Tokyo Lite TMO]WFC] The "P-LANI TIMESTAMP here" in invite is not correct, it is display the invite timestamp. The time reported is not in UTC or local time for LTE/ 3G/ 2G
+ *
+ * .
+ *
+ * 06 15 2020 frank-th.chen
+ * [MOLY00526066] ALPS05120134 [TCL][Tokyo Lite TMO]WFC] The "P-LANI TIMESTAMP here" in invite is not correct, it is display the invite timestamp. The time reported is not in UTC or local time for LTE/ 3G/ 2G
+ *
+ * .
+ *
+ * 05 27 2020 ari.simonen
+ * [MOLY00527994] [Gen97] SPI Allocation Patchback, IMS Stack part
+ *
+ * MOD_IPSEC assisted SPI allocation support for IMS Stack
+ *
+ * 05 13 2020 tong.li
+ * [MOLY00515430] ??U??IMS`?M????D?\Mf
+ * .
+ *
+ * 05 07 2020 johnson.liu
+ * [MOLY00514296] i19131jiPVTjif??j19131CU+CTD(IMS+IMS)Ad1CUƥdMO3GAv2/20
+ * .
+ *
+ * 04 03 2020 delphine.wang
+ * [MOLY00508252] [MT6889][Petrus][5G FT][5GMM][China][CMCC][SA][IODT][端å°ç«¯][OPPO Load][Hangzhou][2.1]1314_CMCC+CMCC??1ï¿??????????��???HD???????��?
+ * [MOLY00508252] [MT6889][Petrus][5G FT][5GMM][China][CMCC][SA][IODT][端å°ç«¯][OPPO Load][Hangzhou][2.1]1314_CMCC+CMCC??1ï¿??????????��???HD???????��?
+ * [MOLY00508252] [MT6889][Petrus][5G FT][5GMM][China][CMCC][SA][IODT][端å°ç«¯][OPPO Load][Hangzhou][2.1]1314_CMCC+CMCC??1ï¿?????��???HD???????��?
+ *
+ * .
+ *
+ * 03 24 2020 xw.wang
+ * [MOLY00507077] [MT6739][Zion][Q0][WW FT][Turkey][Istanbul][4GMM][IMS][Regression][SQC Excluded][TurkTelekom][VoWiFi] To check the PCNI requirements, Cell Time is showing 0
+ *
+ * .
+ *
+ * 03 03 2020 jianing.zu
+ * [MOLY00502624] [MT6873][Margaux][Q0][MP2][SQC][5G FT][NSA][5GMM][China][CMCC][FT][CMCC FT][RT][Shanghai][5G-FT-NSA-1.3]Call drop happened after upgrade failed
+ * .
+ *
+ * 02 24 2020 shu-lin.yang
+ * [MOLY00501087] [US_DEV][Altice] call ua dev
+ *
+ * .
+ *
+ * 02 03 2020 sami.jutila
+ * [MOLY00481544] [MT6873][Margaux][Q0][MP3][SQC][EE][FT][UK][Cambridge][IMS][TCID:WFC_MIMS_026] SIM2 WFC to VoLTE HO. No audios, call drop.
+ * .
+ *
+ * 01 06 2020 yingfui.hung
+ * [MOLY00469528] [Gen97][VMOLY][SA][hVolte] hVolte revise for SA
+ *
+ * .
+ *
+ * 12 08 2019 chengwen.liu
+ * [MOLY00464287] [VMOLY][Gen97] UA ASSERT Removal & IMCB/UA state unsync handling
+ *
+ * .
+ *
+ * 12 04 2019 yuheng.li
+ * [MOLY00443618] [VMOLY]Gen97 Common Feature : Call and Supplementary Service �� IMSProtoc9-support 607
+ *
+ * .
+ *
+ * 10 29 2019 yuheng.li
+ * [MOLY00443618] [VMOLY]Gen97 Common Feature : Call and Supplementary Service �� IMSProtoc9-support 607
+ * 12 02 2019 szu-chieh.chiu
+ * [MOLY00462969] [VMOLY][Gen97] IMCB ASSERT Removal
+ * IMCB ASSERT Removal -- IMCB/UA state unsync handling.
+ *
+ * 11 26 2019 jianing.zu
+ * [MOLY00461552] [Petrus][Q0] CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER
+ * .
+ *
+ * 11 26 2019 jianing.zu
+ * [MOLY00461552] [Petrus][Q0] CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER
+ * .
+ *
+ * 11 26 2019 jianing.zu
+ * [MOLY00461552] [Petrus][Q0] CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER
+ * .
+ *
+ * 11 21 2019 parmod.garg
+ * [MOLY00460714] [MT6885][Petrus][MP1][SQC][India][Delhi][FT][VoLTE][Airtel][Vodafone][Free Test] DUT fails to give USSD result for SIM2 Vodafone operator when initiating alternately.
+ * wait for BYE 200 OK response for USSD on vodafone India N/W
+ * .
+ *
+ * 11 20 2019 ari.simonen
+ * [MOLY00460381] [MT6885][Petrus][MP1][SQC][IMS][FDD][4GMM][UK][EE][TCID:V-ECC-014]: IMS service aborted permanently if initial registration collides with emergency registration
+ *
+ * Fixed a nal_monitor()/SOCKET_EVENT_IND loop when SIPTX fails to map any connection to the received SOCKET_EVENT_IND.
+ * Also improved SIPTX, Call UA and USSD UA tracing.
+ *
+ * 11 20 2019 tong.li
+ * [MOLY00460516] [Rose][Petrus]BSP+][Q0]SIMB camp on 4G slowly (about 1'30") after set default data in SIMA.
+ * .
+ *
+ * 11 08 2019 mika.leinonen
+ * [MOLY00457775] [MT6885][Petrus][MP1][India][Delhi][FT][VoLTE][JIO][IDEA][Auto][SWIFT][ASSERT] file:mcu/protocol/ims/stack/src/reg/reg.c line:9665
+ * Change Reg UA client field to 64-bit because there can be more than 32 UA contexts
+ *
+ * 11 08 2019 mika.leinonen
+ * [MOLY00457775] [MT6885][Petrus][MP1][India][Delhi][FT][VoLTE][JIO][IDEA][Auto][SWIFT][ASSERT] file:mcu/protocol/ims/stack/src/reg/reg.c line:9665
+ * Change Reg UA client field to 64-bit because there can be more than 32 UA contexts
+ *
+ * 11 06 2019 ari.simonen
+ * [MOLY00457408] [MT6885][Petrus][MP1][SQC][MDST][SWIFT][TW][CHT+CHT][4G MM][ASSERT] file:mcu/protocol/ims/core/src/os/api_mem.c line:122
+ *
+ * Enabled ADM logging option for IMS memory pool
+ *
+ * 11 04 2019 xin.ni
+ * [MOLY00431597] [IMS Interface][version#0x74][MD] add new retry on-going in reg_state
+ *
+ * .
+ *
+ * 11 04 2019 xin.ni
+ * [MOLY00431597] [IMS Interface][version#0x74][MD] add new retry on-going in reg_state
+ *
+ * .
+ *
+ * 09 25 2019 savvas.chou
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM and VISIBLE SIM
+ *
+ * 09 25 2019 savvas.chou
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM and VISIBLE SIM
+ *
+ * 09 25 2019 savvas.chou
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM and VISIBLE SIM
+ *
+ * 09 25 2019 savvas.chou
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM and VISIBLE SIM
+ *
+ * 09 25 2019 savvas.chou
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM and VISIBLE SIM
+ *
+ * 09 25 2019 savvas.chou
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM and VISIBLE SIM
+ *
+ * 09 25 2019 savvas.chou
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM and VISIBLE SIM
+ *
+ * 09 25 2019 savvas.chou
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM and VISIBLE SIM
+ *
+ * 09 25 2019 savvas.chou
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM and VISIBLE SIM
+ *
+ * 09 23 2019 ssu-hsien.wu
+ * [MOLY00438070] [Gen97][IMS] STKCALL and STKUSSD over IMS
+ *
+ * .
+ *
+ * 09 11 2019 joni.huttula
+ * [MOLY00399073] [Submarine]EM debug message not sent as correct ILM messages
+ *
+ * .
+ *
+ * 08 26 2019 jani.manninen
+ * [MOLY00433041] [Gen97][EPSFB] IT related issues
+ *
+ * VMOLY.APOLLO.SQC - IMS 5G Voice Support Changes
+ *
+ * 08 21 2019 jani.manninen
+ * [MOLY00432937] [VONR] LTECSR Changes for 5G Voice Support - LTECSR
+ *
+ * Interface clean up for 5G Voice Support
+ *
+ * 08 14 2019 jani.manninen
+ * [MOLY00431762] [VONR] IWLAN Changes for 5G Voice Support - IWLAN
+ *
+ * VMOLY.V.5GVOICE.DEV - IWLAN (Interface / ATP / IWLAN / UT)
+ *
+ * 07 25 2019 sami.jutila
+ * [MOLY00424277] [Submarine][UT]UT reliability improvement
+ *
+ * [NR] P-Access-Network-Info, Cellular-Network-Info headers
+ *
+ * 07 24 2019 lipak.sen
+ * [MOLY00423057] [IMS][Gen97] [VMOLY] Gen93 R3 to VMOLY Trunk Patch Back
+ *
+ * .
+ * VzW ClientAPI patch back [MOLY00385190] : Gen93 R3 to VMOLY
+ * 1) [MOLY00351936] [VzW][clientAPI : VZ_REQ_RCS_3948 ]RegistrationListener implementation for clientAPI
+ * - EIMSREGURI
+ *
+ * ++
+ *
+ * Fix side effect of Sami's CL 8766583 and 8768193 (UT reliability change)
+ * Should not enforce any AT cmd relay to particular event like EIMSXUI
+ *
+ * 07 23 2019 ari.simonen
+ * [MOLY00402881] [Gen97][Submarine] Submarine M1 VMOLY patch back - IMS
+ *
+ * Fixed IMC_SIM_NUM definition for single-SIM targets
+ *
+ * 07 19 2019 ari.simonen
+ * [MOLY00402881] [Gen97][Submarine] Submarine M1 VMOLY patch back - IMS
+ *
+ * Added __SUPPORT_CLIB_TIME__ for time() calls for Petrus as the function is temporarily unavailable.
+ * Also fixed GEMINI flagging.
+ *
+ * 07 18 2019 chengwen.liu
+ * [MOLY00392539] IMS注�?��?�常??�点??????
+ *
+ * .
+ * MPD
+ *
+ * 07 18 2019 frank-th.chen
+ * [MOLY00422529] VMOLY patch back
+ *
+ * .
+ *
+ * 07 18 2019 frank-th.chen
+ * [MOLY00422529] VMOLY patch back
+ *
+ * .
+ *
+ * 07 17 2019 lipak.sen
+ * [MOLY00422252] [IMS][Gen97] [Submarine] Submarine VMOLY Patch Back
+ *
+ * .
+ * SUBMARINE DEV patch back to VMOLY (MOLY00416875 + MOLY00411449)
+ *
+ * 07 17 2019 rahul.gupta
+ * [MOLY00422520] [VMOLY] patchback for IMS(IMC/IMCB)
+ *
+ * 07 17 2019 tong.li
+ * [MOLY00422101] �i�s¦??��?�j18073 CMCC+CMCC�A�d1��?4G CSFB MT��? 16/50
+ * .
+ *
+ * 07 12 2019 theresa.yang
+ * [MOLY00357356] [US_DEV][VzW][2018_JUN] CALL/SMS UA dev
+ *
+ * Patch back VZW -MOLY00357356.
+ *
+ * [MOLY00357356] 97 Submarine scope patches sync to Submarine DEVs
+ * [MOLY00357356][US_DEV][VzW][2018_JUN] CALL/SMS UA dev
+ * [MOLY00382398][VZW][ZTE][6761] Client API patch back
+ * [MOLY00386977][US_DEV][VzW][2018_OCT] CALLUA dev
+ * [MOLY00394340][US_DEV][MDMI] CALL UA part
+ * [MOLY00395789][US_DEV][VZW][PST tool] phone context uri
+ *
+ * 05 10 2019 shu-lin.yang
+ * [MOLY00357356] [US_DEV][VzW][2018_JUN] CALL/SMS UA dev
+ *
+ * [MOLY00357356] 97 Submarine scope patches sync to Submarine DEVs
+ * [MOLY00357356][US_DEV][VzW][2018_JUN] CALL/SMS UA dev
+ * [MOLY00382398][VZW][ZTE][6761] Client API patch back
+ * [MOLY00386977][US_DEV][VzW][2018_OCT] CALLUA dev
+ * [MOLY00394340][US_DEV][MDMI] CALL UA part
+ * [MOLY00395789][US_DEV][VZW][PST tool] phone context uri
+ *
+ * .
+ * 05 07 2019 savvas.chou
+ * [MOLY00403400] [Submarine] M1 to VMOLY
+ * .
+ *
+ * 04 15 2019 savvas.chou
+ * [MOLY00398799] [MT6297][IMC/IWLAN] changes for 97
+ * IWLAN/IMC re-org
+ *
+ * 11 01 2018 kuan-wei.chen
+ * [MOLY00346647] [MT6297][VDM/L4] changes for 97
+ * [VMOLY][VDM][MPD]
+ *
+ *
+ *
+ *
+ * 07 31 2018 savvas.chou
+ * [MOLY00342215] [Pre-sanity][caseFail][alps-mp-o1.mp1][k63v1us_64_bsp_na_cxp][2018.07.23.11.00][TC_201][userdebug]
+ * RCS feature handler refine
+ *
+ * 07 17 2018 savvas.chou
+ * [MOLY00334020] [IMC][RCS] Support AT+ERCSIMS=3 & 4 for ROI reg. & dereg. events
+ * Support AT+ERCSIMS=3 & 4 for ROI reg. & dereg. events
+ *
+ * 05 21 2018 hsin-jun.tang
+ * [MOLY00325423] [IWLAN] Debug enhancement - A. IWLAN log enhancement, B. KAL legacy API DHL new API
+ * [IWLAN] log enhancemnet -
+ * A. apply DHL new log API
+ * B. log enhancement - primitives number to enum
+ * change:
+ * D2RM, L4C, SDM, ATP
+ * no change:
+ * WO, L4BNW, SIM, L4BPWR, IMC
+ *
+ * ATP:
+ * 1. ESRVSTATE
+ * 2. ECNCFG
+ * 3. EWIFIEN
+ * 4. EWFCPREF
+ * 5. EWIFIASC
+ * 6. Remove EPLWTH, EGREG
+ * 7. EIWLPING
+ * 8. EIRAT
+ *
+ * 05 15 2018 ben.chiu
+ * [MOLY00326014] [Gen95][MSPM] SW changes check in UMOLYE
+ *
+ * SRU2.0 and MPSM (include REG UA/IMCB/IMC part)
+ *
+ * 02 12 2018 ben.chiu
+ * [MOLY00307329] [UMOLYE][Volunteer Patch][IMS]Dual IMS registration enhacement
+ *
+ * UMOLYE, IMS part - Dual IMS registration latency improvement
+ *
+ * 02 12 2018 ben.chiu
+ * [MOLY00307329] [UMOLYE][Volunteer Patch][IMS]Dual IMS registration enhacement
+ * UMOLYE, IMS part - Dual IMS registration latency improvement
+ *
+ * 01 09 2018 ben.chiu
+ * [MOLY00299550] [MP2][MT6763][Bianco][N1][India FT][Chennai][WW FT][IMS][FDD][RJIO][V-ECC_011]Emergency call is getting disconnected when we remove sim card during ECC call - IMS part
+ *
+ * IMS part - ECC call and plug-out SIM
+ *
+ * 11 22 2017 yulong.chang
+ * [MOLY00291144] [VDM][Verizon][WiFi] UE will not select CS domain when T_ePDG_CS is ongoing (VDM part)
+ * VzW_2017June_VZ_REQ_WIFI_2990111 T_ePDG_CS (VDM part)
+ *
+ * 11 22 2017 yulong.chang
+ * [MOLY00290314] [VDM][Hugeland Tool] Enhanced the delay release CS semaphore mechanism (VDM part)
+ *
+ * Enhanced delay release CS semaphore (VDM part)
+ *
+ * 11 22 2017 yulong.chang
+ * [MOLY00290314] [VDM][Hugeland Tool] Enhanced the delay release CS semaphore mechanism (VDM part)
+ * Enhanced delay release CS semaphore (VDM part)
+ *
+ * 11 16 2017 ben.chiu
+ * [MOLY00290015] [LR12A.R2.MP] L+L New Feature: Occupy HPS for IMS RE-REG (IMS common header)
+ *
+ * IMS request HPS for re-reg/re-sub - IMS common interface
+ *
+ * 08 04 2017 ssu-hsien.wu
+ * [MOLY00268620] [VzW][CDMA-less][UMOLYA][Volunteer Patch] IMC patch back.
+ *
+ * 04 07 2017 yingfui.hung
+ * [MOLY00240312] [93] CT VoLTE modem re-architecture
+ *
+ * .
+ *
+ * 01 11 2017 ben.chiu
+ * [MOLY00220510] [93 PREIT_DEV][UMOLYA] Rename IMSP interface/context/API to ATP and reorg folder layout
+ *
+ * [IMC]ATP rename patch back
+ *
+ * 06 24 2016 benjamin.kuo
+ * [MOLY00185907] [MT6293] [ENAS] UMOLY merge to UMOLYA
+ * sync. UMOLY to UMOLYA: common part
+ *
+ * 06 01 2016 kuan-wei.chen
+ * [MOLY00146327] [VzW] hVoLTE implementation
+ * vzw patchback - L4, VDM
+ *
+ * 03 28 2016 shih-che.chou
+ * [MOLY00171298] [RAC] Sync from LR11 to UMOLY
+ * .
+ *
+ * 12 31 2015 ariel.lin
+ * [MOLY00155610] [91VzW] IMS over eHRPD patch back
+ * .
+ *
+ * 12 23 2015 allen.hsu
+ * [MOLY00154513] [MT6755][VzW][chipset][RDIT][Intertek][Sprient][Multi][LTEC2K][iRAT][4.5] IMS abnormal trigger register on MD3 1xRTT or eHRPD
+ *
+ * add RAT_NONE for +EIMSINFO.
+ *
+ * 09 17 2015 ben.chiu
+ * [MOLY00141935] [IMS interface][version#0x39]IMS interface v1.2 check-in
+ * (v1.2)ims interface re-org
+ *
+ * 08 26 2015 ben.chiu
+ * [MOLY00138217] [ViLTE] M0 migration ViLTE feature Interface
+ * ViLTE interface patch back
+ *
+ * 07 31 2015 lexel.yu
+ * [MOLY00085703] [VDM][MT6291] Sync MOLY to UMOLY
+ * [MOLY00090762] [LTE][E911]Device is unable to initiate VoLTE E-911 calls with No SIM card
+ *
+ * 07 30 2015 ariel.lin
+ * [MOLY00125491] [Interface][MPGATE][MT6795][L1][VoLTE][HongKong][FT][Cross-Operators] swap the hold call then hang up one call , UE-A can not unhold the another call
+ * add new call stop cause.
+ *
+ * 07 09 2015 nick.wang
+ * [MOLY00127009] WFC Patch back to UMOLY- interface part
+ * .moly wfc interface patch
+ *
+ * 07 09 2015 nick.wang
+ * [MOLY00127009] WFC Patch back to UMOLY- interface part
+ * .jade interface sync
+ *
+ * 07 03 2015 ariel.lin
+ * [MOLY00125491] [Interface][MPGATE][MT6795][L1][VoLTE][HongKong][FT][Cross-Operators] swap the hold call then hang up one call , UE-A can not unhold the another call
+ * add new call stop cause.
+ *
+ * 06 17 2015 nick.wang
+ * [MOLY00118763] [WFC] feature patch back IMS interface for MD (MP7)
+ * .IMS interface
+ *
+ * 06 09 2015 benjamin.kuo
+ * [MOLY00119265] [WFC] feature patch back for VDM/SDM/ATP - interface/SAP parts
+ * interface - common part.
+ * 04 17 2015 nick.wang
+ * [MOLY00098970] [ALPS01981207] [L][WFC] firt patch feature in
+ * .merge 1224875
+ *
+ * 04 17 2015 ben.chiu
+ * [MOLY00108033] [VoLTE][TMOUS][Volunteer Patch] CALL ERROR CODE HANDLING(CALL PERFORMANCE)
+ * TMOUS MOS patch back
+ * 04 09 2015 nick.wang
+ * [MOLY00098970] [ALPS01981207] [L][WFC] firt patch feature in
+ * .
+ * confirm patched
+ *
+ * 04 02 2015 benjamin.kuo
+ * [MOLY00105813] [WFC] migrate VDM from WFC.FPB to CMCCVOLTE.WFC.FPB
+ * .
+ *
+ * 04 02 2015 benjamin.kuo
+ * [MOLY00105813] [WFC] migrate VDM from WFC.FPB to CMCCVOLTE.WFC.FPB
+ * .interface part
+ *
+ * 04 01 2015 danny.kuo
+ * [MOLY00097520] [WFC] SDM wifi calling support
+ * .
+ *
+ * 04 01 2015 danny.kuo
+ * [MOLY00097520] [WFC] SDM wifi calling support
+ * .
+ *
+ * 04 01 2015 danny.kuo
+ * [MOLY00097520] [WFC] SDM wifi calling support
+ * .
+ *
+ * 03 03 2015 allan.ke
+ * [MOLY00097577] [K2][CMCC][DSDS][VoLTE][HZ][NV-IOT][Conference] 6.4.5.9 VoLTE MT hangup after it happens SRVCC.
+ * .
+ *
+ * 02 13 2015 allan.ke
+ * [MOLY00096007] [L MR1] Transfer call number to CS domain when performing SRVCC
+ * .
+ *
+ * 02 05 2015 allan.ke
+ * [MOLY00095053] [CMCC VoLTE][VDM] Report AP correct call disconnect reason to trigger normal to emergency redial
+ * .
+ *
+ * 02 04 2015 ariel.lin
+ * [MOLY00093808] [VoLTE][Volunteer Patch] Migration from Lrefac/CMCC to MP7 (MR0 --> MR1 activity)
+ * Merge from MP6.CMCC3 to MP7.FPB.
+ *
+ * 02 04 2015 allan.ke
+ * [MOLY00092209] [CMCC VoLTE] @o_Conference call
+ *
+ * 02 04 2015 allan.ke
+ * [MOLY00092209] [CMCC VoLTE] @o_Conference call
+ * .
+ * 04 27 2015 ben.chiu
+ * [MOLY00109234] [VoLTE][Volunteer Patch] MP7.CMCCVOLTE.FPB merge back to MP7/MP7.CMCC
+ * MP7.CMCCVOLTE.FPB merge back to MP7
+ *
+ *
+ * 04 27 2015 ben.chiu
+ * [MOLY00109234] [VoLTE][Volunteer Patch] MP7.CMCCVOLTE.FPB merge back to MP7/MP7.CMCC
+ * MP7.CMCCVOLTE.FPB merge back to MP7
+ *
+ * 12 12 2014 ben.chiu
+ * [MOLY00059341] [6290E1][VoLTE][IT][Volunteer Patch]
+ * CMCC requirement 6.7, 380 handling
+ *
+ * 08 14 2014 jinghan.wang
+ * [MOLY00075286] [VDM] IMS MO call timeout (dedicated bearer setup failure) trigger call retry on CS domain
+ * IMS MO call timeout trigger call retry on CS domain - VDM TRK part
+ *
+ * 08 13 2014 ariel.lin
+ * [MOLY00064412] [VoLTE][Volunteer Patch]
+ * MP6 merge back to TRUNK
+ *
+ * 07 09 2014 ariel.lin
+ * [MOLY00071716] [VoLTE][volunteer patch] Add timer for protect the period of sending INVITE request to bandwidth reservation
+ * link to ALPS01634796
+ *
+ * 07 07 2014 benjamin.kuo
+ * [MOLY00071459] Add Mobility Management for IMS Voice Termination
+ * MMIVT2MP6
+ *
+ * 07 07 2014 benjamin.kuo
+ * [MOLY00071459] Add Mobility Management for IMS Voice Termination
+ * MMIVT2MOLY
+ *
+ * 06 04 2014 ben.chiu
+ * [MOLY00059341] [6290E1][VoLTE][IT][Volunteer Patch]
+ * Integration change for 504 cause
+ *
+ * 06 04 2014 ben.chiu
+ * [MOLY00059341] [6290E1][VoLTE][IT][Volunteer Patch]
+ * 504 cause
+ *
+ * 03 17 2014 ben.chiu
+ * [MOLY00059341] [6290E1][VoLTE][IT][Volunteer Patch]
+ * SRVCC cause mapping to error report
+ *
+ * 03 17 2014 ben.chiu
+ * [MOLY00059341] [6290E1][VoLTE][IT][Volunteer Patch]
+ * Add SRVCC cause
+ *
+ * 02 17 2014 ben.chiu
+ * [MOLY00056189] [6290E2][VoLTE][SRVCC] New feature for SRVCC R10 - IMC part
+ * check-in SRVCC R10 feature for IMC and /modem_interface/ims
+ *
+ * 02 05 2014 benjamin.kuo
+ * [MOLY00055409] [MT6582LTE][VoLTE][AdvIT][MO] NO AT Command Response for AT+CMMIVT? command
+ * Fix build error.
+ *
+ * 01 22 2014 ben.chiu
+ * [MOLY00054726] [6290E2][VoLTE][AdvIT][Emerg] change IMS reg state enum and disable emergency IMS reg state indication to AP
+ * change IMS reg state enum
+ *
+ * 01 14 2014 ben.chiu
+ * [MOLY00053410] [VoLTE][IMC] merge IMC to MOLY TRUNK
+ * AT+CDU=0 feature in
+ *
+ * 01 14 2014 ben.chiu
+ * [MOLY00053410] [VoLTE][IMC] merge IMC to MOLY TRUNK
+ * Add IMC handle for ads ctrl to VDM
+ *
+ * 01 13 2014 ben.chiu
+ * [MOLY00053410] [VoLTE][IMC] merge IMC to MOLY TRUNK
+ * Add ads_ctrl message to VDM for Test Mode
+ *
+ * 12 09 2013 ben.chiu
+ * [MOLY00049586] [6290E1][VoLTE][IT][Volunteer Patch] submit advanced call feature
+ * SS phase2 conferce call check-in
+ * for IMCB pre-checkin (if failed the Basic IT, it will be rollback)
+ *
+ * 12 10 2013 vend_edwin.liu
+ * ATP.
+ *
+ * 11 27 2013 ben.chiu
+ * [MOLY00048108] [MT6582LTE][IMS][VoLTE][Basic IT][Volunteer Patch] IMS enable/disable feature-in
+ * IMS enable/disable feature-in for IMC related part
+ *
+ * 11 27 2013 chinte.chen
+ * [MOLY00048106] [MT6582LTE][IMS][VoLTE][Basic IT][IT3-144] add result to RecvSMSRsp to handle multiple MT SMS simulatously
+ * .
+ *
+ * 11 25 2013 ben.chiu
+ * [MOLY00047708] [6290E1][VoLTE][IT][Volunteer Patch] Add IMS enable/disable feature
+ * pre-checkin ims_dereg_cause_enum
+ *
+ * 09 12 2013 ben.chiu
+ * [MOLY00037010] [6290E1][VoLTE][IT]IMS DEV IMC code check-in
+ * IMC merge code v1, sync to Ben's CBR CL: 258323
+ *****************************************************************************/
+
+#ifndef _IMS_COMMON_DEF_H_
+#define _IMS_COMMON_DEF_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+// To use some enums such as ue_mode_enum, voice_domain_preference_enum, ...
+#include "l3_inc_enums.h"
+#include "ps_public_enum.h"
+
+/******************************************************************************
+ * Constant
+ *****************************************************************************/
+#define IMC_SMS_SUCCESS 1
+#define IMC_SMS_FAIL 0
+
+#define IMC_ATCMD_MAX_CMDLINE_LEN (MD_ATCMD_LEN - MD_ATCMD_PREFIX_LEN)
+#define IMC_MAX_ILM_BUFFER_LEN IMC_IPC_BODY_LNE - 4
+#define IMC_IPC_BODY_LNE 3392
+
+#define IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH 16
+#define IMCB_IMC_MAX_RED_LEVEL 3
+#define IMCB_IMC_MAX_RECV_CODEC_LIST_LENGTH 8
+
+#define IMCB_IMC_IPADDR_LENGTH 16
+
+#define IMS_P_ASSERT_URI_LEN 512
+
+#define MAX_CC_ATD_NUM_LEN 81
+#define MAX_C2K_SMS_DA (20+1)
+
+#define MD_ATCMD_LEN 2048
+#define MD_ATCMD_PREFIX_LEN 20
+
+#define VOLTE_MAX_ACCOUNT_NUM 4
+#define VOLTE_MAX_CALL_SESSION (3*VOLTE_MAX_ACCOUNT_NUM)
+#define VOLTE_MAX_ADDRESS_LENGTH 64
+#define VOLTE_MAX_IF_NAME_LENGTH 16
+#define VOLTE_MAX_AUTH_NC 12
+#define VOLTE_MAX_AUTH_NONCE 64
+#define VOLTE_MAX_AUTH_REALM 32
+#define VOLTE_MAX_AUTH_RESPONSE 256
+#define VOLTE_MAX_AUTH_AUTS 256
+#define VOLTE_MAX_AUTH_CK 256
+#define VOLTE_MAX_AUTH_IK 256
+#define VOLTE_MAX_TIME_STAMP_LENGTH 32
+#define VOLTE_MAX_CELL_ID_LENGTH 64
+#define VOLTE_MAX_CALL_ID_LENGTH 128
+#define VOLTE_MAX_REG_CAPABILITY_LENGTH 256
+#define VOLTE_MAX_SSID_LENGTH 32
+#define MD_ATCMD_LEN 2048
+#define MD_ATCMD_PREFIX_LEN 20
+#define VOLTE_MAX_REG_UID_LENGTH 256
+#define VOLTE_MAX_DOMAIN_NAME_LENGTH 256
+#define VOLTE_MAX_ADDRESS_LIST_LENGTH 256
+#define VOLTE_MAX_IMEI_LENGTH 20
+#define VOLTE_MAX_IMEI_SVN_LENGTH 4
+#define VOLTE_MAX_URI_LENGTH 128
+#define VOLTE_MAX_ASSOCIATED_URI (VOLTE_MAX_URI_LENGTH << 2)
+#define VOLTE_MAX_GRUU_LENGTH 128
+#define VOLTE_MAX_SERVICE_ROUTE_LENGTH 256
+#define VOLTE_MAX_TIMESTAMP_LENGTH 256
+#define VOLTE_MAX_SECURIT_VERIFY_LENGTH 768 //6 algo combo
+#define VOLTE_MAX_USER_AGENT_LENGTH 128
+#define VOLTE_MAX_P_ACCESS_NETWORK_INFO_LENGTH 256
+#define VOLTE_MAX_DIGIT_PIDENTIFIER_LENGTH 256
+#define VOLTE_MAX_DIGIT_PPA_LENGTH 4096
+#define VOLTE_REG_MAX_UUID_LENGTH 32
+#define VOLTE_MAX_SDP_PARAMETER_SET_LENGTH 256 // H.264, Spros parameter sets, must align with LTE_VT_SRV_UA_PARAMETER_SIZE_MAX.
+#define VOLTE_MAX_SDP_FMTP_TOT_VALUE_LENGTH 32 // The maximum length of total fmtp specific parameter key and value, must align with LTE_VT_SRV_UA_FMTP_SIZE_MAX.
+#define VOLTE_IPADDR_LENGTH 16
+#define VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH 16
+#define VOLTE_MAX_SDP_EGBYTE_LENGTH 8
+#define VOLTE_MAX_CNAME_LENGTH 52
+#define VOLTE_MAX_REQUEST_LINE_LENGTH 512
+
+
+/*****imc_general_def.h START*****/
+#define IMC_MAX_CELL_ID_LEN 64
+#define IMC_MAX_PLMN_LEN 8 /* WFC four bytes in hex, 6 + '\0' */
+#define IMC_MAX_LAC_LEN 8 /* WFC four bytes in hex, 4 + '\0' */
+#define IMC_MAX_CI_LEN 12 /* WFC four bytes in hex, 8 + '\0' */
+#define IMC_MAX_IMEI_LEN 20
+#define IMC_MAX_IMEI_SVN_LEN 4
+#define IMC_MAX_MNC_MCC_LEN 4
+#define IMC_MAX_IMPU_NUM 5
+#define IMC_MAX_IMPU_LEN 256
+#define IMC_MAX_IMPU_TLV_LEN 2048
+#define IMC_MAX_IMPI_LEN 256
+#define IMC_MAX_DOMAIN_NAME_LEN 256
+#define IMC_MAX_IMSI_LEN 16
+#define IMC_MAX_RESPONSE_LEN 256
+#define IMC_MAX_AUTS_LEN 256
+#define IMC_MAX_CK_LEN 256
+#define IMC_MAX_IK_LEN 256
+#define IMC_MAX_NONCE_LEN 64
+#define IMC_MAX_NC_LEN 12
+#define IMC_MAX_AUTN_LEN 32
+#define IMC_MAX_RAND_LEN 32
+#define IMS_PCSCF_MAX_NUM 16
+#define IMC_MAX_SIM_SMSP_LEN 256
+#define IMC_MAX_USIM_MSISDN_LEN 12
+#define IMC_MAX_USIM_PSISMSC_LEN 256
+#define IMC_MAX_ISIM_PSISMSC_LEN 256
+#define IMC_MAX_XUI_LEN 512
+#define IMC_MAX_CALL_NUM_IN_CONFERENCE 5
+#define IMC_MAX_URI_LENGTH 128
+#define IMC_MAX_ASSERTED_URI (IMC_MAX_URI_LENGTH << 2)
+#define IMC_MAX_CONF_CONTROL_URI_LENGTH 512
+#define IMC_CALL_INVAL_ID 255
+#define IMC_CALL_MAX_NUM 16
+#define IMC_P_ASSERT_URI_LEN 128
+#define IMC_PHONE_NUM_LEN 64
+#define IMC_USSD_LANGUANGE_LEN (32)
+#define IMC_USSD_MAX_MSG_LEN (1000)
+#define IMC_MAX_SMS_TPDA_LEN (21)
+#define IMC_MAX_REASON_TEXT_LENGTH 128
+#define IMC_MAX_EMERGENCY_AID_LEN 32
+#define IMC_MAX_IMS_NOTIFY_EXT_LEN 64
+#define IMC_MAX_IF_NAME_LENGTH 16
+#define IMC_MAX_UUID_LEN 40
+#define IMC_MAX_SSID_LEN 32 // SSID length is in at maximum 32 octets
+
+#define IMC_IPV4_ADDR_LEN 0x04
+#define IMC_IPV6_ADDR_LEN 0x10
+#define IMC_PCSCF_MAX_NUM 10 // PCSCF discovery
+
+/* C2K */
+#define IMC_MAX_SID_LEN 8
+#define IMC_MAX_NID_LEN 8
+#define IMC_MAX_PZID_LEN 4
+#define IMC_MAX_BASE_ID_LEN 8
+#define IMC_MAX_SECTOR_ID_LEN 36
+#define IMC_MAX_SUBNET_LENGTH_LEN 4
+#define IMC_MAX_CARRIER_ID_LEN 8
+
+#ifdef __NG_ECALL_SUPPORT__
+/*ECALL*/
+#define IMS_MAX_MSD_LENGTH 140
+#endif
+
+#define UNIQUE_NAME MAKE_NAME(__LINE__)
+#define MAKE_NAME(line) MAKE_NAME2(line)
+#define MAKE_NAME2(line) constraint_ ## line
+
+#define MAKE_VALUE_TO_STRING(x) #x
+#define MAKE_VALUE(x) MAKE_VALUE_TO_STRING(x)
+#define MAKE_VAR_NAME_VALUE(var) #var "=" MAKE_VALUE(var)
+/*#pragma message(MAKE_VAR_NAME_VALUE(MSG_ID_WRAP_IMSA_IMCB_BEGIN))*/
+
+#define IMC_CHK(expr) enum { UNIQUE_NAME = (1/(expr))};
+
+#define IMC_CHK_STRUCT_SIZE(x,y) IMC_CHK(sizeof(x) == sizeof(y))
+#define IMC_CHK_ENUM(x,y) IMC_CHK((x) == (y))
+
+/* IMS Bearer ID macros */
+#define IMS_PSI_QFI_TO_BID(_psi_, _qfi_) (imcf_bid_t)(((_psi_&0xFF)<<8) | (_qfi_&0xFF))
+#define IMS_EBI_TO_BID(_ebi_) (imcf_bid_t)(_ebi_&0xFF)
+#define IMS_BID_GET_PSI(_bid_) (kal_uint8)((_bid_>>8)&0xFF)
+#define IMS_BID_GET_QFI(_bid_) (kal_uint8)(_bid_&0xFF)
+#define IMS_BID_GET_EBI(_bid_) IMS_BID_GET_QFI(_bid_)
+
+#define IMS_DEFAULT_BID_GET_PDN_ID(_default_bid_) \
+ (kal_uint8)((IMS_BID_GET_PSI(_default_bid_) != 0) ? \
+ IMS_BID_GET_PSI(_default_bid_) : IMS_BID_GET_EBI(_default_bid_))
+
+/* for multiple VoLTE or VoLTE work on SIM2, we should think about another solution */
+#if defined(__MULTIPLE_IMS_SUPPORT__) && defined(__IMC_MULTIPLE_CONTEXT__)
+#define IMC_SIM_NUM (MAX_SIM_NUM)
+#else
+#define IMC_SIM_NUM 1
+#endif
+/*****imc_general_def.h END*****/
+
+#if defined(__MULTIPLE_IMS_SUPPORT__) && defined(__IMC_MULTIPLE_CONTEXT__)
+#define VOLTE_MAX_SIM_NUM (IMC_SIM_NUM)
+#else
+#define VOLTE_MAX_SIM_NUM (1)
+#endif
+
+/* Old definition, don't use */
+#define VOlTE_MAX_SIM_NUM VOLTE_MAX_SIM_NUM
+
+/* we use it overwrighte VOLTE_MAX_ACCOUNT_NUM */
+#define VOLTE_MAX_UA_ACCOUNT_NUM ((VOLTE_MAX_SIM_NUM) * (IMC_ACCT_TY_MAX))
+#define VOLTE_MAX_PROFILELEVEL_SIZE (32)
+#define VOLTE_MAX_EXTMAP_URI_SIZE (256)
+#define VOLTE_MAX_BYTESTRING_SIZE (256)
+#define VOLTE_MAX_SUB_PARAM_LENGTH (128)
+#define VOLTE_MAX_EXTMAP_NUM (4) // RFC 5285
+#define VOLTE_MAX_RTCP_FB_SIZE (8)
+#define VOLTE_MAX_IMAGE_NUM (4)
+#define VOLTE_MAX_PS_NUM (32)
+#define VOLTE_MAX_VIDEO_CAP_NUM (4)
+#define VOLTE_MAX_PARAM_SET_SIZE_IN (64)
+#define VOLTE_INVALID_CALL_ID (255)
+#define VOLTE_IS_FAKE_CALL_ID(X) ((X>VOLTE_MAX_CALL_SESSION && X<VOLTE_INVALID_CALL_ID)?1:0)
+#define VOLTE_MAX_REG_RETRY_COUNT (5)
+#define VOLTE_MAX_SUB_RETRY_COUNT VOLTE_MAX_REG_RETRY_COUNT
+#define VOLTE_MAX_REG_RETRY_INTERVAL (10)
+#define VOLTE_MAX_SUB_RETRY_INTERVAL VOLTE_MAX_REG_RETRY_INTERVAL
+#define VOLTE_KEEP_ALIVE_DFLT_CMCC (3)
+#define VOLTE_MAX_HIS_INFO_NUM (16)
+#define VOLTE_MAX_TAG_LENGTH (64)
+#define VOLTE_MAX_CELL_INFO_AGE_LENGTH (9)
+#define VOLTE_MAX_SIP_FLOW_LENGTH (512)
+#define VOLTE_MAX_CODEC_LIST_LENGTH (256)
+#define VOLTE_MAX_UUID_LENGTH IMC_MAX_UUID_LEN
+#define VOLTE_MAX_SAME_PCSCF_RETRY_COUNT (3)
+#define VOLTE_MAX_VT_RTP_PORT_LIST_NUM (32)
+
+#define VOLTE_MAX_CALL_SESSION (3*VOLTE_MAX_ACCOUNT_NUM)
+#define VOLTE_MAX_SRVCC_CALLS (7)
+#define VOLTE_MAX_CONF_CONTROL_URI_LENGTH (IMC_MAX_CONF_CONTROL_URI_LENGTH)
+#define VOLTE_MAX_MNC_MCC_LENGTH (4)
+#define VOLTE_MAX_ASSOCIATED_URI (VOLTE_MAX_URI_LENGTH << 2)
+#define VOLTE_MAX_ASSERTED_URI (VOLTE_MAX_URI_LENGTH << 2)
+#define VOLTE_MAX_IP_LENGTH (16)
+#define VOLTE_MAX_REG_UIDS_LENGTH IMC_MAX_IMPU_TLV_LEN
+#define VOLTE_MAX_IMSI_LENGTH (16)
+#define VOLTE_MAX_CALL_CAPABILITY_LENGTH (128)
+#define VOLTE_MAX_RTP_ADDRESS_LENGTH (64)// shall be align to SDP c attribute
+//#define VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH (16)// The maximum length of a fmtp specific parameter value
+#define VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH_IN (32)// The maximum length of a fmtp specific parameter value internal
+#define VOLTE_MAX_SDP_TWOBYTE_LENGTH (2)
+//#define VOLTE_MAX_SDP_EGBYTE_LENGTH (8)
+//#define VOLTE_IPADDR_LENGTH (16) // IP address in binary
+#define VOLTE_MAX_DATA_TO_UPPER_LENGTH (4000)
+#define VOLTE_MAX_DATA_TO_IMC_LENGTH (512)
+#define VOLTE_MAX_SDP_RED_VALUE_LENGTH (16)
+#define VOLTE_MAX_CALL_NUM_IN_CONF (5)
+#define VOLTE_MAX_PLANI_LENGTH (256)
+#define VOLTE_MAX_LEVEL_SIZE (20)
+//#define VOLTE_MAX_CNAME_LENGTH (52)
+#define VOLTE_USSD_STRING_MAX_LENGTH (1000)
+#define VOLTE_USSD_LANGUAGE_MAX_LENGTH (32)
+#define VOLTE_MAX_MSISDN_LENGTH (20) // dialing number
+#define VOLTE_MAX_SMS_TPDA_LENGTH (21)
+#define VOLTE_MAX_REASON_TEXT_LENGTH (128)
+#define VOLTE_MAX_WARNING_TEXT_LENGTH (128)
+
+#define VOLTE_MAX_RECV_CODEC_LIST_LENGTH (IMCB_IMC_MAX_RECV_CODEC_LIST_LENGTH) // max codec list for downlink rtp
+#define VOLTE_MAX_RED_LEVEL (IMCB_IMC_MAX_RED_LEVEL) // max red level
+#define VOLTE_MAX_EXTRA_HEADER_SIZE (2048) // The maximum length of a AT command
+
+/******************************************************************************
+ * Enum
+ *****************************************************************************/
+#ifdef __MULTIPLE_IMS_SUPPORT__
+typedef enum
+{
+ IMS_MSPM_PROCEDURE_STATUS_STOP = 0,
+ IMS_MSPM_PROCEDURE_STATUS_START,
+ IMS_MSPM_PROCEDURE_STATUS_ENUM_NUM
+} ims_mspm_procedure_status_enum;
+
+typedef enum
+{
+ IMS_MSPM_PROCEDURE_INIT_REG = 0,
+ IMS_MSPM_PROCEDURE_INIT_REG_1,
+ IMS_MSPM_PROCEDURE_INIT_REG_2,
+ IMS_MSPM_PROCEDURE_INIT_REG_3,
+ IMS_MSPM_PROCEDURE_RE_REG,
+ IMS_MSPM_PROCEDURE_RE_REG_1,
+ IMS_MSPM_PROCEDURE_RE_REG_2,
+ IMS_MSPM_PROCEDURE_RE_REG_3,
+ IMS_MSPM_PROCEDURE_SUBSCRIBE,
+ IMS_MSPM_PROCEDURE_SUBSCRIBE_1,
+ IMS_MSPM_PROCEDURE_SUBSCRIBE_2,
+ IMS_MSPM_PROCEDURE_SUBSCRIBE_3,
+ IMS_MSPM_PROCEDURE_USSD,
+ IMS_MSPM_PROCEDURE_USSD_1,
+ IMS_MSPM_PROCEDURE_USSD_2,
+ IMS_MSPM_PROCEDURE_USSD_3,
+ IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE,
+ IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE_1,
+ IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE_2,
+ IMS_MSPM_PROCEDURE_CONF_SUBSCRIBE_3,
+ IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE,
+ IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE_1,
+ IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE_2,
+ IMS_MSPM_PROCEDURE_MWI_SUBSCRIBE_3,
+ IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE,
+ IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE_1,
+ IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE_2,
+ IMS_MSPM_PROCEDURE_CALLPULL_SUBSCRIBE_3,
+ IMS_MSPM_PROCEDURE_INIT_REG_LOW,
+ IMS_MSPM_PROCEDURE_INIT_REG_LOW_1,
+ IMS_MSPM_PROCEDURE_INIT_REG_LOW_2,
+ IMS_MSPM_PROCEDURE_INIT_REG_LOW_3,
+ IMS_MSPM_PROCEDURE_ENUM_NUM
+} ims_mspm_procedure_enum;
+#endif
+
+typedef enum {
+ IMS_IRAT_STATUS_IDLE = 0,
+ IMS_IRAT_STATUS_FROM_4_TO_2,
+ IMS_IRAT_STATUS_FROM_4_TO_3,
+ IMS_IRAT_STATUS_FROM_2_TO_4,
+ IMS_IRAT_STATUS_FROM_3_TO_4,
+ IMS_IRAT_STATUS_FROM_4_TO_23,
+ IMS_IRAT_STATUS_FROM_23_TO_4,
+ IMS_IRAT_STATUS_FROM_5_TO_2 = 7,
+ IMS_IRAT_STATUS_FROM_5_TO_3,
+ IMS_IRAT_STATUS_FROM_5_TO_23,
+ IMS_IRAT_STATUS_FROM_5_TO_4,
+ IMS_IRAT_STATUS_FROM_2_TO_5,
+ IMS_IRAT_STATUS_FROM_3_TO_5,
+ IMS_IRAT_STATUS_FROM_23_TO_5,
+ IMS_IRAT_STATUS_FROM_4_TO_5 = 14,
+ IMS_IRAT_STATUS_FROM_2_TO_3,
+ IMS_IRAT_STATUS_FROM_3_TO_2,
+ IMS_IRAT_STATUS_FROM_23_TO_2,
+ IMS_IRAT_STATUS_FROM_2_TO_23,
+ IMS_IRAT_STATUS_FROM_23_TO_3,
+ IMS_IRAT_STATUS_FROM_3_TO_23 = 20
+} ims_irat_status_enum;
+
+typedef enum
+{
+ IMS_RAT_TYPE_2G = 0,
+ IMS_RAT_TYPE_3G_FDD,
+ IMS_RAT_TYPE_3G_TDD,
+ IMS_RAT_TYPE_4G_FDD,
+ IMS_RAT_TYPE_4G_TDD,
+ IMS_RAT_TYPE_5G_FDD,
+ IMS_RAT_TYPE_5G_TDD,
+ IMS_RAT_TYPE_NONE = 0xFF
+} ims_rat_type_enum;
+
+typedef enum
+{
+ C2K_RAT_TYPE_NONE = 0,
+ C2K_RAT_TYPE_1XRTT,
+ C2K_RAT_TYPE_HRPD,
+ C2K_RAT_TYPE_EHRPD,
+} c2k_rat_type_enum;
+
+typedef enum
+{
+ EPSFB_STAT_STARTED = 0,
+ EPSFB_STAT_SUCCESSFUL = 1,
+ EPSFB_STAT_FAILURE = 2
+}epsfb_stat_enum;
+
+typedef enum
+{
+ EPSFB_TYPE_HANDOVER = 0,
+ EPSFB_TYPE_REDIRECTION =1
+}epsfb_type_enum;
+
+typedef enum
+{
+ IMS_RCODE_OK,
+ IMS_RCODE_CONNECT,
+ IMS_RCODE_RING,
+ IMS_RCODE_NO_CARRIER, //3
+ IMS_RCODE_ERROR, //4
+ IMS_RCODE_BUSY = 7,
+
+ /* Below are MTK proprietary result codes */
+ IMS_RCODE_CONNECT_PS = 100,
+
+ /* Below are result codes added for IMS */
+
+} ims_result_code_enum;
+
+typedef enum
+{
+ IMS_ERR_PHONE_FAILURE = 0,
+ IMS_ERR_OPERATION_NOT_ALLOWED_ERR = 3,
+ IMS_ERR_OPERATION_NOT_SUPPORTED = 4,
+ IMS_ERR_PH_SIM_PIN_REQUIRED = 5,
+ IMS_ERR_PH_FSIM_PIN_REQUIRED = 6,
+ IMS_ERR_PH_FSIM_PUK_REQUIRED = 7,
+ IMS_ERR_SIM_NOT_INSERTED = 10,
+ IMS_ERR_SIM_PIN_REQUIRED = 11,
+ IMS_ERR_SIM_PUK_REQUIRED = 12,
+ IMS_ERR_SIM_FAILURE = 13,
+ IMS_ERR_SIM_BUSY = 14,
+ IMS_ERR_SIM_WRONG = 15,
+ IMS_ERR_INCORRECT_PASSWD = 16,
+ IMS_ERR_SIM_PIN2_REQUIRED = 17,
+ IMS_ERR_SIM_PUK2_REQUIRED = 18,
+ IMS_ERR_MEM_FULL = 20,
+ IMS_ERR_INVALID_INDEX = 21,
+ IMS_ERR_NO_FOUND = 22,
+ IMS_ERR_TEXT_ERRSTRING_TOO_LONG_ERR = 24,
+ IMS_ERR_INVALID_CHARACTERS_IN_TEXT_ERRSTRING_ERR = 25,
+ IMS_ERR_DIAL_ERRSTRING_TOO_LONG_ERR = 26,
+ IMS_ERR_INVALID_CHARACTERS_IN_DIAL_ERRSTRING_ERR = 27,
+ IMS_ERR_NO_NW_SERVICE = 30,
+ IMS_ERR_NETWORK_TIMEOUT = 31,
+ IMS_ERR_NETWORK_NOT_ALLOWED = 32,
+ IMS_ERR_NW_PERSON_PIN_REQUIRED = 40,
+ IMS_ERR_NW_PERSON_PUK_REQUIRED = 41,
+ IMS_ERR_NW_SUB_PERSON_PIN_REQUIRED = 42,
+ IMS_ERR_NW_SUB_PERSON_PUK_REQUIRED = 43,
+ IMS_ERR_SP_PERSON_PIN_REQUIRED = 44,
+ IMS_ERR_SP_PERSON_PUK_REQUIRED = 45,
+ IMS_ERR_CORP_PERSON_PIN_REQUIRED = 46,
+ IMS_ERR_CORP_PERSON_PUK_REQUIRED = 47,
+ IMS_ERR_UNKNOWN = 100,
+ IMS_ERR_ILLEGAL_MS = 103,
+ IMS_ERR_ILLEGAL_ME = 106,
+ IMS_ERR_GPRS_NOT_ALLOWED = 107,
+ IMS_ERR_PLMN_NOT_ALLOWED = 111,
+ IMS_ERR_LA_NOT_ALLOWED = 112,
+ IMS_ERR_ROAMING_AREA_NOT_ALLOWED = 113,
+ IMS_ERR_SERV_OPTION_NOT_SUPPORTED = 132,
+ IMS_ERR_REQ_SERV_OPTION_NOT_SUBSCRIBED = 133,
+ IMS_ERR_SERV_OPTION_TEMP_OUT_OF_ORDER = 134,
+ IMS_ERR_GPRS_UNSPECIFIED_ERROR = 148,
+ IMS_ERR_PDP_AUTH_FAIL = 149,
+ IMS_ERR_INVALID_MOBILE_CLASS = 150,
+ IMS_ERR_LINK_NS_SP_PERSON_PIN_REQUIRED = 151,
+ IMS_ERR_LINK_NS_SP_PERSON_PUK_REQUIRED = 152,
+ IMS_ERR_LINK_SIM_C_PERSON_PIN_REQUIRED = 153,
+ IMS_ERR_LINK_SIM_C_PERSON_PUK_REQUIRED = 154,
+
+ /* Below are MTK proprietary error codes */
+ IMS_ERR_COMMAND_CONFLICT = 302,
+ IMS_NO_ERR = 600,
+ IMS_ERR_UNRECOGNIZED_CMD = 601,
+ IMS_ERR_RETURN_ERROR = 602,
+ IMS_ERR_SYNTEX_ERROR = 603,
+ IMS_ERR_UNSPECIFIED = 604,
+ IMS_ERR_DATA_TRANSFER_ALREADY = 605,
+ IMS_ERR_ACTION_ALREADY = 606,
+ IMS_ERR_NOT_AT_CMD = 607,
+ IMS_ERR_MULTI_CMD_TOO_LONG = 608,
+ IMS_ERR_ABORT_COPS = 609,
+ IMS_ERR_NO_CALL_DISC = 610,
+ IMS_ERR_BT_SAP_UNDEFINED = 611,
+ IMS_ERR_BT_SAP_NOT_ACCESSIBLE = 612,
+ IMS_ERR_BT_SAP_CARD_REMOVED = 613,
+ IMS_ERR_AT_NOT_ALLOWED_BY_CUSTOMER = 614
+} ims_err_id_enum;
+
+typedef enum
+{
+ IMS_ECPI_DISC_CAUSE_XXX = 0
+} ims_ecpi_disc_cause_enum;
+
+typedef enum
+{
+ WFC_PROFILE_CELLULAR_ONLY = 0,
+ WFC_PROFILE_WIFI_PREFERRED,
+ WFC_PROFILE_CELLULAR_PREFERRED,
+ WFC_PROFILE_WIFI_ONLY,
+ /* In IMS preferred mode voice service preference is: *
+ * 4G (VoLTE) - WiFi (VoWiFi) - 3G - 2G */
+ WFC_PROFILE_IMS_PREFERRED,
+ WFC_PROFILE_NUM
+} wfc_profile_enum;
+
+typedef enum
+{
+ IMS_HANDOVER_STATUS_NONE = 0,
+ IMS_HANDOVER_STATUS_LTE_TO_WIFI,
+ IMS_HANDOVER_STATUS_WIFI_TO_LTE,
+ IMS_HANDOVER_STATUS_NR_TO_WIFI,
+ IMS_HANDOVER_STATUS_WIFI_TO_NR,
+ IMS_HANDOVER_STATUS_LTE_TO_VODATA,
+ IMS_HANDOVER_STATUS_VODATA_TO_LTE,
+ IMS_HANDOVER_STATUS_NR_TO_VODATA,
+ IMS_HANDOVER_STATUS_VODATA_TO_NR,
+ IMS_HANDOVER_STATUS_WIFI_TO_VODATA,
+ IMS_HANDOVER_STATUS_VODATA_TO_WIFI,
+ IMS_HANDOVER_STATUS_MAX,
+} ims_handover_status_enum;
+
+// For extended DTMF operation commands from ATP to VDM
+typedef enum
+{
+ IMS_DTMF_ACTION_START = 0,
+ IMS_DTMF_ACTION_STOP
+} ims_dtmf_action_enum;
+
+typedef enum
+{
+ IMS_SERVICE_NORMAL_SERVICE = 0, /* NAS registration success */
+ IMS_SERVICE_LIMITED_SERVICE,
+ IMS_SERVICE_NO_SERVICE /* plmn loss/idle oos happen */
+} ims_service_enum;
+
+typedef enum
+{
+ CELL_NORMAL_SERVICE = 0,
+ CELL_LIMITED_SERVICE
+} cell_service_enum;
+
+typedef enum
+{
+ C2K_CELL_NO_SERVICE = 0,
+ C2K_CELL_NORMAL_SERVICE
+} c2k_cell_service_enum;
+
+typedef enum
+{
+ IMS_URI_TYPE_SIP = 0x01,
+ IMS_URI_TYPE_TEL = 0x02,
+ IMS_URI_TYPE_URN = 0x04
+}ims_uri_type_enum;
+
+/**
+ * MM means generic mobility management
+ * not for 2G MM module
+ */
+typedef enum
+{
+ MM_IMS_VOICE_TERMINATION_DISABLED = 1,
+ MM_IMS_VOICE_TERMINATION_ENABLED
+} mm_ims_voice_termination;
+
+typedef enum
+{
+ IMS_SRVCC_CALL_NUM_FORMAT_UNSPECIFIED = 0,
+ IMS_SRVCC_CALL_NUM_FORMAT_URI = 1,
+ IMS_SRVCC_CALL_NUM_FORMAT_BCD = 2,
+ IMS_SRVCC_CALL_NUM_FORMAT_MAX,
+} ims_srvcc_call_number_format_enum;
+
+typedef enum
+{
+ HVOLTE_SRLTE_MODE = 0, // call domain in C2K
+ HVOLTE_VOPS_MODE = 1, // Suspend 1xRTT tune-away, call domain in IMS
+ HVOLTE_LWG_MODE = 2, // call domain in GW
+ HVOLTE_UNKNOWN_MODE = 0xFF
+} hvolte_mode_enum;
+
+typedef enum
+{
+ HVOLTE_CALL_DOMAIN_C2K = 0,
+ HVOLTE_CALL_DOMAIN_IMS = 1,
+} hvolte_call_domain_enum;
+
+typedef enum
+{
+ HVOLTE_DIAL_NONE = 0,
+ HVOLTE_DIAL_SILENT_REDIAL,
+ HVOLTE_DIAL_C2K_DIRECTLY,
+ HVOLTE_DIAL_MAX
+} hvolte_dial_type_enum;
+
+typedef enum
+{
+ HVOLTE_DISABLE = 0,
+ HVOLTE_AUTO_MODE,//=1
+ HVOLTE_MANUAL_MODE,//=2
+ HVOLTE_STATUS_MAX = HVOLTE_MANUAL_MODE
+} hvolte_enable_status_enum;
+
+typedef enum
+{
+ IMS_MEDIA_BEARER_DEACTIVATE = 0,
+ IMS_MEDIA_BEARER_ACTIVATE
+} ims_media_bearer_status_enum;
+
+typedef enum {
+ IMS_CALL_STATUS_BEGIN = 0,
+ IMS_CALL_STATUS_CONNECTED,
+ IMS_CALL_STATUS_END,
+} ims_call_status_enum;
+
+typedef enum _ims_reg_event_enum {
+ IMS_REG_EVENT_NORMAL = 0, /* default */
+ IMS_REG_EVENT_PCO_FFOOH_5 = 1,
+ IMS_REG_EVENT_PCO_FF00H_5 = 1,
+ IMS_REG_EVENT_MAX
+} ims_reg_event_enum;
+
+typedef enum {
+ IMS_SPECIAL_EVENT_NORMAL = IMS_REG_EVENT_NORMAL, /* default */
+ IMS_SPECIAL_EVENT_PCO_FF00H_5 = IMS_REG_EVENT_PCO_FF00H_5,
+ IMS_SPECIAL_EVENT_CALL_OUTAGE_TEXT,
+ IMS_SPECIAL_EVENT_MAX
+} ims_special_event_enum;
+
+typedef enum
+{
+ TIMER_EPDG_CS_STOP = 0,
+ TIMER_EPDG_CS_START
+} timer_epdg_cs_status_enum;
+
+typedef enum {
+ IMS_INET_METHOD_SIP_REGISTER,
+ IMS_INET_METHOD_SIP_INVITE,
+ IMS_INET_METHOD_SIP_REFER,
+ IMS_INET_METHOD_SIP_UPDATE,
+ IMS_INET_METHOD_SIP_CANCEL,
+ IMS_INET_METHOD_SIP_MESSAGE,
+ IMS_INET_METHOD_SIP_ACK,
+ IMS_INET_METHOD_SIP_BYE,
+ IMS_INET_METHOD_SIP_OPTIONS,
+ IMS_INET_METHOD_SIP_SUBSCRIBE,
+ IMS_INET_METHOD_SIP_NOTIFY,
+ IMS_INET_METHOD_SIP_PUBLISH,
+ IMS_INET_METHOD_SIP_INFO,
+ IMS_INET_METHOD_SIP_PRACK,
+ IMS_INET_METHOD_HTTP_GET,
+ IMS_INET_METHOD_HTTP_POST,
+ IMS_INET_METHOD_HTTP_TRACE,
+ IMS_INET_METHOD_HTTP_HEAD,
+ IMS_INET_METHOD_HTTP_PUT,
+ IMS_INET_METHOD_HTTP_DELETE,
+ IMS_INET_METHOD_HTTP_CONNECT,
+ IMS_INET_METHOD_RTSP_OPTIONS,
+ IMS_INET_METHOD_RTSP_REDIRECT,
+ IMS_INET_METHOD_RTSP_DESCRIBE,
+ IMS_INET_METHOD_RTSP_SETUP,
+ IMS_INET_METHOD_RTSP_PLAY,
+ IMS_INET_METHOD_RTSP_PAUSE,
+ IMS_INET_METHOD_RTSP_TEARDOWN,
+ IMS_INET_METHOD_RTSP_SET_PARAMETER,
+ IMS_INET_METHOD_PXY_DEBUG,
+ IMS_INET_METHOD_UNRECOGNIZED,
+ IMS_INET_METHOD_NUM,
+}ims_inet_method_enum;
+
+/* enum */
+typedef enum
+{
+ EXIT_ECBM_TIMER_EXPIRE, //leave ecbm on timer expiry
+ EXIT_ECBM_SECOND_CALL, //leave ecbm due to second call
+ EXIT_ECBM_T911
+} exit_ecbm_reason_enum;
+
+typedef enum {
+ RCS_REG_FEATURE_OFF = 0,
+ RCS_REG_FEATURE_ON,
+ RCS_REG_FEATURE_RE_TRANSMIT,
+ RCS_REG_STATE_REGISTERED,
+ RCS_REG_STATE_UNREGISTERED
+} rcs_reg_state_enum;
+
+typedef enum {
+ IMS_SPECIAL_PROFILE_NONE = 0,
+ IMS_SPECIAL_PROFILE_VISIBLE_SIM = 1<<1, /*Visible SIM: Legacy*/
+ IMS_SPECIAL_PROFILE_VISIBLE_SIM_VZ_CORE = 1<<2 /*Visible SIM: VZ Core*/
+}ims_special_profile_enum;
+
+typedef enum {
+ IMS_EM_REG_ABNORMAL_NONE = 0,
+ IMS_EM_REG_ABNORMAL_REG_FAIL = 1,
+ IMS_EM_REG_ABNORMAL_REG_SLOW = 2,
+ IMS_EM_REG_ABNORMAL_DEREG = 3
+} ims_em_reg_abnormal_type_enum;
+
+typedef enum{
+ IMS_EM_REG_ABNORMAL_PDN_SLOW = 0,
+ IMS_EM_REG_ABNORMAL_SIP_SLOW = 1,
+} ims_em_reg_abnormal_slow_type_enum;
+
+
+typedef enum {
+ IMS_EM_REG_ABNORMAL_PDN_NOT_TRIGGERED = 0,
+ IMS_EM_REG_ABNORMAL_PDN_NOT_ESTABLISHED = 1,
+ IMS_EM_REG_ABNORMAL_SIP_NOT_SENT = 2,
+ IMS_EM_REG_ABNORMAL_SIP_GOT_ERROR = 3,
+ IMS_EM_REG_ABNORMAL_HO_REREG_FAIL = 4
+} ims_em_reg_abnormal_fail_state_enum;
+
+typedef enum {
+ IMS_EM_REG_ABNORMAL_DEREG_CS_NONE = 0,
+ IMS_EM_REG_ABNORMAL_DEREG_CS_CAP_NOT_SUPPORT = 1,
+ IMS_EM_REG_ABNORMAL_DEREG_CS_SIM_ERROR = 2,
+ IMS_EM_REG_ABNORMAL_DEREG_CS_INTERNAL_ERROR = 3,
+ IMS_EM_REG_ABNORMAL_DEREG_CS_CELL_RAT_NOT_FOUND = 4,
+} ims_em_reg_abnormal_dereg_cause_enum;
+
+typedef enum {
+ IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_NONE = 0,
+ IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_FIRST_EVENT = 1,
+ IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_TIMER_EXPIRE = 2,
+ IMS_EM_REG_ABNORMAL_REG_FAIL_REPORT_EVENT_CHANGE = 3,
+} ims_em_reg_abnormal_reg_fail_report_type_enum;
+
+typedef enum {
+ IMC_EMERGENCY_IND_BEARER_UNKNOWN_SERVICE = 0,
+ IMC_EMERGENCY_IND_BEARER_NOT_FOR_EMERGENCY_SERVICE,
+ IMC_EMERGENCY_IND_BEARER_FOR_EMERGENCY_SERVICE
+} imc_emergency_ind_enum;
+
+typedef enum {
+ IMS_UE_SUPPORT = 1 << 0,
+ IMS_MOBILE_DATA_DISABLE = 1 << 1,
+ IMS_PDNGW_SUPPORT_IND = 1 << 2,
+ IMS_PDNGW_SUPPORT = 1 << 3,
+ IMS_PS_DATA_OFF_ENABLE = 1 << 4,
+} ims_ps_data_off_status_enum;
+
+typedef enum {
+ IMS_EXEMPT_USSI = 1 << 0,
+ IMS_EXEMPT_MMTEL_VOICE = 1 << 1,
+ IMS_EXEMPT_MMTEL_VIDEO = 1 << 2,
+ IMS_EXEMPT_SMSOIP = 1 << 3,
+} ims_ps_data_off_exempt_service_enum;
+
+typedef enum {
+ IMC_ACCT_TY_NORMAL = 0,
+ IMC_ACCT_TY_EMERGENCY = 1,
+ IMC_ACCT_TY_MAX
+} imc_acct_type_enum;
+
+typedef enum
+{
+ IMS_EPSFB_TIMER_START_WHEN_1XX = 1 << 0, //start epsfb_timer when send/recv 1xx response (include 100)
+ IMS_EPSFB_TIMER_START_WHEN_SDP_ANSWER = 1 << 1, //start epsfb_timer when send/recv initial SDP answer
+} ims_epsfb_timer_start_enum;
+
+typedef enum
+{
+ IMS_EPSFB_TIMER_STOP_WHEN_ECPI_6 = 1 << 0, //stop epsfb_timer when call setup complete
+ IMS_EPSFB_TIMER_STOP_WHEN_RING = 1 << 1, //stop epsfb_timer when ringing/ringback
+ IMS_EPSFB_TIMER_STOP_WHEN_BW_CNF = 1 << 2, //stop epsfb_timer when BW_CNF
+ IMS_EPSFB_TIMER_STOP_WHEN_DEDICATED = 1 << 3, //stop epsfb_timer when dedicated baerer setup, e.g. 5QI=1 (not include fallback to default)
+} ims_epsfb_timer_stop_enum;
+
+typedef enum
+{
+ IMS_TIMER_THROTTLING = 0,
+ IMS_TIMER_ESTABLISHMENT,
+ IMS_TIMER_VZW,
+ IMS_TIMER_EPSFB
+} ims_timer_type_enum;
+
+typedef enum
+{
+ IMS_TIMER_STATUS_START = 0,
+ IMS_TIMER_STATUS_STOP,
+ IMS_TIMER_STATUS_EXPIRY
+} ims_timer_status_enum;
+
+typedef enum
+{
+ IMS_EM_TIMER_TYPE_UNKNOWN = 0,
+ IMS_EM_TIMER_TYPE_E1 = 1,
+ IMS_EM_TIMER_TYPE_E2 = 2,
+ IMS_EM_TIMER_TYPE_E3 = 3,
+
+ IMS_EM_TIMER_TYPE_MAX
+} ims_em_timer_type_enum;
+
+typedef enum imcb_imc_func_class_enum {
+ IMCB_IMC_FC_RTP = (1<<0),
+ IMCB_IMC_FC_XMIT = (1<<1),
+ IMCB_IMC_FC_VOICE = (1<<2),
+ IMCB_IMC_FC_VIDEO = (1<<3),
+ IMCB_IMC_FC_DTMF = (1<<4),
+ IMCB_IMC_FC_CODEC = (1<<5),
+ /* WFC */
+ IMCB_IMC_FC_HANDOVER = (1<<6),
+ /* TTY */
+ IMCB_IMC_FC_TTY = (1<<7),
+ IMCB_IMC_FC_ALL = ((IMCB_IMC_FC_TTY<< 1)-1)
+} imcb_imc_func_class_enum;
+
+/* WFC */
+typedef enum {
+ IMC_ACCESS_RAT_UNSPEC = 0,
+ IMC_ACCESS_RAT_LTE,
+ IMC_ACCESS_RAT_WIFI,
+ IMC_ACCESS_RAT_EHRPD,
+ IMC_ACCESS_RAT_GSM,
+ IMC_ACCESS_RAT_UMTS,
+ IMC_ACCESS_RAT_NR,
+ IMC_ACCESS_RAT_DATA_1,
+ IMC_ACCESS_RAT_DATA_2,
+ IMC_ACCESS_RAT_DATA_3,
+ IMC_ACCESS_RAT_DATA_4,
+ IMC_ACCESS_RAT_NUM, /*MAX */
+} imc_access_rat_type_enum;
+
+typedef enum
+{
+ /* Ref: TS27.007 +CIREPH.
+ * NOTE 1: vSRVCC is a Rel-11 feature
+ * NOTE 2: Value 3, general non specific failure, might be used
+ * e.g. in the case of handover cancellation as specified in 3GPP
+ * TS 24.301 [83] subclause 6.6.2.
+ */
+ SRVCC_STATUS_HO_STARTED = 0, // 0: SRVCC handover has started in the CS domain
+ SRVCC_STATUS_HO_SUCCESSFUL, // 1: SRVCC handover successful
+ SRVCC_STATUS_HO_FAILED, // 2: SRVCC or vSRVCC handover cancelled ("Handover Failure" sent)
+ SRVCC_STATUS_HO_CANCELLED, // 3: SRVCC or vSRVCC handover, general non specific failure
+ SRVCC_STATUS_HO_VSRVCC_STARTED, // 4: vSRVCC handover has started in the CS domain
+ SRVCC_STATUS_HO_VSRVCC_SUCCESSFUL, // 5: vSRVCC handover successful
+ SRVCC_STATUS_HO_MAX
+} srvcc_status_enum;
+
+typedef enum
+{
+ IMS_ACCESS_RAT_LTE = 0,
+ IMS_ACCESS_RAT_WIFI,
+ IMS_ACCESS_RAT_EHRPD,
+ IMS_ACCESS_RAT_GSM,
+ IMS_ACCESS_RAT_UMTS,
+ IMS_ACCESS_RAT_NR,
+ IMS_ACCESS_RAT_DATA_1,
+ IMS_ACCESS_RAT_DATA_2,
+ IMS_ACCESS_RAT_DATA_3,
+ IMS_ACCESS_RAT_DATA_4,
+ IMS_ACCESS_RAT_NUM
+} ims_access_rat_enum;
+
+typedef enum
+{
+ IMS_REG_STATE_UNREGISTERED = 0,
+ IMS_REG_STATE_REGISTERED,
+ IMS_REG_STATE_UNREGISTERED_START,
+ IMS_REG_STATE_REGISTERED_START
+} ims_reg_state_enum;
+
+typedef enum
+{
+ IMS_REG_SUB_STATE_UNSPEC = 0,
+ IMS_REG_SUB_STATE_UNREGISTERED,
+ IMS_REG_SUB_STATE_REGISTERED,
+ IMS_REG_SUB_STATE_UNREGISTERING,
+ IMS_REG_SUB_STATE_REGISTERING,
+ IMS_REG_SUB_STATE_REREGISTERING,
+} ims_reg_sub_state_enum;
+
+
+typedef enum
+{
+ IMS_REG_TYPE_NORMAL = 0,
+ IMS_REG_TYPE_EMERGENCY
+} ims_reg_type_enum;
+
+// Emergency Call Mode Preference
+typedef enum
+{
+ IMS_ECMP_UNSPEC,
+ IMS_ECMP_3GPP,
+ IMS_ECMP_WLAN,
+ IMS_ECMP_MAX
+} ims_ecmp_enum;
+
+typedef enum
+{
+/*
+<ext_info>: numeric value in hexadecimal format. The value range is from 1 to FFFFFFFF. It is a sum of hexadecimal values, each representing a particular IMS capability of the MT. The MT can have IMS capabilites not covered by the below list. This parameter is not present if the IMS registration status is "not registered".
+ 1 RTP-based transfer of voice according to MMTEL, see 3GPP TS 24.173 [87]. This functionality can not be indicated if the UE is not available for voice over PS, see 3GPP TS 24.229 [89].
+ 2 RTP-based transfer of text according to MMTEL, see 3GPP TS 24.173 [87].
+ 4 SMS using IMS functionality, see 3GPP TS 24.341 [101].
+ 8 RTP-based transfer of video according to MMTEL, see 3GPP TS 24.173 [87].
+The hexadecimal values 10, 20, 40 ?80000 are reserved by the present document.
+Example: The parameter <ext_info>=5 means that both RTP-based transfer of voice according to MMTEL and SMS using IMS functionality can be used.
+*/
+
+ IMS_REG_SRV_NONE = 0x00,
+ IMS_REG_SRV_VOICE = 0x01,
+ IMS_REG_SRV_TXT = 0x02,
+ IMS_REG_SRV_SMS = 0x04,
+ IMS_REG_SRV_VIDEO = 0x08,
+
+ IMS_REG_SRV_ALL = (IMS_REG_SRV_VOICE |
+ IMS_REG_SRV_SMS |
+ IMS_REG_SRV_VIDEO),
+
+ IMS_REG_SRV_BOTH = IMS_REG_SRV_VOICE | IMS_REG_SRV_SMS
+}ims_reg_service_enum;
+
+typedef enum {
+ IMS_REG_SIP_URI_TYPE_MSISDN = 0,
+ IMS_REG_SIP_URI_TYPE_IMSI = 1,
+ IMS_REG_SIP_URI_TYPE_MAX
+} ims_reg_sip_uri_type_enum;
+
+typedef enum {
+ IMC_RAT_TYPE_NONE ,
+ IMC_RAT_TYPE_2G = IMC_RAT_TYPE_NONE,
+ IMC_RAT_TYPE_3G_FDD,
+ IMC_RAT_TYPE_3G_TDD,
+ IMC_RAT_TYPE_4G_FDD,
+ IMC_RAT_TYPE_4G_TDD,
+
+ /* WFC */
+ IMC_RAT_TYPE_802_11,
+ IMC_RAT_TYPE_802_11a,
+ IMC_RAT_TYPE_802_11b,
+ IMC_RAT_TYPE_802_11g,
+ IMC_RAT_TYPE_802_11n,
+ IMC_RAT_TYPE_802_11ac,
+
+ /* C2K */
+ IMC_RAT_TYPE_1xRTT,
+ IMC_RAT_TYPE_HRPD,
+ IMC_RAT_TYPE_eHRPD,
+
+ IMC_RAT_TYPE_5G_FDD,
+ IMC_RAT_TYPE_5G_TDD,
+
+ IMC_RAT_TYPE_DATA_1,
+ IMC_RAT_TYPE_DATA_2,
+ IMC_RAT_TYPE_DATA_3,
+ IMC_RAT_TYPE_DATA_4,
+
+ IMC_RAT_TYPE_MAX = IMC_RAT_TYPE_DATA_4,
+ IMC_RAT_TYPE_UNSPEC = 0x80,
+} imc_rat_type_enum;
+
+typedef enum {
+ IMS_SMS_CAP_NONE = 0x0000,
+ IMS_SMS_CAP_3GPP = 0x0001,
+ IMS_SMS_CAP_N3GPP = 0x0002
+} ims_sms_cap_enum;
+
+typedef enum
+{
+ IMS_SMS_CATEGORY_NORMAL = 0,
+ IMS_SMS_CATEGORY_EMERGENCY
+} ims_sms_category_enum;
+
+#define VOLTE_NETWORK_TYPE_IS_WIFI(net_type) \
+ ((net_type >= VoLTE_Event_Network_Type_802_11) && \
+ (net_type <= VoLTE_Event_Network_Type_802_11ac))
+
+#define VOLTE_NETWORK_TYPE_IS_23G(net_type) \
+ ((net_type >= VoLTE_Event_Network_Type_GERAN) && \
+ (net_type <= VoLTE_Event_Network_Type_UTRAN_TDD))
+
+#define VOLTE_NETWORK_TYPE_IS_LTE(net_type) \
+ ((net_type >= VoLTE_Event_Network_Type_E_UTRAN_FDD) && \
+ (net_type <= VoLTE_Event_Network_Type_E_UTRAN_TDD))
+
+#define VOLTE_NETWORK_TYPE_IS_NR(net_type) \
+ ((net_type == VoLTE_Event_Network_Type_NR_FDD) || \
+ (net_type == VoLTE_Event_Network_Type_NR_TDD))
+
+#define VOLTE_NETWORK_TYPE_IS_DATA(net_type) \
+ ((net_type >= VoLTE_Event_Network_Type_Data_1) && \
+ (net_type <= VoLTE_Event_Network_Type_Data_4))
+
+enum VoLTE_Event_Network_Type_e {
+ VoLTE_Event_Network_Type_Unspec = 0,
+ VoLTE_Event_Network_Type_Unknown = 1,
+ VoLTE_Event_Network_Type_802_11 = 2,
+ VoLTE_Event_Network_Type_802_11a = 3,
+ VoLTE_Event_Network_Type_802_11b = 4,
+ VoLTE_Event_Network_Type_802_11g = 5,
+ VoLTE_Event_Network_Type_802_11n = 6,
+ VoLTE_Event_Network_Type_802_11ac = 7,
+ VoLTE_Event_Network_Type_GERAN = 8,
+ VoLTE_Event_Network_Type_UTRAN_FDD = 9,
+ VoLTE_Event_Network_Type_UTRAN_TDD =10,
+ VoLTE_Event_Network_Type_CDMA2000 =11,
+ VoLTE_Event_Network_Type_E_UTRAN_FDD =12,
+ VoLTE_Event_Network_Type_E_UTRAN_TDD =13,
+ VoLTE_Event_Network_Type_NR_FDD =14,
+ VoLTE_Event_Network_Type_NR_TDD =15,
+ /*C2K*/
+ VoLTE_Event_Network_Type_C2K_1xRTT =16,
+ VoLTE_Event_Network_Type_C2K_HRPD =17,
+ VoLTE_Event_Network_Type_C2K_eHRPD =18,
+ /*VoData*/
+ VoLTE_Event_Network_Type_Data_1 =19,
+ VoLTE_Event_Network_Type_Data_2 =20,
+ VoLTE_Event_Network_Type_Data_3 =21,
+ VoLTE_Event_Network_Type_Data_4 =22,
+ /*add here*/
+ VoLTE_Event_Network_Type_Max,
+};
+
+enum VoLTE_Event_Network_State_e {
+ VoLTE_Event_Network_State_Connected = 1,
+ VoLTE_Event_Network_State_Disconnected = 2,
+ VoLTE_Event_Network_State_Refresh = 3,
+ VoLTE_Event_Network_State_Lost = 4,
+ VoLTE_Event_Network_State_OOS_Start = 5,
+ VoLTE_Event_Network_State_OOS_End = 6,
+ /*add here*/
+ VoLTE_Event_Network_State_OOS_Max,
+};
+
+typedef enum {
+ IMS_STK_SETUP_CALL_IF_NO_ANOTHER_CALL,
+ IMS_STK_SETUP_CALL_WITH_REDIAL_IF_NO_ANOTHER_CALL,
+ IMS_STK_SETUP_CALL_PUT_ANOTHER_HOLD,
+ IMS_STK_SETUP_CALL_WITH_REDIAL_PUT_ANOTHER_HOLD,
+ IMS_STK_SETUP_CALL_DISCON_ANOTHER,
+ IMS_STK_SETUP_CALL_WITH_REDIAL_DISCON_ANOTHER,
+ IMS_STK_SETUP_CALL_MAX
+} ims_stk_setup_call_enum;
+
+typedef enum {
+ IMS_STK_CALL_SETUP = 0,
+ IMS_STK_CALL_SETUP_BUT_ICON_COULD_NOT_DSPL = 4
+} ims_stk_type_enum;
+
+enum VoLTE_Setting_Type_e {
+ /* ------------------------------------------------ */
+ /* System */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_System_Start_Code = 0,
+ VoLTE_Setting_System_Operator_ID = VoLTE_Setting_System_Start_Code + 1, // data type int
+ VoLTE_Setting_System_GENERAL_SETTING = VoLTE_Setting_System_Start_Code + 2,
+
+ /* ------------------------------------------------ */
+ /* Network Information */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_Network_Information_Start_Code = 1000,
+ VoLTE_Setting_Net_Local_Address = VoLTE_Setting_Network_Information_Start_Code + 1, // data type is string
+ VoLTE_Setting_Net_Local_Port = VoLTE_Setting_Network_Information_Start_Code + 2, // data type int
+ VoLTE_Setting_Net_Local_Protocol_Type = VoLTE_Setting_Network_Information_Start_Code + 3, // UDP: 0, TCP: 1
+ VoLTE_Setting_Net_Local_Protocol_Version = VoLTE_Setting_Network_Information_Start_Code + 4, // IPv4: 1, IPv6: 2
+ VoLTE_Setting_Net_Local_IPSec_Port_Start = VoLTE_Setting_Network_Information_Start_Code + 5,
+ VoLTE_Setting_Net_Local_IPSec_Port_Range = VoLTE_Setting_Network_Information_Start_Code + 6,
+ VoLTE_Setting_Net_Local_RTP_RTCP_Port_Start = VoLTE_Setting_Network_Information_Start_Code + 7,
+ VoLTE_Setting_Net_Local_RTP_RTCP_Port_Range = VoLTE_Setting_Network_Information_Start_Code + 8,
+ VoLTE_Setting_Net_IPSec = VoLTE_Setting_Network_Information_Start_Code + 9, // Disable: 0, Enable: 1
+ VoLTE_Setting_Net_Cell_ID = VoLTE_Setting_Network_Information_Start_Code + 10, // data type is string
+ VoLTE_Setting_Net_RTP_DSCP = VoLTE_Setting_Network_Information_Start_Code + 11, // For build pass, need to remove
+ VoLTE_Setting_Net_IF_Name = VoLTE_Setting_Network_Information_Start_Code + 12, // data type is string
+ VoLTE_Setting_Net_Network_Id = VoLTE_Setting_Network_Information_Start_Code + 13, // data type is integer
+ VoLTE_Setting_Net_SIP_Dscp = VoLTE_Setting_Network_Information_Start_Code + 14, // data type is integer
+ VoLTE_Setting_Net_RTP_Voice_Dscp = VoLTE_Setting_Network_Information_Start_Code + 15, // data type is integer
+ VoLTE_Setting_Net_RTP_Video_Dscp = VoLTE_Setting_Network_Information_Start_Code + 16, // data type is integer
+ VoLTE_Setting_Net_SIP_Soc_Priority = VoLTE_Setting_Network_Information_Start_Code + 17, // data type is integer
+ VoLTE_Setting_Net_SIP_Soc_Tcp_Mss = VoLTE_Setting_Network_Information_Start_Code + 18, // data type is integer
+ VoLTE_Setting_Net_RTP_Voice_Soc_Priority = VoLTE_Setting_Network_Information_Start_Code + 19, // data type is integer
+ VoLTE_Setting_Net_RTP_Video_Soc_Priority = VoLTE_Setting_Network_Information_Start_Code + 20, // data type is integer
+ VoLTE_Setting_Net_LBS_Location_Info = VoLTE_Setting_Network_Information_Start_Code + 21, // data type is integer
+ VoLTE_Setting_Net_Security = VoLTE_Setting_Network_Information_Start_Code + 22,
+ VoLTE_Setting_Net_Authentication = VoLTE_Setting_Network_Information_Start_Code + 23,
+ VoLTE_Setting_Net_PCSCF_Port = VoLTE_Setting_Network_Information_Start_Code + 24,
+ VoLTE_Setting_Net_Emergency_AID = VoLTE_Setting_Network_Information_Start_Code + 25,
+
+ /* ------------------------------------------------ */
+ /* Account Settings */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_Account_Settings_Start_Code = 2000,
+ VoLTE_Setting_Account_Public_UID = VoLTE_Setting_Account_Settings_Start_Code + 1, // data type is string
+ VoLTE_Setting_Account_Private_UID = VoLTE_Setting_Account_Settings_Start_Code + 2, // data type is string
+ VoLTE_Setting_Account_Home_URI = VoLTE_Setting_Account_Settings_Start_Code + 3, // data type is string
+ VoLTE_Setting_Account_IMEI = VoLTE_Setting_Account_Settings_Start_Code + 4, // data type is string
+ VoLTE_Setting_Account_ConfFactoryURI = VoLTE_Setting_Account_Settings_Start_Code + 5,
+ VoLTE_Setting_Account_IMSI_MNC = VoLTE_Setting_Account_Settings_Start_Code + 6,
+ VoLTE_Setting_Account_IMSI_MCC = VoLTE_Setting_Account_Settings_Start_Code + 7,
+ VoLTE_Setting_Account_MSISDN = VoLTE_Setting_Account_Settings_Start_Code + 8,
+
+ /* ------------------------------------------------ */
+ /* Server Settings */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_Server_Settings_Start_Code = 3000,
+ VoLTE_Setting_Server_PCSCF_List = VoLTE_Setting_Server_Settings_Start_Code + 1, // data type is string
+
+ /* ------------------------------------------------ */
+ /* VoLTE Service Settings */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_VoLTE_Service_Start_Code = 10000,
+
+ /* ------------------------------------------------ */
+ /* VoLTE Call Settings */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_VoLTE_Call_Start_Code = 11000,
+ VoLTE_Setting_VoLTE_Call_Session_Flag = VoLTE_Setting_VoLTE_Call_Start_Code + 1,
+ VoLTE_Setting_VoLTE_Call_Session_Timer = VoLTE_Setting_VoLTE_Call_Start_Code + 2, // in seconds
+ VoLTE_Setting_VoLTE_Call_Session_MinSE = VoLTE_Setting_VoLTE_Call_Start_Code + 3, // in seconds
+ VoLTE_Setting_VoLTE_Call_Privacy = VoLTE_Setting_VoLTE_Call_Start_Code + 4,
+ VoLTE_Setting_VoLTE_Call_Capability = VoLTE_Setting_VoLTE_Call_Start_Code + 5, // data type is ::VoLTE_Call_Capability_Type_e
+ VoLTE_Setting_VoLTE_Call_RTCP_Interval = VoLTE_Setting_VoLTE_Call_Start_Code + 6, // in ms
+ VoLTE_Setting_VoLTE_Early_Media = VoLTE_Setting_VoLTE_Call_Start_Code + 7, // If the incoming call support Early Media, shall we require it to play?
+ VoLTE_Setting_VoLTE_Call_CodecOrder1 = VoLTE_Setting_VoLTE_Call_Start_Code + 8, // voip_codec_enum
+ VoLTE_Setting_VoLTE_Call_CodecOrder2 = VoLTE_Setting_VoLTE_Call_Start_Code + 9, // voip_codec_enum
+ VoLTE_Setting_VoLTE_Call_CodecOrder3 = VoLTE_Setting_VoLTE_Call_Start_Code + 10, // voip_codec_enum
+ VoLTE_Setting_VoLTE_Call_def_max_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 11,
+ VoLTE_Setting_VoLTE_Call_def_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 12,
+ VoLTE_Setting_VoLTE_Call_G711_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 13,
+ VoLTE_Setting_VoLTE_Call_G726_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 14,
+ VoLTE_Setting_VoLTE_Call_G729_ptime = VoLTE_Setting_VoLTE_Call_Start_Code + 15,
+ VoLTE_Setting_VoLTE_Call_amr_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 16,
+ VoLTE_Setting_VoLTE_Call_amr_wb_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 17,
+ VoLTE_Setting_VoLTE_Call_h264_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 18,
+ VoLTE_Setting_VoLTE_Call_G729_annexB = VoLTE_Setting_VoLTE_Call_Start_Code + 19,
+ VoLTE_Setting_VoLTE_Call_TelEvt = VoLTE_Setting_VoLTE_Call_Start_Code + 20,
+ VoLTE_Setting_VoLTE_Call_TelEvt_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 21,
+ VoLTE_Setting_VoLTE_Call_Priority = VoLTE_Setting_VoLTE_Call_Start_Code + 22,
+ VoLTE_Setting_VoLTE_Call_UserAgent = VoLTE_Setting_VoLTE_Call_Start_Code + 23, // VOLTE_MAX_ADDRESS_LENGTH
+ VoLTE_Setting_VoLTE_Call_RejCode = VoLTE_Setting_VoLTE_Call_Start_Code + 24,
+ VoLTE_Setting_VoLTE_Call_noResourceCode = VoLTE_Setting_VoLTE_Call_Start_Code + 25,
+ VoLTE_Setting_VoLTE_Call_RejMediaCode = VoLTE_Setting_VoLTE_Call_Start_Code + 26,
+ VoLTE_Setting_VoLTE_Call_RejbyUserCode = VoLTE_Setting_VoLTE_Call_Start_Code + 27,
+ VoLTE_Setting_VoLTE_Call_Conf_SubTimer = VoLTE_Setting_VoLTE_Call_Start_Code + 28,
+ VoLTE_Setting_VoLTE_Call_amr_mode_set = VoLTE_Setting_VoLTE_Call_Start_Code + 29,
+ VoLTE_Setting_VoLTE_Call_amr_wb_mode_set = VoLTE_Setting_VoLTE_Call_Start_Code + 30,
+ VoLTE_Setting_VoLTE_Call_amr_fmt_variant = VoLTE_Setting_VoLTE_Call_Start_Code + 31,
+ VoLTE_Setting_VoLTE_Call_precondition = VoLTE_Setting_VoLTE_Call_Start_Code + 32,
+ VoLTE_Setting_VoLTE_Call_MO_Invite_To_BWCNF_Time = VoLTE_Setting_VoLTE_Call_Start_Code + 33,
+ VoLTE_Setting_VoLTE_Call_h264_pt2 = VoLTE_Setting_VoLTE_Call_Start_Code + 34,
+ VoLTE_Setting_VoLTE_Call_h265_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 35,
+ VoLTE_Setting_VoLTE_Call_h265_pt2 = VoLTE_Setting_VoLTE_Call_Start_Code + 36,
+ VoLTE_Setting_VoLTE_Call_amr_oct_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 37,
+ VoLTE_Setting_VoLTE_Call_amr_open_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 38,
+ VoLTE_Setting_VoLTE_Call_amr_wb_oct_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 39,
+ VoLTE_Setting_VoLTE_Call_TelEvt_wb_pt = VoLTE_Setting_VoLTE_Call_Start_Code + 40,
+ VoLTE_Setting_VoLTE_Call_CONTACT_WITH_USERNAME_INCALL = VoLTE_Setting_VoLTE_Call_Start_Code + 41,
+ VoLTE_Setting_VoLTE_Call_SENDRECV_BEFORE_PRCD = VoLTE_Setting_VoLTE_Call_Start_Code + 42,
+ VoLTE_Setting_VoLTE_Call_ALWAYS_USE_UPDATE_FOR_PRCD = VoLTE_Setting_VoLTE_Call_Start_Code + 43,
+ VoLTE_Setting_VoLTE_Call_MERGE_NEED_SWAP = VoLTE_Setting_VoLTE_Call_Start_Code + 44,
+ VoLTE_Setting_VoLTE_Call_ALWAYS_USE_SIP_URI_FOR_MO_CALL = VoLTE_Setting_VoLTE_Call_Start_Code + 45,
+ VoLTE_Setting_VoLTE_Call_SET_STRENGTH_MANDATORY = VoLTE_Setting_VoLTE_Call_Start_Code + 46,
+ VoLTE_Setting_VoLTE_Call_SEND_REFER_TO_PEER = VoLTE_Setting_VoLTE_Call_Start_Code + 47,
+ VoLTE_Setting_VoLTE_Call_ADD_3GPP_IMS_IN_ACCEPT = VoLTE_Setting_VoLTE_Call_Start_Code + 48,
+ VoLTE_Setting_VoLTE_Call_TERMINAL_BASED_CW = VoLTE_Setting_VoLTE_Call_Start_Code + 49,
+ VoLTE_Setting_VoLTE_Call_REFER_DIALOG_TO_SERVER = VoLTE_Setting_VoLTE_Call_Start_Code + 50,
+ VoLTE_Setting_VoLTE_Call_CHECK_REASON_PHRASE = VoLTE_Setting_VoLTE_Call_Start_Code + 51,
+ VoLTE_Setting_VoLTE_Call_MERGE_SEND_BYE = VoLTE_Setting_VoLTE_Call_Start_Code + 52,
+ VoLTE_Setting_VoLTE_Call_WHEN_STOP_TCALL = VoLTE_Setting_VoLTE_Call_Start_Code + 53,
+ VoLTE_Setting_VoLTE_Call_SET_RTCP_0 = VoLTE_Setting_VoLTE_Call_Start_Code + 54,
+ VoLTE_Setting_VoLTE_Call_CHECK_CONTACT_380 = VoLTE_Setting_VoLTE_Call_Start_Code + 55,
+ VoLTE_Setting_VoLTE_Call_CONF_PARTICIPANT_NOT_SUBSCRIBE = VoLTE_Setting_VoLTE_Call_Start_Code + 56,
+ VoLTE_Setting_VoLTE_Call_ADD_SDP_IN_180_FOR_NON_PRECOND = VoLTE_Setting_VoLTE_Call_Start_Code + 57,
+ VoLTE_Setting_VoLTE_Call_ADD_PRECONDITION_IN_HOLD_UNHOLD_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 58,
+ VoLTE_Setting_VoLTE_Call_USE_ORG_SDP_FOR_INVITE_WITHOUT_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 59,
+ VoLTE_Setting_VoLTE_Call_OIR_PRIVACY_TO_HEADER = VoLTE_Setting_VoLTE_Call_Start_Code + 60,
+ VoLTE_Setting_VoLTE_Call_REGISTER_CAP_WHENEVER = VoLTE_Setting_VoLTE_Call_Start_Code + 61,
+ VoLTE_Setting_VoLTE_Call_NO_AUTO_RETRY_FOR_MO_CALL = VoLTE_Setting_VoLTE_Call_Start_Code + 62,
+ VoLTE_Setting_VoLTE_Call_USE_EPS_PREFIX_IN_PHONE_CONTEXT = VoLTE_Setting_VoLTE_Call_Start_Code + 63,
+ VoLTE_Setting_VoLTE_Call_FOLLOW_NW_IMS_VOPS_SUPPORT = VoLTE_Setting_VoLTE_Call_Start_Code + 64,
+ VoLTE_Setting_VoLTE_Call_ATTEMPT_REG_WHEN_RECEIVE403 = VoLTE_Setting_VoLTE_Call_Start_Code + 65,
+ VoLTE_Setting_VoLTE_Call_WAITING_487_FOR_CANCEL_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 66,
+ VoLTE_Setting_VoLTE_Call_BCSFB_FEATURE_ENABLE = VoLTE_Setting_VoLTE_Call_Start_Code + 67,
+ VoLTE_Setting_VoLTE_Call_SEND_183_WHEN_PRCD_NONE = VoLTE_Setting_VoLTE_Call_Start_Code + 68,
+ VoLTE_Setting_VoLTE_Call_CALL_ID_WITH_HOST_INCALL = VoLTE_Setting_VoLTE_Call_Start_Code + 69,
+ VoLTE_Setting_VoLTE_Call_ADD_RTCP_PORT_INTO_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 70,
+ VoLTE_Setting_VoLTE_Call_ECC_SESSION_TIMER_ENABLE = VoLTE_Setting_VoLTE_Call_Start_Code + 71,
+ VoLTE_Setting_VoLTE_Call_SUBSCRIBE_DIALOG_TO_SERVER = VoLTE_Setting_VoLTE_Call_Start_Code + 72,
+ VoLTE_Setting_VoLTE_Call_CHECK_CONFERENCE_SUBSCRIBE = VoLTE_Setting_VoLTE_Call_Start_Code + 73,
+ VoLTE_Setting_VoLTE_Call_CONFERENCE_SUBSCRIBE_TIMING = VoLTE_Setting_VoLTE_Call_Start_Code + 74,
+ VoLTE_Setting_VoLTE_Call_GENERAL_AMR_NB_WB = VoLTE_Setting_VoLTE_Call_Start_Code + 75,
+ VoLTE_Setting_VoLTE_Call_DISABLE_CONF_CALL_PRCD = VoLTE_Setting_VoLTE_Call_Start_Code + 76,
+ VoLTE_Setting_VoLTE_Call_WAIT_CANCEL_IN_SRVCC_END = VoLTE_Setting_VoLTE_Call_Start_Code + 77,
+ VoLTE_Setting_VoLTE_Call_REJECT_1W_IF_1A1H = VoLTE_Setting_VoLTE_Call_Start_Code + 78,
+ VoLTE_Setting_VoLTE_Call_NO_AUTO_RETRY_FOR_DCM_MO_CALL = VoLTE_Setting_VoLTE_Call_Start_Code + 79,
+ VoLTE_Setting_VoLTE_Call_JOIN_SEND_BYE = VoLTE_Setting_VoLTE_Call_Start_Code + 80,
+ VoLTE_Setting_VoLTE_Call_SET_ZERO_CELL_ID_IN_WIFI = VoLTE_Setting_VoLTE_Call_Start_Code + 81,
+ VoLTE_Setting_VoLTE_Call_REJECT_MTCALL_BY_VOPS = VoLTE_Setting_VoLTE_Call_Start_Code + 82,
+ VoLTE_Setting_VoLTE_Call_REJECT_MTCALL_WHEN_VILTE = VoLTE_Setting_VoLTE_Call_Start_Code + 83,
+ VoLTE_Setting_VoLTE_Call_NOT_ADD_SDP_IN_OPTIONS = VoLTE_Setting_VoLTE_Call_Start_Code + 84,
+ VoLTE_Setting_VoLTE_Call_PCSCF_ERROR_WHEN663 = VoLTE_Setting_VoLTE_Call_Start_Code + 85,
+ VoLTE_Setting_VoLTE_Call_REL_CONF_IF_NO_PARTICIPANT = VoLTE_Setting_VoLTE_Call_Start_Code + 86,
+ VoLTE_Setting_VoLTE_Call_ADD_NO_FORK = VoLTE_Setting_VoLTE_Call_Start_Code + 87,
+ VoLTE_Setting_VoLTE_Call_TMO_SPECIFIC_SDP = VoLTE_Setting_VoLTE_Call_Start_Code + 88,
+ VoLTE_Setting_VoLTE_Call_CALL_RINGING_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 89,
+ VoLTE_Setting_VoLTE_Call_CALL_RINGBACK_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 90,
+ VoLTE_Setting_VoLTE_Call_CALL_TCALL_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 91,
+ VoLTE_Setting_VoLTE_Call_REJECT_CODE_IN23G = VoLTE_Setting_VoLTE_Call_Start_Code + 92,
+ VoLTE_Setting_VoLTE_Call_CALL_REFRESHCALL_TIMER_EXPIRE = VoLTE_Setting_VoLTE_Call_Start_Code + 93,
+ VoLTE_Setting_VoLTE_Call_CALL_CALLEND_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 94,
+ VoLTE_Setting_VoLTE_Call_WAITING_MT_CNF_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 95,
+ VoLTE_Setting_VoLTE_Call_CONF_SUB_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 96,
+ VoLTE_Setting_VoLTE_Call_MO_INVITE_TO_BW_CNF_TIMER_TIMEOUT = VoLTE_Setting_VoLTE_Call_Start_Code + 97,
+ VoLTE_Setting_VoLTE_Call_SRVCC_CAPABILITY = VoLTE_Setting_VoLTE_Call_Start_Code + 98,
+ VoLTE_Setting_VoLTE_Call_EVS_SUPPORT = VoLTE_Setting_VoLTE_Call_Start_Code + 99,
+ VoLTE_Setting_VoLTE_Call_EVS_MODE_SWITCH = VoLTE_Setting_VoLTE_Call_Start_Code + 100,
+ VoLTE_Setting_VoLTE_Call_HF_ONLY = VoLTE_Setting_VoLTE_Call_Start_Code + 101,
+ VoLTE_Setting_VoLTE_Call_DTX = VoLTE_Setting_VoLTE_Call_Start_Code + 102,
+ VoLTE_Setting_VoLTE_Call_DTX_RECV = VoLTE_Setting_VoLTE_Call_Start_Code + 103,
+ VoLTE_Setting_VoLTE_Call_BR_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 104,
+ VoLTE_Setting_VoLTE_Call_BR_END = VoLTE_Setting_VoLTE_Call_Start_Code + 105,
+ VoLTE_Setting_VoLTE_Call_BR_SEND_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 106,
+ VoLTE_Setting_VoLTE_Call_BR_SEND_END = VoLTE_Setting_VoLTE_Call_Start_Code + 107,
+ VoLTE_Setting_VoLTE_Call_BR_RECV_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 108,
+ VoLTE_Setting_VoLTE_Call_BR_RECV_END = VoLTE_Setting_VoLTE_Call_Start_Code + 109,
+ VoLTE_Setting_VoLTE_Call_BW_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 110,
+ VoLTE_Setting_VoLTE_Call_BW_END = VoLTE_Setting_VoLTE_Call_Start_Code + 111,
+ VoLTE_Setting_VoLTE_Call_BW_SEND_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 112,
+ VoLTE_Setting_VoLTE_Call_BW_SEND_END = VoLTE_Setting_VoLTE_Call_Start_Code + 113,
+ VoLTE_Setting_VoLTE_Call_BW_RECV_BEGIN = VoLTE_Setting_VoLTE_Call_Start_Code + 114,
+ VoLTE_Setting_VoLTE_Call_BW_RECV_END = VoLTE_Setting_VoLTE_Call_Start_Code + 115,
+ VoLTE_Setting_VoLTE_Call_CH_SEND = VoLTE_Setting_VoLTE_Call_Start_Code + 116,
+ VoLTE_Setting_VoLTE_Call_CH_RECV = VoLTE_Setting_VoLTE_Call_Start_Code + 117,
+ VoLTE_Setting_VoLTE_Call_CH_AW_RECV = VoLTE_Setting_VoLTE_Call_Start_Code + 118,
+ VoLTE_Setting_VoLTE_Call_CMR = VoLTE_Setting_VoLTE_Call_Start_Code + 119,
+
+ /* ------------------------------------------------ */
+ /* VoLTE MWI Settings */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_VoLTE_MWI_Start_Code = VoLTE_Setting_VoLTE_Call_Start_Code + 900,
+ VoLTE_Setting_VoLTE_MWI_License = VoLTE_Setting_VoLTE_MWI_Start_Code + 1, // Disable: 0, Enable: 1
+
+ /* ------------------------------------------------ */
+ /* VoLTE SMS Settings */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_VoLTE_SMS_Start_Code = 12000,
+ VoLTE_Setting_VoLTE_SMS_Capability = VoLTE_Setting_VoLTE_SMS_Start_Code + 1, // data type is boolean (1 or 0)
+ VoLTE_Setting_VoLTE_SMS_3GPP_SMS_PSI = VoLTE_Setting_VoLTE_SMS_Start_Code + 2, // data type is string
+ VoLTE_Setting_VoLTE_SMS_PSISMSC_FROM_USER = VoLTE_Setting_VoLTE_SMS_Start_Code + 3,
+ VoLTE_Setting_VoLTE_SMS_FORCE_PSI_SCHEME_TO_TEL = VoLTE_Setting_VoLTE_SMS_Start_Code + 4,
+ VoLTE_Setting_VoLTE_SMS_ADD_USER_PHONE = VoLTE_Setting_VoLTE_SMS_Start_Code + 5,
+ VoLTE_Setting_VoLTE_SMS_UPDATE_CALL_ID_WITH_HOST = VoLTE_Setting_VoLTE_SMS_Start_Code + 6,
+ VoLTE_Setting_VoLTE_SMS_ADD_NO_FORK_IN_SMS = VoLTE_Setting_VoLTE_SMS_Start_Code + 7,
+ VoLTE_Setting_VoLTE_SMS_NSN_SPECIFIC = VoLTE_Setting_VoLTE_SMS_Start_Code + 8,
+ VoLTE_Setting_VoLTE_SMS_MO_RETRY_AFTER_504 = VoLTE_Setting_VoLTE_SMS_Start_Code + 9,
+ VoLTE_Setting_VoLTE_SMS_SEND_TIMERF_EXPIRY = VoLTE_Setting_VoLTE_SMS_Start_Code + 10,
+ VoLTE_Setting_VoLTE_SMS_IMSI_REGED_DISABLE_SMS = VoLTE_Setting_VoLTE_SMS_Start_Code + 11,
+
+ /* ------------------------------------------------ */
+ /* VoLTE XDM Settings */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_VoLTE_XDM_Start_Code = 13000,
+
+ /* ------------------------------------------------ */
+ /* VoLTE REG Settings */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_VoLTE_REG_Start_Code = 14000,
+ VoLTE_Setting_Reg_Register_Expiry = VoLTE_Setting_VoLTE_REG_Start_Code + 1, // data type is int
+ VoLTE_Setting_Reg_Event_Subscribe = VoLTE_Setting_VoLTE_REG_Start_Code + 2, // Disable: 0, Enable: 1
+ VoLTE_Setting_Reg_Emergency = VoLTE_Setting_VoLTE_REG_Start_Code + 3, // Disable: 0, Enable: 1
+ VoLTE_Setting_Reg_Retry_First_Time = VoLTE_Setting_VoLTE_REG_Start_Code + 4, // data type is int
+ VoLTE_Setting_Reg_Retry_Base_Time = VoLTE_Setting_VoLTE_REG_Start_Code + 5, // data type is int
+ VoLTE_Setting_Reg_Retry_Max_Time = VoLTE_Setting_VoLTE_REG_Start_Code + 6, // data type is int
+ VoLTE_Setting_Reg_Contact_With_UserName = VoLTE_Setting_VoLTE_REG_Start_Code + 7, // Disable: 0, Enable: 1
+ VoLTE_Setting_Reg_URI_With_Port = VoLTE_Setting_VoLTE_REG_Start_Code + 8, // Disable: 0, Enable: 1
+ VoLTE_Setting_Reg_IPSec_Algo_Set = VoLTE_Setting_VoLTE_REG_Start_Code + 9, // data type is int
+ VoLTE_Setting_Reg_Enable_HTTP_Digest = VoLTE_Setting_VoLTE_REG_Start_Code + 10, // Disable: 0, Enable: 1
+ VoLTE_Setting_Reg_Auth_Name = VoLTE_Setting_VoLTE_REG_Start_Code + 11, // data type is string
+ VoLTE_Setting_Reg_Auth_Password = VoLTE_Setting_VoLTE_REG_Start_Code + 12, // data type is string
+ VoLTE_Setting_Reg_Specific_IPSec_Algo = VoLTE_Setting_VoLTE_REG_Start_Code + 13, // data type is int
+ VoLTE_Setting_Reg_CONTACT_WITH_TRANSPORT = VoLTE_Setting_VoLTE_REG_Start_Code + 14,
+ VoLTE_Setting_Reg_CONTACT_WITH_REGID = VoLTE_Setting_VoLTE_REG_Start_Code + 15,
+ VoLTE_Setting_Reg_CONTACT_WITH_MOBILITY = VoLTE_Setting_VoLTE_REG_Start_Code + 16,
+ VoLTE_Setting_Reg_CONTACT_WITH_EXPIRES = VoLTE_Setting_VoLTE_REG_Start_Code + 17,
+ VoLTE_Setting_Reg_AUTHORIZATION_WITH_ALGO = VoLTE_Setting_VoLTE_REG_Start_Code + 18,
+ VoLTE_Setting_Reg_REREG_IN_RAT_CHANGE = VoLTE_Setting_VoLTE_REG_Start_Code + 19,
+ VoLTE_Setting_Reg_REREG_IN_OOS_END = VoLTE_Setting_VoLTE_REG_Start_Code + 20,
+ VoLTE_Setting_Reg_DE_SUBSCRIBE = VoLTE_Setting_VoLTE_REG_Start_Code + 21,
+ VoLTE_Setting_Reg_USE_SPECIFIC_IPSEC_ALGO = VoLTE_Setting_VoLTE_REG_Start_Code + 22,
+ VoLTE_Setting_Reg_TRY_NEXT_PCSCF = VoLTE_Setting_VoLTE_REG_Start_Code + 23,
+ VoLTE_Setting_Reg_DEREG_CLEAR_IPSEC = VoLTE_Setting_VoLTE_REG_Start_Code + 24,
+ VoLTE_Setting_Reg_INITIAL_REG_WITHOUT_PANI = VoLTE_Setting_VoLTE_REG_Start_Code + 25,
+ VoLTE_Setting_Reg_DEREG_RESET_TCP_CLIENT = VoLTE_Setting_VoLTE_REG_Start_Code + 26,
+ VoLTE_Setting_Reg_TREG = VoLTE_Setting_VoLTE_REG_Start_Code + 27,
+ VoLTE_Setting_Reg_REREG_23G4 = VoLTE_Setting_VoLTE_REG_Start_Code + 28,
+ VoLTE_Setting_Reg_RESUB_23G4 = VoLTE_Setting_VoLTE_REG_Start_Code + 29,
+ VoLTE_Setting_Reg_NOT_AUTO_REG_403 = VoLTE_Setting_VoLTE_REG_Start_Code + 30,
+ VoLTE_Setting_Reg_CALL_ID_WITH_HOST_INREG = VoLTE_Setting_VoLTE_REG_Start_Code + 31,
+ VoLTE_Setting_Reg_KEEP_ALIVE_MODE = VoLTE_Setting_VoLTE_REG_Start_Code + 32,
+ VoLTE_Setting_Reg_TCP_CONNECT_MAX_TIME_INVITE = VoLTE_Setting_VoLTE_REG_Start_Code + 33,
+ VoLTE_Setting_Reg_EMS_MODE_IND = VoLTE_Setting_VoLTE_REG_Start_Code + 34,
+ VoLTE_Setting_Reg_CONTACT_WITH_ACCESSTYPE = VoLTE_Setting_VoLTE_REG_Start_Code + 35,
+ VoLTE_Setting_Reg_WFC_WITH_PLANI = VoLTE_Setting_VoLTE_REG_Start_Code + 36,
+ VoLTE_Setting_Reg_USE_UDP_ON_TCP_FAIL = VoLTE_Setting_VoLTE_REG_Start_Code + 37,
+ VoLTE_Setting_Reg_IPSEC_FAIL_ALLOWED = VoLTE_Setting_VoLTE_REG_Start_Code + 38,
+ VoLTE_Setting_Reg_CONTACT_WITH_VIDEO_FEATURE_TAG_IN_SUBSCRIBE = VoLTE_Setting_VoLTE_REG_Start_Code + 39,
+ VoLTE_Setting_Reg_VIA_WITHOUT_RPORT = VoLTE_Setting_VoLTE_REG_Start_Code + 40,
+ VoLTE_Setting_Reg_REG_ROUTE_HDR = VoLTE_Setting_VoLTE_REG_Start_Code + 41,
+ VoLTE_Setting_Reg_VIA_URI_WITH_DEFAULT_PORT = VoLTE_Setting_VoLTE_REG_Start_Code + 42,
+ VoLTE_Setting_Reg_NOTIFY_SMS_NOTIFY_DONE = VoLTE_Setting_VoLTE_REG_Start_Code + 43,
+ VoLTE_Setting_Reg_EMERGENCY_USE_IMSI = VoLTE_Setting_VoLTE_REG_Start_Code + 44,
+ VoLTE_Setting_Reg_CHECK_MSISDN = VoLTE_Setting_VoLTE_REG_Start_Code + 45,
+ VoLTE_Setting_Reg_RETRY_INTERVAL_AFTER_403 = VoLTE_Setting_VoLTE_REG_Start_Code + 46,
+ VoLTE_Setting_Reg_SUPPORT_THROTTLING_ALGO = VoLTE_Setting_VoLTE_REG_Start_Code + 47,
+ VoLTE_Setting_Reg_REG_AFTER_NW_DEREG_60S = VoLTE_Setting_VoLTE_REG_Start_Code + 48,
+ VoLTE_Setting_Reg_SUB_CONTACT_WITH_SIP_INSTANCE = VoLTE_Setting_VoLTE_REG_Start_Code + 49,
+ VoLTE_Setting_Reg_STOP_REG_MD_LOWER_LAYER_ERR = VoLTE_Setting_VoLTE_REG_Start_Code + 50,
+ VoLTE_Setting_Reg_REG_GRUU_SUPPORT = VoLTE_Setting_VoLTE_REG_Start_Code + 51,
+
+ /* ------------------------------------------------ */
+ /* VoLTE SIP Settings */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_VoLTE_SIP_Start_Code = 15000,
+ VoLTE_Setting_SIP_T1_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 1, // data type is int
+ VoLTE_Setting_SIP_T2_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 2, // data type is int
+ VoLTE_Setting_SIP_T4_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 3, // data type is int
+ VoLTE_Setting_SIP_Keep_Alive = VoLTE_Setting_VoLTE_SIP_Start_Code + 4, // data type is int
+ VoLTE_Setting_SIP_Force_Use_UDP = VoLTE_Setting_VoLTE_SIP_Start_Code + 5, // Disable: 0, Enable: 1
+ VoLTE_Setting_SIP_TCP_On_Demand = VoLTE_Setting_VoLTE_SIP_Start_Code + 6, // Disable: 0, Enable: 1
+ VoLTE_Setting_SIP_TCP_MTU_Size = VoLTE_Setting_VoLTE_SIP_Start_Code + 7, // data type is int
+ VoLTE_Setting_SIP_Reg_Timestamp = VoLTE_Setting_VoLTE_SIP_Start_Code + 8, // data type is string, for WFC PLANI header
+ VoLTE_Setting_SIP_Transaction_Timer = VoLTE_Setting_VoLTE_SIP_Start_Code + 9, // data type is int
+ VoLTE_Setting_SIP_Registered_Timestamp = VoLTE_Setting_VoLTE_SIP_Start_Code + 10, // data type is string, for WFC PCNI header
+ VoLTE_Setting_SIP_Cell_Camped_Timestamp = VoLTE_Setting_VoLTE_SIP_Start_Code + 11, // data type is string, for WFC PCNI header
+
+ /* ------------------------------------------------ */
+ /* VoLTE USSD Settings */
+ /* ------------------------------------------------ */
+ VoLTE_Setting_VoLTE_USSD_Start_Code = 16000,
+ VoLTE_Setting_USSD_NW_Timeout_Timer = VoLTE_Setting_VoLTE_USSD_Start_Code + 1, // data type is uint8 */
+ VoLTE_Setting_USSD_Setup_Timeout_Timer = VoLTE_Setting_VoLTE_USSD_Start_Code + 2, // data type is uint8 */
+ VoLTE_Setting_USSD_Capability = VoLTE_Setting_VoLTE_USSD_Start_Code + 3, // data type is uint8 */
+};
+
+enum VoLTE_Event_MD_Lower_Layer_Err_e {
+ VoLTE_Event_MD_Lower_Layer_Err_AC_Barred = 0,
+ VoLTE_Event_MD_Lower_Layer_Err_NW_REJ_CONN = 1,
+ VoLTE_Event_MD_Lower_Layer_Err_T3346_START = 2,
+ VoLTE_Event_MD_Lower_Layer_Err_T3346_STOP = 3,
+ VoLTE_Event_MD_Lower_Layer_Err_T3346_EXPIRY = 4,
+ VoLTE_Event_MD_Lower_Layer_Err_CONN_FAI = 5,
+ VoLTE_Event_MD_Lower_Layer_Err_T3525_START = 6,
+ VoLTE_Event_MD_Lower_Layer_Err_T3540_START = 7,
+
+ VoLTE_Event_MD_Lower_Layer_Non_ESRFAIL_Err = 100,
+ VoLTE_Event_MD_Lower_Layer_Non_ESRFAIL_Err_TAU_FAIL = 101,
+ VoLTE_Event_MD_Lower_Layer_Non_ESRFAIL_Err_EPSFB_FAIL = 102,
+
+ /*add here*/
+ VoLTE_Event_MD_Lower_Layer_Err_Max,
+};
+
+enum VoLTE_Event_MD_Lower_Layer_TYPE_e {
+ VoLTE_Event_MD_Lower_Layer_TYPE_HANDOVER = 0,
+ VoLTE_Event_MD_Lower_Layer_TYPE_REDIRECTION =1
+};
+
+enum VoLTE_Query_Type_e {
+ VoLTE_Query_Cell_ID = 1, // current cell id
+ VoLTE_Query_Call_State = 2, // current call state
+};
+
+typedef enum
+{
+ IMS_CC_MO_DISCONNECT_CAUSE_NONE = 0,
+ IMS_CC_MO_DISCONNECT_CAUSE_NO_COVERAGE,
+ IMS_CC_MO_DISCONNECT_CAUSE_LOW_BATTERY,
+ IMS_CC_MO_DISCONNECT_CAUSE_FORWARD,
+ IMS_CC_MO_DISCONNECT_CAUSE_SPECIAL_HANGUP,
+ IMS_CC_MO_DISCONNECT_CAUSE_607_UNWANTED,
+ IMS_CC_MO_DISCONNECT_CAUSE_END
+} ims_cc_mo_disconnect_cause_enum;
+
+typedef enum {
+ IMCB_TRANSACTION_STATE_INIT = 0,
+ IMCB_TRANSACTION_STATE_ALLOC,
+} imcb_transaction_state_enum;
+
+/* IMCB FSM state */
+typedef enum {
+ IMCB_FSM_STATE_BEARER_DEACTIVE = 0,
+ IMCB_FSM_STATE_BEARER_ACTIVATING,
+ IMCB_FSM_STATE_PCSCF_ACTIVATING,
+ IMCB_FSM_STATE_PCSCF_ACTIVE,
+ IMCB_FSM_STATE_CONNECTED,
+ IMCB_FSM_STATE_REGISTERED,
+ IMCB_FSM_STATE_BEARER_DEACTIVATING
+} imcb_fsm_state_enum;
+
+typedef enum {
+ IMCB_PCSCF_TYPE_NONE,
+ IMCB_PCSCF_TYPE_DHCP,
+ IMCB_PCSCF_TYPE_PCO,
+ IMCB_PCSCF_TYPE_SIM,
+ IMCB_PCSCF_TYPE_MO,
+ IMCB_PCSCF_TYPE_MANUAL,
+
+ IMCB_PCSCF_TYPE_END
+} imcb_pcscf_type_enum;
+
+typedef enum imc_pcscf_acquire_method_enum {
+ IMC_PCSCF_ACQUIRE_BY_NONE = 0,
+ /** acquire *P-CSCF* address by query type III **SIM**. */
+ IMC_PCSCF_ACQUIRE_BY_SIM = 1,
+ /** acquire *P-CSCF* address by type IV **Management Object**. */
+ IMC_PCSCF_ACQUIRE_BY_MO = 2,
+ /** acquire *P-CSCF* address by type II **ESM/SM PCO**. */
+ IMC_PCSCF_ACQUIRE_BY_PCO = 3,
+ /** acquire *P-CSCF* address by type I using **DHCPv4(?)**. */
+ IMC_PCSCF_ACQUIRE_BY_DHCPv4 = 4,
+ /** acquire *P-CSCF* address by type I using **DHCPv6**. */
+ IMC_PCSCF_ACQUIRE_BY_DHCPv6 = 5,
+ /** acquire *P-CSCF* address by using **User Configure **. */
+ IMC_PCSCF_ACQUIRE_BY_MANUAL = 6,
+ /** **end** of enum. */
+ IMC_PCSCF_ACQUIRE_METHOD_END
+} imc_pcscf_acquire_method_enum;
+
+
+typedef enum{
+ IMC_PS_CAUSE_NONE = 0,
+ /* SM/ESM/5GSM cause - TS24.301/24.501 Annex B */
+ IMC_PS_CAUSE_OPERATOR_DETERMINED_BARRING = 8,
+ IMC_PS_CAUSE_INSUFFICIENT_RESOURCES = 26,
+ IMC_PS_CAUSE_UNKNOWN_OR_MISSING_ACCESS_POINT_OR_DATA_NETWORK_NAME = 27,
+ IMC_PS_CAUSE_UNKNOWN_PDN_OR_PDU_SESSION_TYPE = 28,
+ IMC_PS_CAUSE_USER_AUTHENTICATION_FAILED = 29,
+ IMC_PS_CAUSE_REQUEST_REJECTED_BY_SERVING_GW_OR_PDN_GW = 30,
+ IMC_PS_CAUSE_REQUEST_REJECTED_UNSPECIFIED = 31,
+ IMC_PS_CAUSE_SERVICE_OPTION_NOT_SUPPORTED = 32,
+ IMC_PS_CAUSE_REQUESTED_SERVICE_OPTION_NOT_SUBSCRIBED = 33,
+ IMC_PS_CAUSE_SERVICE_OPTION_TEMPORARILY_OUT_OF_ORDER = 34,
+ IMC_PS_CAUSE_PTI_ALREADY_IN_USE = 35,
+ IMC_PS_CAUSE_REGULAR_DEACTIVATION = 36,
+ IMC_PS_CAUSE_EPS_QOS_NOT_ACCEPTED = 37,
+ IMC_PS_CAUSE_NETWORK_FAILURE = 38,
+ IMC_PS_CAUSE_REACTIVATION_REQUESTED = 39,
+ IMC_PS_CAUSE_SEMANTIC_ERROR_IN_THE_TFT_OPERATION = 41,
+ IMC_PS_CAUSE_SYNTACTICAL_ERROR_IN_THE_TFT_OPERATION = 42,
+ IMC_PS_CAUSE_INVALID_EPS_BEARER_OR_PDU_SESSION_IDENTITY = 43,
+ IMC_PS_CAUSE_SEMANTIC_ERRORS_IN_PACKET_FILTER = 44,
+ IMC_PS_CAUSE_SYNTACTICAL_ERROR_IN_PACKET_FILTER = 45,
+ IMC_PS_CAUSE_OUT_OF_LAND_SERVICE_AREA = 46,
+ IMC_PS_CAUSE_PTI_MISMATCH = 47,
+ IMC_PS_CAUSE_LAST_PDN_DISCONNECTION_NOT_ALLOWED = 49,
+ IMC_PS_CAUSE_PDN_TYPE_IPV4_ONLY_ALLOWED = 50,
+ IMC_PS_CAUSE_PDN_TYPE_IPV6_ONLY_ALLOWED = 51,
+ IMC_PS_CAUSE_SINGLE_ADDRESS_BEARERS_ONLY_ALLOWED = 52,
+ IMC_PS_CAUSE_ESM_INFORMATION_NOT_RECEIVED = 53,
+ IMC_PS_CAUSE_PDN_CONNECTION_OR_PDU_SESSION_DOES_NOT_EXIST = 54,
+ IMC_PS_CAUSE_MULTIPLE_PDN_CONNECTIONS_FOR_A_GIVEN_APN_NOT_ALLOWED = 55,
+ IMC_PS_CAUSE_COLLISION_WITH_NETWORK_INITIATED_REQUEST = 56,
+ IMC_PS_CAUSE_UNSUPPORTED_QCI_VALUE = 59,
+ IMC_PS_CAUSE_BEARER_HANDLING_NOT_SUPPORTED = 60,
+ IMC_PS_CAUSE_INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE_AND_DNN = 67,
+ IMC_PS_CAUSE_NOT_SUPPORTED_SSC_MODE = 68,
+ IMC_PS_CAUSE_INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE = 69,
+ IMC_PS_CAUSE_MISSING_OR_UNKNOWN_DNN_IN_A_SLICE = 70,
+ IMC_PS_CAUSE_INVALID_PTI_VALUE = 81,
+ IMC_PS_CAUSE_MAX_DATA_RATE_PER_UE_FOR_USER_PLANE_INTGRITY_PROTECTION_IS_TO_LOW = 82,
+ IMC_PS_CAUSE_SEMANTIC_ERROR_IN_THE_QOS_OPERATION = 83,
+ IMC_PS_CAUSE_SYNTACTICAL_ERROR_IN_THE_QOS_OPERATION = 84,
+ IMC_PS_CAUSE_SEMANTICALLY_INCORRECT_MESSAGE = 95,
+ IMC_PS_CAUSE_INVALID_MANDATORY_INFORMATION = 96,
+ IMC_PS_CAUSE_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED = 97,
+ IMC_PS_CAUSE_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
+ IMC_PS_CAUSE_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED = 99,
+ IMC_PS_CAUSE_CONDITIONAL_IE_ERROR = 100,
+ IMC_PS_CAUSE_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
+ IMC_PS_CAUSE_PROTOCO_ERROR_UNSPECIFIED = 111,
+ IMC_PS_CAUSE_APN_RESTRICTION_VALUE_INCOMPATIBLE_WITH_ACTIVE_EPS_BEARER_CONTEXT = 112,
+ IMC_PS_CAUSE_REQUEST_REJECTED_CORE_TX_FAILURE = 113,
+
+ /* WFC */
+ IMC_PS_CAUSE_REMAP = 200,
+
+ /* C2K */
+ IMC_PS_CAUSE_VSNCP_CONFIGURATION_FAILURE = 210,
+ IMC_PS_CAUSE_IPV6_OBTAIN_FAILURE = 211,
+ IMC_PS_CAUSE_VSNCP_TERMINATED = 212,
+
+ /* Internal reject cause */
+ IMC_PS_CAUSE_INTERNAL_REJ_START = 220,
+ IMC_PS_CAUSE_SINGLE_PDN_ACT_FAILED = IMC_PS_CAUSE_INTERNAL_REJ_START, //220
+ IMC_PS_CAUSE_IMS_SERVICE_NOT_READY = IMC_PS_CAUSE_INTERNAL_REJ_START + 1, //221
+ IMC_PS_CAUSE_TCM_ESM_DEATCH_REATTACH = IMC_PS_CAUSE_INTERNAL_REJ_START + 2, //222
+ IMC_PS_CAUSE_IMS_SERVICE_NR_RECOVER = IMC_PS_CAUSE_INTERNAL_REJ_START + 3, //223
+ IMC_PS_CAUSE_INTERNAL_REJ_END = IMC_PS_CAUSE_INTERNAL_REJ_START + 15, //235
+
+ /* IRAT */
+ IMC_PS_CAUSE_IMS_BEARER_INTERRAT_HANDOVER = 250,
+
+ IMC_PS_CAUSE_END
+}imc_ps_cause_enum;
+
+
+typedef enum imcb_bearer_msg_cause_enum {
+ IMCB_BR_MSG_CS_NONE,
+
+ IMCB_BR_MSG_CS_OK,
+ IMCB_BR_MSG_CS_NEED_WAIT,
+
+ /* internal reject start */
+ IMCB_BR_MSG_CS_REJ_START,
+ IMCB_BR_MSG_CS_REJ_NO_FREE_TID,
+ IMCB_BR_MSG_CS_REJ_NO_RESOURCE,
+ IMCB_BR_MSG_CS_REJ_ERROR_PARM,
+ IMCB_BR_MSG_CS_REJ_BY_NW_RETAIN_TMO,
+ IMCB_BR_MSG_CS_REJ_BY_STATE_CONFLICT,
+ IMCB_BR_MSG_CS_REJ_BY_BEARER_DEL,
+ IMCB_BR_MSG_CS_REJ_BY_PS,
+ IMCB_BR_MSG_CS_REJ_BY_SGN_MATCH_FAIL,
+ IMCB_BR_MSG_CS_REJECT, /* need to be remove if reject is defined */
+ IMCB_BR_MSG_CS_REJ_END,
+ /* internal reject end */
+
+ IMCB_BR_MSG_CS_MOD_START,
+ IMCB_BR_MSG_CS_MOD_BEARER_REMAP,
+ IMCB_BR_MSG_CS_MOD_BEARER_HANDOVER,
+ IMCB_BR_MSG_CS_MOD_BEARER_QOS,
+ IMCB_BR_MSG_CS_MOD_END,
+
+
+ IMCB_BR_MSG_CS_OTHER_FAIL,
+
+ IMCB_BR_MSG_CS_PS_CAUSE_START = (IMCB_BR_MSG_CS_OTHER_FAIL + IMC_PS_CAUSE_NONE),
+ IMCB_BR_MSG_CS_PS_CAUSE_END = (IMCB_BR_MSG_CS_OTHER_FAIL + IMC_PS_CAUSE_END),
+
+ IMCB_BR_MSG_CS_LAST
+} imcb_bearer_msg_cause_enum ;
+
+/** Bearer FSM states. */
+typedef enum {
+ IMCB_BR_FSM_STATE_INACTIVE = 0,
+ /*IMCB_BR_FSM_STATE_ACTIVATING,*/
+ IMCB_BR_FSM_STATE_ACTIVE,
+ /*IMCB_BR_FSM_STATE_DEACTIVATING, */
+ IMCB_BR_FSM_STATE_ALL
+} imcb_bearer_fsm_state_enum;
+
+typedef enum imcb_bearer_msg_id_enum {
+ IMCB_BR_MSG_ID_NONE,
+
+ IMCB_BR_MSG_ID_SGN_ACT_REQ,
+ IMCB_BR_MSG_ID_SGN_ACT_CNF,
+ IMCB_BR_MSG_ID_SGN_MOD_IND,
+
+ /* IMCB_BR_MSG_ID_SGN_MOD_IND, currently not used */
+
+ IMCB_BR_MSG_ID_SGN_DEACT_REQ,
+ IMCB_BR_MSG_ID_SGN_DEACT_CNF,
+ IMCB_BR_MSG_ID_SGN_DEACT_IND,
+ IMCB_BR_MSG_ID_SGN_RAT_CHANGE_IND,
+ IMCB_BR_MSG_ID_SGN_BID_CHANGE_IND,
+
+ IMCB_BR_MSG_ID_MEDIA_ADD_REQ,
+ IMCB_BR_MSG_ID_MEDIA_ADD_CNF,
+ /* IMCB_BR_MSG_ID_MEDIA_ADD_IND, currently not used */
+
+ IMCB_BR_MSG_ID_MEDIA_MOD_REQ,
+ IMCB_BR_MSG_ID_MEDIA_MOD_CNF,
+ IMCB_BR_MSG_ID_MEDIA_MOD_IND,
+
+ IMCB_BR_MSG_ID_MEDIA_DEL_REQ,
+ IMCB_BR_MSG_ID_MEDIA_DEL_CNF,
+ IMCB_BR_MSG_ID_MEDIA_DEL_IND,
+
+ /* internal triggerred
+ IMCB_BR_MSG_ID_STREAM_MODIFY_REQ,
+ IMCB_BR_MSG_ID_STREAM_DEACT_REQ,
+ */
+
+ /* for Bearer filter */
+ IMCB_BR_MSG_ID_SET_BEARER_FILTER_IND,
+ /* for ip change */
+ IMCB_BR_MSG_ID_IP_CHANGE_IND,
+ /* irat event from imsm */
+ IMCB_BR_MSG_ID_IRAT_WITHOUT_IP_CHANGE_IND,
+
+ IMCB_BR_MSG_ID_PCSCF_DIS_REQ,
+ IMCB_BR_MSG_ID_PCSCF_DIS_CNF,
+ IMCB_BR_MSG_ID_PCSCF_MOD_IND,
+
+ /* for UT used */
+ IMCB_BR_CBK_ID_SGN_ACT_CNF,
+ IMCB_BR_CBK_ID_SGN_DEACT_CNF,
+ IMCB_BR_CBK_ID_MEDIA_ADD_CNF,
+ IMCB_BR_CBK_ID_MEDIA_MOD_CNF,
+ IMCB_BR_CBK_ID_MEDIA_DEL_CNF,
+
+ IMCB_BR_MSG_ID_END
+} imcb_bearer_msg_id_enum;
+
+typedef enum {
+ IMS_CAP_RAT_NONE = 0,
+ IMS_CAP_RAT_LTE = 1,
+ IMS_CAP_RAT_NR = 2,
+ IMS_CAP_RAT_LTE_NR = 3,
+ IMS_CAP_RAT_UTRAN = 4,
+ IMS_CAP_RAT_UTRAN_LTE = 5,
+ IMS_CAP_RAT_UTRAN_NR = 6,
+ IMS_CAP_RAT_UTRAN_LTE_NR = 7,
+} ims_cap_rat_enum;
+
+typedef enum
+{
+ LTECSR_RAT_LTE = 0,
+ LTECSR_RAT_WIFI = 1,
+ LTECSR_RAT_NR = 2,
+ LTECSR_RAT_DATA = 3
+}ltecsr_rat_enum;
+
+typedef enum {
+ IMS_ENH_VOLTE_SI_OFF = 0,
+ IMS_ENH_VOLTE_SI_LEVEL1,
+ IMS_ENH_VOLTE_SI_LEVEL2,
+ IMS_ENH_VOLTE_SI_LEVEL3,
+ IMS_ENH_VOLTE_SI_LEVEL4,
+ IMS_ENH_VOLTE_SI_NUM
+}enh_volte_si_enum;
+
+typedef enum {
+ IMS_CALL_STATUS_NONE =0,
+ IMS_CALL_STATUS_CHANGE_TO_NORMAL_CALL =1,
+}ims_enh_volte_si_call_status_enum;
+
+typedef enum imcb_pdn_req_type_enum{
+ IMCB_PDN_REQ_TYPE_NONE = 0,
+ IMCB_PDN_REQ_TYPE_EMERGENCY,
+ IMCB_PDN_REQ_TYPE_INITIAL,
+ IMCB_PDN_REQ_TYPE_HANDOVER,
+ IMCB_PDN_REQ_TYPE_HANDOVER_OF_EMERGENCY,
+ IMCB_PDN_REQ_TYPE_MAX
+} imcb_pdn_req_type_enum;
+
+typedef enum imcb_ip_change_type_enum{
+ IMCB_IP_CHANGE_TYPE_NONE = 0,
+ IMCB_IP_CHANGE_TYPE_IPV4 = 1 << 0,
+ IMCB_IP_CHANGE_TYPE_IPV6 = 1 << 1,
+ IMCB_IP_CHANGE_TYPE_IPV4_IPV6 = IMCB_IP_CHANGE_TYPE_IPV4 | IMCB_IP_CHANGE_TYPE_IPV6,
+ IMCB_IP_CHANGE_TYPE_MAX
+} imcb_ip_change_type_enum;
+
+typedef enum {
+ IMCB_PCSCF_LIST_NO_CHANGE,
+ IMCB_PCSCF_LIST_CURRENT_ACTIVE_PCSCF_PRESENT,
+ IMCB_PCSCF_LIST_CURRENT_ACTIVE_PCSCF_NOT_PRESENT,
+ IMCB_PCSCF_LIST_NO_CHANGE_AT_FIRST_PLACE
+} imcb_pcscf_list_change_enum;
+
+/******************************************************************************
+ * Basic type definitions
+ *****************************************************************************/
+
+#define IMCF_FALSE KAL_FALSE
+#define IMCF_TRUE KAL_TRUE
+
+typedef kal_char imcf_char;
+typedef kal_wchar imcf_wchar;
+
+typedef kal_bool imcf_bool;
+typedef kal_int8 imcf_int8;
+typedef kal_int16 imcf_int16;
+typedef kal_int32 imcf_int32;
+typedef kal_int64 imcf_int64;
+
+typedef kal_uint8 imcf_uint8;
+typedef kal_uint16 imcf_uint16;
+typedef kal_uint32 imcf_uint32;
+typedef kal_uint64 imcf_uint64;
+
+typedef module_type imcf_user_spec_t;
+
+typedef imcf_uint8 imc_sim_id_t;
+typedef imcf_uint8 imc_acct_id_t;
+
+typedef kal_uint16 imcf_bid_t;
+
+typedef enum {
+ IMS_TYPE_H_PLMN = 0,
+ IMS_TYPE_V_PLMN,
+ IMS_TYPE_UNKNOWN,
+} plmn_type_enum;
+
+/******************************************************************************
+ * Struct
+ *****************************************************************************/
+// <pau> field of +ECPI
+typedef struct
+{
+ kal_uint8 p_asserted_uri[IMS_P_ASSERT_URI_LEN];
+} pau_info_struct;
+
+typedef struct {
+ imcf_uint8 protocol_type;
+ imcf_uint8 pad[1];
+ imcf_uint16 port_num;
+
+ imcf_uint8 addr[IMC_IPV4_ADDR_LEN];
+} imc_pcscf_ipv4_struct;
+
+typedef struct {
+ imcf_uint8 protocol_type;
+ imcf_uint8 pad[1];
+ imcf_uint16 port_num;
+
+ imcf_uint8 addr[IMC_IPV6_ADDR_LEN];
+} imc_pcscf_ipv6_struct;
+
+typedef struct {
+ imcf_uint8 num_of_ipv4_pcscf_addr;
+ imcf_uint8 pad[3];
+
+ imc_pcscf_ipv4_struct pcscf_v4[IMC_PCSCF_MAX_NUM];
+
+ imcf_uint8 num_of_ipv6_pcscf_addr;
+ imcf_uint8 pad2[3];
+
+ imc_pcscf_ipv6_struct pcscf_v6[IMC_PCSCF_MAX_NUM];
+} imc_pcscf_list_struct;
+
+typedef struct
+{
+ imcf_int8 mode_set[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+
+ imcf_uint8 is_octet_align; //0:default, bandwidth-efficient, 1: octet_align, 2: VzW for general
+ imcf_uint8 mode_change_period; //the period should be N. but currently only 1(default) or 2.
+ imcf_uint8 mode_change_cap; //1(default) or 2(recommended to support)
+ imcf_uint8 mode_change_neighbor;//0(default) or 1
+
+ imcf_uint8 crc; //0 or 1. Not support yet.
+ imcf_uint8 robust; //0 or 1. Not support yet.
+ imcf_uint8 interleaving; //the maximum number of frame-blocks. 0: not present. Not support yet.
+ imcf_uint8 channel; // the number of audio channel
+
+ imcf_uint16 max_red; // the maximum duration in ms. Not support yet.
+ imcf_uint8 padding[2]; //< padding byte for 4bytes align
+} imcb_imc_ltecsr_amr_info_struct;
+
+typedef struct
+{
+ imcf_int8 mode_set[IMCB_IMC_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+
+ imcf_uint8 evs_support;
+ imcf_uint8 evs_mode_switch;
+ imcf_uint8 hf_only;
+ imcf_uint8 dtx;
+
+ imcf_uint8 dtx_recv;
+ imcf_uint8 ch_send;
+ imcf_uint8 ch_recv;
+ imcf_uint8 channel; // the number of audio channel
+
+ imcf_uint8 br[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ imcf_uint8 br_send[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ imcf_uint8 br_recv[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ imcf_uint8 bw[2]; ///< VoLTE_EVS_Bandwidth_e
+ imcf_uint8 bw_send[2]; ///< VoLTE_EVS_Bandwidth_e
+ imcf_uint8 bw_recv[2]; ///< VoLTE_EVS_Bandwidth_e
+
+ imcf_uint8 mode_change_period; //the period should be N. but currently only 1(default) or 2.
+ imcf_uint8 mode_change_cap; //1(default) or 2(recommended to support)
+ imcf_uint8 mode_change_neighbor;//0(default) or 1
+ imcf_int8 ch_aw_recv;
+
+ imcf_int8 cmr;
+ imcf_uint8 padding[1]; ///< padding byte for 4 bytes align
+ imcf_uint16 max_red; // the maximum duration in ms. Not support yet.
+} imcb_imc_ltecsr_evs_info_struct;
+
+typedef struct {
+ imcf_uint8 red_level;
+ imcf_uint8 red_codec_list[IMCB_IMC_MAX_RED_LEVEL];
+} imcb_imc_ltecsr_red_info_struct;
+
+typedef struct {
+ imcf_uint8 payload_type; ///< payload type
+ imcf_uint8 codec; ///< voip_codec_enum in codec_def.h
+ imcf_uint8 clock_rate; ///< dynamic rate, clock rate, see VoLTE_Event_Clock_Rate_e
+ imcf_uint8 g723_bitrate; ///< VoLTE_Event_G7231_BitRate_e
+ imcf_uint8 is_g723_annexAYES; ///< G.723.1 annexA Yes:1, No:0
+ imcf_uint8 is_g729_annexBYES; ///< G.729 annexB Yes:1, No:0
+ imcf_uint8 ilbc_mode; ///< VoLTE_Event_iLBC_Rate_e
+ imcf_uint8 text_cps; ///<
+
+ imcf_uint32 ptime; ///< play time
+ imcf_uint32 max_ptime; ///< maximum play time
+
+ imcb_imc_ltecsr_amr_info_struct amr_fmtp;
+ imcb_imc_ltecsr_evs_info_struct evs_fmtp;
+ imcb_imc_ltecsr_red_info_struct red_fmtp;
+} imcb_imc_ltecsr_media_codec_struct;
+
+typedef enum {
+ IMC_SIP_CAUSE_UNSPECIFIED = 0,
+ IMC_SIP_CAUSE_300_MULTIPLE_CHOICES = 300,
+ IMC_SIP_CAUSE_301_MOVED_PERMANENTLY = 301,
+ IMC_SIP_CAUSE_302_MOVED_TEMPORARILY = 302,
+ IMC_SIP_CAUSE_305_USE_PROXY = 305,
+ IMC_SIP_CAUSE_380_ALTERNATIVE_SERVICE = 380,
+ IMC_SIP_CAUSE_400_BAD_REQUEST = 400,
+ IMC_SIP_CAUSE_401_UNAUTHORIZED = 401,
+ IMC_SIP_CAUSE_402_PAYMENT_REQUIRED = 402,
+ IMC_SIP_CAUSE_403_FORBIDDEN = 403,
+ IMC_SIP_CAUSE_404_NOT_FOUND = 404,
+ IMC_SIP_CAUSE_405_METHOD_NOT_ALLOWED = 405,
+ IMC_SIP_CAUSE_406_NOT_ACCEPTABLE = 406,
+ IMC_SIP_CAUSE_407_PROXY_AUTHENTICATION_REQUIRED = 407,
+ IMC_SIP_CAUSE_408_REQUEST_TIMEOUT = 408,
+ IMC_SIP_CAUSE_410_GONE = 410,
+ IMC_SIP_CAUSE_413_REQUEST_ENTITY_TOO_LARGE = 413,
+ IMC_SIP_CAUSE_414_REQUEST_URI_TOO_LARGE = 414,
+ IMC_SIP_CAUSE_415_UNSUPPORTED_MEDIA_TYPE = 415,
+ IMC_SIP_CAUSE_416_UNSUPPORTED_URI_SCHEME = 416,
+ IMC_SIP_CAUSE_420_BAD_EXTENSION = 420,
+ IMC_SIP_CAUSE_421_EXTENSION_REQUIRED = 421,
+ IMC_SIP_CAUSE_423_INTERVAL_TOO_BRIEF = 423,
+ IMC_SIP_CAUSE_480_TEMPORARILY_NOT_AVAILABLE = 480,
+ IMC_SIP_CAUSE_481_CALL_LEG_TRANSACTION_DOES_NOT_EXIST = 481,
+ IMC_SIP_CAUSE_482_LOOP_DETECTED = 482,
+ IMC_SIP_CAUSE_483_TOO_MANY_HOPS = 483,
+ IMC_SIP_CAUSE_484_ADDRESS_INCOMPLETE = 484,
+ IMC_SIP_CAUSE_485_AMBIGUOUS = 485,
+ IMC_SIP_CAUSE_486_BUSY_HERE = 486,
+ IMC_SIP_CAUSE_487_REQUEST_TERMINATED = 487,
+ IMC_SIP_CAUSE_488_NOT_ACCEPTABLE_HERE = 488,
+ IMC_SIP_CAUSE_491_REQUEST_PENDING = 491,
+ IMC_SIP_CAUSE_493_UNDECIPHERABLE = 493,
+ IMC_SIP_CAUSE_494_SECURITY_AGREEMENT_REQUIRED = 494,
+ IMC_SIP_CAUSE_500_SERVER_INT_ERROR = 500,
+ IMC_SIP_CAUSE_501_NOT_IMPLEMENTED = 501,
+ IMC_SIP_CAUSE_502_BAD_GATEWAY = 502,
+ IMC_SIP_CAUSE_503_SERVICE_UNAVAILABLE = 503,
+ IMC_SIP_CAUSE_504_SERVER_TIME_OUT = 504,
+ IMC_SIP_CAUSE_505_SIP_VERSION_NOT_SUPPORTED = 505,
+ IMC_SIP_CAUSE_513_MESSAGE_TOO_LARGE = 513,
+ IMC_SIP_CAUSE_580_PRECONDITION_FAILURE = 580,
+ IMC_SIP_CAUSE_600_BUSY_EVERYWHERE = 600,
+ IMC_SIP_CAUSE_603_DECLINE = 603,
+ IMC_SIP_CAUSE_604_DOES_NOT_EXIST_ANYWHERE = 604,
+ IMC_SIP_CAUSE_606_NOT_ACCEPTABLE = 606,
+ IMC_SIP_CAUSE_700_INTERNAL_REQUEST_TIMEOUT = 700, //no sip error response 700 actually exist , this is for Internal timeout
+ IMC_SIP_CAUSE_UNKNOWN = 800,
+ IMC_SIP_CAUSE_MAX = IMC_SIP_CAUSE_UNKNOWN,
+} imcb_imc_sip_cause_enum;
+
+typedef struct {
+ imcf_uint8 len;
+ imcf_uint8 pad[3];
+ imcf_uint8 data[256];
+} ims_sim_usim_data_struct;
+
+typedef struct {
+ imcf_uint8 len;
+ imcf_uint8 pad[3];
+ imcf_uint8 data[256];
+} ims_isim_data_struct;
+
+typedef struct volte_event_media_config {
+ kal_uint8 local_address[VOLTE_IPADDR_LENGTH];
+
+ // RTP and RTCP session for audio and video
+ kal_uint32 audio_b_as; // RTP bandwidth
+ kal_uint32 audio_b_rs; // RTCP sender bandwidth
+ kal_uint32 audio_b_rr; // RTCP receiver bandwidth
+ kal_uint16 audio_remote_rtp_port;
+ kal_uint16 audio_remote_rtcp_port;
+ kal_uint16 audio_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
+ kal_uint16 audio_local_rtp_port; ///< rtp port number for media attribute in SDP message
+ kal_uint8 audio_remote_rtp_address[VOLTE_IPADDR_LENGTH];
+ kal_uint8 audio_remote_rtcp_address[VOLTE_IPADDR_LENGTH];
+
+ kal_uint32 video_b_as; // RTP bandwidth
+ kal_uint32 video_b_rs; // RTCP sender bandwidth
+ kal_uint32 video_b_rr; // RTCP receiver bandwidth
+ kal_uint16 video_remote_rtp_port;
+ kal_uint16 video_remote_rtcp_port;
+ kal_uint16 video_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
+ kal_uint16 video_local_rtp_port; ///< rtp port number for media attribute in SDP message
+ kal_uint8 video_remote_rtp_address[VOLTE_IPADDR_LENGTH];
+ kal_uint8 video_remote_rtcp_address[VOLTE_IPADDR_LENGTH];
+
+ kal_uint8 remote_addr_type; ///< VoLTE_Event_IP_Version_e, apply to RTP audio & video session, RTCP audio & video session
+ kal_uint8 audio_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
+ kal_uint8 video_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
+ // required by video codec
+ kal_uint8 video_payload_type;
+
+ kal_uint32 rtcp_interval; ///< IMCB will get value from NVRAM. Used by data plane.
+ kal_uint32 dscp; ///< IMCB will get value from NVRAM. Used by data plane.
+ kal_uint32 video_dscp; ///< IMCB will get value from NVRAM. Used by data plane.
+ kal_uint32 voice_soc_priority; ///< IMCB will get value from NVRAM. Used by data plane.
+ kal_uint32 video_soc_priority; ///< IMCB will get value from NVRAM. Used by data plane.
+
+ // required by voice codec driver
+ kal_uint8 audio_codec; ///< voip_codec_enum in codec_def.h
+ kal_uint8 audio_payload_type; ///< payload type
+ kal_uint8 audio_clock_rate; ///< dynamic rate, clock rate, see VoLTE_Event_Clock_Rate_e
+ kal_uint8 is_dtmf; ///< is dtmf tone useing telephony event
+
+ kal_uint8 tele_evt_payload_type; ///< telephony event payload type
+ kal_uint8 tele_evt_clock_rate; ///< telephony event rate
+ kal_uint8 g723_bitrate; ///< VoLTE_Event_G7231_BitRate_e
+ kal_uint8 is_g723_annexAYES; ///< G.723.1 annexA Yes:1, No:0
+
+ kal_uint8 is_g729_annexBYES; ///< G.729 annexB Yes:1, No:0
+ kal_uint8 ilbc_mode; ///< VoLTE_Event_iLBC_Rate_e
+ // required by RFC 6679 ECN
+ kal_uint8 ecn_capable_rtp_method; ///< VoLTE_Event_ECN_RTP_METHOD_e
+ kal_uint8 ecn_capable_ect; //0, 1
+
+ kal_uint32 ptime; ///< ptime of the codec
+ kal_uint32 max_ptime; ///< max ptime is the buffer size for data plane. may not the same to ptime
+ // required by AMR and AMR WB codec
+ kal_int8 mode_set[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+
+ kal_uint8 is_octet_align; ///< 0:default, bandwidth-efficient, 1: octet_align
+ kal_uint8 mode_change_period; ///< the period should be N. but currently only 1(default) or 2.
+ kal_uint8 mode_change_cap; ///< 1(default) or 2(recommended to support)
+ kal_uint8 mode_change_neighbor;///< 0(default) or 1
+
+ kal_uint8 crc; ///< 0 or 1
+ kal_uint8 robust; ///< 0 or 1
+ kal_uint8 interleaving; ///< the maximum number of frame-blocks. 0: not present
+ kal_uint8 channel; ///< the number of audio channel. must be 1 currently
+ kal_uint16 max_red; // the maximum duration in ms
+// required by RTCP FB
+ kal_uint16 rtcp_rsize;
+ kal_uint32 rtcpfb_type; ///< bitmap, VoLTE_Event_RTCP_FB_Type_e
+ kal_uint32 network_id;
+ kal_char id[VOLTE_MAX_SDP_EGBYTE_LENGTH];
+ kal_char trr_int[VOLTE_MAX_SDP_EGBYTE_LENGTH];
+ kal_char id_app_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+ kal_char ack_app_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+ kal_char nack_app_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+ kal_char tmmbr_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+ kal_char vbcm_string[VOLTE_MAX_SDP_FMTP_SUB_VALUE_LENGTH];
+ kal_char cname_string[VOLTE_MAX_CNAME_LENGTH];
+
+ /* EVS Support */
+ kal_uint8 evs_support;
+ kal_uint8 evs_mode_switch; ///< 0(default) or 1
+ kal_uint8 hf_only; ///< 0(default) or 1
+ kal_uint8 dtx; ///< 0 or 1(default)
+ kal_uint8 dtx_recv; ///< 0 or 1(default)
+ kal_uint8 pading[3];
+ kal_uint8 br[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ kal_uint8 br_send[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ kal_uint8 br_recv[2]; ///< VoLTE_EVS_Codec_Bitrate_e
+ kal_uint8 bw[2]; ///< VoLTE_EVS_Bandwidth_e
+ kal_uint8 bw_send[2]; ///< VoLTE_EVS_Bandwidth_e
+ kal_uint8 bw_recv[2]; ///< VoLTE_EVS_Bandwidth_e
+ kal_uint8 ch_send; ///< number of channel number, 1 for default
+ kal_uint8 ch_recv; ///< number of channel number, 1 for default
+ kal_int8 ch_aw_recv; ///< -1, 0(default), 2, 3, 5, or 7
+ kal_int8 cmr; ///< 0(default), 1, or -1
+
+ /* RTCP-XR */
+ kal_uint16 rtcp_xr_format;
+ kal_uint16 rtcp_xr_loss_maxsize;
+ kal_uint16 rtcp_xr_dup_maxsize;
+ kal_uint16 rtcp_xr_rcpt_maxsize;
+ kal_uint16 rtcp_xr_rtt_maxsize;
+ kal_uint8 rtcp_xr_rtt_mode;
+ kal_uint8 rtcp_xr_stat_flags;
+
+ /* TTY */
+ kal_uint32 text_b_as; // RTP bandwidth
+ kal_uint32 text_b_rs; // RTCP sender bandwidth
+ kal_uint32 text_b_rr; // RTCP receiver bandwidth
+ kal_uint16 text_remote_rtp_port;
+ kal_uint16 text_remote_rtcp_port;
+ kal_uint16 text_local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
+ kal_uint16 text_local_rtp_port; ///< rtp port number for media attribute in SDP message
+ kal_int8 text_remote_rtp_address[IMCB_IMC_IPADDR_LENGTH];
+ kal_int8 text_remote_rtcp_address[IMCB_IMC_IPADDR_LENGTH];
+ kal_uint8 text_rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
+ kal_uint8 text_t140_payload_type; ///< payload type
+ kal_uint8 text_red_payload_type; ///< payload type
+ kal_uint8 text_red_level; ///< T140 Red level
+ kal_uint8 text_cps; ///< T140 Red level
+ /* ALTC ================================================================================*/
+ kal_uint8 text_addr_type;
+ kal_uint8 text_pad[2];
+
+ /* 1940 - 4 = 1936*/
+ /* offline define feature flag */
+ /* ex. used by ALTC feautre */
+ kal_uint32 feature_flag;
+
+ /* ALTC 1936 - 16 = 1920 */
+ /* ======================================================================================*/
+ kal_uint8 text_local_address[IMCB_IMC_IPADDR_LENGTH];
+ /* ======================================================================================*/
+
+ /* Asymmetric RTP payload type support 1920 - 4 - 736*8 = 1180 */
+ kal_uint32 recv_codec_num;
+ imcb_imc_ltecsr_media_codec_struct recv_codec_list[IMCB_IMC_MAX_RECV_CODEC_LIST_LENGTH];
+
+ kal_uint8 resv[1180];
+} VoLTE_Event_Media_config_t,
+volte_event_media_config_struct;
+
+typedef struct {
+ imcf_uint32 type; // imcb_imc_tlv_para_enum
+ imcf_uint32 len;
+ imcf_uint8 value[0];
+} imcb_imc_tlv_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint32 acct_id;
+ imcf_uint64 ua_id; // reg client information
+ imcf_uint32 total_len;
+ imcf_uint32 total_num;
+ imcf_uint32 tlv_dst;
+ imcf_uint8 data[IMC_MAX_ILM_BUFFER_LEN-16]; // imcb_imc_tlv_struct
+} imcb_imc_tlv_para_setting_ind_struct,
+imcb_imc_tlv_para_setting_req_struct,
+VoLTE_Event_Tlv_Para_Setting_t;
+
+typedef struct _VoLTE_Event_ATCmd_Relay_t {
+ LOCAL_PARA_HDR
+ imcf_uint32 account_id; // Account ID, normal account of the SIM
+ imcf_uint64 ua_id; // reg client information
+ imcf_uint32 atcmd_id; // VoLTE_ATCmd_Id_t
+ imcf_uint32 pad; // pad
+ imcf_uint32 pad2; // pad
+ imcf_char cmdline[IMC_ATCMD_MAX_CMDLINE_LEN];
+} VoLTE_Event_ATCmd_Relay_t;
+
+typedef enum {
+ IMCB_IMC_TLV_TO_UNSPECIFIC = 0,
+ IMCB_IMC_TLV_TO_UA = 1,
+ IMCB_IMC_TLV_TO_IMCB = 2,
+ IMCB_IMC_TLV_TO_IMC = 3
+} imcb_imc_tlv_dst_enum;
+
+enum VoLTE_EIMSCAI_MODE_e {
+ VoLTE_EIMSCAI_MODE_unspecific = 0,
+ VoLTE_EIMSCAI_MODE_original_ims_call = 1,
+ VoLTE_EIMSCAI_MODE_client_api = 2,
+ VoLTE_EIMSCAI_MODE_enrich_calling = 3,
+ VoLTE_EIMSCAI_MODE_max
+};
+
+enum VoLTE_EIMSCAI_TYPE_e {
+ VoLTE_EIMSCAI_TYPE_unspecific = 0,
+ VoLTE_EIMSCAI_TYPE_header = 1,
+ VoLTE_EIMSCAI_TYPE_location = 2,
+ VoLTE_EIMSCAI_TYPE_max
+};
+
+typedef enum _VoLTE_ATCmd_Id_e {
+ VoLTE_ATCMD_NONE = 0,
+ VoLTE_ATCMD_EIMSXUI = 1, /* +EIMSXUI:<account_id>,<broadcast_flag>,<xui_info> */
+ VoLTE_ATCMD_EIMSEVTPKG = 2, /* +EIMSEVTPKG: <call_id>,<type>,<urc_index>,<total_urc_count>,<data> */
+ VoLTE_ATCMD_EIMSGEO = 3, /* AT+EIMSGEO=/+EIMSGEO:<account_id>,<broadcast_flag>,<latitude>,<longitude>,<accurate>,<method>,<city>,<state>,<zip>,<country> */
+ VoLTE_ATCMD_EIMSPDIS = 4, /* +EIMSPDIS: <transaction_id>,<em_id>,<method>,<nw_if_name[]> ; AT+EIMSPDIS= <transaction_id>,<method>,<is_success> */
+ VoLTE_ATCMD_EIMSPCSCF = 5, /* AT+EIMSPCSCF= <transaction_id>,<method>, <protocol_type>, <port_num>, <addr> */
+ VoLTE_ATCMD_PRTTCALL = 6, /* +PRTTCALL: <call_id>, <op> ; AT+PRTTCALL: <call_id>, <result> */
+ VoLTE_ATCMD_DIGITLINE = 7, /* AT+DIGITLINE=<account_id>,<serial_number>,<is_logout>,<has_next>,<is_native>,<msisdn>,"<token>"
+ * +DIGITLINE=<account_id>,<serial_number>,<msisdn_num>,<msisdn>,<is_active> */
+ VoLTE_ATCMD_EIMSREGURI = 8, /* AT+EIMSREGURI=<account_id>,<profileURI>,<expiryTime>*/
+ VoLTE_ATCMD_EIMSREGRESP = 9, /* AT+EIMSREGRESP=<account_id>,<profileURI>,<errorCode>,<errorMessage>"*/
+ VoLTE_ATCMD_EIMSHEADER = 10, /* AT+EIMSHEADER=<call_id>,<header_type> */
+ /* +EIMSHEADER:<call_id>,<header_type>,<totalcount>,<index>,"<value>"*/
+ VoLTE_ATCMD_EIMSCALLMODE = 11, /* AT+EIMSCALLMODE=<op>*/
+ VoLTE_ATCMD_ESIPREGINFO = 12, /* +ESIPREGINFO : <account_id>,<direction>,<SIP_msg_type>,<method>,<response_code>,"reason_phrase", <warn_text> */
+ VoLTE_ATCMD_EIMSCAI = 13, /* AT+EIMSCAI: <mode>, <type>, <total>, <index>, <count>, [additional Info] */
+ /* +EIMSCAI: <call_id>, <mode>, <type>, <total>, <index>, <count>, [additional Info] */
+ VoLTE_ATCMD_ELOCAEN = 14, /* AT+ELOCAEN=<op> */
+ VoLTE_ATCMD_CECN = 15, /* +CECN:<data_type> 0: updated MSD transfered; 1: request update MSD;
+ * 100: request in-band MSD transfer; 101: request in-band MSD transfer for SRVCC; 102: MSD transfered fail*/
+ VoLTE_ATCMD_ERCSMTINV = 16, /* +ERCSMTINV: <from number>, <total count>, <index>, <MT SIP INVITE> */
+ VoLTE_ATCMD_MAX,
+} VoLTE_ATCmd_Id_e, VoLTE_ATCmd_Id_t;
+
+/* location info */
+typedef struct _VoLTE_Event_LBS_Location_ {
+ kal_int32 lat[2]; /* [0..8388607], 23 bits field */
+ kal_int32 lng[2]; /* [-8388608..8388607], 24 bits field */
+ kal_int32 acc;
+ kal_uint8 timestamp[VOLTE_MAX_TIME_STAMP_LENGTH]; // VOLTE_MAX_TIME_STAMP_LENGTH =32
+} VoLTE_Event_LBS_Location_t;
+
+#define IMS_MAX_TIME_STAMP_LENGTH 32
+typedef struct
+{
+ imcf_int32 lat[2]; //double lat
+ imcf_int32 lng[2]; //double lng
+ imcf_int32 acc;
+ imcf_uint8 timestamp[IMS_MAX_TIME_STAMP_LENGTH]; //32
+} imcb_imc_loc_ts_struct;
+
+typedef struct _VoLTE_Event_Setting_TLV_ {
+ kal_int32 type; // VoLTE_Setting_Type_e
+ kal_int32 len; // length of data
+ kal_int32 value[0]; // data
+} VoLTE_Event_Setting_TLV_t;
+
+typedef struct _VoLTE_Event_Setting_ {
+ LOCAL_PARA_HDR
+ kal_int32 id; ///< account id
+ kal_uint64 ua_id; // reg client information
+ kal_int32 len; ///< the length of data
+ kal_int32 num; ///< the number of settings
+#if defined(WIN32)
+ kal_uint8 data[0]; ///< data
+#else
+ VoLTE_Event_Setting_TLV_t data[0]; ///< data
+#endif
+} VoLTE_Event_Setting_t;
+
+typedef struct _VoLTE_Event_MD_Lower_Layer_Err {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id; // reg client information
+ kal_uint32 call_id; // unused
+ kal_uint32 cause; // VoLTE_Event_MD_Lower_Layer_Err_e
+ kal_uint32 type; // VoLTE_Event_MD_Lower_Layer_TYPE_e
+} VoLTE_Event_MD_Lower_Layer_Err_t;
+
+typedef struct _VoLTE_Event_Query_State {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_uint64 ua_id; // reg client information
+ kal_int32 type; // refer to ::VoLTE_Query_Type_e
+} VoLTE_Event_Query_State_t;
+
+typedef struct _VoLTE_Event_Update_PLANI_Time {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_uint64 ua_id; // reg client information
+ kal_char timestamp[VOLTE_MAX_TIME_STAMP_LENGTH]; // VOLTE_MAX_TIME_STAMP_LENGTH =32
+} VoLTE_Event_Update_PLANI_Time_t;
+
+typedef struct _VoLTE_AutoTesting_Info_ {
+ LOCAL_PARA_HDR
+ kal_uint32 id;
+} VoLTE_AutoTesting_Info_t;
+
+typedef struct _VoLTE_Event_Logging_Event_Notify_ {
+ LOCAL_PARA_HDR
+ kal_uint32 id;
+ kal_uint64 ua_id; // reg client information
+ kal_uint32 type;
+} VoLTE_Event_Logging_Event_Notify_t;
+
+typedef struct _VoLTE_Event_PS_DATA_OFF_Req_ {
+ LOCAL_PARA_HDR
+ kal_int32 id;
+ kal_uint64 ua_id; // reg client information
+ kal_int32 psdataoff_status;
+ kal_int32 exempt_service;
+} VoLTE_Event_PS_DATA_OFF_Req_t;
+
+typedef struct _VoLTE_Event_Network_Change_ {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_uint64 ua_id; // reg client information
+ kal_int32 state; // refer to ::VoLTE_Event_Network_State_e
+ kal_int32 type; // refer to ::VoLTE_Event_Network_Type_e
+ kal_int32 sub_type; // refer to ::VoLTE_Event_Network_Type_e (for VoData only)
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // the current cell id from the modem PS
+ VoLTE_Event_LBS_Location_t loc_info;
+} VoLTE_Event_Network_Change_t;
+
+typedef struct _VoLTE_Event_Rat_Change_ {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_uint64 ua_id; // reg client information
+ kal_int32 type; // refer to ::VoLTE_Event_Network_Type_e
+ kal_int32 sub_type; // refer to ::VoLTE_Event_Network_Type_e (for VoData only)
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
+ VoLTE_Event_LBS_Location_t loc_info;
+ kal_uint8 ssid[VOLTE_MAX_SSID_LENGTH];
+ kal_int32 mtu;
+} VoLTE_Event_Rat_Change_t;
+
+typedef struct _VoLTE_Event_3gpp_Rat_Change_ {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_uint64 ua_id; // reg client information
+ kal_int32 old_rat_type; // refer to ::VoLTE_Event_Network_Type_e
+ kal_uint8 old_cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
+ kal_int32 new_rat_type; // refer to ::VoLTE_Event_Network_Type_e
+ kal_uint8 new_cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
+ VoLTE_Event_LBS_Location_t loc_info;
+} VoLTE_Event_3gpp_Rat_Change_t;
+
+typedef struct _VoLTE_Event_IP_Change_Notify {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id; // reg client information
+} VoLTE_Event_IP_Change_Notify_t;
+
+typedef struct _VoLTE_Event_iRat_without_IP_Change {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 old_rat_type; // refer to ::VoLTE_Event_Network_Type_e
+ kal_int32 new_rat_type; // refer to ::VoLTE_Event_Network_Type_e
+} VoLTE_Event_iRat_without_IP_Change_t;
+
+typedef struct _VoLTE_Event_Condition_Change_Notify {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id; // reg client information
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // the current cell id from the modem PS
+ kal_int32 pdn_req_type; // refer to ::imcb_pdn_req_type_enum
+ kal_int32 is_ip_change;
+ kal_int32 is_pcscf_list_change; // refer to ::imcb_pcscf_list_change_enum
+ VoLTE_Event_LBS_Location_t loc_info;
+} VoLTE_Event_Condition_Change_Notify_t;
+
+typedef struct _VoLTE_Event_FF00H_Update {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id; // reg client information
+ kal_int32 ff00h;
+} VoLTE_Event_FF00H_Update_t;
+
+typedef struct _VoLTE_Event_Timer {
+ LOCAL_PARA_HDR
+ kal_uint32 id;
+ kal_uint32 timer_id;
+ kal_uint32 timeout;
+ kal_uint32 user_data;
+} VoLTE_Event_Timer_t;
+
+typedef struct _VoLTE_Event_UA_Msg_Hdr {
+ kal_int32 id; // account id
+ kal_uint8 handshake; // 0: one-way, 1: two-way
+ kal_uint8 resv[3];
+ kal_uint8 data[0];
+} VoLTE_Event_UA_Msg_Hdr_t ;
+
+typedef struct _VoLTE_Event_Geolocation_Info {
+ LOCAL_PARA_HDR
+ kal_uint32 type_id; // same as msg id
+ kal_uint64 ua_id; // reg client information
+ kal_char latitude[16];
+ kal_char longitude[16];
+ kal_char accuracy[8];
+ kal_char method[16];
+ kal_char city[32];
+ kal_char state[32];
+ kal_char zip[8];
+ kal_char country_code[8];
+ kal_char wifi_mac[20];
+ kal_char confidence[8];
+ kal_char altitude[16];
+ kal_char accuracy_semiMajorAxis[16];
+ kal_char accuracy_semiMinorAxis[16];
+ kal_char accuracy_verticalAxis[16];
+ VoLTE_Event_UA_Msg_Hdr_t ua_msg_hdr; /* contains a zero-length array, so must be in the end */
+} VoLTE_Event_Geolocation_Info_t;
+
+typedef struct _VoLTE_Event_AP_Location_status {
+ LOCAL_PARA_HDR
+ kal_uint64 ua_id; // reg client information
+ kal_int32 acct_id;
+ kal_uint32 status;
+} VoLTE_Event_AP_Location_status_t;
+
+/*
+[+CLCC: <id1>,<dir>,<stat>,<mode>,<mpty>[,
+<number>,<type>]
+[<CR><LF>+CLCC: <id2>,<dir>,<stat>,<mode>,<mpty>[,
+<number>,<type>]
+*/
+typedef struct _VoLTE_Event_List_one_call {
+ kal_int32 acct_id;
+ kal_uint32 call_id;
+ kal_uint8 is_mt_call;
+ kal_uint8 stat_of_the_call;
+ kal_uint8 mode; // VOLTE_LIST_CALL_CNF:+CLCC VOLTE_CNF_REG_QUERY_CALL_STATE:VoLTE_Event_Call_Mode_e
+ kal_uint8 is_conference_call;
+ kal_char phone_number[VOLTE_MAX_URI_LENGTH];
+ kal_uint32 is_international; // 0: no, 1: the phone number is a national number
+} VoLTE_Event_List_one_call_t;
+
+enum VoLTE_Event_RTP_DIRECTION_e {
+ VoLTE_Event_RTP_DIRECTION_INACTIVE = 0, ///< RTP session suspends. Inactive also is default value.
+ VoLTE_Event_RTP_DIRECTION_SENDONLY, ///< Send only
+ VoLTE_Event_RTP_DIRECTION_RECVONLY, ///< Receive only
+ VoLTE_Event_RTP_DIRECTION_SENDRECV, ///< Send and Receive
+ /*add here*/
+ VoLTE_Event_RTP_DIRECTION_Max,
+};
+
+enum VoLTE_Event_Feature_Sync_e {
+ VoLTE_Event_Feature_Sync_Unknown = 0,
+ VoLTE_Event_Feature_Sync_Reset_Throttling_Para_Criteria = 1,
+ /*add here*/
+ VoLTE_Event_Feature_Sync_Max,
+};
+
+typedef struct _VoLTE_Event_Feature_Sync_ {
+ LOCAL_PARA_HDR
+ kal_uint32 id;
+ kal_uint32 feature; //VoLTE_Event_Feature_Sync_e
+} VoLTE_Event_Feature_Sync_t;
+
+typedef struct _VoLTE_Event_3gpp_OOS_Ind_ {
+ LOCAL_PARA_HDR
+ kal_int32 id; ///< the account id
+ kal_uint64 ua_id; // reg client information
+ kal_int32 oos_state; ///< VoLTE_Event_3gpp_OOS_State_e
+ kal_int32 oos_timestamp; ///< 3gpp OOS unix timestamp
+} VoLTE_Event_3gpp_OOS_Ind_t;
+
+typedef struct _VoLTE_Event_Notify {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id; // reg client information
+ kal_int32 data;
+} VoLTE_Event_Notify_t;
+
+enum VoLTE_Event_Auth_Result_e {
+ VoLTE_Event_Auth_Result_Accept = 0,
+ VoLTE_Event_Auth_Result_Reject = 1,
+ /*add here*/
+ VoLTE_Event_Auth_Result_Max,
+};
+
+typedef struct _VoLTE_Event_Reg_Auth_Resp {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_int32 result; // refer to ::VoLTE_Event_Auth_Result_e
+ kal_char nc[VOLTE_MAX_AUTH_NC]; // nc
+ kal_char response[VOLTE_MAX_AUTH_RESPONSE]; // response
+ kal_char auts[VOLTE_MAX_AUTH_AUTS]; // auts
+ kal_char ck_esp[VOLTE_MAX_AUTH_CK]; // ck_esp for ipsec encryption key
+ kal_char ik_esp[VOLTE_MAX_AUTH_IK]; // ik_esp for ipsec intergrity key
+ kal_uint8 ck_bin[IMC_MAX_CK_LEN];
+ kal_uint8 ik_bin[IMC_MAX_IK_LEN];
+ kal_uint8 ck_len;
+ kal_uint8 ik_len;
+ kal_uint32 user_data; // user data for UA
+} VoLTE_Event_Reg_Auth_Resp_t;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 acct_id;
+ kal_uint32 sys_time[2]; ///< system time, in ms
+ kal_uint8 src_ip[VOLTE_MAX_ADDRESS_LENGTH]; ///< SIP message source IP addr
+ kal_uint8 dst_ip[VOLTE_MAX_ADDRESS_LENGTH]; ///< SIP message destination IP addr
+ kal_uint32 direction; ///< refer to ::ims_dbg_direction_enum
+ kal_uint32 transaction_id; ///< map to ts_id of transaction_layer
+ kal_uint32 transport_protocol; ///< refer to ::ims_dbg_transport_enum
+ kal_uint32 msg_type; ///< refer to ::ims_dbg_msg_type_enum
+ kal_uint32 method_type; ///< refer to ::ims_dbg_method_enum
+ kal_uint32 cseq; ///< cseq
+ kal_int32 network_id; ///< network id
+ kal_uint32 access_rat; ///< access RAT
+ kal_uint16 rsp_code; ///< SIP response code
+ kal_char request_line[VOLTE_MAX_REQUEST_LINE_LENGTH]; ///< First Line of a SIP message (Request-Line/Status-Line)
+ kal_uint8 call_id[VOLTE_MAX_CALL_ID_LENGTH]; ///< call id
+ kal_char reason_text[VOLTE_MAX_REASON_TEXT_LENGTH]; ///< reason header field
+ kal_char warning_text[VOLTE_MAX_WARNING_TEXT_LENGTH]; ///< warning header field
+ kal_char user_agent_text[VOLTE_MAX_USER_AGENT_LENGTH]; ///< user agent header field
+ kal_char codec_info[VOLTE_MAX_CODEC_LIST_LENGTH]; ///< codec list
+ kal_uint16 audio_port; ///< audio port number
+ kal_uint16 video_port; ///< video port number
+ kal_uint16 audio_as; ///< audioAS
+ kal_uint16 video_as; ///< videoAS
+ kal_uint16 session_as; ///< sessionAS
+ kal_uint16 sip_msg_len; ///< SIP msg length
+ kal_uint8 sip_msg_data[0]; ///< dynamic buffer for SIP msg
+} ims_dbg_sip_info_ind_struct,
+sip_dbg_sip_info_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 is_acct_id_valid;
+ kal_uint32 acct_id;
+
+ kal_uint32 is_emergency_type_valid;
+ kal_uint32 emergency_type;
+
+ kal_uint32 is_reg_state_valid;
+ kal_uint32 reg_state;
+
+ kal_uint32 is_private_uid_valid;
+ kal_uint8 private_uid[VOLTE_MAX_REG_UID_LENGTH];
+
+ kal_uint32 is_public_uid_valid;
+ kal_uint8 public_uid[VOLTE_MAX_REG_UID_LENGTH];
+
+ kal_uint32 is_associated_uri_valid;
+ kal_uint8 associated_uri[VOLTE_MAX_ASSOCIATED_URI];
+
+ kal_uint32 is_em_reg_timestamp_valid;
+ kal_uint8 em_reg_timestamp[VOLTE_MAX_TIME_STAMP_LENGTH];
+
+ kal_uint32 is_reg_expires_valid;
+ kal_uint32 reg_expires;
+
+/** Removal of IPSEC Attribute
+ * ipsec_status not used or set in REG UA,
+ * and not consistent with the interface of
+ * em_imc_reg_info_ind_struct in em_imc_public_struct.h
+ *
+ * the change also makes the interface match the EM document
+ **/
+#if 0
+/* under construction !*/
+/* under construction !*/
+#endif
+
+ kal_uint32 is_ems_mode_valid;
+ kal_uint32 ems_mode;
+
+ kal_uint32 is_last_sip_cause_valid;
+ kal_uint32 last_sip_cause;
+
+ kal_uint32 is_att_dm_type_valid;
+ kal_uint32 att_dm_type;
+
+
+ kal_uint32 is_att_reg_type_valid;
+ kal_uint32 att_reg_type;
+
+ kal_uint32 is_att_direction_valid;
+ kal_uint32 att_direction;
+
+ kal_uint32 is_att_call_id_valid;
+#define _SIP_MSG_MAX_EM_CALLID_LEN 100
+ kal_uint8 att_call_id[_SIP_MSG_MAX_EM_CALLID_LEN];
+
+ kal_uint32 is_att_request_uri_valid;
+ kal_uint8 att_request_uri[VOLTE_MAX_URI_LENGTH];
+
+ kal_uint32 is_att_to_valid;
+ kal_uint8 att_to[VOLTE_MAX_URI_LENGTH];
+
+ kal_uint32 is_att_reg_state_valid;
+ kal_uint32 att_reg_state;
+
+ kal_uint32 is_att_reg_result_valid;
+ kal_uint32 att_reg_result;
+} ims_dbg_em_reg_info_ind_struct;
+
+
+
+enum VoLTE_Stack_IPSec_Encry_Algo_e {
+ VoLTE_Stack_IPSec_Encry_Algo_NULL = 0,
+ VoLTE_Stack_IPSec_Encry_Algo_3DES_CBC = 1,
+ VoLTE_Stack_IPSec_Encry_Algo_AES_CBC = 2
+};
+
+enum VoLTE_Stack_IPSec_Integrity_Algo_e {
+ VoLTE_Stack_IPSec_Integrity_Algo_HMAC_MD5 = 0,
+ VoLTE_Stack_IPSec_Integrity_Algo_HMAC_SHA1 = 1
+};
+
+typedef struct _VoLTE_Event_UA_State_ {
+ LOCAL_PARA_HDR
+ kal_uint32 conn_info; ///< REG connection information
+ kal_uint8 ua_type; ///< UA type
+ kal_uint8 ua_enabled; ///< UA enabled
+} VoLTE_Event_UA_State_t;
+
+/* Teardown Flow for IMCB/REG State un-sync */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_int32 ua_id; // reg client information
+ kal_int32 imcb_current_state; // refer to ::imcb_fsm_state_enum
+ kal_int32 receiving_ua_state; // refer to ::VoLTE_Event_Reg_State_e
+} imsua_imcb_unexpected_state_ind_struct;
+
+typedef imsua_imcb_unexpected_state_ind_struct imsua_ims_stack_unexpected_state_req_struct;
+
+/* REGUA-IMC MSG_ID_REGUA_IMC_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
+} regua_imc_remain_time_ind_struct;
+
+// Constant
+#define MAX_CC_CDU_URI_LEN MAX_CC_ATD_NUM_LEN
+#define MAX_CC_ECPI_NUM_LEN MAX_CC_ATD_NUM_LEN
+#define MAX_CC_EAIC_NUM_LEN MAX_CC_ATD_NUM_LEN
+
+#define IMS_MAX_CALL_NUM 7
+#define IMS_MAX_CONFERENCE_CALL_NUM 5
+#define IMS_MAX_CALL_NUM_IN_CONF 5
+#define MAX_SS_NOTIFY_DATA_LEN 512
+
+#define IMS_USSD_MAX_MSG_LEN (1000)
+#define IMS_USSD_LANGUANGE_LEN (32)
+
+typedef enum
+{
+ IMS_CALL_CATEGORY_NORMAL = 0,
+ IMS_CALL_CATEGORY_EMERGENCY
+} ims_call_category_enum;
+
+typedef enum
+{
+ IMS_CC_RESULT_SUCCESS = 0,
+ IMS_CC_RESULT_FAILURE,
+ IMS_CC_RESULT_INVALID
+} ims_cc_result_enum;
+
+typedef enum
+{
+ // Source: UA
+ IMS_CC_CAUSE_NORMAL = 0, /* receive BYE request, MO hangup, or User reject to receive the all. mapping to CS NORMAL_CLEARING = 16. */
+ IMS_CC_CAUSE_ABNORMAL, /* memory allocation failed, or no resource for call session in the very first begin!!! VDM can require CS to make call, mapping to CS RESOURCE_UNAVAILABLE = 47*/
+ IMS_CC_CAUSE_NONUMBER, /* no dialing number for MO call. mapping to CS Unassigned/Unobtainable number, VDM can require CS to make call. UNOBTAINABLE_NUMBER = 1*/
+ IMS_CC_CAUSE_UNREGISTERED, /* account is not registered, VDM can require CS to make call, mapping to CS NORMAL_UNSPECIFIED = 31*/
+ IMS_CC_CAUSE_DISCONNECT, /* register state go to disconnect state, mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone*/
+ IMS_CC_CAUSE_BECANCEL, /* we cancel the call, which is receive MO_HANGUP_REQ from AP side. Mapping to CS_NORMAL_CLEANING = 16*/
+ IMS_CC_CAUSE_BEREJECT, /* receive 4xx,5xx,6xx from the peer side to cancel request, mapping to CS USER_BUSY = 17, play busy tone*/
+ IMS_CC_CAUSE_BEREJECT_380, /* receive 380 alternative service, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make call */
+ IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_TO_CS, /* receive 380 alternative service, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make call */
+ IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_REREG, /* receive 380 alternative service with reason, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make call */
+ IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_TO_NORMAL_CS, /* receive 380 alternative service, mapping to CS SERVICE_NOT_AVAILABLE = 63. VDM can require CS to make a normal call */
+ IMS_CC_CAUSE_BEREJECT_480, /* receive 480, mapping to CS TEMPORARY_FAILURE = 41, play congestion tone*/
+ IMS_CC_CAUSE_BEREJECT_503, /* receive 503 Service Unavailable, retry-after time period is reported. In this time period, UE cannot use VoLTE to make call. mapping to CS SERVICE_NOT_AVAILABLE = 63.*/
+ IMS_CC_CAUSE_TX_TIMEOUT, /* receive internal error from SIPTX, or AP side do not send confirmation for this MT call until we timeout, we abort the MT call presentation. mapping to CS SERVICE_NOT_AVAILABLE = 63.*/
+ IMS_CC_CAUSE_NO_PRIVACY, /* network cannot support privacy service when user requires critical level. mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone */
+ IMS_CC_CAUSE_PRECONDFAIL, /* receive 580 precondition failure, mapping to CS BEARER_NOT_AVAIL = 58, play congestion tone*/
+ IMS_CC_CAUSE_SECONDCALL, /* receive second call request, VDM can have its policy, mapping to CS NORMAL_UNSPECIFIED = 31*/
+ IMS_CC_CAUSE_NOMEDIACONTENT, /* peer side do not provide SDP for media content or receive 488, mapping to CS QOS_NOT_AVAIL = 49, play congestion tone*/
+ IMS_CC_CAUSE_INVALIDMSG, /*SIP message is not valid, so that the related SS command cannot be executed. This happens in SS function. mapping to CS FACILITY_REJECTED = 29. no tone.*/
+ IMS_CC_CAUSE_INVALIDCMD, /*The command cannot be executed since no related call session is existed. This happens in SS function. cannot mapping to CS, AP side require to send 0. no tone.*/
+ IMS_CC_CAUSE_INVALIDIDX, /* cannot find the acct_id or call_id in the Request command, we send Confirmation with failure result and this cause. mapping to CS NORMAL_UNSPECIFIED = 31 */
+ IMS_CC_CAUSE_SRVCC, /* Add for SRVCC, mapping to CS NORMAL_UNSPECIFIED = 31 */
+ IMS_CC_CAUSE_FACILITY_REJECTED, /* receive 504 with XML body for Registration Restoration. Mapping to CS FACILILITY_REJECTED = 29 */
+ IMS_CC_CAUSE_DEDICATED_BEARER_TIMEOUT, /* for MO call, send INVITE but no response and timeout, send indication to VDM and VDM can use CS (TMO, CMCC requirement) */
+ IMS_CC_CAUSE_GENERIC_RETRY_CS,
+ IMS_CC_CAUSE_GENERIC_NO_RETRY,
+ IMS_CC_CAUSE_GENERIC_RETRY_IMS_CS,
+ IMS_CC_CAUSE_ABORTED,
+ IMS_CC_CAUSE_TIMER_B_EXPIRY,
+ IMS_CC_CAUSE_ECT_TIMEOUT,
+ IMS_CC_CAUSE_TIMER_VZW_EXPIRY,
+ IMS_CC_CAUSE_AC_BARRED,
+ IMS_CC_CAUSE_NW_REJ_CONN,
+ IMS_CC_CAUSE_BEREJECT_503_OUTAGE_TEXT,
+ IMS_CC_CAUSE_GENERIC_CHANGE_PCSCF,
+ IMS_CC_CAUSE_RTT_EMC_FAIL,
+ IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_NORMAL_CS_TO_IMS, /* receive 380 alternative service, VDM can require CS to make a normal CS call or new IMS call */
+ IMS_CC_CAUSE_BEREJECT_380_EMERGENCY_ACTION_ELEM_UNKNOWN, /* receive 380 alternative service, without contact header, XML type is emergency but unknown or missing action element. */
+ IMS_CC_CAUSE_RETRY_IMS_VIDEO_TO_VOICE,
+ IMS_CC_CAUSE_NO_RETRY_BAR_IMS, /*Huawei's requirement, bar IMS for some specific scenarios, then VDM will only try CS during a time period*/
+ IMS_CC_CAUSE_BEREJECT_380_FLIGHTMODE_CS, /* For Claro requirement , UI should pop-up message when receive 380 alternative service during FlightMode, mapping to CS SERVICE_NOT_AVAILABLE = 380. Other behavior is same as Bereject_380 (cause = 7)*/
+ IMS_CC_CAUSE_UA_MAX,
+
+ // Source: IMC
+ IMS_CC_CAUSE_UNAVAILABLE_OF_CALLS, /* unavailable of IMS Voice Service */
+ IMS_CC_CAUSE_EMERG_REG_TIMEOUT, /* AT&T <CDR-LTE-2424>, CS domain search after emerg-reg-timer expires */
+ IMS_CC_CAUSE_RAT_MISMATCH,
+ IMS_CC_CAUSE_RECOVERY_FOR_IMS_REG,
+ // Do not assign 0xC8 for new error code because it is used by VDM_CC_CAUSE_RESEL_IMS_FOR_ECC for VDM/L4 workaround
+
+ IMS_CC_CAUSE_MAX
+} ims_cc_cause_enum;
+
+typedef enum
+{
+ IMS_CC_EAIC_ALLOWED = 0,
+ IMS_CC_EAIC_NOT_ALLOWED
+} ims_cc_eaic_result_enum;
+
+typedef enum
+{
+ IMS_CC_MT_NORMAL = 0,
+ IMS_CC_MT_SSAC_BARRING
+} ims_cc_mt_reason_enum;
+
+typedef enum
+{
+ IMS_CALL_RELATED_SS_TYPE_REL_HELD_OR_UDUB, // AT+CHLD=0
+ IMS_CALL_RELATED_SS_TYPE_REL_ACTIVE_AND_ACCEPT, // AT+CHLD=1
+ IMS_CALL_RELATED_SS_TYPE_REL_SPECIFIC_CALL, // AT+CHLD=1x
+ IMS_CALL_RELATED_SS_TYPE_HOLD_ACTIVE_AND_ACCEPT, // AT+CHLD=2
+ IMS_CALL_RELATED_SS_TYPE_HOLD_ACTIVE_EXCEPT_SPECIFIC_CALL, // AT+CHLD=2x
+ IMS_CALL_RELATED_SS_TYPE_ADD_HELD_CALL, // AT+CHLD=3
+ IMS_CALL_RELATED_SS_TYPE_EXPLICIT_CALL_TRANSFER, // AT+CHLD=4
+ IMS_CALL_RELATED_SS_TYPE_ACTIVATE_CCBS_CALL, // AT+CHLD=5
+ IMS_CALL_RELATED_SS_TYPE_REL_ALL, // AT+CHLD=6
+ IMS_CALL_RELATED_SS_TYPE_REL_CALL_REJECT, // AT+CHLD=8
+ IMS_CALL_RELATED_SS_TYPE_VT_FALL_TO_VOICE, // AT+CHLD=9x
+ IMS_CALL_RELATED_SS_TYPE_INVALID
+} ims_call_related_ss_type_enum;
+
+typedef enum
+{
+/* values 1-127 can be found in 3GPP TS 24.008 Annex H. */
+ /* H.1.1 Cause No. 1 "unassigned (unallocated) number" */
+ IMS_EXT_ERROR_REPORT_UNOBTAINABLE_NUMBER = 1,
+ /* H.1.2 Cause No. 3 "no route to destination" */
+ IMS_EXT_ERROR_REPORT_NO_ROUTE_TO_DEST = 3,
+ /* H.1.3 Cause No. 6 "channel unacceptable" */
+ IMS_EXT_ERROR_REPORT_CHANNEL_UNACCEPTABLE = 6,
+ /* H.1.4 Cause No. 8 "operator determined barring" */
+ IMS_EXT_ERROR_OPERATOR_DETERMINED_BARRING = 8,
+ /* H.1.5 Cause No. 16 "normal call clearing" */
+ IMS_EXT_ERROR_REPORT_NORMAL_CLEARING = 16,
+ /* H.1.6 Cause No. 17 "user busy" */
+ IMS_EXT_ERROR_REPORT_USER_BUSY = 17,
+ /* H.1.7 Cause No. 18 "no user responding" */
+ IMS_EXT_ERROR_REPORT_NO_USER_RESPONDING = 18,
+ /* H.1.8 Cause No. 19 "user alerting, no answer" */
+ IMS_EXT_ERROR_REPORT_NO_ANSWER = 19,
+ /* H.1.9 Cause No. 21 "call rejected" */
+ IMS_EXT_ERROR_REPORT_CALL_REJECTED = 21,
+ /* H.1.10 Cause No. 22 "number changed" */
+ IMS_EXT_ERROR_REPORT_NUMBER_CHANGED = 22,
+ /* H.1.10a Cause No. 24 "call rejected due to feature at the destination" */
+ IMS_EXT_ERROR_REPORT_CELL_REJECTED_DUE_FEAT = 24,
+ /* H.1.11 Cause No. 25 "pre-emption" */
+ IMS_EXT_ERROR_REPORT_PRE_EMPTION = 25,
+ /* H.1.12 Cause No. 26 "Non-selected user clearing" */
+ IMS_EXT_ERROR_REPORT_NONSELECTED_USER_CLEARING = 26,
+ /* H.1.13 Cause No. 27 "Destination out of order" */
+ IMS_EXT_ERROR_REPORT_DESTINATION_OUT_OF_OREDER = 27,
+ /* H.1.14 Cause No. 28 "Invalid number format (incomplete number) " */
+ IMS_EXT_ERROR_REPORT_INVALID_NUMBER_FORMAT = 28,
+ /* H.1.15 Cause No. 29 "Facility rejected" */
+ IMS_EXT_ERROR_REPORT_FACILITY_REJECTED = 29,
+ /* H.1.16 Cause No. 30 "response to STATUS ENQUIRY" */
+ IMS_EXT_ERROR_REPORT_RESP_TO_STATUS_ENQUIRY = 30,
+ /* H.1.17 Cause No. 31 "normal, unspecified */
+ IMS_EXT_ERROR_REPORT_NORMAL_UNSPECIFIED = 31,
+ /* H.2.1 Cause No. 34 "no circuit/channel available" */
+ IMS_EXT_ERROR_REPORT_NO_CHANNEL_AVAILABLE = 34,
+ /* H.2.2 Cause No. 38 "network out of order" */
+ IMS_EXT_ERROR_REPORT_NWK_OUT_OF_ORDER = 38,
+ /* H.2.3 Cause No. 41 "temporary failure" */
+ IMS_EXT_ERROR_REPORT_TEMPORARY_FAILURE = 41,
+ /* H.2.4 Cause No. 42 "switching equipment congestion" */
+ IMS_EXT_ERROR_REPORT_SWITCHING_CONGESTION = 42,
+ /* H.2.5 Cause No. 43 "access information discarded" */
+ IMS_EXT_ERROR_REPORT_ACCESS_INFO_DISCARDER = 43,
+ /* H.2.6 Cause No. 44 "requested channel not available" */
+ IMS_EXT_ERROR_REPORT_REQUESTED_CHANNEL_NOT_AVAIL = 44,
+ /* H.2.7 Cause No. 47 "resource unavailable, unspecified" */
+ IMS_EXT_ERROR_REPORT_RESOURCE_UNAVAILABLE = 47,
+ /* H.3.1 Cause No. 49 "quality of service unavailable" */
+ IMS_EXT_ERROR_REPORT_QOS_NOT_AVAIL = 49,
+ /* H.3.2 Cause No. 50 "Requested facility not subscribed" */
+ IMS_EXT_ERROR_REPORT_REQ_FACILITY_NOT_SUBSCRIBED = 50,
+ /* H.3.3 Cause No. 55 "Incoming calls barred within the CUG" */
+ IMS_EXT_ERROR_REPORT_INCOMING_CALLS_BARRED_IN_CUG = 55,
+ /* H.3.4 Cause No. 57 "Bearer capability not authorized" */
+ IMS_EXT_ERROR_REPORT_BEARER_CAP_NOT_AUTHORIZED = 57,
+ /* H.3.5 Cause No. 58 "Bearer capability not presently available" */
+ IMS_EXT_ERROR_REPORT_BEARER_NOT_AVAIL = 58,
+ /* H.3.6 Cause No. 63 "Service or option not available, unspecified" */
+ IMS_EXT_ERROR_REPORT_SERVICE_NOT_AVAILABLE = 63,
+ /* H.3.7 Cause No. 68 "ACM equal to or greater than ACMmax" */
+ IMS_EXT_ERROR_REPORT_ACM_GREATER_THAN_ACMMAX = 68,
+ /* H.4.1 Cause No. 65 "bearer service not implemented" */
+ IMS_EXT_ERROR_REPORT_BEARER_SERVICE_NOT_IMPLEMENTED = 65,
+ /* H.4.2 Cause No. 69 "request facility not implemented" */
+ IMS_EXT_ERROR_REPORT_REQ_FACILITY_NOT_IMPLEMENTED = 69,
+ /* H.4.3 Cause No. 70 "only restricted digital information bearer capability is available" */
+ IMS_EXT_ERROR_REPORT_ONLY_DIGITAL_INFO_BEARER = 70,
+ /* H.4.4 Cause No. 79 "service or option not implemented, unspecified" */
+ IMS_EXT_ERROR_REPORT_SERVICE_NOT_IMPLEMENTED = 79,
+ /* H.5.1 Cause No. 81 "invalid transaction identified value" */
+ IMS_EXT_ERROR_REPORT_INVALID_TRANSACTION_IDENTIFIER = 80,
+ /* H.5.2 Cause No. 87 "user not member of CUG" */
+ IMS_EXT_ERROR_REPORT_USER_NOT_MEMBER_OF_CUG = 87,
+ /* H.5.3 Cause No. 88 "incompatible destination" */
+ IMS_EXT_ERROR_REPORT_INCOMPATIBLE_DESTINATION = 88,
+ /* H.5.4 Cause No. 91 "invalid transit network selection" */
+ IMS_EXT_ERROR_REPORT_INVALID_TRANSIT_NWK_SELECTION = 91,
+ /* H.5.5 Cause No. 95 "semantically incorrect message" */
+ IMS_EXT_ERROR_REPORT_SEMANTICALLY_INCORRECT_MSG = 95,
+ /* H.6.1 Cause No. 96 "invalid mandatory information" */
+ IMS_EXT_ERROR_REPORT_INVALID_MANDATORY_INFORMATION = 96,
+ /* H.6.2 Cause No. 97 "message type non-existent or not implemented" */
+ IMS_EXT_ERROR_REPORT_MSG_TYPE_NON_EXISTENT = 97,
+ /* H.6.3 Cause No. 98 "message type not compatible with protocol state" */
+ IMS_EXT_ERROR_REPORT_MSG_TYPE_NOT_COMP_WITH_STATE = 98,
+ /* H.6.4 Cause No. 99 "information element non-existent or not implemented" */
+ IMS_EXT_ERROR_REPORT_INFO_ELEMENT_NON_EXISTENT = 99,
+ /* H.6.5 Cause No. 100 "conditional IE error" */
+ IMS_EXT_ERROR_REPORT_CONDITIOANL_IE_ERROR = 100,
+ /* H.6.6 Cause No. 101 "message not compatible with protocol state" */
+ IMS_EXT_ERROR_MSG_NOT_COMP_WITH_STATE = 101,
+ /* H.6.7 Cause No. 102 "recovery on timer expiry" */
+ IMS_EXT_ERROR_RECOVERY_ON_TIMER_EXPIRY = 102,
+ /* H.6.8 Cause No. 111 "protocol error, unspecified" */
+ IMS_EXT_ERROR_REPORT_PROTOCOL_ERROR_UNSPECIFIED = 111,
+ /* H.7.1 Cause No. 127 "interworking, unspecified" */
+ IMS_EXT_ERROR_REPORT_INTERWORKING_UNSPECIFIED = 127,
+
+/* other error causes */
+ IMC_EXT_ERROR_REPORT_INVALID_CMD = 0,
+ IMS_EXT_ERROR_REPORT_FDN_RESTRICTION = 2600, // refer to ps_cause_enum
+ IMS_EXT_ERROR_REPORT_ECT_TIMEOUT = 899,
+ IMS_EXT_ERROR_REPORT_DEDICATED_BEARER_TIMEOUT = 1000, // may reselect CS domain
+ IMS_EXT_ERROR_REPORT_GENERIC_RETRY_CS = 1001, // may reselect CS domain
+ IMS_EXT_ERROR_REPORT_GENERIC_NO_RETRY = 1002,
+ IMS_EXT_ERROR_REPORT_GENERIC_RETRY_IMS_CS = 1003, // may retry IMS once, then CS domain
+ IMS_EXT_ERROR_REPORT_TIMER_B_EXPIRY = 1004,
+ IMS_EXT_ERROR_REPORT_GENERIC_RETRY_IMS_VIDEO_TO_VOICE = 1005, // always retry IMS.
+ IMS_EXT_ERROR_REPORT_NO_RETRY_BAR_IMS = 1006, // VDM will only try CS when barring IMS
+ IMS_EXT_ERROR_REPORT_NON_UE_DETECT_EMERG = 380, // report to AP to trigger normal to ecc redial
+ IMS_EXT_ERROR_REPORT_SILENT_REDIAL_3GPP2 = 2001,
+ IMS_EXT_ERROR_REPORT_DIAL_1XRTT_DIRECTLY = 2002,
+ IMS_EXT_ERROR_REPORT_NEED_GLOBAL_MODE_FOR_EMERG = 2003,
+ IMS_EXT_ERROR_REPORT_SSAC_BAR = 2004,
+ IMS_EXT_ERROR_REPORT_RTT_EMC_FAIL = 2005
+} ims_ext_error_report_enum;
+
+/* Deprecated: do not use after IMS interface 0x55 taken in use */
+#define IMS_EXT_ERROR_REPORT_TEMPORTARY_FAILURE IMS_EXT_ERROR_REPORT_TEMPORARY_FAILURE
+
+
+typedef ims_ext_error_report_enum ims_disc_cause_enum;
+
+typedef enum
+{
+ IMS_SUB_EVENT_UNKNOWN = 0,
+ IMS_SUB_EVENT_CONF = 1,
+ IMS_SUB_EVENT_MAX,
+}ims_ss_sub_event_enum;
+
+typedef enum
+{
+ IMS_DEREG_CAUSE_UNSPECIFIED = 0,
+ IMS_DEREG_CAUSE_PWR_OFF = 1,
+ IMS_DEREG_CAUSE_RF_OFF = 2,
+ IMS_DEREG_CAUSE_IMS_PLMN_BLOCKED = 3,
+ IMS_DEREG_CAUSE_IMS_3402_BLOCKED = 4,
+ IMS_DEREG_CAUSE_APN_CHANGE = 5,
+ IMS_DEREG_CAUSE_IMS_VOICE_NOT_AVAIL = 6,
+ IMS_DEREG_CAUSE_IMS_SIM_NOT_READY = 7,
+ IMS_DRREG_CAUSE_CAUSE_IGNORE_CHANGE = 8,
+ IMS_DEREG_CAUSE_MAX
+}ims_dereg_cause_enum;
+
+typedef enum
+{
+ VOICE_ADS_CTRL_AUTO = 0, // VDM apply domain selection
+ VOICE_ADS_CTRL_IMS_ALWAYS // VDM select IMS domain as long as IMS Registered
+} voice_ads_ctrl_enum;
+
+typedef enum
+{
+ IMS_SRVCC_CALL_MODE_VOICE = 0,
+ IMS_SRVCC_CALL_MODE_VIDEO,
+ IMS_SRVCC_CALL_MODE_EMERGENCY,
+ IMS_SRVCC_CALL_MODE_VOICE_CONFERENCE,
+ IMS_SRVCC_CALL_MODE_VIDEO_CONFERENCE,
+ IMS_SRVCC_CALL_MODE_VOICE_CONFERENCE_PARTS, // voice conference call participant
+ IMS_SRVCC_CALL_MODE_VIDEO_CONFERENCE_PARTS, // video conference call participant
+ IMS_SRVCC_CALL_MODE_MAX
+} ims_srvcc_call_mode_enum;
+
+typedef enum
+{
+ IMS_SRVCC_CALL_DIRECTION_MO = 0,
+ IMS_SRVCC_CALL_DIRECTION_MT,
+ IMS_SRVCC_CALL_DIRECTION_MAX,
+} ims_srvcc_call_direction_enum;
+
+typedef enum
+{
+ IMS_SRVCC_CALL_STATE_EARLY = 0,
+ IMS_SRVCC_CALL_STATE_EARLY_WITH_MEDIA,
+ IMS_SRVCC_CALL_STATE_ACTIVE,
+ IMS_SRVCC_CALL_STATE_ON_HOLD,
+ IMS_SRVCC_CALL_STATE_PRE_ALERTING,
+ IMS_SRVCC_CALL_STATE_PRE_ALERTING_WITH_MEDIA,
+ IMS_SRVCC_CALL_STATE_ACTIVE_RETRY_CC_CONNECT,
+ IMS_SRVCC_CALL_STATE_MAX
+} ims_srvcc_call_state_enum;
+
+typedef enum
+{
+ IMS_SRVCC_CALL_ECC_CTGY_UNSPECIFIED = 0,
+ IMS_SRVCC_CALL_ECC_CTGY_POLICE = 0x1,
+ IMS_SRVCC_CALL_ECC_CTGY_AMBULANCE = 0x2,
+ IMS_SRVCC_CALL_ECC_CTGY_FIRE = 0x4,
+ IMS_SRVCC_CALL_ECC_CTGY_MARINE = 0x8,
+ IMS_SRVCC_CALL_ECC_CTGY_MOUNTAIN = 0x10,
+ IMS_SRVCC_CALL_ECC_CTGY_MANUALLY = 0x40,
+ IMS_SRVCC_CALL_ECC_CTGY_AUTO = 0x80,
+ IMS_SRVCC_CALL_ECC_CTGY_GAS = 0x100,
+ IMS_SRVCC_CALL_ECC_CTGY_ANIMAL = 0x200,
+ IMS_SRVCC_CALL_ECC_CTGY_PHYSICIAN = 0x400,
+ IMS_SRVCC_CALL_ECC_CTGY_POISON = 0x800,
+ IMS_SRVCC_CALL_ECC_CTGY_TRAFFIC = 0x1000,
+ IMS_SRVCC_CALL_ECC_CTGY_COUNTRY_SPECIFIC = 0x2000,
+ IMS_SRVCC_CALL_ECC_CTGY_UNRECOGNIZED = 0x8000,
+
+ /*Korea TTA special emergency Ctgy*/
+ IMS_SRVCC_CALL_ECC_CTGY_KR_SPIES = 0x3,
+ IMS_SRVCC_CALL_ECC_CTGY_KR_INTELLIGENCE = 0x6,
+ IMS_SRVCC_CALL_ECC_CTGY_KR_SMUGGLING = 0x9,
+ IMS_SRVCC_CALL_ECC_CTGY_KR_SCHOOL_VIOLENCE = 0x12,
+ IMS_SRVCC_CALL_ECC_CTGY_KR_CYBERTERRORISM = 0x13,
+ IMS_SRVCC_CALL_ECC_CTGY_MAX = 0xFFFF
+}ims_srvcc_call_ecc_category_enum;
+
+typedef enum
+{
+ IMS_CC_EVTA_MODE_UNKNOWN = 0,
+ IMS_CC_EVTA_MODE_ACCEPT_AS_VOICE = 1,
+ IMS_CC_EVTA_MODE_ACCEPT_AS_ONE_WAY_VIDEO_RX = 2,
+ IMS_CC_EVTA_MODE_ACCEPT_AS_ONE_WAY_VIDEO_TX = 3,
+ IMS_CC_EVTA_MODE_MAX,
+} ims_cc_evta_mode_enum;
+
+typedef enum
+{
+ IMS_CALL_TYPE_NATIONAL = 129,
+ IMS_CALL_TYPE_INTERNATIONAL = 145,
+} ims_call_type_enum;
+
+typedef enum
+{
+ IMS_CALL_DIR_MO_CALL = 0,
+ IMS_CALL_DIR_MT_CALL = 1,
+} ims_call_dir_enum;
+
+typedef enum
+{
+ IMS_CALL_STATE_ACTIVE = 0,
+ IMS_CALL_STATE_HELD = 1,
+ IMS_CALL_STATE_MO_DIALING = 2,
+ IMS_CALL_STATE_MO_ALERTING = 3,
+ IMS_CALL_STATE_MT_INCOMING = 4,
+ IMS_CALL_STATE_MT_WAITING = 5,
+} ims_call_state_enum;
+
+typedef enum
+{
+ IMS_CALL_MODE_CS_DOMAIN_BEGIN = 0,
+ IMS_CALL_MODE_CS_VOICE_CALL = IMS_CALL_MODE_CS_DOMAIN_BEGIN,
+ IMS_CALL_MODE_CS_DATA_CALL,
+ IMS_CALL_MODE_CS_FAX_CALL,
+ IMS_CALL_MODE_CS_VFD_VOICE, /* voice followed by data, voice mode */
+ IMS_CALL_MODE_CS_AVD_VOICE, /* alternating voice/data, voice mode */
+ IMS_CALL_MODE_CS_AVF_VOICE, /* alternating voice/fax, voice mode */
+ IMS_CALL_MODE_CS_VFD_DATA, /* voice followed by data, data mode */
+ IMS_CALL_MODE_CS_AVD_DATA, /* alternating voice/data, data mode */
+ IMS_CALL_MODE_CS_AVF_FAX, /* alternating voice/fax, fax mode */
+ IMS_CALL_MODE_CS_UNKNOWN_MODE,
+ IMS_CALL_MODE_CS_VIDEO_CALL,
+
+ IMS_CALL_MODE_IMS_DOMAIN_BEGIN = 20,
+ IMS_CALL_MODE_IMS_VOICE_CALL = IMS_CALL_MODE_IMS_DOMAIN_BEGIN,
+ IMS_CALL_MODE_IMS_VIDEO_CALL,
+ IMS_CALL_MODE_IMS_VOICE_CONF,
+ IMS_CALL_MODE_IMS_VIDEO_CONF,
+ IMS_CALL_MODE_IMS_VOICE_CONF_PARTS, // voice conference call participant
+ IMS_CALL_MODE_IMS_VIDEO_CONF_PARTS, // video conference call participant
+ IMS_CALL_MODE_IMS_DOMAIN_END = 39
+} ims_call_mode_enum;
+
+typedef enum
+{
+ IMCSMS_MS_NW_RP_DATA =0,
+ IMCSMS_NW_MS_RP_DATA,
+ IMCSMS_MS_NW_RP_ACK,
+ IMCSMS_NW_MS_RP_ACK,
+ IMCSMS_MS_NW_RP_ERROR,
+ IMCSMS_NW_MS_RP_ERROR,
+ IMCSMS_MS_NW_RP_SMMA
+} imcsms_rp_msg_type_enum;
+
+typedef enum
+{
+ SC_UNSPECIFIED = (0<<0),
+ SC_POLICE = (1<<0),
+ SC_AMBULANCE = (1<<1),
+ SC_FIRE = (1<<2),
+ SC_MARINE = (1<<3),
+ SC_MOUNTAIN = (1<<4),
+ SC_MANUALLY_INITIATED_ECALL = (1<<5),
+ SC_AUTOMATICALLY_INITIATED_ECALL = (1<<6),
+ SC_RESERVED = (1<<7),
+ SC_GAS = (1<<8),
+ SC_ANIMAL = (1<<9),
+ SC_PHYSICAL = (1<<10),
+ SC_POISON = (1<<11),
+ SC_TRAFFIC = (1<<12),
+ SC_COUNTRY_SPECIFIC = (1<<13),
+ SC_UNRECOGNIZED = (1<<14),
+ /*Korea TTA special emergency category */
+ SC_TTA_SPIES = 0x3,
+ SC_TTA_INTELLIGENCE = 0x6,
+ SC_TTA_SMUGGLING = 0x9,
+ SC_TTA_SCHOOL_VIOLENCE = 0x12,
+ SC_TTA_CYBERTERRORISM = 0x13,
+} ims_ecc_category_enum;
+
+typedef struct
+{
+ /* +ECPI:<call_id>,<msg_type>,<is_ibt>,<is_tch>,<dir>,
+ * <call_mode>,[<number>,<type>],[<disc_cause>],[<pau>]
+ */
+ kal_bool is_ibt;
+ kal_bool is_tch;
+ ims_call_dir_enum call_dir;
+ ims_call_mode_enum call_mode;
+ kal_bool is_number_call_type_present;
+ kal_uint8 number[MAX_CC_ECPI_NUM_LEN];
+ ims_call_type_enum call_type;
+ kal_bool is_disc_cause_present;
+ ims_disc_cause_enum disc_cause;
+} ims_ecpi_info_struct;
+
+typedef struct
+{
+ kal_uint8 call_id; /* call_id_ims = call_id_ap */
+ ims_srvcc_call_mode_enum call_mode;
+ ims_srvcc_call_direction_enum call_direction;
+ ims_srvcc_call_state_enum call_state;
+ ims_srvcc_call_ecc_category_enum call_ecc_category;
+ kal_uint8 num_of_conf_parts;
+ kal_uint8 call_number[MAX_CC_ATD_NUM_LEN];
+} ims_srvcc_call_ctxt_struct;
+
+typedef struct {
+ kal_uint8 number[MAX_CC_ECPI_NUM_LEN];
+ ims_call_type_enum call_type;
+ ims_call_mode_enum call_mode;
+ kal_uint8 digit_to_line_number[IMC_MAX_URI_LENGTH];
+} ims_cc_eaic_info_struct;
+
+/* +CLCC:<idx>,<dir>,<stat>,<mode>,<mpty>,[<number>,<type>]... */
+typedef struct {
+ kal_uint8 call_id;
+ ims_call_dir_enum dir;
+ ims_call_state_enum call_state;
+ ims_call_mode_enum call_mode;
+ kal_bool mpty; // FALSE: is NOT conference call, TRUE: is conference call
+ ims_call_type_enum call_type;
+ kal_uint8 number[MAX_CC_ATD_NUM_LEN];
+ kal_uint8 cli_validity;
+} ims_call_list_struct;
+
+/* ViLTE */
+typedef enum
+{
+ IMS_CC_CAMERA_INACTIVE = 0,
+ IMS_CC_CAMERA_SEND_ONLY = 1,
+ IMS_CC_CAMERA_RECV_ONLY = 2,
+ IMS_CC_CAMERA_SEND_RECV = 3,
+ IMS_CC_CAMERA_MAX,
+} ims_cc_camera_direction_enum;
+
+typedef enum
+{
+ IMS_SEND_USSD_RESULT_SUCCESS = 0,
+ IMS_SEND_USSD_RESULT_FAILURE = 1,
+ IMS_SEND_USSD_RESULT_MAX,
+} ims_send_ussd_result_enum;
+
+typedef enum
+{
+ IMCSMS_C2K_SUBMIT = 0, //C2K SMS triggered by AP (AT+C2KCMGS)
+ IMCSMS_C2K_ACKNOWLEDGE = 1,
+ IMCSMS_CDMA_SUBMIT //C2K SMS triggered by MD3 (SDM_VAL_C2K_IND)
+} imcsms_c2k_msg_type_enum;
+
+typedef enum
+{
+ IMCSMS_C2K_CLASS_NONE =0, //No error
+ IMCSMS_C2K_CLASS_RESERVED, //Reserved
+ IMCSMS_C2K_CLASS_TEMPORARY, //Temporary error
+ IMCSMS_C2K_CLASS_PERMANENT //Permanent error
+} imcsms_c2k_error_class_enum;
+
+typedef enum
+{
+ IMCSMS_C2K_CAUSE_START = 0,
+ IMCSMS_C2K_CAUSE_NWRES = 2,
+ IMCSMS_C2K_CAUSE_NWFAIL = 3,
+ IMCSMS_C2K_CAUSE_OTHER_GENERAL_PROBLEM = 107,
+ IMCSMS_C2K_CAUSE_OK = 32768,
+ IMCSMS_C2K_CAUSE_END = 32780,
+} imcsms_c2k_cause_code_enum;
+
+typedef enum
+{
+ IMCSMS_CS_NETWORK_NOT_AVAILABLE = 0,
+ IMCSMS_CS_NETWORK_HOME,
+ IMCSMS_CS_NETWORK_ROAMING
+} imcsms_cs_network_status_enum;
+
+typedef enum {
+ CALL_UNKNOWN_TIMER = 99,
+ CALL_REFRESH_TIMER = 100, ///< session timer / 2. When it times out, we shall send re-INVITE or UPDATE to refresh the session.
+ CALL_REFRESHCALL_TIMEOUT_TIMER, ///< session timer. When it times out, we shall terminate the session.
+ CALL_TCALL_TIMER, ///< examine the call progress for waiting 100 trying in MO call. If call is stopped because SIP message is not received and this timer is timeout, we will CANCEL this call.
+ CALL_CALLEND_TIMER, ///< examine the call cancel progress. To prevent we wait too long for CANCEL call; or used in OOS_END to wait NW cancel the ringing call, timeout will send reject code by UE
+ CALL_UPDATE_PRECOND_TIMER,
+ CALL_WAITING_MT_CALL_CNF_TIMER, ///< waiting MSG_ID_VOLTE_MT_CALL_PRESENT_RSP from AP side
+ CALL_SERVICE_UNAVAILA_TIMER, ///< Receive 503 Service Unavailable, then we cannot make call in the time duration
+ CALL_RINGBACK_END_TIMER, ///< for NSN NVIOT MO internal timer for MT not accept
+ CALL_RINGING_END_TIMER, ///< for CAT MT internal timer
+ CALL_MO_INVITE_TO_BWCNF_TIMER, ///<examine the call progress from send invite to receive bw_cnf, will tigger csfb when timeout and not receive bw_cnf
+ CALL_WAITING_487_TIMER, ///< for force release call when no 487 received after send CANCEL
+ CALL_HOLD_RETRY_TIMER, ///< Hold retry timer. When it times out, hold is retried once as specified in RFC 3261. Otherwise hold fails.
+ CALL_UNHOLD_RETRY_TIMER, ///< Unhold retry timer. When it times out, unhold is retried once as specified in RFC 3261. Otherwise unhold fails.
+ CALL_ABORT_INVITE_TIMER, ///< Abort INVITE timer. When it times out, UE should abort the INVITE transaction.
+ CALL_SECOND_INVITE_TIMER, ///< For RJIL hold/unhold timer, there is an another INVITE transaction after hold/unhold so we need to start a timer to wait the second INVITE transaction completed.
+ CALL_SDP_ANS_ACK_TIMER, ///< For KDDI, we need to start timer for waiting PRACK.
+ CALL_MT_PROCESSING_TIMER, ///< For KDDI, we need to start timer after receiving initial INVITE.
+ CALL_ECT_NOTIFY_TIMER, ///< NOTIFY guard timer for Assured ECT
+ CALL_SESSION_MODIFY_RETRY_TIMER, ///< RJIL IOT upgrade have to retry after Retry-After value
+ CALL_MOD_SESSION_RSP_TIMER, ///< For MSG_ID_VOLTE_MOD_SESSION_IND guard timer. When it timeout, aussme reject.
+ CALL_CELL_ID_VALID_TIMER, ///< cell id is stored in acct.c before it is considered too old
+ CALL_TEXT_WAIT_TIMER, ///< For VZW, if receive normal MT call but gtt on, need wait 2s, if no empty reINVITE, send reINVITE
+ CALL_LTE_EMC_TIMER, ///< Examine the call progress for waiting 200 OK in MO LTE emergency call. If 1xx received but no 200 OK received within the timer, we will CANCEL this call.
+ CALL_EMC_RTT_CB_TIMER, ///< For TMOUS RTT, When receiving a voice call after an EMC RTT call is terminated, we need automatically add text component (voice to RTT call upgrade)
+ CALL_E2_EMC_INIT_TIMER, ///< For TMOUS EMC, E2 Emergency setup initiation
+ CALL_E3_EMC_CATCH_ALL_H_TIMER, ///< For TMOUS EMC, E3 Emergency setup catch all for home
+ CALL_E3_EMC_CATCH_ALL_V_TIMER, ///< For TMOUS EMC, E3 Emergency setup catch all for roaming
+ CALL_MEDIA_OFF_GUARD_TIMER, ///< ignore media on / off pingpang. silent drop media off when timer existed
+ CALL_NORMAL_CLEAR_TIMER, ///< timeout, DISC change to NULL state
+ CALL_TCW_MT_CALL_TIMER, ///for telcel ,waiting communication,when it time out send 480 response to MO
+ CALL_EMERGENCY_OPTION_TIMER, ///< For Sprint EMC, send a SIP OPTIONS Method with an updated PIDF-LO
+ CALL_ROAMING_EPS_ONLY_TIMER, ///< For TMOUS, when eps-only attach to roaming plmn, no cancel or CSFB for no dedicated bearer. And drop call when timer expiry.
+ CALL_TERMINATION_TIMER, ///< Terminate session after timeout
+ CALL_ECT_DELAY_TARGET_UNHOLD_TIMER, ///< Delay abort guard timer for consultative ECT when unexpected BYE is received from transferee
+ CALL_IGNORE_REPEATE_180_TIMER, ///< When timer running, ignore repeated 180
+ CALL_ANBR_RETRY_TIMER, ///< Recv L2 ANBR but cannot handle immeediately, timeout retry it
+ CALL_ANBR_GUARD_TIMER, ///< During guard time, L2 ANBR message will be delay to timeout
+ CALL_WAIT_PRACK_FOR_183_TIMER, ///< After timerout,MT will send BW IND
+ CALL_MOD_SESSION_REQ_TIMER, ///< For VOLTE_MOD_SESSION_REQ guard timer. When it timeout, aussme reject
+ CALL_EMC_CLEAR_TIMER, ///< For TMOUS EMC, timeout, DISC change to NULL state
+ CALL_MO_B1_TIMER, ///< For TMOUS, UE MO Timer B1, GID-MTRREQ-459360
+ CALL_LCFS_MT_CALL_TIMER, ///< for TMOUS, (last come first served) the UE shall accept network paging message (from LTE) to take the 2nd call in 2G/3G prior to sending 180 ringing or any final response (2xx, 4xx-6xx).
+ CALL_PENDING_ECPI133_TIMER, ///< MT don't answer the call,MO hangup, delay ECPI133 1s to confirm ACK have recv TCP ACK.
+ CONF_CALL_FINAL_NOTIFY_TIMER, ///< For REFER NOTIFY operation complete or not.
+ CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER, ///< In order to wait NOTIFY(conference call SUBSCRIBE), start CONF_CALL_MODIFY_WAIT_NOTIFY_TIMER.
+ CALL_UPGRADE_BW_FAIL_AUTO_DOWNGRADE_TIMER, ///< When call upgrade fail, in order to avoid mo and mt send reINVITE at the same time for auto downgrade, start CALL_UPGRADE_BW_FAIL_AUTO_DOWNGRADE_TIMER(mo 3s, mt 1s).
+ CALL_DOWNGRADE_WAITING_FINAL_RESP_TIMER, ///< Huawei's requirement, during this timer running, MD will not accept any call operation request (including local and remote)
+ CALL_MO_INVITE_TO_18x_TIMER, ///< examine the call progress for waiting 18x in MO call. If timer is timeout, we will CANCEL this call.
+ CALL_MO_INVITE_RETRY_AFTER_TIMER, ///For KDDI, UE retry MO Call in retry-after if final response with the header
+ CALL_WAIT_AUDIO_RTP_FOR_CRS_TIMER, ///< To check if UA could receive audio rtp after the negoiation for video crs has been finished. If not, then need to notify AP when timer has expiried.
+ CALL_EVOLTESI_RINGING_TIMER, ///< A specific MT Ringing timer for enhanced volte si (short interruption) feature
+ CALL_EMC_PUBLISH_TIMER, ///< PUBLISH refresh timer for EMC Current Location Discovery
+ CALL_CS_SERVICE_NOTIFY_RSP_TIMER, /////For Airtel, during ongoing IMS call, handles CS service response delay timer
+ CALL_INVITE_NO_RSP_RAN_PRIO_REQ_TIMER, ///<Timer for waiting INVITE response in WiFi call and trigger MSG_ID_IMC_IWLAN_REG_RAN_PRIO_UPDATE_REQ to IWLAN to trigger possible HO to LTE..>
+} ims_call_timer_type_enum;
+
+typedef enum {
+ USSD_UNKNOWN_TIMER = 50,
+ USSD_REFRESH_TIMER, ///< session timer / 2. When it times out, we shall send re-INVITE or UPDATE to refresh the session.
+ USSD_REFRESHCALL_TIMEOUT_TIMER, ///< session timer. When it times out, we shall terminate the session.
+ USSD_TCALL_TIMER, ///< examine the call progress for waiting 200 OK in MO call. If call is stopped because SIP message is not received and this timer is timeout, we will CANCEL this call.
+ USSD_WAITING_487_TIMER, ///< for force release call when no 487 received after send CANCEL
+ USSD_NW_TIMEOUT_TIMER, ///< for local release when NW not send resonse for 1 min
+ USSD_WAIT_BYE_200_OK_TIMER, ///< wait for BYE 200 OK from N/W
+} ims_ussd_timer_type_enum;
+
+
+//*****************************
+//*** UA LEGACY TYPE DEFINE ***
+//*****************************
+
+#define UA_IMCB_MAP_STRUCT(ua, imcb) \
+ typedef VoLTE_Event_ ## ua ## _t ua_imcb_ ## imcb ## _struct, volte_ ## imcb ## _struct; \
+
+#define UA_VOLTE_ILM_MAP_STRUCT(ua, ilm) \
+ typedef VoLTE_Event_ ## ua ## _t volte_ ## ilm ## _struct; \
+
+
+UA_IMCB_MAP_STRUCT(Network_Change, req_network_change) // message: MSG_ID_VOLTE_REQ_NETWORK_CHANGE
+UA_IMCB_MAP_STRUCT(Rat_Change, req_rat_change) // message: MSG_ID_VOLTE_REQ_RAT_CHANGE
+UA_IMCB_MAP_STRUCT(3gpp_Rat_Change, req_3gpp_rat_change) // message: MSG_ID_VOLTE_REQ_3GPP_RAT_CHANGE
+UA_IMCB_MAP_STRUCT(3gpp_OOS_Ind, req_3gpp_oos_ind) // message: MSG_ID_VOLTE_REQ_3GPP_OOS_IND
+
+/***** UA QUERY CELL ID *****/
+UA_IMCB_MAP_STRUCT(Query_State, ind_query_state) /* message: MSG_ID_VOLTE_IND_QUERY_STATE */
+
+/**** Logging Notify ****/
+UA_IMCB_MAP_STRUCT(Logging_Event_Notify, logging_event_notify_req) /* message: MSG_ID_VOLTE_REQ_LOGGING_EVENT_NOTIFY */
+typedef VoLTE_Event_Logging_Event_Notify_t volte_req_logging_event_notify_struct;
+
+/***** FF00H to UA *****/
+UA_IMCB_MAP_STRUCT(FF00H_Update, ff00h_update) /* message: FF00H_UPDATE MSG_ID_VOLTE_REQ_FF00H_UPDATE */
+typedef VoLTE_Event_FF00H_Update_t volte_req_ff00h_update_struct;
+
+/***** IP Change Notify to UA *****/
+UA_IMCB_MAP_STRUCT(IP_Change_Notify, ip_change_notify) /* message: IP_CHANGE_NOTIFY MSG_ID_VOLTE_REQ_IP_CHANGE_NOTIFY */
+
+/***** iRat Change PDN success to UA *****/
+UA_IMCB_MAP_STRUCT(iRat_without_IP_Change, irat_without_ip_change) /* message: IRAT_WIOUTH_IP_CHANGE VOLTE_REQ_IRAT_WIOUTH_IP_CHANGE */
+typedef VoLTE_Event_iRat_without_IP_Change_t volte_req_irat_without_ip_change_struct;
+
+/***** Feature Sync *****/
+UA_IMCB_MAP_STRUCT(Feature_Sync, feature_sync_req) /* message: FEATURE_SYNC_REQ VOLTE_REQ_FEATURE_SYNC */
+typedef VoLTE_Event_Feature_Sync_t volte_req_feature_sync_struct;
+
+UA_IMCB_MAP_STRUCT(PS_DATA_OFF_Req, req_ps_data_off) // message: MSG_ID_VOLTE_REQ_PS_DATA_OFF
+
+UA_IMCB_MAP_STRUCT(Tlv_Para_Setting, tlv_para_ind) /* mseeage: MSG_ID_VOLTE_IND_TLV_PARA */
+typedef VoLTE_Event_Tlv_Para_Setting_t volte_ind_tlv_para_struct;
+
+#if 0
+/* under construction !*/
+#else
+// message: MSG_ID_VOLTE_REQ_UPDATE_RT_SETTING
+typedef VoLTE_Event_Setting_t ua_imcb_req_update_rt_setting_header_struct, volte_req_update_rt_setting_struct;
+typedef struct ua_imcb_req_update_rt_setting_struct {
+ imcf_uint8 data[1000];
+} ua_imcb_req_update_rt_setting_struct;
+#endif
+
+UA_IMCB_MAP_STRUCT(MD_Lower_Layer_Err, req_md_lower_layer_err) // message: MSG_ID_VOLTE_REQ_MD_LOWER_LAYER_ERR
+
+/***** UA TIMER -> should be removed after gen97 *****/
+UA_IMCB_MAP_STRUCT(Timer, ind_timer_start) /* message: MSG_ID_VOLTE_IND_TIMER_START */
+UA_IMCB_MAP_STRUCT(Timer, ind_timer_cancel) /* message: MSG_ID_VOLTE_IND_TIMER_CANCEL */
+UA_IMCB_MAP_STRUCT(Timer, cnf_timer_expiry) /* message: MSG_ID_VOLTE_CNF_TIMER_EXPIRY */
+
+typedef struct _VoLTE_Event_ATCmd_Relay_t ua_imcb_atcmd_relay_struct, volte_req_atcmd_relay, volte_ind_atcmd_relay; /* message: MSG_ID_VOLTE_REQ_ATCMD_RELAY -> should be removed after gen97?? */
+
+/***** Condition Change Notify to UA *****/
+UA_IMCB_MAP_STRUCT(Condition_Change_Notify, condition_change_notify) /* message: CONDITION_CHANGE_NOTIFY MSG_ID_VOLTE_REQ_CONDITION_CHANGE_NOTIFY */
+
+
+#endif /* _IMS_COMMON_DEF_H_ */
diff --git a/mcu/protocol/interface/ims/ims_dbg.h b/mcu/protocol/interface/ims/ims_dbg.h
new file mode 100644
index 0000000..6b8961b
--- /dev/null
+++ b/mcu/protocol/interface/ims/ims_dbg.h
@@ -0,0 +1,336 @@
+#ifndef __IMS_DBG_H__
+#define __IMS_DBG_H__
+
+#include "ims_interface_ap.h"
+#include "volte_def.h"
+#include "sip/inet_msg_def.h"
+#include "sip/sip_status_code.h"
+#include "sip/sip_msg_defs.h"
+
+#include "sdp/sdp_msg_api.h"
+
+#include "ims_dbg_enum.h"
+#include "ims_dbg_struct.h"
+
+/******************************************************************************
+ *
+ * Constants
+ *
+ *****************************************************************************/
+#define __IMS_EM_CCCI__ 0
+
+
+#define IMS_DBG_MAX_SIP_INFO_SIZE 8192
+#define IMS_DBG_TLV_TL_SIZE (IMS_DBG_TLV_TAG_SIZE+IMS_DBG_TLV_LEN_SIZE)
+#define IMS_DBG_ROOT_TL_SIZE (IMS_DBG_TLV_TAG_SIZE+IMS_DBG_TLV_LEN_SIZE)
+#define IMS_DBG_SEGMENT_SIZE (IMS_DBG_TLV_TAG_SIZE+IMS_DBG_TLV_LEN_SIZE) // segment: tag (2) + length=0 (2)
+#define IMS_DBG_SEGMENT_VALUE_LEN 0
+
+/* will be assign to response code if SIP message is request */
+#define IMS_DBG_INVALID_RSP_CODE 0
+/* will be assign to method type if SIP message is response */
+#define IMS_DBG_INVALID_METHOD_TYPE INET_METHOD_MAX
+
+#define IMS_DGB_VAR_LEN 0xFE
+#define IMS_DBG_MAX_ROOT 6
+#define IMS_DBG_MAX_TLV 20
+
+#define IMS_DBG_TLV_SET_T(tlv, t)\
+ ((ims_dbg_tlv *)tlv)->tag = (UINT16)t;
+
+#define IMS_DBG_TLV_SET_L(tlv, l)\
+ ((ims_dbg_tlv *)tlv)->len = (UINT16)l;
+
+#define IMS_DBG_TLV_SET_V(tlv, v)\
+ ((ims_dbg_tlv *)tlv)->value_ptr = (UINT8 *)v;
+
+#define IMS_DBG_TLV_SET_TLV(tlv, t, l, v)\
+ IMS_DBG_TLV_SET_T(tlv, t)\
+ IMS_DBG_TLV_SET_L(tlv, l)\
+ IMS_DBG_TLV_SET_V(tlv, v)
+
+#define IMS_DBG_NULL_CHECK_RETURN(_c_) if ((_c_ == NULL)) { ErrMsg(IMSUA_TRACE_ERROR_01216, #_c_); return; }
+
+/* EM defined struct value variable quick setup macro */
+#define IMS_DBG_EM_DEF_VALUE_SET(_ptr_, _elm_, _val_) \
+ _ptr_->is_##_elm_##_valid = KAL_TRUE; \
+ _ptr_->_elm_ = _val_;
+
+#define IMS_DBG_EM_DEF_VALUE_CLEAR(_ptr_, _elm_) \
+ _ptr_->is_##_elm_##_valid = KAL_FALSE; \
+ _ptr_->_elm_ = 0;
+
+/* EM defined struct string variable quick setup macro */
+#define IMS_DBG_EM_DEF_STR_SET(_dst_, _elm_, _src_, _len_) \
+ _dst_->is_##_elm_##_valid = KAL_TRUE; \
+ voip_snprintf((char*)_dst_->_elm_, _len_, "%s", _src_);
+
+#define IMS_DBG_EM_DEF_STR_CLEAR(_dst_, _elm_, _len_) \
+ _dst_->is_##_elm_##_valid = KAL_FALSE; \
+ memset(_dst_->_elm_, 0, _len_);
+
+/* EM defined struct array variable quick setup macro */
+#define IMS_DBG_EM_DEF_ARRAY_SET(_dst_, _elm_, _src_, _len_) \
+ _dst_->is_##_elm_##_valid = KAL_TRUE; \
+ memcpy(_dst_->_elm_, _src_, _len_);
+
+#define IMS_DBG_EM_DEF_ARRAY_CLEAR(_dst_, _elm_, _len_) \
+ _dst_->is_##_elm_##_valid = KAL_FALSE; \
+ memset(_dst_->_elm_, 0, _len_);
+
+/******************************************************************************
+ *
+ * Definitions
+ *
+ *****************************************************************************/
+typedef struct {
+ UINT16 tag;
+ UINT16 len;
+ UINT8 *value_ptr;
+} ims_dbg_tlv;
+
+
+typedef struct {
+ UINT8 root_cnt;
+ UINT8 obj_cnt;
+ UINT16 root_tag[IMS_DBG_MAX_ROOT];
+ ims_dbg_tlv object[IMS_DBG_MAX_TLV];
+} ims_dbg_tlv_tbl;
+
+/*
+ * ROOT tag enum
+ */
+typedef enum {
+ IMS_DBG_ROOT_SIP_TAG,
+ IMS_DBG_ROOT_EM_TAG,
+ IMS_DBG_ROOT_SETTING_TAG,
+ IMS_DBG_ROOT_TAG_NUM
+} ims_dbg_root_tag_enum;
+
+/*
+ * indication message ID enum (IMCB <- UAs)
+ */
+
+/*
+ * request message ID enum (IMCB -> UAs -> VoLTE Stack)
+ */
+typedef enum {
+ IMS_DBG_REQ_START_CODE = 1000000,
+ //MSG_ID_IMS_DBG_SETTING_REQ,
+ IMS_DBG_REQ_MSG_NUM
+} ims_dbg_req_msg_enum;
+
+
+typedef enum {
+ IMS_DBG_SIP_TIME_TAG,
+ IMS_DBG_SIP_SRC_IP_TAG,
+ IMS_DBG_SIP_DST_IP_TAG,
+ IMS_DBG_SIP_DIR_TAG,
+ IMS_DBG_SIP_BEARER_TYPE_TAG,
+ IMS_DBG_SIP_TP_TAG,
+ IMS_DBG_SIP_TAG,
+ IMS_DBG_SIP_MSG_TYPE_TAG,
+ IMS_DBG_SIP_METHOD_TAG,
+ IMS_DBG_SIP_RESP_CODE_TAG,
+ IMS_DBG_SIP_SEGMENT_TAG,
+ IMS_DBG_SIP_TS_TAG,
+ IMS_DBG_SIP_CSEQ_TAG,
+
+ /* add here */
+
+ IMS_DBG_SIP_INFO_TAG_NUM
+} ims_dbg_sip_info_tag_enum;
+
+
+/* ------------------------------------------------ */
+/* Define transport protocol sending SIP message */
+/* ------------------------------------------------ */
+typedef inet_method_enum ims_dbg_method_enum;
+
+/* ------------------------------------------------ */
+/* Define transport protocol sending SIP message */
+/* ------------------------------------------------ */
+typedef sip_transport_enum ims_dbg_transport_enum;
+
+/* ------------------------------------------------ */
+/* Define SIP message direction */
+/* ------------------------------------------------ */
+typedef enum {
+ IMS_DBG_DIR_MO = 0x00,
+ IMS_DBG_DIR_MT = 0x01,
+ IMS_DBG_DIR_MAX,
+} ims_dbg_direction_enum;
+
+/* ------------------------------------------------ */
+/* Define SIP message type */
+/* ------------------------------------------------ */
+typedef enum {
+ IMS_DBG_MSG_TYPE_REQUEST = 0x00,
+ IMS_DBG_MSG_TYPE_RESPONSE = 0x01,
+ IMS_DBG_MSG_TYPE_MAX,
+} ims_dbg_msg_type_enum;
+
+#if 0 /* move to sync ims_dbg_def.h */
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#else
+typedef ims_dbg_sip_info_ind_struct imcb_ua_dbg_sip_info_struct;
+#endif
+
+
+/* ------------------------------------------------ *
+ * ATT Diagnostic Metric
+ * ------------------------------------------------ */
+/*
+ * ATT DM Type Enum
+ */
+typedef enum {
+ IMS_DBG_ATT_DM_TYPE_MM_START = 0x000,
+ IMS_DBG_ATT_DM_TYPE_MM01,
+ IMS_DBG_ATT_DM_TYPE_MM02,
+ IMS_DBG_ATT_DM_TYPE_MM03,
+ IMS_DBG_ATT_DM_TYPE_MM04,
+
+ IMS_DBG_ATT_DM_TYPE_SP_START = 0x100,
+ IMS_DBG_ATT_DM_TYPE_SPRX,
+ IMS_DBG_ATT_DM_TYPE_SPTX,
+
+ IMS_DBG_ATT_DM_TYPE_INVALID = 0xFFFFFFFF,
+} ims_dbg_att_dm_type_enum;
+
+/*
+ * ATT Reg Type Enum
+ */
+typedef enum {
+ IMS_DBG_ATT_REG_TYPE_UNKNOWN = 0,
+ IMS_DBG_ATT_REG_TYPE_INITIAL,
+ IMS_DBG_ATT_REG_TYPE_REREG,
+ IMS_DBG_ATT_REG_TYPE_DEREG,
+ IMS_DBG_ATT_REG_TYPE_REAUTH,
+ IMS_DBG_ATT_REG_TYPE_INVALID = 0xFFFFFFFF,
+} ims_dbg_att_reg_type_enum;
+
+/*
+ * ATT Reg Direction Enum
+ */
+typedef enum {
+ IMS_DBG_ATT_REG_DIR_UNKNOWN = 0,
+ IMS_DBG_ATT_REG_DIR_UEAT,
+ IMS_DBG_ATT_REG_DIR_NETWORK,
+ IMS_DBG_ATT_REG_DIR_INVALID = 0xFFFFFFFF,
+} ims_dbg_att_reg_dir_enum;
+
+/*
+ * ATT Reg State Enum
+ */
+typedef enum {
+ IMS_DBG_ATT_REG_STATE_UNKNOWN = 0,
+ IMS_DBG_ATT_REG_STATE_NOT_REGISTERED,
+ IMS_DBG_ATT_REG_STATE_REGISTERING,
+ IMS_DBG_ATT_REG_STATE_AUTH_CHALLENGE,
+ IMS_DBG_ATT_REG_STATE_AUTH_REGISTER,
+ IMS_DBG_ATT_REG_STATE_REGISTERED,
+ IMS_DBG_ATT_REG_STATE_NOTIFIED,
+ IMS_DBG_ATT_REG_STATE_TIMEOUT,
+ IMS_DBG_ATT_REG_STATE_INVALID = 0xFFFFFFFF,
+} ims_dbg_att_reg_state_enum;
+
+/*
+ * ATT SIP Result Enum
+ */
+typedef enum {
+ IMS_DBG_ATT_SIP_RESULT_UNKNOWN = 0,
+ IMS_DBG_ATT_SIP_RESULT_TIMEOUT,
+ IMS_DBG_ATT_SIP_RESULT_LOST_RAN,
+ /* remaining part is assigned by number, e.g. 200 OK = 200 */
+ IMS_DBG_ATT_SIP_RESULT_INVALID = 0xFFFFFFFF,
+} ims_dbg_att_sip_result_enum;
+
+typedef enum {
+ IMS_DBG_ACCESS_RAT_CELLULAR,
+ IMS_DBG_ACCESS_RAT_WIFI,
+ IMS_DBG_ACCESS_RAT_NUM
+} ims_dbg_access_rat_enum;
+
+
+/* ------------------------------------------------ *
+ * CMCC IMS EVENT INFO Metric (for collecting KPI statistics)
+ * ------------------------------------------------ *
+ */
+typedef enum
+{
+ EVENT_INFO_NONE = 0,
+
+ /* MO Call */
+ EVENT_INFO_MO_CALL_STARTED = 1, /* Send the initial INVITE */
+ EVENT_INFO_MO_CALL_ALERTED, /* Receive 183 (with early media), otherwise receive 180, otherwise receive 200 OK for INVITE*/
+ EVENT_INFO_MO_CALL_ESTABLISHED, /* Receive 200 OK for INVITE */
+ EVENT_INFO_MO_CALL_END, /* Normal End (local/remote user triggered) for MO Call */
+ EVENT_INFO_MO_CALL_DROPPED, /* Unexpected End for MO Call */
+ EVENT_INFO_MO_CALL_FAILED, /* Unexpected failure during MO call establishment */
+ EVENT_INFO_MO_CALL_EARLY_RELEASE, /* Send CANCEL before having received 180 */
+
+ /* MT Call */
+ EVENT_INFO_MT_CALL_STARTED = 51, /* Receive the initial INVITE*/
+ EVENT_INFO_MT_CALL_ALERTED, /* Send 180 Ringing */
+ EVENT_INFO_MT_CALL_ESTABLISHED, /* Send 200 OK for INVITE */
+ EVENT_INFO_MT_CALL_END, /* Normal End (local/remote user triggered) for MT Call */
+ EVENT_INFO_MT_CALL_DROPPED, /* Unexpected End for MT Call */
+ EVENT_INFO_MT_CALL_FAILED, /* Unexpected failure during MT call establishment */
+ EVENT_INFO_MT_CALL_EARLY_RELEASE, /* Receive CANCEL before having sent 180 */
+
+ /* SMS */
+ EVENT_INFO_MT_SMS_FAILED = 201, /* MT IMS SMS directly rejected by SMS UA */
+
+ /* Registration */
+ EVENT_INFO_INIT_REG_REQ = 501,
+ EVENT_INFO_INIT_REG_401_RECEIVED,
+ EVENT_INFO_INIT_REG_REQ_WITH_IPSEC,
+ EVENT_INFO_INIT_REG_COMPLETE,
+ EVENT_INFO_INIT_REG_FAILED,
+ EVENT_INFO_REREG_REG_REQ,
+ EVENT_INFO_REREG_REG_401_RECEIVED,
+ EVENT_INFO_REREG_REG_REQ_WITH_NEW_IPSEC,
+ EVENT_INFO_REREG_REG_COMPLETE,
+ EVENT_INFO_REREG_REG_FAILED,
+}ims_dbg_ims_event_info_enum;
+
+typedef enum {
+ EVENT_FAILURE_CAUSE_NONE = 0,
+
+ /* Call */
+ EVENT_FAILURE_CAUSE_NOT_USER_TRIGGERD = 1,
+ EVENT_FAILURE_CAUSE_RTP_RTCP_Timeout = 2,
+ EVENT_FAILURE_CAUSE_BEARER_LOST = 3,
+ EVENT_FAILURE_CAUSE_NOT_ALERTED = 4,
+
+ /* SMS */
+ EVENT_FAILURE_CAUSE_IMS_OVER_SMS_DISABLED = 51,
+ EVENT_FAILURE_CAUSE_SMS_OBJ_CREATED_FAILED = 52,
+ EVENT_FAILURE_CAUSE_SMS_MEDIA_TYPE_NOT_SUPPORTED = 53,
+
+ /* MISC */
+ EVENT_FAILURE_CAUSE_IMS_UNREGISTERED = 101,
+}ims_dbg_ims_event_info_failure_cause_enum;
+
+#endif /* __IMS_DBG_H__ */
diff --git a/mcu/protocol/interface/ims/ims_dbg_def.h b/mcu/protocol/interface/ims/ims_dbg_def.h
new file mode 100644
index 0000000..cdc12af
--- /dev/null
+++ b/mcu/protocol/interface/ims/ims_dbg_def.h
@@ -0,0 +1,637 @@
+/*****************************************************************************
+* 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.
+*7
+* 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:
+ * ---------
+ * ims_dbg_def.h
+ *
+ * Description:
+ * ------------
+ * This file describes the information for IMS debug
+ * The information includes SIP messages, EM, KPI, trace, ...etc.
+ *
+ * Information described here will be defined as enums/structures/functions in
+ * the following files:
+ * <1> ims_dbg_enum.h
+ * <2> ims_dbg_struct.h
+ * <3> imcb_debug_func.h
+ * <4> imcb_debug_func.c
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ ****************************************************************************/
+
+/*******************************************************************************
+ *
+ * SIP section
+ *
+ ******************************************************************************/
+#ifndef IMS_DBG_SIP_DEF_BEGIN
+#define IMS_DBG_SIP_DEF_BEGIN
+#endif
+#ifndef IMS_DBG_SIP_DEF_TLV_ENCODE
+#define IMS_DBG_SIP_DEF_TLV_ENCODE(FUNC_NAME, STRUCT_NAME)
+#endif
+#ifndef IMS_DBG_SIP_DEF_VAR_NON_TAG
+#define IMS_DBG_SIP_DEF_VAR_NON_TAG(VAR_TYPE, VAR_NAME)
+#endif
+#ifndef IMS_DBG_SIP_DEF_VAR_TAG
+#define IMS_DBG_SIP_DEF_VAR_TAG(VAR_TYPE, VAR_NAME, VAR_TAG, VAR_TAG_SIZE)
+#endif
+#ifndef IMS_DBG_SIP_DEF_END
+#define IMS_DBG_SIP_DEF_END(STRUCT_NAME, EVT_TAG)
+#endif
+
+IMS_DBG_SIP_DEF_BEGIN
+IMS_DBG_SIP_DEF_TLV_ENCODE(ims_dbg_sip_info_tlv_encode, ims_dbg_sip_info_ind_struct_for_tlv)
+
+IMS_DBG_SIP_DEF_VAR_NON_TAG(UINT32, VAR_VALUE(acct_id))
+IMS_DBG_SIP_DEF_VAR_TAG (UINT32, VAR_ARRAY(sys_time, 2), IMS_DBG_SIP_TIME_TAG, VAR_SIZE(sys_time))
+IMS_DBG_SIP_DEF_VAR_TAG(UINT8, VAR_ARRAY(src_ip,VOLTE_MAX_ADDRESS_LENGTH), IMS_DBG_SIP_SRC_IP_TAG, VAR_SIZE(src_ip))
+IMS_DBG_SIP_DEF_VAR_TAG(UINT8, VAR_ARRAY(dst_ip,VOLTE_MAX_ADDRESS_LENGTH), IMS_DBG_SIP_DST_IP_TAG, VAR_SIZE(dst_ip))
+IMS_DBG_SIP_DEF_VAR_TAG (UINT32, VAR_VALUE(direction), IMS_DBG_SIP_DIR_TAG, sizeof(UINT32))
+IMS_DBG_SIP_DEF_VAR_TAG (UINT32, VAR_VALUE(transaction_id), IMS_DBG_SIP_TS_TAG, sizeof(UINT32))
+IMS_DBG_SIP_DEF_VAR_TAG (UINT32, VAR_VALUE(transport_protocol), IMS_DBG_SIP_TP_TAG, sizeof(UINT32))
+IMS_DBG_SIP_DEF_VAR_TAG (UINT32, VAR_VALUE(msg_type), IMS_DBG_SIP_MSG_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_SIP_DEF_VAR_TAG (UINT32, VAR_VALUE(method_type), IMS_DBG_SIP_METHOD_TAG, sizeof(UINT32))
+IMS_DBG_SIP_DEF_VAR_TAG (UINT32, VAR_VALUE(cseq), IMS_DBG_SIP_CSEQ_TAG, sizeof(UINT32))
+IMS_DBG_SIP_DEF_VAR_NON_TAG(INT32, VAR_VALUE(network_id))
+/* access_rat: special assign in imcb */
+IMS_DBG_SIP_DEF_VAR_TAG (UINT32, VAR_VALUE(access_rat), IMS_DBG_SIP_BEARER_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_SIP_DEF_VAR_TAG (UINT16, VAR_VALUE(rsp_code), IMS_DBG_SIP_RESP_CODE_TAG, sizeof(UINT16))
+IMS_DBG_SIP_DEF_VAR_NON_TAG(UINT16, VAR_VALUE(msg_len))
+IMS_DBG_SIP_DEF_VAR_TAG (UINT8, VAR_ARRAY(msg_data, 0), IMS_DBG_SIP_TAG, 0)
+
+IMS_DBG_SIP_DEF_END(ims_dbg_sip_info_ind_struct_for_tlv, IMS_DBG_SIP_EVT_SIP_INFO_TAG)
+
+#undef IMS_DBG_SIP_DEF_TLV_ENCODE
+#undef IMS_DBG_SIP_DEF_BEGIN
+#undef IMS_DBG_SIP_DEF_VAR_NON_TAG
+#undef IMS_DBG_SIP_DEF_VAR_TAG
+#undef IMS_DBG_SIP_DEF_END
+
+
+/*******************************************************************************
+ *
+ * EM section
+ *
+ ******************************************************************************/
+#ifndef IMS_DBG_EM_DEF_BEGIN
+#define IMS_DBG_EM_DEF_BEGIN
+#endif
+#ifndef IMS_DBG_EM_DEF_TLV_ENCODE
+#define IMS_DBG_EM_DEF_TLV_ENCODE(FUNC_NAME, STRUCT_NAME)
+#endif
+#ifndef IMS_DBG_EM_DEF_VAR_NON_TAG
+#define IMS_DBG_EM_DEF_VAR_NON_TAG(IS_VALID, VAR_TYPE, VAR_NAME)
+#endif
+#ifndef IMS_DBG_EM_DEF_VAR_TAG
+#define IMS_DBG_EM_DEF_VAR_TAG(IS_VALID, VAR_TYPE, VAR_NAME, VAR_TAG, VAR_TAG_SIZE)
+#endif
+#ifndef IMS_DBG_EM_DEF_END
+#define IMS_DBG_EM_DEF_END(STRUCT_NAME, VAR_TAG_ENUM_NAME, EVT_TAG)
+#endif
+
+/*
+typedef struct
+{
+ UINT32 is_acct_id_valid;
+ UINT32 acct_id;
+ UINT32 is_psi_valid;
+ UINT8 psi[VOLTE_MAX_URI_LENGTH];
+ UINT32 is_resp_to_nw_valid;
+ UINT32 resp_to_nw;
+ UINT32 is_resp_from_nw_valid;
+ UINT32 resp_from_nw;
+ UINT32 is_error_code_valid;
+ INT32 error_code;
+ UINT32 is_sms_support_valid;
+ UINT8 sms_support;
+}ims_dbg_em_sms_info_ind_struct;
+*/
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_sms_info_tlv_encode, ims_dbg_em_sms_info_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_SMS_INFO_ACCT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_psi_valid, UINT8, VAR_ARRAY(psi, VOLTE_MAX_URI_LENGTH), IMS_DBG_EM_SMS_INFO_PSI_TAG, VAR_SIZE(psi))
+IMS_DBG_EM_DEF_VAR_TAG(is_resp_to_nw_valid, UINT32, VAR_VALUE(resp_to_nw), IMS_DBG_EM_SMS_INFO_RESP_TO_NW_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_resp_from_nw_valid, UINT32, VAR_VALUE(resp_from_nw), IMS_DBG_EM_SMS_INFO_RESP_FROM_NW_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_error_code_valid, INT32, VAR_VALUE(error_code), IMS_DBG_EM_SMS_INFO_ERROR_CODE_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_sms_support_valid, UINT8, VAR_VALUE(sms_support), IMS_DBG_EM_SMS_INFO_SMS_SUPPORT_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_END(ims_dbg_em_sms_info_ind_struct, ims_dbg_em_sms_info_tag_enum, IMS_DBG_EM_SMS_INFO_TAG)
+
+/*
+typedef struct
+{
+ unsigned char is_acct_id_valid;
+ unsigned int acct_id;
+
+ unsigned char is_srvcc_start_valid;
+ char srvcc_start_timestamp[256];
+
+ unsigned char is_srvcc_end_valid;
+ char srvcc_end_timestamp[256];
+
+ unsigned char is_num_calls_valid;
+ unsigned int num_calls_transferred;
+
+ unsigned char is_srvcc_result_valid;
+ int srvcc_result;
+} VoLTE_Em_Srvcc_Info_Ind;
+*/
+
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_srvcc_info_tlv_encode, ims_dbg_em_srvcc_info_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_SRVCC_INFO_ACCT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_srvcc_start_valid, UINT8, VAR_ARRAY(srvcc_start_timestamp, 256), IMS_DBG_EM_SRVCC_INFO_START_TIME_TAG, VAR_SIZE(srvcc_start_timestamp))
+IMS_DBG_EM_DEF_VAR_TAG(is_srvcc_end_valid, UINT8, VAR_ARRAY(srvcc_end_timestamp, 256), IMS_DBG_EM_SRVCC_INFO_END_TIME_TAG, VAR_SIZE(srvcc_end_timestamp))
+IMS_DBG_EM_DEF_VAR_TAG(is_num_calls_valid, UINT8, VAR_VALUE(num_calls_transferred), IMS_DBG_EM_SRVCC_INFO_CALL_NUM_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_srvcc_result_valid, INT32, VAR_VALUE(srvcc_result), IMS_DBG_EM_SRVCC_INFO_RESULT_NUM_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_END(ims_dbg_em_srvcc_info_ind_struct, ims_dbg_em_srvcc_info_tag_enum, IMS_DBG_EM_SRVCC_INFO_TAG)
+
+/*
+typedef struct
+{
+ unsigned char is_acct_id_valid;
+ unsigned int acct_id;
+
+ unsigned char is_confcall_id_valid;
+ char conf_call_id[SIP_MSG_MAX_CALLID_LEN];
+
+ unsigned char is_participants_num_valid;
+ unsigned int participants_num;
+
+ unsigned char is_sub_fromtag_valid;
+ char sub_from_tag[SIP_MSG_MAX_TAG_LEN];
+
+} VoLTE_Em_Conf_Info_Ind;
+*/
+
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_conf_info_tlv_encode, ims_dbg_em_conf_info_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_CONF_INFO_ACCT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_confcall_id_valid, UINT8, VAR_ARRAY(conf_call_id, SIP_MSG_MAX_CALLID_LEN), IMS_DBG_EM_CONF_INFO_CONFCALL_ID_TAG, VAR_SIZE(conf_call_id))
+IMS_DBG_EM_DEF_VAR_TAG(is_participants_num_valid, UINT32, VAR_VALUE(participants_num), IMS_DBG_EM_CONF_INFO_PARTICIPANTS_NUM_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_sub_fromtag_valid, UINT8, VAR_ARRAY(sub_from_tag, SIP_MSG_MAX_TAG_LEN), IMS_DBG_EM_CONF_INFO_SUB_FROMTAG_TAG, VAR_SIZE(sub_from_tag))
+IMS_DBG_EM_DEF_END(ims_dbg_em_conf_info_ind_struct, ims_dbg_em_conf_info_tag_enum, IMS_DBG_EM_CONF_INFO_TAG)
+
+/*
+typedef struct
+{
+ unsigned char is_call_id_valid;
+ unsigned int call_id;
+
+ unsigned char is_session_id_valid;
+ int session_id;
+
+ unsigned char is_acct_id_valid;
+ unsigned int acct_id;
+
+ unsigned char is_call_state_valid;
+ unsigned short call_state;
+
+ unsigned char is_mt_call_valid;
+ unsigned char is_mt_call;
+
+ unsigned char is_sip_callid_valid;
+ char sip_call_id[SIP_MSG_MAX_CALLID_LEN];
+
+ unsigned char is_call_type_valid;
+ int call_type;
+
+ unsigned char is_session_type_valid;
+ int session_type;
+
+ unsigned char is_phone_number_valid;
+ char phone_number[VOLTE_MAX_URI_LENGTH];
+
+ unsigned char is_failure_code_valid;
+ unsigned int failure_code;
+
+ unsigned char is_media_on_valid;
+ unsigned int media_on;
+
+ unsigned char is_session_expires_valid;
+ signed int session_expires_time;
+
+ unsigned char is_keep_alive_valid;
+ int in_keep_alive;
+
+ unsigned char is_video_action_valid;
+ int video_action;
+
+ unsigned char is_camera_direction_valid;
+ unsigned char camera_direction;
+
+ unsigned char is_remote_videocap_valid;
+ unsigned char remote_video_cap;
+
+ unsigned char is_originating_uri_valid;
+ char originating_uri[VOLTE_MAX_URI_LENGTH];
+
+ unsigned char is_terminating_uri_valid;
+ char terminating_uri[VOLTE_MAX_URI_LENGTH];
+
+ unsigned char is_net_type_valid;
+ unsigned char net_type;
+
+ unsigned char is_anonymous_emergency_valid;
+ unsigned char anonymous_emergency;
+
+} VoLTE_Em_Call_Info_Ind;
+*/
+
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_call_info_tlv_encode, ims_dbg_em_call_info_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_call_id_valid, UINT32, VAR_VALUE(call_id), IMS_DBG_EM_CALL_INFO_CALL_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_session_id_valid, INT32, VAR_VALUE(session_id), IMS_DBG_EM_CALL_INFO_SESSION_ID_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_CALL_INFO_ACCT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_call_state_valid, UINT16, VAR_VALUE(call_state), IMS_DBG_EM_CALL_INFO_CALL_STATE_TAG, sizeof(UINT16))
+IMS_DBG_EM_DEF_VAR_TAG(is_mt_call_valid, UINT8, VAR_VALUE(is_mt_call), IMS_DBG_EM_CALL_INFO_MT_CALL_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_sip_callid_valid, UINT8, VAR_ARRAY(sip_call_id, SIP_MSG_MAX_CALLID_LEN), IMS_DBG_EM_CALL_INFO_SIP_CALL_ID_TAG, VAR_SIZE(sip_call_id))
+IMS_DBG_EM_DEF_VAR_TAG(is_call_type_valid, INT32, VAR_VALUE(call_type), IMS_DBG_EM_CALL_INFO_CALL_TYPE_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_session_type_valid, INT32, VAR_VALUE(session_type), IMS_DBG_EM_CALL_INFO_SESSION_TYPE_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_phone_number_valid, UINT8, VAR_ARRAY(phone_number, VOLTE_MAX_URI_LENGTH), IMS_DBG_EM_CALL_INFO_PHONE_NUMBER_TAG, VAR_SIZE(phone_number))
+IMS_DBG_EM_DEF_VAR_TAG(is_failure_code_valid, UINT32, VAR_VALUE(failure_code), IMS_DBG_EM_CALL_INFO_FAILURE_CODE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_media_on_valid, UINT32, VAR_VALUE(media_on), IMS_DBG_EM_CALL_INFO_MEDIA_ON_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_session_expires_valid, INT32, VAR_VALUE(session_expires_time), IMS_DBG_EM_CALL_INFO_SESSION_EXPIRES_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_keep_alive_valid, INT32, VAR_VALUE(in_keep_alive), IMS_DBG_EM_CALL_INFO_KEEP_ALIVE_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_video_action_valid, INT32, VAR_VALUE(video_action), IMS_DBG_EM_CALL_INFO_VIDEO_ACTION_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_camera_direction_valid, UINT8, VAR_VALUE(camera_direction), IMS_DBG_EM_CALL_INFO_CAMERA_DIRECTION_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_remote_videocap_valid, UINT8, VAR_VALUE(remote_video_cap), IMS_DBG_EM_CALL_INFO_REMOTE_VIDEOCAP_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_originating_uri_valid, UINT8, VAR_ARRAY(originating_uri, VOLTE_MAX_URI_LENGTH), IMS_DBG_EM_CALL_INFO_ORIGINATING_URI_TAG, VAR_SIZE(originating_uri))
+IMS_DBG_EM_DEF_VAR_TAG(is_terminating_uri_valid, UINT8, VAR_ARRAY(terminating_uri, VOLTE_MAX_URI_LENGTH), IMS_DBG_EM_CALL_INFO_TERMINATING_URI_TAG, VAR_SIZE(terminating_uri))
+IMS_DBG_EM_DEF_VAR_TAG(is_anonymous_emergency_valid, UINT8, VAR_VALUE(anonymous_emergency), IMS_DBG_EM_CALL_INFO_ANONYMOUS_EMERGENCY_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_net_type_valid, UINT8, VAR_VALUE(net_type), IMS_DBG_EM_CALL_INFO_NET_TYPE_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_END(ims_dbg_em_call_info_ind_struct, ims_dbg_em_call_info_tag_enum, IMS_DBG_EM_CALL_INFO_TAG)
+
+/*
+typedef struct
+{
+ UINT32 is_account_id_valid
+ UINT32 account_id;
+ UINT32 is_pdn_ps_cause_valid;
+ imcb_bearer_ps_cause_enum pdn_ps_cause;
+ UINT32 is_pdn_ip_addr_valid;
+ UINT8 pdn_ip_addr[VOLTE_MAX_ADDRESS_LENGTH];
+ UINT32 is_pdn_ip_type_valid;
+ imcb_bearer_pdp_addr_type_enum pdn_ip_type;
+ UINT32 is_signal_bid_valid;
+ UINT32 signal_bid;
+ UINT32 is_signal_qci_valid;
+ UINT32 signal_qci;
+ UINT32 is_access_rat_valid;
+ ims_dbg_access_rat_enum access_rat;
+} ims_dbg_em_bearer_info_ind_struct;
+*/
+
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_bearer_info_tlv_encode, ims_dbg_em_bearer_info_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_BEARER_INFO_ACCOUNT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_pdn_ps_cause_valid, UINT32, VAR_VALUE(pdn_ps_cause), IMS_DBG_EM_BEARER_INFO_PDN_PS_CAUSE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_pdn_ip_addr_valid, UINT8, VAR_ARRAY(pdn_ip_addr, VOLTE_MAX_ADDRESS_LENGTH), IMS_DBG_EM_BEARER_INFO_PDN_IP_ADDR_TAG, VAR_SIZE(pdn_ip_addr))
+IMS_DBG_EM_DEF_VAR_TAG(is_pdn_ip_type_valid, UINT32, VAR_VALUE(pdn_ip_type), IMS_DBG_EM_BEARER_INFO_PDN_IP_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_signal_bid_valid, UINT32, VAR_VALUE(signal_bid), IMS_DBG_EM_BEARER_INFO_SIGNAL_BID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_signal_qci_valid, UINT32, VAR_VALUE(signal_qci), IMS_DBG_EM_BEARER_INFO_SIGNAL_QCI_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_access_rat_valid, UINT32, VAR_VALUE(access_rat), IMS_DBG_EM_BEARER_INFO_ACCESS_RAT_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_END(ims_dbg_em_bearer_info_ind_struct, ims_dbg_em_bearer_info_tag_enum, IMS_DBG_EM_BEARER_INFO_TAG)
+
+/*
+typedef struct
+{
+ UINT32 is_account_id_valid
+ UINT32 account_id;
+ UINT32 is_pcscf_method_valid;
+ imcb_pcscf_type_enum pcscf_method;
+ UINT32 is_pcscf_ip_addr_valid;
+ UINT8 pcscf_ip_addr[VOLTE_MAX_ADDRESS_LENGTH];
+ UINT32 is_pcscf_ip_type_valid;
+ imcb_bearer_pdp_addr_type_enum pcscf_ip_type;
+} ims_dbg_em_pcscf_info_ind_struct;
+*/
+
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_pcscf_info_tlv_encode, ims_dbg_em_pcscf_info_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_PCSCF_INFO_ACCOUNT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_pcscf_method_valid, UINT32, VAR_VALUE(pcscf_method), IMS_DBG_EM_PCSCF_INFO_METHOD_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_pcscf_ip_addr_valid, UINT8, VAR_ARRAY(pcscf_ip_addr, VOLTE_MAX_ADDRESS_LENGTH), IMS_DBG_EM_PCSCF_INFO_IP_ADDR_TAG, VAR_SIZE(pcscf_ip_addr))
+IMS_DBG_EM_DEF_VAR_TAG(is_pcscf_ip_type_valid, UINT32, VAR_VALUE(pcscf_ip_type), IMS_DBG_EM_PCSCF_INFO_IP_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_END(ims_dbg_em_pcscf_info_ind_struct, ims_dbg_em_pcscf_info_tag_enum, IMS_DBG_EM_PCSCF_INFO_TAG)
+
+/*
+typedef struct
+{
+ UINT32 is_account_id_valid
+ UINT32 account_id;
+ UINT32 is_call_id_valid;
+ UINT32 call_id;
+ UINT32 is_voice_bid_valid;
+ UINT32 voice_bid;
+ UINT32 is_video_bid_valid;
+ UINT32 video_bid;
+} ims_dbg_em_media_info_ind_struct;
+*/
+
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_media_info_tlv_encode, ims_dbg_em_media_info_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_MEDIA_INFO_ACCOUNT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_call_id_valid, UINT32, VAR_VALUE(call_id), IMS_DBG_EM_MEDIA_INFO_CALL_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_voice_bid_valid, UINT32, VAR_VALUE(voice_bid), IMS_DBG_EM_MEDIA_INFO_VOICE_BID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_video_bid_valid, UINT32, VAR_VALUE(video_bid), IMS_DBG_EM_MEDIA_INFO_VIDEO_BID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_END(ims_dbg_em_media_info_ind_struct, ims_dbg_em_media_info_tag_enum, IMS_DBG_EM_MEDIA_INFO_TAG)
+
+
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_reg_info_tlv_encode, ims_dbg_em_reg_info_ind_struct_for_tlv)
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_REG_INFO_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_emergency_type_valid, UINT32, VAR_VALUE(emergency_type), IMS_DBG_EM_REG_INFO_EMERGENCY_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_reg_state_valid, UINT32, VAR_VALUE(reg_state), IMS_DBG_EM_REG_INFO_REG_STATE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_private_uid_valid, UINT8, VAR_ARRAY(private_uid, VOLTE_MAX_REG_UID_LENGTH), IMS_DBG_EM_REG_INFO_PRIVATE_UID_TAG, VAR_SIZE(private_uid))
+IMS_DBG_EM_DEF_VAR_TAG(is_public_uid_valid, UINT8, VAR_ARRAY(public_uid, VOLTE_MAX_REG_UID_LENGTH), IMS_DBG_EM_REG_INFO_PUBLIC_UID_TAG, VAR_SIZE(public_uid))
+IMS_DBG_EM_DEF_VAR_TAG(is_associated_uri_valid, UINT8, VAR_ARRAY(associated_uri, VOLTE_MAX_ASSOCIATED_URI), IMS_DBG_EM_REG_INFO_ASSOCIATED_URI_TAG, VAR_SIZE(associated_uri))
+IMS_DBG_EM_DEF_VAR_TAG(is_em_reg_timestamp_valid, UINT8, VAR_ARRAY(em_reg_timestamp, VOLTE_MAX_TIME_STAMP_LENGTH), IMS_DBG_EM_REG_INFO_EM_REG_TIMESTAMP_TAG, VAR_SIZE(em_reg_timestamp))
+IMS_DBG_EM_DEF_VAR_TAG(is_reg_expires_valid, UINT32, VAR_VALUE(reg_expires), IMS_DBG_EM_REG_INFO_REG_EXPIRES_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_ems_mode_valid, UINT32, VAR_VALUE(ems_mode), IMS_DBG_EM_REG_INFO_EMS_MODE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_last_sip_cause_valid, UINT32, VAR_VALUE(last_sip_cause), IMS_DBG_EM_REG_INFO_LAST_SIP_CAUSE_TAG, sizeof(UINT32))
+/* operatro EM */
+IMS_DBG_EM_DEF_VAR_TAG(is_att_dm_type_valid, UINT32, VAR_VALUE(att_dm_type), IMS_DBG_EM_REG_INFO_ATT_DM_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_att_reg_type_valid, UINT32, VAR_VALUE(att_reg_type), IMS_DBG_EM_REG_INFO_ATT_REG_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_att_direction_valid, UINT32, VAR_VALUE(att_direction), IMS_DBG_EM_REG_INFO_ATT_DIRECTION_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_att_call_id_valid, UINT8, VAR_ARRAY(att_call_id, SIP_MSG_MAX_EM_CALLID_LEN), IMS_DBG_EM_REG_INFO_ATT_CALL_ID_TAG, VAR_SIZE(att_call_id))
+IMS_DBG_EM_DEF_VAR_TAG(is_att_request_uri_valid, UINT8, VAR_ARRAY(att_request_uri, VOLTE_MAX_URI_LENGTH), IMS_DBG_EM_REG_INFO_ATT_REQUEST_URI_TAG, VAR_SIZE(att_request_uri))
+IMS_DBG_EM_DEF_VAR_TAG(is_att_to_valid, UINT8, VAR_ARRAY(att_to, VOLTE_MAX_URI_LENGTH), IMS_DBG_EM_REG_INFO_ATT_TO_TAG, VAR_SIZE(att_to))
+IMS_DBG_EM_DEF_VAR_TAG(is_att_reg_state_valid, UINT32, VAR_VALUE(att_reg_state), IMS_DBG_EM_REG_INFO_ATT_REG_STATE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_att_reg_result_valid, UINT32, VAR_VALUE(att_reg_result), IMS_DBG_EM_REG_INFO_ATT_REG_RESULT_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_END(ims_dbg_em_reg_info_ind_struct_for_tlv, ims_dbg_em_reg_info_tag_enum, IMS_DBG_EM_REG_INFO_TAG)
+
+/*
+ UINT32 is_acct_id_valid;
+ UINT32 acct_id;
+
+ UINT32 is_rat_type_valid;
+ UINT32 rat_type;
+
+ UINT32 is_abnormal_type_valid;
+ UINT32 abnormal_type;
+
+ UINT32 is_fail_state_valid;
+ UINT32 fail_state;
+
+ UINT32 is_slow_type_valid;
+ UINT32 slow_type;
+
+ UINT32 is_slow_timer_valid;
+ UINT32 slow_timer;
+
+ UINT32 is_dereg_cause_valid;
+ UINT32 dereg_cause;
+
+ UINT32 is_sip_cause_valid;
+ UINT32 sip_cause;
+
+ UINT32 is_emergency_type_valid;
+ UINT32 emergency_type;
+
+ UINT32 is_rereg_state_valid;
+ UINT32 rereg_state;
+
+ UINT32 is_clear_abnormal_valid;
+ UINT32 clear_abnormal;
+
+ UINT32 is_reg_fail_cause_valid;
+ UINT32 reg_fail_cause;
+
+ UINT32 is_report_type_valid;
+ UINT32 report_type;
+
+ UINT32 is_reg_fail_count_valid;
+ UINT32 reg_fail_count;
+
+ UINT32 is_pdn_fail_count_valid;
+ UINT32 pdn_fail_count;
+
+ UINT32 is_sip_fail_count_valid;
+ UINT32 sip_fail_count;
+
+ UINT32 is_dereg_count_valid;
+ UINT32 dereg_count;
+} ims_dbg_em_reg_abnomal_ind_struct;
+*/
+
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_reg_abnormal_tlv_encode, ims_dbg_em_reg_abnormal_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_REG_ABNORMAL_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_rat_type_valid, UINT32, VAR_VALUE(rat_type), IMS_DBG_EM_REG_ABNORMAL_RAT_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_abnormal_type_valid, UINT32, VAR_VALUE(abnormal_type), IMS_DBG_EM_REG_ABNORMAL_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_fail_state_valid, UINT32, VAR_VALUE(fail_state), IMS_DBG_EM_REG_ABNORMAL_FAIL_STATE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_slow_type_valid, UINT32, VAR_VALUE(slow_type), IMS_DBG_EM_REG_ABNORMAL_SLOW_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_slow_timer_valid, UINT32, VAR_VALUE(slow_timer), IMS_DBG_EM_REG_ABNORMAL_SLOW_TIMER_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_dereg_cause_valid, UINT32, VAR_VALUE(dereg_cause), IMS_DBG_EM_REG_ABNORMAL_DEREG_CAUSE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_sip_cause_valid, UINT32, VAR_VALUE(sip_cause), IMS_DBG_EM_REG_ABNORMAL_SIP_CAUSE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_emergency_type_valid, UINT32, VAR_VALUE(emergency_type), IMS_DBG_EM_REG_ABNORMAL_EMERGENCY_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_rereg_state_valid, UINT32, VAR_VALUE(rereg_state), IMS_DBG_EM_REG_ABNORMAL_REREG_STATE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_clear_abnormal_valid, UINT32, VAR_VALUE(clear_abnormal), IMS_DBG_EM_REG_ABNORMAL_CLEAR_ABNORMAL_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_reg_fail_cause_valid, UINT32, VAR_VALUE(reg_fail_cause), IMS_DBG_EM_REG_ABNORMAL_REG_FAIL_CAUSE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_report_type_valid, UINT32, VAR_VALUE(report_type), IMS_DBG_EM_REG_ABNORMAL_REPORT_TYPE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_reg_fail_count_valid, UINT32, VAR_VALUE(reg_fail_count), IMS_DBG_EM_REG_ABNORMAL_REG_FAIL_COUNT_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_pdn_fail_count_valid, UINT32, VAR_VALUE(pdn_fail_count), IMS_DBG_EM_REG_ABNORMAL_PDN_FAIL_COUNT_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_sip_fail_count_valid, UINT32, VAR_VALUE(sip_fail_count), IMS_DBG_EM_REG_ABNORMAL_SIP_FAIL_COUNT_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_dereg_count_valid, UINT32, VAR_VALUE(dereg_count), IMS_DBG_EM_REG_ABNORMAL_DEREG_COUNT_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_END(ims_dbg_em_reg_abnormal_ind_struct, ims_dbg_em_reg_abnormal_tag_enum, IMS_DBG_EM_REG_ABNORMAL_TAG)
+
+/*
+typedef struct
+{
+ unsigned char is_call_id_valid;
+ unsigned int call_id;
+
+ unsigned char is_acct_id_valid;
+ unsigned int acct_id;
+
+ unsigned char is_reset_valid;
+ unsigned char is_reset;
+
+ unsigned char is_mt_call_valid;
+ unsigned char is_mt_call;
+
+ unsigned char is_precondition_valid;
+ unsigned char is_precondition;
+
+ unsigned char is_vops_valid;
+ unsigned char is_vops;
+
+ unsigned char is_call_type_valid;
+ int call_type; //VoLTE_Event_Call_Mode_e audio/video/emergency/conf. call
+
+ unsigned char is_call_state_valid;
+ int call_state; //call_session_status_enum - <?叫?态?IDLE/Dialing/TRYING/ACTIVE?
+
+ unsigned char is_failure_cause_valid;
+ int failure_cause; // VoLTE_Event_Mod_session_result_e, video upgrade/downgrade failure cause;
+
+ unsigned char is_sip_cause_valid;
+ int sip_cause; // VoLTE_Event_SIP_Cause_e
+
+ unsigned char is_net_type_valid;
+ int net_type; //VoLTE_Event_Network_Type_e, check VoLTE/VoWifi
+
+ unsigned char is_call_fail_cause_valid;
+ int call_fail_cause; //VoLTE_Event_Call_Fail_Cause_e, the reason why call fail
+
+ unsigned char is_sip_flow_valid;
+ char sip_flow[VOLTE_MAX_SIP_FLOW_LENGTH];
+
+} ims_dbg_em_call_drop_ind_struct;
+*/
+
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_call_drop_tlv_encode, ims_dbg_em_call_drop_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_call_id_valid, UINT32, VAR_VALUE(call_id), IMS_DBG_EM_CALL_DROP_CALL_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_CALL_DROP_ACCT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_reset_valid, UINT8, VAR_VALUE(is_reset), IMS_DBG_EM_CALL_DROP_RESET_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_mt_call_valid, UINT8, VAR_VALUE(is_mt_call), IMS_DBG_EM_CALL_DROP_MT_CALL_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_precondition_valid, UINT8, VAR_VALUE(is_precondition), IMS_DBG_EM_CALL_DROP_PRECONDITION_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_vops_valid, UINT8, VAR_VALUE(is_vops), IMS_DBG_EM_CALL_DROP_VOPS_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_call_type_valid, INT32, VAR_VALUE(call_type), IMS_DBG_EM_CALL_DROP_CALL_TYPE_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_call_state_valid, INT32, VAR_VALUE(call_state), IMS_DBG_EM_CALL_DROP_CALL_STATE_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_failure_cause_valid, INT32, VAR_VALUE(failure_cause), IMS_DBG_EM_CALL_DROP_FAILURE_CAUSE_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_sip_cause_valid, INT32, VAR_VALUE(sip_cause), IMS_DBG_EM_CALL_DROP_SIP_CAUSE_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_net_type_valid, INT32, VAR_VALUE(net_type), IMS_DBG_EM_CALL_DROP_NET_TYPE_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_call_fail_cause_valid, INT32, VAR_VALUE(call_fail_cause), IMS_DBG_EM_CALL_DROP_CALL_FAIL_CAUSE_TAG, sizeof(INT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_sip_flow_valid, INT8, VAR_ARRAY(sip_flow, VOLTE_MAX_SIP_FLOW_LENGTH), IMS_DBG_EM_CALL_DROP_SIP_FLOW_TAG, VAR_SIZE(sip_flow))
+IMS_DBG_EM_DEF_END(ims_dbg_em_call_drop_ind_struct, ims_dbg_em_call_drop_tag_enum, IMS_DBG_EM_CALL_DROP_TAG)
+
+/*
+typedef struct
+{
+ BOOL is_acct_id_valid;
+ UINT8 acct_id;
+
+ BOOL is_sip_direction_valid;
+ UINT8 sip_direction;
+
+ BOOL is_sip_msg_type_valid;
+ UINT8 sip_msg_type;
+
+ BOOL is_sip_method_valid;
+ UINT16 sip_method;
+
+ BOOL is_sip_resp_code_valid;
+ UINT32 sip_resp_code;
+
+ BOOL is_event_id_valid;
+ UINT32 event_id;
+
+ BOOL is_failure_cause_valid;
+ UINT32 failure_cause;
+
+ BOOL is_call_id_valid;
+ UINT8 call_id;
+}ims_dbg_em_ims_event_info_ind_struct;
+*/
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_ims_event_info_tlv_encode, ims_dbg_em_ims_event_info_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT8, VAR_VALUE(acct_id), IMS_DBG_EM_IMS_EVENT_INFO_ACCT_ID_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_sip_direction_valid, UINT8, VAR_VALUE(sip_direction), IMS_DBG_EM_IMS_EVENT_INFO_SIP_DIRECTION_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_sip_msg_type_valid, UINT8, VAR_VALUE(sip_msg_type), IMS_DBG_EM_IMS_EVENT_INFO_SIP_MSG_TYPE_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_VAR_TAG(is_sip_method_valid, UINT16, VAR_VALUE(sip_method), IMS_DBG_EM_IMS_EVENT_INFO_SIP_METHOD_TAG, sizeof(UINT16))
+IMS_DBG_EM_DEF_VAR_TAG(is_sip_resp_code_valid, UINT32, VAR_VALUE(sip_resp_code), IMS_DBG_EM_IMS_EVENT_INFO_SIP_RESP_CODE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_event_id_valid, UINT32, VAR_VALUE(event_id), IMS_DBG_EM_IMS_EVENT_INFO_EVENT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_failure_cause_valid, UINT32, VAR_VALUE(failure_cause), IMS_DBG_EM_IMS_EVENT_INFO_FAILURE_CAUSE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_call_id_valid, UINT8, VAR_VALUE(call_id), IMS_DBG_EM_IMS_EVENT_INFO_CALL_ID_TAG, sizeof(UINT8))
+IMS_DBG_EM_DEF_END(ims_dbg_em_ims_event_info_ind_struct, ims_dbg_em_ims_event_info_tag_enum, IMS_DBG_EM_IMS_EVENT_INFO_TAG)
+
+
+/*
+typedef struct
+{
+ unsigned char is_call_id_valid;
+ unsigned int call_id;
+
+ unsigned char is_acct_id_valid;
+ unsigned int acct_id;
+
+ unsigned char is_urn_string_valid;
+ char urn_string[VOLTE_MAX_URI_LENGTH];
+
+ unsigned char is_diff_ue_urn_string_valid;
+ char diff_ue_urn_string[VOLTE_MAX_URI_LENGTH];
+
+ unsigned char is_diff_nw_urn_string_valid;
+ char diff_nw_urn_string[VOLTE_MAX_URI_LENGTH];
+
+} ims_dbg_em_call_380_drop_ind_struct;
+*/
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_call_380_drop_tlv_encode, ims_dbg_em_call_380_drop_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_call_id_valid, UINT32, VAR_VALUE(call_id), IMS_DBG_EM_CALL_380_DROP_CALL_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_CALL_380_DROP_ACCT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_urn_string_valid, INT8, VAR_ARRAY(urn_string, VOLTE_MAX_URI_LENGTH), IMS_DBG_EM_CALL_380_DROP_URN_STRING_TAG, VAR_SIZE(urn_string))
+IMS_DBG_EM_DEF_VAR_TAG(is_diff_ue_urn_string_valid, INT8, VAR_ARRAY(diff_ue_urn_string, VOLTE_MAX_URI_LENGTH), IMS_DBG_EM_CALL_380_DROP_DIFF_UE_URN_STRING_TAG, VAR_SIZE(diff_ue_urn_string))
+IMS_DBG_EM_DEF_VAR_TAG(is_diff_nw_urn_string_valid, INT8, VAR_ARRAY(diff_nw_urn_string, VOLTE_MAX_URI_LENGTH), IMS_DBG_EM_CALL_380_DROP_DIFF_NW_URN_STRING_TAG, VAR_SIZE(diff_nw_urn_string))
+IMS_DBG_EM_DEF_END(ims_dbg_em_call_380_drop_ind_struct, ims_dbg_em_call_380_drop_tag_enum, IMS_DBG_EM_CALL_380_DROP_TAG)
+
+
+/*
+typedef struct
+{
+ unsigned char is_acct_id_valid;
+ unsigned int acct_id;
+
+ unsigned char is_timer_name_valid;
+ unsigned int timer_name;
+
+ unsigned char is_timer_state_valid;
+ unsigned int timer_state;
+} ims_dbg_em_timer_info_ind_struct;
+*/
+IMS_DBG_EM_DEF_BEGIN
+IMS_DBG_EM_DEF_TLV_ENCODE(ims_dbg_em_timer_info_tlv_encode, ims_dbg_em_timer_info_ind_struct)
+IMS_DBG_EM_DEF_VAR_TAG(is_acct_id_valid, UINT32, VAR_VALUE(acct_id), IMS_DBG_EM_TIMER_INFO_ACCT_ID_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_timer_name_valid, UINT32, VAR_VALUE(timer_name), IMS_DBG_EM_TIMER_INFO_TIMER_NAME_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_VAR_TAG(is_timer_state_valid, UINT32, VAR_VALUE(timer_state), IMS_DBG_EM_TIMER_INFO_TIMER_STATE_TAG, sizeof(UINT32))
+IMS_DBG_EM_DEF_END(ims_dbg_em_timer_info_ind_struct, ims_dbg_em_timer_info_tag_enum, IMS_DBG_EM_TIMER_INFO_TAG)
+
+
+#undef IMS_DBG_EM_DEF_TLV_ENCODE
+#undef IMS_DBG_EM_DEF_BEGIN
+#undef IMS_DBG_EM_DEF_VAR_NON_TAG
+#undef IMS_DBG_EM_DEF_VAR_TAG
+#undef IMS_DBG_EM_DEF_END
+
diff --git a/mcu/protocol/interface/ims/ims_dbg_enum.h b/mcu/protocol/interface/ims/ims_dbg_enum.h
new file mode 100644
index 0000000..9f120b6
--- /dev/null
+++ b/mcu/protocol/interface/ims/ims_dbg_enum.h
@@ -0,0 +1,120 @@
+/*****************************************************************************
+* 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.
+*7
+* 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:
+ * ---------
+ * ims_dbg_enum.h
+ *
+ * Description:
+ * ------------
+ * This file defines enumerations for IMS debug
+ * The information includes SIP messages, EM, KPI, trace, ...etc.
+ *
+ * It expends the descriptoin in ims_dbg_def.h to enumarations
+ * All enumerations defined here are auto-gen by macros.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ ****************************************************************************/
+#ifndef __IMS_DBG_ENUM_H__
+#define __IMS_DBG_ENUM_H__
+
+
+/*******************************************************************************
+ *
+ * SIP section
+ *
+ ******************************************************************************/
+/*
+ * SIP INFO tag enum
+ */
+#if 0 // remove for backward compatible
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef enum {
+#define IMS_DBG_SIP_DEF_END(STRUCT_NAME, EVT_TAG) EVT_TAG,
+#include "ims_dbg_def.h"
+
+ IMS_DBG_SIP_EVT_TAG_NUM
+} ims_dbg_sip_evt_tag_enum;
+
+/*******************************************************************************
+ *
+ * EM section
+ *
+ ******************************************************************************/
+/*
+ * EM event variable tag
+ */
+/* define BEGIN */
+#define IMS_DBG_EM_DEF_BEGIN \
+ typedef enum \
+ {
+/* define VAR */
+#define IMS_DBG_EM_DEF_VAR_TAG(IS_VALID, VAR_TYPE, VAR_NAME, VAR_TAG, VAR_TAG_SIZE) \
+ VAR_TAG,
+
+/* define END */
+#define IMS_DBG_EM_DEF_END(STRUCT_NAME, TAG_ENUM_NAME, EVT_TAG) \
+ } TAG_ENUM_NAME;
+
+#include "ims_dbg_def.h"
+
+/*
+ * EM event tag
+ */
+typedef enum {
+#define IMS_DBG_EM_DEF_END(STRUCT_NAME, TAG_ENUM_NAME, EVT_TAG) EVT_TAG,
+#include "ims_dbg_def.h"
+
+ // additional tag
+ IMS_DBG_EM_EVT_TAG_NUM
+} ims_dbg_em_evt_tag_enum;
+
+#endif /* __IMS_DBG_ENUM_H__ */
diff --git a/mcu/protocol/interface/ims/ims_dbg_struct.h b/mcu/protocol/interface/ims/ims_dbg_struct.h
new file mode 100644
index 0000000..07b195d
--- /dev/null
+++ b/mcu/protocol/interface/ims/ims_dbg_struct.h
@@ -0,0 +1,113 @@
+
+/*****************************************************************************
+* 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.
+*7
+* 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:
+ * ---------
+ * ims_dbg_struct.h
+ *
+ * Description:
+ * ------------
+ * This file defines structures for IMS debug
+ * The information includes SIP messages, EM, KPI, trace, ...etc.
+ *
+ * It expends the descriptoin in ims_dbg_def.h to structures.
+ * All enumerations defined here are auto-gen by macros.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ ****************************************************************************/
+#ifndef __IMS_DBG_STRUCT_H__
+#define __IMS_DBG_STRUCT_H__
+
+#define VAR_VALUE(NAME) NAME
+#define VAR_ARRAY(NAME, LENGTH) NAME[LENGTH]
+
+/*******************************************************************************
+ *
+ * SIP section
+ *
+ ******************************************************************************/
+/* define BEGIN */
+#define IMS_DBG_SIP_DEF_BEGIN \
+ typedef struct \
+ {
+/* define VAR */
+#define IMS_DBG_SIP_DEF_VAR_NON_TAG(VAR_TYPE, VAR_NAME) \
+ VAR_TYPE VAR_NAME;
+
+#define IMS_DBG_SIP_DEF_VAR_TAG(VAR_TYPE, VAR_NAME, VAR_TAG, VAR_TAG_SIZE) \
+ VAR_TYPE VAR_NAME;
+
+/* define END */
+#define IMS_DBG_SIP_DEF_END(STRUCT_NAME, EVT_TAG) \
+ } STRUCT_NAME;
+
+
+/*******************************************************************************
+ *
+ * EM section
+ *
+ ******************************************************************************/
+/* define BEGIN */
+#define IMS_DBG_EM_DEF_BEGIN \
+ typedef struct \
+ {\
+ LOCAL_PARA_HDR
+/* define VAR */
+#define IMS_DBG_EM_DEF_VAR_NON_TAG(IS_VALID, VAR_TYPE, VAR_NAME) \
+ UINT32 IS_VALID; \
+ VAR_TYPE VAR_NAME;
+
+#define IMS_DBG_EM_DEF_VAR_TAG(IS_VALID, VAR_TYPE, VAR_NAME, VAR_TAG, VAR_TAG_SIZE) \
+ UINT32 IS_VALID; \
+ VAR_TYPE VAR_NAME;
+
+/* define END */
+#define IMS_DBG_EM_DEF_END(STRUCT_NAME, TAG_ENUM_NAME, EM_TYPE) \
+ } STRUCT_NAME;
+
+#include "ims_dbg_def.h"
+
+#undef VAR_VALUE
+#undef VAR_ARRAY
+
+
+#endif /* __IMS_DBG_STRUCT_H__ */
diff --git a/mcu/protocol/interface/ims/ims_interface_md.h b/mcu/protocol/interface/ims/ims_interface_md.h
new file mode 100644
index 0000000..8dfa807
--- /dev/null
+++ b/mcu/protocol/interface/ims/ims_interface_md.h
@@ -0,0 +1,548 @@
+/*****************************************************************************
+* 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef _IMS_INTERFACE_MD_H
+#define _IMS_INTERFACE_MD_H
+
+//#include "imc_general_sap.h"
+//#include "imcf_general.h"
+#include "module_msg_range.h"
+#include "imc_msgid.h"
+#include "ims_common_def.h"
+
+/* Change Log -
+ * 1E - (+) CMCC advanced conference call
+ * 1F - (+) MT conference participant interface
+ * 20 - (+) CMCC auto test tool - EBI filter/IPSec
+ * 21 - (+) dynamic SBP id setting from MNC/MCC
+ * 22 - (+) TMOUS MOS patch back
+ * 23 - (+) Align with WWOP sbp_id
+ * 24 - (-) SIM refresh
+ * 25 - ( ) video capability URC
+ * 26 - (-) ims_vops to UA interface(ATT)
+ * 27 - (-) early media direction interface (ATT)
+ * 28 - (+) WFC
+ * 29 - (+) RJIL dynamic sbp id
+ * 30 - (+) DCM feature - retry after
+ * 31 - (+) ipv6 address format
+ * 32 - (+) TWN, CHT, FET operator id
+ * 33 - (+) new call stop cause
+ * 34 - (+) new reg fail cause for VDF PDN reject cause #26 and #27 handling
+ * 35 - (+) EIMSCMODE extend
+ * 36 - (+) default bearer id to ltecsr
+ * 37 - (+) ViLTE feature
+ * 38 - (+) bCSFB feature
+ * 39 - (+) v1.2 IMS interface re-organization
+ * 3A - (+) RTCP CNAME
+ * 3B - (+) Add operator_code for Telstra/Sprint/Softbank/SFR/Telcel/Beeline/KT/SKT/UPLUS
+ * 3C - (+) Extend +EIMSCMODE, ims call audio codec information
+ * 3D - (+) 91 TMOUS ViLTE (phase3)
+ * 3E - (+) Add operator_code for Smartfren/YTL
+ * 3F - (+) USSI Feature
+ * 40 - (+) WFC Location Info support
+ * 41 - (+) 90 DoCoMo VoLTE feature patch back
+ * 42 - (+) 90 VzW VoLTE feature patch back
+ * 43 - (+) Orange early media change
+ * 44 - (+) Non-UE detectable emergency call R12 feature
+ * 45 - (+) Align WWOP_ID for Natcom/119 and Claro/120
+ * 46 - (+) 91 AT&T feature patch back
+ * 47 - (+) IMS UX Enhancement(AT+EIMSVOLTE, AT+EIMSVOICE, AT+EIMSSMS)/ IMS configurations re-origanization
+ * 48 - (+) VzW eHRPD feature patch back
+ * 49 - (+) IMS Debug/EM Framework
+ * 4A - (+) VZW eHRPD C2K reg cause
+ (+) IMCB/IMC verno sync
+ (+) TLV general setting
+ (+) CISRVCC
+ (+) EVS
+ (+) WWOP operator code
+ (+) CC Cause extend
+ (+) dereg cause
+ * 4B - (+) align WWOP_ID for DTAC/Avea/Megafone
+ (+) RTCP-XR
+ (+) EVS
+ * 4C - (+) bSRVCC
+ (+) WWOP operator code:KDDI
+ (+) Version Number Check Enhancment
+ * 4D - (+) align WWOP_ID for TIM/TrueMove
+ * 4E - (+) enhance for race condition MT call answer and SRVCC
+ * 4F - (+) IMS variable length align
+ (+) ISIM READ segmenation
+ (+) pcscf address in media_new / handover_begin and handover_end to LTECSR
+ (+) add remote hold/unhold and MT call forwarding indication
+ (+) Align WWOP_ID for NOKIA/1002 and MTK_HQLAB_ERICSSON/1003
+ * 50 - (+) Align WWOP_ID for Movistar/132
+ (+) update imsa_imcb read_isim entries from 5 to 20
+ * 51 - (+) TTY interface
+ (+) Multiple IMS interface
+ (+) Align WWOP_ID for DU/133
+ (+) IMS reg service interface
+ * 52 - (-) Corrected internal message
+ * 53 - (+) KDDI requirement/IOT patch back
+ (+) RTP/RTCP timeout implement
+ (+) IMC trigger pdn release
+ (+) deactivate emergency PDN directly
+ * 54 - (+) ECT Interface
+ (+) Align WWOP_ID for Elisa/134, MTS/135 and Tele2/137
+ (+) New reg cause RETRY_BY_RFC5626
+ * 55 - (+) Q.850 cause from Reason: header
+ (+) Aling WWOP_ID for Huawei IMS/1004
+ * 56 - (+) Confrence call participant URI length changed to 512
+ (+) Add CLIR to vdm_imc_ims_cc_mo_call_req_struct
+ (+) 93 RAT notification for 23G
+ (+) GTT/TTY missing interface
+ (+) VzW hVoLTE/E911/Call Pull
+ * 57 - (+) AP side change for conference URI
+ * 58 - (+) Add PLMN Type in VOLTE_MO_CALL_REQ
+ (+) Add TLV direction (to IMC)
+ * 59 - (+) Add MO_Call_Domain_Conflict message and structure
+ * 5A - (+) Gen93 M2 patch back
+ * 5B - (+) RTT interface
+ (+) 6293 interface refine
+ (+) VzW CDMA-less
+ (+) R13 ALTC
+ * 5C - (+) Add recv_codec_list to media config and media update structure for asymmetric RTP payload type
+ * 5D - (+) Modify conference srvcc number len
+ * 5E - (+) VzW CDMA-less interface refine
+ * 5F - (+) Improve Q850 result delivery
+ * 60 - (+) TMOUS Digit: new +ATDF and extend +EAIC
+ * 61 - (+) Fix Q850 imc-vdm interface
+ * 62 - (+) Fix imc-imcsms interface
+ * 63 - (+) TMOUS Digit: extend AT+ECT
+ * 64 - (+) TMOUS RTT operation
+ * 65 - (+) Add ECC category traffic for CMCC
+ * 66 - (+) TMOUS RTT EMC redial to normal EMC by ECPI 133
+ * 67 - (+) MIMS SRU request / VT_CAP with operator_id / PS Data on-off / E-PDN HO
+ * 68 - (+) Add country-specific urn support to mo call cnf
+ * 69 - (+) ANBR Feature
+ * 6A - (+) MBR/GBR to LTECSR
+ * 6B - (+) ADD release emergency IMS PDN cause/TTA emergency catogry
+ * 6C - (+) ADD ECC category UNRECOGNIZED
+ * 6D - (+) Add Cause for MO Call disconnect (AT+ECHLD handling)
+ * 6E - (+) Add CS availability query for SMS and Call UA. Add EFfrompreferred support.
+*/
+//#define IMCB_IMC_HEADER_FILE_VERNO 0x0000006E
+
+/* Change Log -
+ * 01 - CMCC auto test tool
+*/
+//#define IMCB_IMC_MSGID_VERNO 0x00000001
+
+
+/*****imc_general_sap.h START*****/
+/*****imc_general_sap.h END*****/
+
+/*****ims_common_def.h START*****/
+
+/*****ims_common_def.h END*****/
+
+/*****atp_imc_struct.h START*****/
+/*****atp_imc_struct.h END*****/
+
+/*****imcsms_imc_struct.h START*****/
+/*****imcsms_imc_struct.h END*****/
+
+/*****vdm_imc_struct.h START*****/
+
+/*****vdm_imc_struct.h END*****/
+
+/*****ltecsr_struct.h START*****/
+/*****ltecsr_struct.h END*****/
+
+/*START:from SSDS to IMC*/
+typedef enum
+{
+ SSDS_IMC_SS_INVALID_TYPE,
+ SSDS_IMC_SS_OPEATION_TYPE,
+ SSDS_IMC_USSD_TYPE,
+}ssds_imc_cmd_class_enum;
+
+typedef enum
+{
+ SSDS_IMC_INVALID_TYPE,
+ SSDS_IMC_EXCUTE_USSD_TYPE, /*when < class >=1, dufault value of < class > should be 1*/
+ SSDS_IMC_CANCEL_USSD_TYPE, /*only support when < class >=2*/
+ SSDS_IMC_DISABLE_REEULT_TYPE, /*disable the result code presentation to the TE*/
+ SSDS_IMC_ENABLE_REEULT_TYPE, /*enable the result code presentation to the TE*/
+}ssds_imc_operation_enum;
+
+typedef enum
+{
+ SSDS_IMC_USSD_INVALID_TYPE,
+ SSDS_IMC_USSD_REQUEST_TYPE,
+ SSDS_IMC_USSD_RESPONSE_TYPE,
+}ssds_imc_action_enum;
+
+typedef enum
+{
+ SSDS_IMC_USSD_RES_OK,
+ SSDS_IMC_USSD_RES_ERROR,
+}ssds_imc_response_enum;
+
+
+typedef enum
+{
+ SSDS_IMC_INVALID_URC,
+ SSDS_IMC_USSD_NOTIFY_URC, /*1 USSD notify*/
+ SSDS_IMC_SS_NOTIFY_URC, /*2 SS notify*/
+ SSDS_IMC_EXECUTE_RESULT_URC, /*3 MD execute result*/
+
+}ssds_imc_urc_class_enum;
+
+
+typedef enum
+{
+ SSDS_IMC_NO_FURTHER_USER_ACTION_REQUIRED, /* 0 : no further user action required */
+ SSDS_IMC_FURTHER_USER_ACTION_REQUIRED, /* 1 :further user action required*/
+ SSDS_IMC_NW_TERMINATE_USSD, /* 2 :USSD terminated by network*/
+ SSDS_IMC_OTHER_LOCAL_CLIENT_RESPOND, /* 3 :other local client has responded X*/
+ SSDS_IMC_NW_NOT_SUPPORT, /* 4 :operation not supported*/
+ SSDS_IMC_NW_TIMER_OUT, /* 5 :network time out X*/
+
+}ssds_ussd_status_enum;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ssds_imc_cmd_class_enum cmd_class;
+ ssds_imc_operation_enum operation;
+ ssds_imc_action_enum action;
+ kal_uint32 error_code;
+ kal_uint8 language[IMC_MAX_URI_LENGTH];
+ kal_uint8 digit_from_line_number[IMC_MAX_URI_LENGTH];
+}ssds_imc_ussd_atcmd_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ssds_imc_response_enum response; /*< OK or ERROR, may be extended to CME ERROR later on*/
+} ssds_imc_ussd_atcmd_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ssds_imc_urc_class_enum urc_class; /*< class */
+ kal_uint16 status; /*< status> */
+ kal_uint8 alert_pattern; /*< Alertin Pattern for AP */
+ kal_uint16 sip_cause; /*< status */
+ kal_uint8 language[IMS_USSD_LANGUANGE_LEN]; /*< language */
+ kal_uint16 error_code; /*< error_code */
+ kal_uint8 digit_from_line_number[IMC_MAX_URI_LENGTH];
+
+} ssds_imc_ussd_atcmd_ind_struct;
+/*END:from SSDS to IMC*/
+
+#endif /* _IMS_INTERFACE_MD_H */
diff --git a/mcu/protocol/interface/ims/ims_stack_struct.h b/mcu/protocol/interface/ims/ims_stack_struct.h
new file mode 100644
index 0000000..82ee110
--- /dev/null
+++ b/mcu/protocol/interface/ims/ims_stack_struct.h
@@ -0,0 +1,1537 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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:
+ * ---------
+ * ims_stack_struct.h
+ *
+ * Project:
+ * --------
+ * VMOLY
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 06 21 2022 kai-cheng.chiu
+ * [MOLY00765081] [FeatureDevelopment][ALPSAR06336232] TMOUS 22Q1 Requirement Gap Development - UE MO Timer F1
+ *
+ * .
+ *
+ * 04 28 2022 ot_fei.teng
+ * [MOLY00775781] [FeatureDevelopment][ALPSAR06336232] TMOUS 2022Q1 Requirement Gaps Development - CallUA
+ *
+ * .
+ *
+ * 04 07 2022 ot_hui.tu
+ * [MOLY00820624] [MT6853][Mouton][S0][WW FT][Peru][IMS][Regression][SQC Excluded][VoWiFi][Entel][TCID:FreeTest][MPR][LiveNW] Module REG - New requirements update to check in in MP branch
+ *
+ * .
+ *
+ * 03 22 2022 yung-liang.tsou
+ * [MOLY00784440] [FeatureDevelopment][ALPSAR06354999][Gen97/98][AT&T][v21.3][CDR-LTE-1447][CDR-IMS-1210] IMS voice not available when PDN reject casue 28, 33
+ * .imcb for ATT v21.3 <CDR-LTE-1447>, <CDR-IMS-1210>
+ *
+ * 03 03 2022 olli.kettunen
+ * [MOLY00782359] [Vodafone][Greece][J15S][J19A][?Œ??] SMS issue
+ *
+ * .
+ *
+ * 02 24 2022 kai-cheng.chiu
+ * [MOLY00686440] [TINNO][U319AA][ATT][TechM][[Official 10776][DDA][IMS/VoLTE][Severity-1]LTE-BTR-5-5422: Mismatch in received REGISTER request - Check Message Flow for more details!
+ *
+ * .
+ *
+ * 01 21 2022 xw.wang
+ * [MOLY00768400] [xiaomi][j22][MIUI-2142563]????????UE??????VOLTE?VOWIFI
+ *
+ * .
+ *
+ * 01 21 2022 kai-cheng.chiu
+ * [MOLY00722535] [MT6853][Mouton][AUSA-US][LiveNW][WWFT][Dallas][Pre-DCP][4G] E911 SIP receive 403 forbidden
+ *
+ * .
+ *
+ * 01 20 2022 uri.chang
+ * [MOLY00695545] [MT6833][Palmer][VzW][MR][LC][HQ][RnS][Type3][2.2.15]Fail at step 12 - SIP REGISTER Message not received within waittime
+ * [patch back][97R3 to MD700.MP] [VzW] stop (pend) throttling when iwlan_rat_avail=MAINTAIN
+ * fix ALPS05538023 to broadcast REG_STATE_IND even if state not change and cause=Normal
+ * to sync reg state with IMC.
+ *
+ * 09 01 2021 jani.kilponen
+ * [MOLY00664083] [OPPO][Jelly(Parker-a)]?20376??ES??MOVISTAR??LAB????????Retry Policy after registration failure
+ *
+ * Telefonica registration retry and enum for pcscf_usage
+ *
+ * 08 19 2021 tammy.kuo
+ * [MOLY00674439] [MT6853][Mouton][VzW][IODT][2021Feb][Keysight][5GNRSAVOICEFB][TC2.5.2] FAIL step 11:UE is not supposed to send the SMS, but UE is triggering the SMS
+ *
+ * .
+ *
+ * 05 19 2021 york.li
+ * [MOLY00588195] [Bwb201010-053]?????SA????????-????N41???A&B?1??5G EPS FB+?2??4G VoLTE?????A?1?????B?1????????????A?2 ims??????????1/100?
+ *
+ * .
+ *
+ * 11 27 2020 savvas.chou
+ * [MOLY00564557] [Blocking][MP6 Excluded][MT6853][Mouton][VzW][Pre-LRA][MP7 must][HQ][RnS][hVoLTE][2.2.56.2]Fail at step 5 - unexpected RrcConnectionRequest
+ * restore immediately for timer vzw case
+ *
+ * 11 16 2020 sami.jutila
+ * [MOLY00586172] [MT6893][Petrus-P][SQC][R0][R3][MP6][5G][SA][CTC][FT][Hangzhou][Huawei][TC-MF_IOTFT-06001][5G空闲??终端始呼]MT failed
+ *
+ * .
+ *
+ * 11 16 2020 sami.jutila
+ * [MOLY00586172] [MT6893][Petrus-P][SQC][R0][R3][MP6][5G][SA][CTC][FT][Hangzhou][Huawei][TC-MF_IOTFT-06001][5G空闲??终端始呼]MT failed
+ *
+ * .
+ *
+ * 11 10 2020 york.li
+ * [MOLY00537241] 主�?��?��??BYE没�??应�??��????�直??128s超时,在?�新?��?��??建�???��??��?��?�以优�???�止??�BYE
+ *
+ * .
+ *
+ * 11 06 2020 york.li
+ * [MOLY00588036] ??20131?��??DVT?��??��???��??��????��??�CT+CMCC(2G+IMS)ï¼ä¸»??�çµï¿??2G?��??è¿ï¿½?ä¸ç¶?????��?�移?�VoLTEæ¶å¤±(1/10)
+ *
+ * .
+ *
+ * 10 27 2020 york.li
+ * [MOLY00571344] ??20131?��??EVT?��??��???��??��??SA?�CT+CMCC(saims+ims)??��?为主??��?定点?��?��?测�???��?MT?�现?�E网现象�?概�?2/10
+ *
+ * .
+ *
+ * 09 18 2020 uri.chang
+ * [MOLY00569695] [US_DEV][VZW][MP7] P-CSCF handling for handover
+ * P-CSCF handling for IP/PCO change - interface part (MPD)
+ * merge IP_CHANGE_NOTIFY, PCSCF_RESTORE, and REQ_REREG to CONDITION_CHANGE_NOTIFY.
+ *
+ * 09 11 2020 xin.ni
+ * [MOLY00564610] [MT6873][Margaux][Q0][R3][JAPAN][KDDI][SIM-IMS][2-1-1-1a4]UE's behaviour does not comply with ComplianceList(IMS spec.3-15-1-7)
+ *
+ * .
+ *
+ * 09 11 2020 xin.ni
+ * [MOLY00564610] [MT6873][Margaux][Q0][R3][JAPAN][KDDI][SIM-IMS][2-1-1-1a4]UE's behaviour does not comply with ComplianceList(IMS spec.3-15-1-7)
+ *
+ * .
+ *
+ * 09 11 2020 xin.ni
+ * [MOLY00564610] [MT6873][Margaux][Q0][R3][JAPAN][KDDI][SIM-IMS][2-1-1-1a4]UE's behaviour does not comply with ComplianceList(IMS spec.3-15-1-7)
+ *
+ * .
+ *
+ * 07 27 2020 frank-th.chen
+ * [MOLY00549478] [Gen97][HE3.0]N3GPP offload over data feature
+ * VoData - IMS - STACK
+ *
+ * 07 09 2020 xw.wang
+ * [MOLY00529043] [Remote][MT6779][Lafite][Q0][Russia][MTS][Volte][Free Test][MDST][AUTO][RR][SWIFT]:Native (NE),15440,15473,99,/data/vendor/core/,1,SIGABRT,/vendor/bin/volte_stack
+ *
+ * .
+ *
+ * 07 08 2020 lipak.sen
+ * [MOLY00542601] [MT6885][Petrus][Q0][MP2][AT&T][10776v20_1][R3MP][10776][simulation][RTC][RnS][UCE][LTE-BTR-5-4162]Presence un-PUBLISH not received by turning on airplane mode
+ *
+ * .
+ * ALPS05223355 :AT&T Petrus Presence Unpublish issue
+ *
+ * 07 06 2020 huifeng.jing
+ * [MOLY00529481] [B200526-2172]??????????????5G NV-IOT-SA??SA+NSA??????NSA?????SA?????
+ * NR_recover.
+ *
+ * 06 30 2020 yung-liang.tsou
+ * [MOLY00537273] [97XCAP][Change Feature] add XCAP-diff function
+ * .xcap-diff ims stack interface
+ *
+ * 06 30 2020 chengwen.liu
+ * [MOLY00536847] [MP6] ICD IPDATA feature checkin
+ *
+ * .
+ *
+ * 06 30 2020 xw.wang
+ * [MOLY00536704] [KDDI][new feature][RMSC00540517]ACB skip for SUBSCRIBE
+ *
+ * .
+ *
+ * 06 30 2020 frank-th.chen
+ * [MOLY00526066] ALPS05120134 [TCL][Tokyo Lite TMO]WFC] The "P-LANI TIMESTAMP here" in invite is not correct, it is display the invite timestamp. The time reported is not in UTC or local time for LTE/ 3G/ 2G
+ *
+ * .
+ *
+ * 06 15 2020 frank-th.chen
+ * [MOLY00526066] ALPS05120134 [TCL][Tokyo Lite TMO]WFC] The "P-LANI TIMESTAMP here" in invite is not correct, it is display the invite timestamp. The time reported is not in UTC or local time for LTE/ 3G/ 2G
+ *
+ * .
+ *
+ * 05 27 2020 ari.simonen
+ * [MOLY00527994] [Gen97] SPI Allocation Patchback, IMS Stack part
+ *
+ * MOD_IPSEC assisted SPI allocation support for IMS Stack
+ *
+ * 04 03 2020 frank-th.chen
+ * [MOLY00509704] [MT6885][Petrus][TMO-US][MP3][WWFT][Seattle][5G4G][NSN][n71][Assert][Fatal error(task)] err_code1:0x00000305 err_code2:0x88880326 err_code3:0xCCCCCCCC MD Offender:IMS_STA
+ * .
+ *
+ * 03 24 2020 xw.wang
+ * [MOLY00507077] [MT6739][Zion][Q0][WW FT][Turkey][Istanbul][4GMM][IMS][Regression][SQC Excluded][TurkTelekom][VoWiFi] To check the PCNI requirements, Cell Time is showing 0
+ *
+ * .
+ *
+ * 01 08 2020 frank-th.chen
+ * [MOLY00469947] [Official][q0][Hsinchu][Petrus][TMO 19Q4][Anritsu][Protocol_IMS & VoLTE][60239][L_IMS_VoLTE_5572_1]The DUT failed to send any SUBSCRIBE request after dialing MSISDN.
+ *
+ * .
+ *
+ * 01 06 2020 frank-th.chen
+ * [MOLY00469947] [Official][q0][Hsinchu][Petrus][TMO 19Q4][Anritsu][Protocol_IMS & VoLTE][60239][L_IMS_VoLTE_5572_1]The DUT failed to send any SUBSCRIBE request after dialing MSISDN.
+ *
+ * .
+ *
+ * 12 28 2019 frank-th.chen
+ * [MOLY00468921] [Blocking][Official][q0][Hsinchu][Petrus][TMO 19Q4][R&S][Fatal error(task)] err_code1:0x00000305 err_code2:0x8888002D err_code3:0xCCCCCCCC MD Offender:CCIUSR ELM r/wlat:PASS AP detect MDEE time: 109.709222
+ *
+ * .
+ *
+ * 12 03 2019 xw.wang
+ * [MOLY00443771] [GEN97][IMS PATCH BACK][volte_stack] patch back to VMOLY
+ *
+ * .
+ * LR13.R1.MP patch back to VMOLY
+ *
+ * MOLY00404257: [Coverity defect fix][Coverity Scanned Code Defect]CID:4250715 code defect happened in /apps/module/volte/volte_stack/src/reg/reg.c
+ * MOLY00407078: ignore_tcp_disconnect_by_peer
+ * MOLY00407514: [Coverity Scanned Code Defect]CID:4250813 code defect happened in /apps/module/volte/volte_stack/src/sip/sip_transport.c
+ * MOLY00409040: [Coverity Scanned Code Defect]CID:4250812 code defect happened in /apps/module/volte/volte_stack/src/sip/sip_transport.c
+ * MOLY00410345: call_id_with_home_uri; contact_without_audio_feature_tag
+ * MOLY00411378: release_pdn_when_ip_change
+ *
+ * 12 03 2019 xw.wang
+ * [MOLY00443771] [GEN97][IMS PATCH BACK][volte_stack] patch back to VMOLY
+ *
+ * .
+ * LR13.R1.MP patch back to VMOLY
+ *
+ * MOLY00404257: [Coverity defect fix][Coverity Scanned Code Defect]CID:4250715 code defect happened in /apps/module/volte/volte_stack/src/reg/reg.c
+ * MOLY00407078: ignore_tcp_disconnect_by_peer
+ * MOLY00407514: [Coverity Scanned Code Defect]CID:4250813 code defect happened in /apps/module/volte/volte_stack/src/sip/sip_transport.c
+ * MOLY00409040: [Coverity Scanned Code Defect]CID:4250812 code defect happened in /apps/module/volte/volte_stack/src/sip/sip_transport.c
+ * MOLY00410345: call_id_with_home_uri; contact_without_audio_feature_tag
+ * MOLY00411378: release_pdn_when_ip_change
+ *
+ * 12 03 2019 xw.wang
+ * [MOLY00443771] [GEN97][IMS PATCH BACK][volte_stack] patch back to VMOLY
+ *
+ * .
+ * LR13.R1.MP patch back to VMOLY
+ *
+ * MOLY00404257: [Coverity defect fix][Coverity Scanned Code Defect]CID:4250715 code defect happened in /apps/module/volte/volte_stack/src/reg/reg.c
+ * MOLY00407078: ignore_tcp_disconnect_by_peer
+ * MOLY00407514: [Coverity Scanned Code Defect]CID:4250813 code defect happened in /apps/module/volte/volte_stack/src/sip/sip_transport.c
+ * MOLY00409040: [Coverity Scanned Code Defect]CID:4250812 code defect happened in /apps/module/volte/volte_stack/src/sip/sip_transport.c
+ * MOLY00410345: call_id_with_home_uri; contact_without_audio_feature_tag
+ * MOLY00411378: release_pdn_when_ip_change
+ *
+ * 12 02 2019 johnson.liu
+ * [MOLY00463002] ??��d2?�HVoLTE�Q�s��?
+ * .
+ *
+ * 12 02 2019 szu-chieh.chiu
+ * [MOLY00462969] [VMOLY][Gen97] IMCB ASSERT Removal
+ * IMCB ASSERT Removal -- IMCB/UA state unsync handling.
+ *
+ * 12 02 2019 xw.wang
+ * [MOLY00462202] [MT6771][Sylvia][O1][MP1.5][IOT][Japan][KDDI][PH3-VoLTE] TC3-10-6-3 UE supported "ACB Skip(3GPP Rel.12)" or not
+ *
+ * .
+ *
+ * 11 29 2019 lipak.sen
+ * [MOLY00462251] [IMS][Gen97] [VMOLY] Gen93 R3 to VMOLY Trunk Patch Back : Phase 2 .Deadline Nov 30
+ *
+ * .
+ * .
+ * R3 to VMOLY Trunk patch back : phase II
+ * ::MOLY00462251::
+ *
+ * 11 29 2019 lipak.sen
+ * [MOLY00462251] [IMS][Gen97] [VMOLY] Gen93 R3 to VMOLY Trunk Patch Back : Phase 2 .Deadline Nov 30
+ *
+ * .
+ * .
+ * R3 to VMOLY Trunk patch back : phase II
+ * ::MOLY00462251::
+ *
+ * 11 08 2019 mika.leinonen
+ * [MOLY00457775] [MT6885][Petrus][MP1][India][Delhi][FT][VoLTE][JIO][IDEA][Auto][SWIFT][ASSERT] file:mcu/protocol/ims/stack/src/reg/reg.c line:9665
+ * Change Reg UA client field to 64-bit because there can be more than 32 UA contexts
+ *
+ * 11 08 2019 mika.leinonen
+ * [MOLY00457775] [MT6885][Petrus][MP1][India][Delhi][FT][VoLTE][JIO][IDEA][Auto][SWIFT][ASSERT] file:mcu/protocol/ims/stack/src/reg/reg.c line:9665
+ * Change Reg UA client field to 64-bit because there can be more than 32 UA contexts
+ *
+ * 11 06 2019 ari.simonen
+ * [MOLY00457408] [MT6885][Petrus][MP1][SQC][MDST][SWIFT][TW][CHT+CHT][4G MM][ASSERT] file:mcu/protocol/ims/core/src/os/api_mem.c line:122
+ *
+ * Enabled ADM logging option for IMS memory pool
+ *
+ * 09 25 2019 xw.wang
+ * [MOLY00442760] [GEN97][IMS PATCH BACK][ePDCA verification for Petrus][B190712-1800]?FT-????????vilte?????????MTS?????volte????????5??????????????????????10-20?
+ *
+ * .
+ *
+ * 09 23 2019 xw.wang
+ * [MOLY00437037] [new feature][GEN97]common feature Call and Supplement Service- IMSProtoc9-suppor t607
+ *
+ * .
+ *
+ * 09 23 2019 xw.wang
+ * [MOLY00437037] [new feature][GEN97]common feature Call and Supplement Service- IMSProtoc9-suppor t607
+ *
+ * .
+ *
+ * 09 23 2019 xw.wang
+ * [MOLY00437037] [new feature][GEN97]common feature Call and Supplement Service- IMSProtoc9-suppor t607
+ *
+ * .
+ *
+ * 08 26 2019 sami.jutila
+ * [MOLY00433041] [Gen97][EPSFB] IT related issues
+ *
+ * .
+ *
+ * 08 20 2019 sami.jutila
+ * [MOLY00433246] [VoNR]TMOUS GID-MTRREQ-481793
+ *
+ * .
+ *
+ * 07 18 2019 frank-th.chen
+ * [MOLY00422529] VMOLY patch back
+ *
+ * .
+ *
+ * 07 18 2019 frank-th.chen
+ * [MOLY00422529] VMOLY patch back
+ *
+ * .
+ *
+ * 07 17 2019 lipak.sen
+ * [MOLY00422252] [IMS][Gen97] [Submarine] Submarine VMOLY Patch Back
+ *
+ * .
+ * SUBMARINE DEV patch back to VMOLY (MOLY00416875 + MOLY00411449)
+ *
+ * 07 17 2019 york.li
+ * [MOLY00422101] ï¿??????��??��?��??��ï¿???????18073 CMCC+CMCCï¼ï¿½?ï¿????1ç§»å¨4G CSFB MT失败 16/50
+ *
+ * .
+ *
+ * 05 08 2019 mika.leinonen
+ * [MOLY00402881] [Gen97][Submarine] Submarine M1 VMOLY patch back - IMS
+ * UTF update
+ *
+ * 04 29 2019 york.li
+ * [MOLY00401106] [Gen97IT] wrong ua type received when create sip channel
+ *
+ * .
+ *
+ * 04 26 2019 savvas.chou
+ * [MOLY00401640] [ICAP/REG UA] changes for capability
+ * REG UA parts
+ *
+ * 04 17 2019 shu-lin.yang
+ * [MOLY00392139] [IMS] [MIMS] MMTEL SUBSCRIBE RF resource request/release
+ *
+ * .
+ *
+ * 04 16 2019 sami.jutila
+ * [MOLY00399843] [Submarine][M1] Memory leak in ut_ua_temp_impu_01
+ * .
+ *
+ * 04 12 2019 york.li
+ * [MOLY00398906] [Submarine][M1][RDIT][CT][FT][TC-MF_VOLTEFT-03002][China][SH][ASSERT] file:mcu/protocol/imc/sub_imc/imc_cc/src/imc_cc_msghdlr.c line:1004 when keep long Vilte call
+ *
+ * .
+ *
+ * 04 08 2019 york.li
+ * [MOLY00397155] [IMS][Gen97 submarine] RCS Interface -reg state issue
+ *
+ * .
+ *
+ * 03 13 2019 chengwen.liu
+ * [MOLY00384501] [Cervino P0][VzW][EAB][3.30]Fail due to REGISTER request received
+ * .
+ *
+ * 03 08 2019 huifeng.jing
+ * [MOLY00388905] [MIMS][Gen97 submarine] VTS interface developments
+ *
+ * 03 05 2019 york.li
+ * [MOLY00387342] [IMS][Gen97 submarine] RCS Interface developments
+ *
+ * .
+ *
+ * 02 19 2019 ari.simonen
+ * [MOLY00385706] [Gen97][Submarine][IMS] Account ID handling for for SIPTX disconnect and destroy procedures
+ *
+ * Fixed SIPTX disconnect and destroy handling for acct_id > 0
+ *
+ * 02 18 2019 mika.leinonen
+ * [MOLY00385255] [Submarine][M1][Finland][Elisa][FT] ASSERT @@@: ABNORMAL_CHECK (protocol/ims/volte_stack/src/sip/sip_app.c:425)
+ * Fix for delete connection indication.
+ *
+ * 02 18 2019 szu-chieh.chiu
+ * [MOLY00381194] [Submarine][M1][1stCall] decode fail on the ILM messages between IMSUA/IMCB/IMS_STACK
+ * ua internal msg struct.
+ *
+ * 02 14 2019 ari.simonen
+ * [MOLY00384557] [Gen97][Submarine][IMS] Account ID handling fir for IPSec connect procedure
+ *
+ * Fixed IPsec connect handling for emergency account
+ *
+ * 02 13 2019 ari.simonen
+ * [MOLY00384338] [Gen97][Submarine][IMS] Fix for account ID handling when sending and receiving SIP messages
+ *
+ * Fixed account ID handling when sending and receiving SIP messages
+ *
+ * 02 11 2019 mika.leinonen
+ * [MOLY00367126] [Gen97][IMS] VoLTE porting
+ * Reg UA waits connect result before proceeding.
+ *
+ * 01 29 2019 szu-chieh.chiu
+ * [MOLY00381194] [Submarine][M1][1stCall] decode fail on the ILM messages between IMSUA/IMCB/IMS_STACK
+ * ua naming refine.
+ *
+ * 01 25 2019 szu-chieh.chiu
+ * [MOLY00381194] [Submarine][M1][1stCall] decode fail on the ILM messages between IMSUA/IMCB/IMS_STACK
+ * call ua naming refine.
+ *
+ * 01 25 2019 szu-chieh.chiu
+ * [MOLY00381194] [Submarine][M1][1stCall] decode fail on the ILM messages between IMSUA/IMCB/IMS_STACK
+ * .
+ *
+ * 01 24 2019 ari.simonen
+ * [MOLY00367126] [Gen97][IMS] VoLTE porting
+ *
+ * Disabled TCP congestion control for 8475 to fix MT call signaling issues.
+ *
+ * 01 24 2019 szu-chieh.chiu
+ * [MOLY00381194] [Submarine][M1][1stCall] decode fail on the ILM messages between IMSUA/IMCB/IMS_STACK
+ * [gen97] UA msg/struct refine.
+ *
+ * 01 23 2019 mika.leinonen
+ * [MOLY00380857] [Submarine][M1][1stCall][CMCC]IMS register fail
+ * Update IMS Stack interface - flag field usage
+ *
+ * 01 09 2019 ari.simonen
+ * [MOLY00367126] [Gen97][IMS] VoLTE porting
+ *
+ * IPsec key setting and deletion functionalities for SIP Transport and IPsec/authentication related UT updates.
+ *
+ * 01 09 2019 ari.simonen
+ * [MOLY00367126] [Gen97][IMS] VoLTE porting
+ *
+ * IPsec key setting and deletion functionalities for SIP Transport and IPsec/authentication related UT updates.
+ *
+ * 12 31 2018 york.li
+ * [MOLY00375804] [IMS][Gen97 submarine] REG Auth with simmngr & RCS Interface developments
+ *
+ * .
+ *
+ * 12 04 2018 mika.leinonen
+ * [MOLY00367126] [Gen97][IMS] VoLTE porting
+ * IMS Stack update
+ *
+ ****************************************************************************/
+
+#ifndef _IMS_STACK_STRUCT_H_
+#define _IMS_STACK_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ims_common_def.h"
+
+enum VoLTE_Stack_Result_e {
+ VoLTE_Stack_Result_Disconnected = -3,
+ VoLTE_Stack_Result_Timeout = -2,
+ VoLTE_Stack_Result_Error = -1,
+ VoLTE_Stack_Result_Success = 0
+};
+
+enum VoLTE_Stack_UA_Type_e {
+ VoLTE_Stack_UA_Reg = 1,
+ VoLTE_Stack_UA_Normal = 2,
+ VoLTE_Stack_UA_Call = 3,
+ VoLTE_Stack_UA_SMS = 4,
+ VoLTE_Stack_UA_Service = 5,
+ VoLTE_Stack_UA_RCS_Proxy = 6, /*Used for internal message*/
+ VoLTE_Stack_UA_USSD = 7,
+ VoLTE_Stack_UA_Presence = 8, /*Used for internal message*/
+ VoLTE_Stack_UA_ClientAPI_Proxy = 9,
+ VoLTE_Stack_UA_RCS_Proxy_Sip = 10, /*Used for sip message*/
+ VoLTE_Stack_UA_Presence_Sip = 11, /*Used for sip message*/
+ VoLTE_Stack_UA_Xcap_Sip = 12, /*Used for sip message*/
+
+ VoLTE_Stack_UA_Count
+};
+
+enum VoLTE_Event_Reg_State_e {
+ VoLTE_Event_Reg_State_Registered = 1,
+ VoLTE_Event_Reg_State_Unregistered = 2,
+ VoLTE_Event_Reg_State_Registering = 3,
+ VoLTE_Event_Reg_State_Deregistering = 4,
+ VoLTE_Event_Reg_State_Disconnected = 5,
+ VoLTE_Event_Reg_State_Authenticating = 6,
+ VoLTE_Event_Reg_State_OOS = 7,
+ /*add here*/
+ VoLTE_Event_Reg_State_Connecting = 8,
+ VoLTE_Event_Reg_State_Max
+};
+
+enum VoLTE_Event_SIP_Cause_e {
+ VoLTE_Event_SIP_Cause_Unspecified = 0,
+ VoLTE_Event_SIP_Cause_300_Multiple_Choices = 300,
+ VoLTE_Event_SIP_Cause_301_Moved_Permanently = 301,
+ VoLTE_Event_SIP_Cause_302_Moved_Temporarily = 302,
+ VoLTE_Event_SIP_Cause_305_Use_Proxy = 305,
+ VoLTE_Event_SIP_Cause_380_Alternative_Service = 380,
+ VoLTE_Event_SIP_Cause_400_Bad_Request = 400,
+ VoLTE_Event_SIP_Cause_401_Unauthorized = 401,
+ VoLTE_Event_SIP_Cause_402_Payment_Required = 402,
+ VoLTE_Event_SIP_Cause_403_Forbidden = 403,
+ VoLTE_Event_SIP_Cause_404_Not_Found = 404,
+ VoLTE_Event_SIP_Cause_405_Method_Not_Allowed = 405,
+ VoLTE_Event_SIP_Cause_406_Not_Acceptable = 406,
+ VoLTE_Event_SIP_Cause_407_Proxy_Authentication_Required = 407,
+ VoLTE_Event_SIP_Cause_408_Request_Timeout = 408,
+ VoLTE_Event_SIP_Cause_410_Gone = 410,
+ VoLTE_Event_SIP_Cause_413_Request_Entity_Too_Large = 413,
+ VoLTE_Event_SIP_Cause_414_Request_URI_Too_Large = 414,
+ VoLTE_Event_SIP_Cause_415_Unsupported_Media_Type = 415,
+ VoLTE_Event_SIP_Cause_416_Unsupported_URI_Scheme = 416,
+ VoLTE_Event_SIP_Cause_420_Bad_Extension = 420,
+ VoLTE_Event_SIP_Cause_421_Extension_Required = 421,
+ VoLTE_Event_SIP_Cause_423_Interval_Too_Brief = 423,
+ VoLTE_Event_SIP_Cause_480_Temporarily_Not_Available = 480,
+ VoLTE_Event_SIP_Cause_481_Call_Leg_Transaction_Does_Not_Exist = 481,
+ VoLTE_Event_SIP_Cause_482_Loop_Detected = 482,
+ VoLTE_Event_SIP_Cause_483_Too_Many_Hops = 483,
+ VoLTE_Event_SIP_Cause_484_Address_Incomplete = 484,
+ VoLTE_Event_SIP_Cause_485_Ambiguous = 485,
+ VoLTE_Event_SIP_Cause_486_Busy_Here = 486,
+ VoLTE_Event_SIP_Cause_487_Request_Terminated = 487,
+ VoLTE_Event_SIP_Cause_488_Not_Acceptable_Here = 488,
+ VoLTE_Event_SIP_Cause_491_Request_Pending = 491,
+ VoLTE_Event_SIP_Cause_493_Undecipherable = 493,
+ VoLTE_Event_SIP_Cause_494_Security_Agreement_Required = 494,
+ VoLTE_Event_SIP_Cause_500_SERVER_INT_ERROR = 500,
+ VoLTE_Event_SIP_Cause_501_Not_Implemented = 501,
+ VoLTE_Event_SIP_Cause_502_Bad_Gateway = 502,
+ VoLTE_Event_SIP_Cause_503_Service_Unavailable = 503,
+ VoLTE_Event_SIP_Cause_504_Server_Time_Out = 504,
+ VoLTE_Event_SIP_Cause_505_SIP_Version_Not_Supported = 505,
+ VoLTE_Event_SIP_Cause_513_Message_Too_Large = 513,
+ VoLTE_Event_SIP_Cause_580_Precondition_Failure = 580,
+ VoLTE_Event_SIP_Cause_600_Busy_Everywhere = 600,
+ VoLTE_Event_SIP_Cause_603_Decline = 603,
+ VoLTE_Event_SIP_Cause_604_Does_Not_Exist_Anywhere = 604,
+ VoLTE_Event_SIP_Cause_606_Not_Acceptable = 606,
+
+ VoLTE_Event_SIP_Cause_Internal_Request_Timeout = 700, //no sip error response 700 actually exist , this is for Internal timeout
+ VoLTE_Event_SIP_Cause_UNKNOWN = 800,
+ VoLTE_Event_SIP_Cause_Max = VoLTE_Event_SIP_Cause_UNKNOWN,
+};
+
+
+enum VoLTE_Event_Reg_Cause_e {
+ VoLTE_Event_Reg_Cause_Normal = 0,
+ VoLTE_Event_Reg_Cause_Internal_Error = 1,
+ VoLTE_Event_Reg_Cause_Stack_Error = 2,
+ VoLTE_Event_Reg_Cause_Timer_Error = 3,
+ VoLTE_Event_Reg_Cause_Try_Next_PCSCF = 4,
+ VoLTE_Event_Reg_Cause_PCSCF_All_Failed = 5,
+ VoLTE_Event_Reg_Cause_Auth_Error = 6,
+ VoLTE_Event_Reg_Cause_Reset = 7,
+ VoLTE_Event_Reg_Cause_AssURI_Changed = 8,
+ VoLTE_Event_Reg_Cause_Network_initiated = 10,
+ VoLTE_Event_Reg_Cause_Channel_Bind = 11,
+ VoLTE_Event_Reg_Cause_OOS = 12,
+ VoLTE_Event_Reg_Cause_SIP_Error = 13,
+ VoLTE_Event_Reg_Cause_Parameter_Error = 14,
+ VoLTE_Event_Reg_Cause_Not_Bind = 15,
+ VoLTE_Event_Reg_Cause_Not_Auto_Re_Reg = 16,
+ VoLTE_Event_Reg_Cause_Retry_After = 17,
+ VoLTE_Event_Reg_Cause_IMS_PDN_Fatal_Fail = 18,
+ VoLTE_Event_Reg_Cause_MD_Lower_Layer_Err = 19,
+ VoLTE_Event_Reg_Cause_C2K_Fail = 20,
+ VoLTE_Event_Reg_Cause_Retry_By_RFC5626 = 21,
+ VoLTE_Event_Reg_Cause_REL_EMC_PDN_AFR_Timer_Expr = 22,
+ VoLTE_Evend_Reg_Cause_IMS_PDN_DEACT_DETACH_REATTACH = 23,
+ VoLTE_Event_Reg_Cause_Teardown_for_State_Unsync = 24,
+ VoLTE_Event_Reg_Cause_IMS_SERVICE_NR_RECOVER = 25,
+ VoLTE_Event_Reg_Cause_Not_IMS_Retry = 26,
+ VoLTE_Event_Reg_Cause_Not_Auto_Re_Reg_Until_Rat_Change = 28,
+ VoLTE_Event_Reg_Cause_IMS_PDN_Infinite_Suggestion_Time = 29,
+ VoLTE_Event_Reg_Cause_Init_REGISTER_Sent = 30,
+ /*add here*/
+ VoLTE_Event_Reg_Cause_UNKNOWN = 99,
+ VoLTE_Event_Reg_Cause_Max = VoLTE_Event_Reg_Cause_UNKNOWN,
+};
+
+enum VoLTE_Stack_Protocol_Type_e {
+ VoLTE_Stack_Protocol_Type_TCP = 1,
+ VoLTE_Stack_Protocol_Type_UDP = 2,
+ VoLTE_Stack_Protocol_Type_TCPUDP = 3
+};
+
+enum VoLTE_Stack_Protocol_Version_e {
+ VoLTE_Stack_Protocol_Version_IPv4 = 1,
+ VoLTE_Stack_Protocol_Version_IPv6 = 2
+};
+
+enum VoLTE_Event_Emergency_Type_e {
+ VoLTE_Event_Emergency_Normal = 0, // normal registration
+ VoLTE_Event_Emergency_Registered = 1, // emergency with registration
+ VoLTE_Event_Emergency_Unregistered = 2, // emergency without registration
+};
+
+enum VoLTE_Event_Ems_Mode_e {
+ VoLTE_Event_Ems_Mode_None = 0,
+ VoLTE_Event_Ems_Mode_Nospec,
+ VoLTE_Event_Ems_Mode_3gpp,
+ VoLTE_Event_Ems_Mode_Wlan,
+ VoLTE_Event_Ems_Mode_eHRPD,
+ VoLTE_Event_Ems_Mode_Max
+};
+
+typedef enum _ims_reg_event_enum VoLTE_Event_reg_event_e;
+
+enum VoLTE_Event_IPSec_Encry_Algo_e {
+ VoLTE_Event_IPSec_Encry_Algo_NULL = 0,
+ VoLTE_Event_IPSec_Encry_Algo_3DES_CBC = 1,
+ VoLTE_Event_IPSec_Encry_Algo_AES_CBC = 2,
+};
+
+enum VoLTE_Event_IPSec_Integrity_Algo_e {
+ VoLTE_Event_IPSec_Integrity_Algo_HMAC_MD5 = 0,
+ VoLTE_Event_IPSec_Integrity_Algo_HMAC_SHA1 = 1,
+};
+
+enum VoLTE_Event_IPSec_Transport_e {
+ VoLTE_Event_IPSec_Transport_TCP = 1,
+ VoLTE_Event_IPSec_Transport_UDP = 2,
+};
+
+enum VoLTE_Event_IPSec_Mode_e {
+ VoLTE_Event_IPSec_Mode_Transport = 0,
+ VoLTE_Event_IPSec_Mode_Tunnel = 1,
+};
+
+enum VoLTE_Event_IPSec_Protocol_e {
+ VoLTE_Event_IPSec_Protocol_AH = 0,
+ VoLTE_Event_IPSec_Protocol_ESP = 1,
+};
+
+enum VoLTE_Event_IPSec_Direction_e {
+ VoLTE_Event_IPSec_Direction_In = 0,
+ VoLTE_Event_IPSec_Direction_Out = 1,
+};
+
+typedef enum _VoLTE_Event_SRU_Operation_e {
+ VoLTE_Event_Operation_Unspec = 0,
+ VoLTE_Event_Request_RF = 1,
+ VoLTE_Event_Release_RF = 2
+}VoLTE_Event_SRU_Operation_e;
+
+typedef enum _VoLTE_Event_SRU_Method_e {
+ VoLTE_Event_Method_Unspec = 0,
+ VoLTE_Event_Initial_Register = 1,
+ VoLTE_Event_Re_Register = 2,
+ VoLTE_Event_Subscribe = 3,
+ VoLTE_Event_USSD_Invite = 4,
+ VoLTE_Event_Conf_Subscribe = 5,
+ VoLTE_Event_MWI_Subscribe = 6,
+ VoLTE_Event_CallPull_Subscribe = 7,
+ VoLTE_Event_Initial_Register_Low = 8
+}VoLTE_Event_SRU_Method_e;
+
+enum VoLTE_Event_Capability_Type_e {
+ VoLTE_Event_Capability_Others = 0,
+ VoLTE_Event_Capability_ICSI = 1, // set or unset the ICSI capability
+ VoLTE_Event_Capability_IARI = 2, // set or unset the ICSI capability
+ VoLTE_Event_Capability_SMSIP = 3, // enable or disable the SMSoIP (default is enabled)
+ VoLTE_Event_Capability_GRUU = 4, // enable or disable the GRUU (default is supported)
+ VoLTE_Event_Capability_USSI = 5,
+ //VoLTE_Event_Capability_Multiple_Reg = 5, // stack not supported yet
+ //VoLTE_Event_Capability_IPSec = 6, // enable or disable the ipsec connection (default is enabled)
+ //VoLTE_Event_Capability_TCP = 7, // enable or disable the tcp connection (default is disabled)
+ //VoLTE_Event_Capability_IPv6 = 8, // enable or disable the ipv6 connection (default is disabled)
+ //VoLTE_Event_Capability_Reg_Event = 9, // enable or disable the registration event package (default is enabled)
+ //VoLTE_Event_Capability_Emergency = 10, // 0 : normal, 1 : emergency, 2 : emergency without registration (default is 0)
+ /*add here*/
+ VoLTE_Event_Capability_Max,
+};
+enum VoLTE_Event_Reg_Restore_Cause_e {
+ VoLTE_Event_Reg_Restore_Cause_Unknown = 0,
+ VoLTE_Event_Reg_Restore_Cause_IPsec = 1,
+ VoLTE_Event_Reg_Restore_Cause_Tvzw = 2,
+ VoLTE_Event_Reg_Restore_Cause_Max
+};
+
+typedef enum {
+ VoLTE_PCSCF_Usage_Default = 0,
+ VoLTE_PCSCF_Usage_Try_Same, /* insert pcscf_addr in method:PCO head (use same pcscf) */
+ VoLTE_PCSCF_Usage_Move_To_Tail, /* insert pcscf_addr in method:PCO tail */
+ VoLTE_PCSCF_Usage_Move_To_Tail_IP_Failover, /* insert pcscf_addr in method:PCO tail, and try to failover
+ * to another IP type if:
+ * (1). one IP type(v4 or v6) is all tried; and
+ * (2). another IP type(v6 or v4) is available.
+ */
+ VoLTE_PCSCF_Usage_Reset_To_Original_NW_List /* reset pcscf_addr in method:PCO head (use the original first pcscf) */
+} VoLTE_PCSCF_Usage_e;
+
+
+typedef struct _VoLTE_Stack_Ua_Info {
+ int local_port;
+ char local_address[VOLTE_MAX_ADDRESS_LENGTH];
+ int protocol_version; /* VoLTE_Stack_Protocol_Version_e */
+
+ unsigned int keep_alive;
+ unsigned int keep_alive_mode;
+ unsigned int tcp_keepalive_interval;
+ unsigned int tcp_connect_max_time_invite;
+ unsigned int reuse_transport_methods;
+
+ char tcp_on_demand; /* 1 : on demand, 0 : always setup */
+ char force_use_udp; /* 1 : send the sip request by udp */
+ char use_udp_on_tcp_fail;
+ char backup_init_sa;
+
+ unsigned int tcp_mtu_size;
+
+ int ipsec; /* 1 : enable ipsec, 0 : disable ipsec */
+ unsigned int ipsec_port_start;
+ unsigned int ipsec_port_end;
+ unsigned int ipsec_port_curr;
+
+ char support_sip_block;
+ char reg_over_tcp;
+ char connect_tcp_before_init_reg;
+ char non_ipsec_reuse_tcp;
+
+ char rcs_state;
+ char force_tcp_on_5g_call;
+ char est_client_tcp_when_send_response;
+ char unused;
+
+ int if_id;
+ int network_id;
+ int sip_dscp;
+ unsigned int sip_soc_priority;
+ unsigned int sip_soc_tcp_mss;
+ int sip_hdr_config;
+ int acct_id;
+ unsigned int tcp_connect_max_time_all;
+ int reject_rcs_request;
+
+ char stop_sip_bye_retransmission;
+ char close_tcp_socket_after_30sec_inactivity;
+ char sip_soc_tcp_congestion_ctrl;
+ char ignore_tcp_disconnect_by_peer;
+
+ char setup_tcp_client_conn_for_em_call_before_sending_req;
+ char add_timestamp_to_pcni;
+ char delete_both_conn;
+ char icd_decrypt_dump;
+
+ int sip_bye_retransmit_total_time;
+
+ char stop_err_resp_retx_when_not_needed;
+
+ unsigned int ignore_missing_sip_headers;
+} VoLTE_Stack_Ua_Info_t;
+
+typedef struct _VoLTE_Stack_Server_Info {
+ char address[VOLTE_MAX_ADDRESS_LENGTH];
+ int port;
+} VoLTE_Stack_Server_Info_t;
+
+typedef struct _VoLTE_Stack_Connection_Info {
+ LOCAL_PARA_HDR
+ VoLTE_Stack_Server_Info_t server;
+ VoLTE_Stack_Ua_Info_t ua;
+} VoLTE_Stack_Connection_Info_t;
+
+typedef struct _VoLTE_Stack_Channel_Info_Ap {
+ int type; /* VoLTE_Stack_UA_Type_e */
+ unsigned int conn_info;
+} VoLTE_Stack_Channel_Info_Ap_t;
+
+typedef struct _VoLTE_Stack_Channel_Info {
+ LOCAL_PARA_HDR
+ int type; /* VoLTE_Stack_UA_Type_e */
+ unsigned int conn_info;
+ /* ************************************************************************************************************** */
+ /* Notice: if new structure member is created for AP, please add new member above this comment & _VoLTE_Stack_Channel_Info_Ap */
+ /* and sync this structure with AP RCS, then provide interface file to AP; */
+ /* if new structure member is used internally, please add new member below this comment and don't need to sync structure with AP RCS */
+ /* ************************************************************************************************************** */
+ kal_int32 acct_id;
+ char cap[0];
+} VoLTE_Stack_Channel_Info_t;
+
+typedef enum {
+ VoLTE_Stack_SPI_Owner_None = 0,
+ VoLTE_Stack_SPI_Owner_REG,
+ VoLTE_Stack_SPI_Owner_SIPTX
+} VoLTE_Stack_SPI_Owner_e;
+
+typedef struct {
+ kal_uint32 spi;
+ VoLTE_Stack_SPI_Owner_e owner;
+ kal_bool allocated; /* KAL_TRUE if SIP was allocated from IPSEC rather than randomized by REG */
+} VoLTE_Stack_SPI_t;
+
+typedef struct _VoLTE_Stack_IPSec_Info {
+ LOCAL_PARA_HDR
+ int acct_id;
+ int reg_index;
+ int index;
+ VoLTE_Stack_SPI_t local_spi_c;
+ VoLTE_Stack_SPI_t local_spi_s;
+ unsigned int target_port_c;
+ unsigned int target_port_s;
+ VoLTE_Stack_SPI_t target_spi_c;
+ VoLTE_Stack_SPI_t target_spi_s;
+
+ char ck_str[VOLTE_MAX_AUTH_CK]; /* 97 TODO: remove */
+ char ik_str[VOLTE_MAX_AUTH_IK]; /* 97 TODO: remove */
+ kal_uint8 ck_bin[IMC_MAX_CK_LEN];
+ kal_uint8 ik_bin[IMC_MAX_IK_LEN];
+ kal_uint8 encry_algo; /* VoLTE_Stack_IPSec_Encry_Algo_e */
+ kal_uint8 integrity_algo; /* VoLTE_Stack_IPSec_Integrity_Algo_e */
+ kal_uint8 is_wfc_enable;
+ kal_uint8 ck_len;
+ kal_uint8 ik_len;
+} VoLTE_Stack_IPSec_Info_t;
+
+typedef struct _VoLTE_Stack_Sip_Info_Ap {
+ int conn_id;
+ int request_id;
+ int message_len;
+ char message[0];
+} VoLTE_Stack_Sip_Info_Ap_t;
+
+typedef struct _VoLTE_Stack_Sip_Info {
+ LOCAL_PARA_HDR
+ int acct_id;
+ int conn_id;
+ kal_uint8 sru_method; /* RF reservation method */
+ int request_id;
+ int message_len;
+ char message[0];
+} VoLTE_Stack_Sip_Info_t;
+
+typedef struct _VoLTE_Stack_Result_Ap {
+ int result; // VoLTE_Stack_Result_e
+ unsigned int user_data[4];
+} VoLTE_Stack_Result_Ap_t;
+
+typedef struct _VoLTE_Stack_Result {
+ LOCAL_PARA_HDR
+ int result; // VoLTE_Stack_Result_e
+ unsigned int user_data[4];
+} VoLTE_Stack_Result_t;
+
+typedef struct _VoLTE_Event_Reg_Item_Ap_ {
+ kal_int32 id; // account id
+ kal_int32 retry_after; // delay for IMC retrying initial registration
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
+ kal_uint8 call_id[VOLTE_MAX_CALL_ID_LENGTH]; // the call ua sip msg call-id
+ VoLTE_Event_LBS_Location_t loc_info;
+ kal_uint8 next_pcscf; // Try next pcscf for Register
+} VoLTE_Event_Reg_Item_Ap_t;
+
+typedef struct _VoLTE_Event_Reg_Item_ {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_int32 retry_after; // delay for IMC retrying initial registration
+ kal_uint8 cell_id[VOLTE_MAX_CELL_ID_LENGTH]; // current cell id from the modem PS
+ kal_uint8 call_id[VOLTE_MAX_CALL_ID_LENGTH]; // the call ua sip msg call-id
+ VoLTE_Event_LBS_Location_t loc_info;
+ kal_uint8 next_pcscf; // Try next pcscf for Register
+ /* ************************************************************************************************************** */
+ /* Notice: if new structure member is created for AP, please add new member above this comment & _VoLTE_Stack_Channel_Info_Ap */
+ /* and sync this structure with AP RCS, then provide interface file to AP; */
+ /* if new structure member is used internally, please add new member below this comment and don't need to sync structure with AP RCS */
+ /* ************************************************************************************************************** */
+ kal_uint64 ua_id; // reg client information
+ kal_uint8 restore_cause;
+} VoLTE_Event_Reg_Item_t;
+
+typedef struct _VoLTE_Event_List_Current_Call_To_Stack {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id; // reg client information
+ kal_uint32 total_call;
+ VoLTE_Event_List_one_call_t call[VOLTE_MAX_CALL_SESSION];
+} VoLTE_Event_List_Current_Call_To_Stack_t;
+
+typedef struct _VoLTE_Event_Reg_State_Ap_ {
+ kal_int32 id; // account id
+ kal_int32 state; // refer to ::VoLTE_Event_Reg_State_e
+ kal_int32 cause; // refer to ::VoLTE_Event_Reg_Cause_e
+ kal_int32 sip_cause; // refer to ::VoLTE_Event_SIP_Cause_e
+
+ kal_uint32 conn_info; // connection information for the others UA to create the connection
+ /* account information */
+ kal_char local_address[VOLTE_MAX_ADDRESS_LENGTH]; // local ip address
+ kal_int32 local_port; // local port number
+ kal_int32 protocol_type; // refer to ::VoLTE_Stack_Protocol_Type_e
+ kal_int32 protocol_version; // refer to ::VoLTE_Stack_Protocol_Version_e
+ kal_char public_uid[VOLTE_MAX_REG_UID_LENGTH]; // public user identity
+ kal_char private_uid[VOLTE_MAX_REG_UID_LENGTH]; // private user identity
+ kal_char home_uri[VOLTE_MAX_DOMAIN_NAME_LENGTH]; // domain name of the home network
+ kal_char pcscf_address[VOLTE_MAX_ADDRESS_LIST_LENGTH]; // current used PCSCF ip address
+ kal_int32 pcscf_port; // current used PCSCF port number
+ kal_char imei[VOLTE_MAX_IMEI_LENGTH]; // IMEI
+ kal_char associated_uri[VOLTE_MAX_ASSOCIATED_URI]; // list of the associated URI
+ kal_char pub_gruu[VOLTE_MAX_GRUU_LENGTH]; // public gruu
+ kal_char temp_gruu[VOLTE_MAX_GRUU_LENGTH]; // temp gruu
+ kal_char service_route[VOLTE_MAX_SERVICE_ROUTE_LENGTH]; // service route
+ kal_char path[VOLTE_MAX_URI_LENGTH]; // path
+ kal_int32 target_port_s; // target_port_s
+ kal_int32 net_type; // refer to ::VoLTE_Event_Network_Type_e
+ kal_int32 net_type_3gpp; // refer to ::VoLTE_Event_Network_Type_e
+ kal_int32 emergency_type; // refer to ::VoLTE_Event_Emergency_Type_e
+ kal_int32 ems_mode; // refer to ::VoLTE_Event_Ems_Mode_e
+ kal_int32 retry_after; // notify time delay for IMC retrying initial registration
+ kal_char reg_timestamp[VOLTE_MAX_TIMESTAMP_LENGTH]; // TMO P-Last-Access-Network-Info "REGISTRATION TIMESTAMP"
+ kal_char security_verify[VOLTE_MAX_SECURIT_VERIFY_LENGTH]; // security verify header in All the subsequent SIP requests
+ kal_char user_agent[VOLTE_MAX_USER_AGENT_LENGTH]; // user-agent header for RCS usage
+ kal_int32 reg_uri_type; // todo: define enum for imsi and msisdn uri
+ kal_char msisdn_uri[VOLTE_MAX_REG_UID_LENGTH];
+
+ /* em related variables */
+ kal_uint8 em_reg_timestamp[VOLTE_MAX_TIME_STAMP_LENGTH]; // last registered timestamp in milliseconds
+ kal_char instance_id[VOLTE_MAX_URI_LENGTH]; // instance id
+
+ kal_char pcscf_usage; // refer to VoLTE_PCSCF_Usage_e
+ kal_char release_pdn;
+ kal_char voice_cap;
+ kal_char video_cap;
+
+ kal_char rcs_state;
+ kal_int32 rcs_feature;
+ kal_char tmp_voice_cap;
+ kal_char tmp_video_cap;
+ kal_uint8 tmp_sms_cap;
+
+ kal_int32 reg_service; // refer to ::VoLTE_Event_reg_service_e
+ kal_int32 via_rport; // Via rport
+ kal_char via_received[VOLTE_MAX_ADDRESS_LENGTH]; // Via received parameter
+
+ kal_char emergency_reg_got_error;
+ kal_char sms_cap;
+ kal_char subscribe_dialog_to_server; // subscription to the conference event package
+ kal_char digit_number_of_vline;
+
+ kal_char pani[VOLTE_MAX_P_ACCESS_NETWORK_INFO_LENGTH]; // P-Acess-Network-Info header for RCS usage
+ kal_char digit_pidentifier[VOLTE_MAX_DIGIT_PIDENTIFIER_LENGTH]; // 3.6.8.1 Also include following: (Mandatory) ID: GID-MTRREQ-302326
+ kal_char digit_ppa_header_string[VOLTE_MAX_DIGIT_PPA_LENGTH]; // PPA for all the lines
+
+ kal_int32 reg_event; // refer to ::VoLTE_Event_reg_event_e
+} VoLTE_Event_Reg_State_Ap_t;
+
+typedef struct _VoLTE_Event_Reg_State_ {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_int32 state; // refer to ::VoLTE_Event_Reg_State_e
+ kal_int32 cause; // refer to ::VoLTE_Event_Reg_Cause_e
+ kal_int32 sip_cause; // refer to ::VoLTE_Event_SIP_Cause_e
+
+ kal_uint32 conn_info; // connection information for the others UA to create the connection
+ /* account information */
+ kal_char local_address[VOLTE_MAX_ADDRESS_LENGTH]; // local ip address
+ kal_int32 local_port; // local port number
+ kal_int32 protocol_type; // refer to ::VoLTE_Stack_Protocol_Type_e
+ kal_int32 protocol_version; // refer to ::VoLTE_Stack_Protocol_Version_e
+ kal_char public_uid[VOLTE_MAX_REG_UID_LENGTH]; // public user identity
+ kal_char private_uid[VOLTE_MAX_REG_UID_LENGTH]; // private user identity
+ kal_char home_uri[VOLTE_MAX_DOMAIN_NAME_LENGTH]; // domain name of the home network
+ kal_char pcscf_address[VOLTE_MAX_ADDRESS_LIST_LENGTH]; // current used PCSCF ip address
+ kal_int32 pcscf_port; // current used PCSCF port number
+ kal_char imei[VOLTE_MAX_IMEI_LENGTH]; // IMEI
+ kal_char associated_uri[VOLTE_MAX_ASSOCIATED_URI]; // list of the associated URI
+ kal_char pub_gruu[VOLTE_MAX_GRUU_LENGTH]; // public gruu
+ kal_char temp_gruu[VOLTE_MAX_GRUU_LENGTH]; // temp gruu
+ kal_char service_route[VOLTE_MAX_SERVICE_ROUTE_LENGTH]; // service route
+ kal_char path[VOLTE_MAX_URI_LENGTH]; // path
+ kal_int32 target_port_s; // target_port_s
+ kal_int32 net_type; // refer to ::VoLTE_Event_Network_Type_e
+ kal_int32 net_type_3gpp; // refer to ::VoLTE_Event_Network_Type_e
+ kal_int32 emergency_type; // refer to ::VoLTE_Event_Emergency_Type_e
+ kal_int32 ems_mode; // refer to ::VoLTE_Event_Ems_Mode_e
+ kal_int32 retry_after; // notify time delay for IMC retrying initial registration
+ kal_char reg_timestamp[VOLTE_MAX_TIMESTAMP_LENGTH]; // TMO P-Last-Access-Network-Info "REGISTRATION TIMESTAMP"
+ kal_char security_verify[VOLTE_MAX_SECURIT_VERIFY_LENGTH]; // security verify header in All the subsequent SIP requests
+ kal_char user_agent[VOLTE_MAX_USER_AGENT_LENGTH]; // user-agent header for RCS usage
+ kal_int32 reg_uri_type; // todo: define enum for imsi and msisdn uri
+ kal_char msisdn_uri[VOLTE_MAX_REG_UID_LENGTH];
+
+ /* em related variables */
+ kal_uint8 em_reg_timestamp[VOLTE_MAX_TIME_STAMP_LENGTH]; // last registered timestamp in milliseconds
+ kal_char instance_id[VOLTE_MAX_URI_LENGTH]; // instance id
+
+ /*
+ pcscf_usage
+ 0 default
+ 1 insert pcscf_addr in method:PCO head (use same pcscf)
+ 2 insert pcscf_addr in method:PCO tail
+ 3 insert pcscf_addr in method:PCO tail, and try to failover to another IP type if:
+ (1). one IP type(v4 or v6) is all tried; and
+ (2). another IP type(v6 or v4) is available.
+ */
+ kal_char pcscf_usage;
+ kal_char release_pdn;
+ kal_char voice_cap;
+ kal_char video_cap;
+
+ kal_char rcs_state;
+ kal_int32 rcs_feature;
+ kal_char tmp_voice_cap;
+ kal_char tmp_video_cap;
+ kal_uint8 tmp_sms_cap;
+
+ kal_int32 reg_service; // refer to ::VoLTE_Event_reg_service_e
+ kal_int32 via_rport; // Via rport
+ kal_char via_received[VOLTE_MAX_ADDRESS_LENGTH]; // Via received parameter
+
+ kal_char emergency_reg_got_error;
+ kal_char sms_cap;
+ kal_char subscribe_dialog_to_server; // subscription to the conference event package
+ kal_char digit_number_of_vline;
+
+ kal_char pani[VOLTE_MAX_P_ACCESS_NETWORK_INFO_LENGTH]; // P-Acess-Network-Info header for RCS usage
+ kal_char digit_pidentifier[VOLTE_MAX_DIGIT_PIDENTIFIER_LENGTH]; // 3.6.8.1 Also include following: (Mandatory) ID: GID-MTRREQ-302326
+ kal_char digit_ppa_header_string[VOLTE_MAX_DIGIT_PPA_LENGTH]; // PPA for all the lines
+
+ kal_int32 reg_event; // refer to ::VoLTE_Event_reg_event_e
+ /* ************************************************************************************************************** */
+ /* Notice: if new structure member is created for AP, please add new member above this comment & _VoLTE_Stack_Channel_Info_Ap */
+ /* and sync this structure with AP RCS, then provide interface file to AP; */
+ /* if new structure member is used internally, please add new member below this comment and don't need to sync structure with AP RCS */
+ /* ************************************************************************************************************** */
+ kal_char uuid[VOLTE_REG_MAX_UUID_LENGTH]; // UUID
+ kal_char contact_uri_user_part[VOLTE_MAX_URI_LENGTH];
+ kal_char uce_state;
+ kal_uint64 ua_id; // reg client information
+ kal_int8 is_nw_cap_number_verify;
+ kal_int8 sip_607_support; // IMSProtoc9-support 607 report UA
+ kal_int32 sub_net_type; // refer to ::VoLTE_Event_Network_Type_e (for vodata only)
+ kal_char force_broadcast_reg_state; // force IMSUA to broadcast REG's state change to IMCB and UAs even if the state does not change
+ kal_char is_nw_cap_smsip_in_register_200_contact; // Use to deliver "+3gpp.smsip" availability from successfull register 200 OK contact hdr. RFC 3840.
+ kal_char imei_svn[VOLTE_MAX_IMEI_SVN_LENGTH]; // IMEI SVN
+} VoLTE_Event_Reg_State_t;
+
+typedef struct _VoLTE_Event_Reg_Ems_Mode_ {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_uint64 ua_id; // reg client information
+ kal_int32 ems_mode; // refer to ::VoLTE_Event_Ems_Mode_e
+ kal_int32 rat_type; // refer to ::VoLTE_Event_Network_Type_e
+ kal_int32 reg_service; // refer to ::VoLTE_Event_reg_service_e
+ kal_int32 reg_event; // ims_reg_event_enum
+ kal_int32 sip_uri_type; // ims_reg_sip_uri_type_enum
+} VoLTE_Event_Reg_Ems_Mode_t;
+
+typedef struct _VoLTE_Event_Reg_Notify_Done_ {
+ LOCAL_PARA_HDR
+ kal_uint32 id;
+ kal_uint64 ua_id; // reg client information
+} VoLTE_Event_Reg_Notify_Done_t;
+
+typedef struct _VoLTE_Event_SRU_Info {
+ LOCAL_PARA_HDR
+ kal_int32 id;
+ kal_uint64 ua_id; // reg client information
+ kal_uint8 op; // VoLTE_Event_SRU_Operation_e
+ kal_uint8 method; // VoLTE_Event_SRU_Method_e
+ kal_uint8 pad[2];
+ kal_int32 rat_type; // refer to ::VoLTE_Event_Network_Type_e
+} VoLTE_Event_SRU_Info_t;
+
+typedef struct _VoLTE_Event_IPSec_Policy_Flush_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id;
+} VoLTE_Event_IPSec_Policy_Flush_Ind_t;
+
+typedef struct _VoLTE_Event_IPSec_Info_ {
+ char src_ip[VOLTE_MAX_ADDRESS_LENGTH];
+ char dst_ip[VOLTE_MAX_ADDRESS_LENGTH];
+ char src_port[16];
+ char dst_port[16];
+ char spi[32];
+ char dir; // VoLTE_Event_IPSec_Direction_e
+ char padding[3];
+} VoLTE_Event_IPSec_Info_t;
+
+typedef struct _VoLTE_Event_IPSec_Policy_Add_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id;
+ VoLTE_Event_IPSec_Info_t ipsec_info_set[4];
+
+ char index;
+ char transport; // VoLTE_Event_IPSec_Transport_e
+ char mode; // VoLTE_Event_IPSec_Mode_e
+ char protocol; // VoLTE_Event_IPSec_Protocol_e
+ char encry_algo; // VoLTE_Stack_IPSec_Encry_Algo_e
+ char integrity_algo; // VoLTE_Stack_IPSec_Integrity_Algo_e
+ char padding[2];
+
+ char ck[256];
+ char ik[256];
+} VoLTE_Event_IPSec_Policy_Add_Ind_t;
+
+typedef struct _VoLTE_Event_IPSec_Policy_Delete_Ind {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_uint64 ua_id;
+ char index;
+ char padding[3];
+} VoLTE_Event_IPSec_Policy_Delete_Ind_t;
+
+typedef struct _VoLTE_Event_IMS_HIF_Data {
+ PEER_BUFF_HDR
+ kal_int32 msg_type;
+ kal_int32 len;
+ kal_int32 flag;
+ kal_int32 acct_id;
+ kal_int32 ua_type;
+ kal_char data[0];
+} VoLTE_Event_IMS_HIF_Data;
+
+typedef struct _VoLTE_Event_Reg_Dereg_Start_Ap_ {
+ kal_uint32 id;
+} VoLTE_Event_Reg_Dereg_Start_Ap_t;
+
+typedef struct _VoLTE_Event_Reg_Dereg_Start_ {
+ LOCAL_PARA_HDR
+ kal_uint32 id;
+ kal_uint64 ua_id; // reg client information
+} VoLTE_Event_Reg_Dereg_Start_t;
+
+typedef struct _VoLTE_Event_Reg_Capability {
+ LOCAL_PARA_HDR
+ kal_int32 id; // account id
+ kal_uint64 ua_id; // reg client information
+ kal_int32 type; // refer to ::VoLTE_Event_Capability_Type_e
+ kal_char capability[VOLTE_MAX_REG_CAPABILITY_LENGTH]; // data
+ kal_int32 rat_type; // RAT type, refer to ::VoLTE_Event_Network_Type_e
+} VoLTE_Event_Reg_Capability_t;
+
+typedef struct _VoLTE_Event_Presence_Unpublish {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 data;
+ kal_uint64 ua_id; // reg client information
+} VoLTE_Event_Presence_Unpublish_t;
+
+enum VoLTE_Event_Reset_IMS_Reg_Throttling_e{
+ VoLTE_Event_Reset_IMS_Reg_Throttling_Default = 0,
+ VoLTE_Event_Reset_IMS_Reg_Throttling_via_IMC= 1,
+ VoLTE_Event_Reset_IMS_Reg_Throttling_IP_Change = 2,
+ VoLTE_Event_Reset_IMS_Reg_Throttling_PCSCF_Not_In_New_PCO = 3,
+ //add here
+ VoLTE_Event_Reset_IMS_Reg_Throttling_Max,
+};
+
+typedef struct _VoLTE_Event_Reset_IMS_Reg_Throttling_Para {
+ LOCAL_PARA_HDR
+ kal_int32 acct_id;
+ kal_int32 cause; /* VoLTE_Event_Reset_IMS_Reg_Throttling_e */
+} VoLTE_Event_Reset_IMS_Reg_Throttling_Para_t;
+
+typedef struct _VoLTE_Event_External_UA_State {
+ LOCAL_PARA_HDR
+ kal_int32 id;
+ kal_char ua_type; // UA type
+ kal_char ua_state; // UA state; 0->disable, 1->enable
+ kal_uint64 ua_id; // reg client information
+} VoLTE_Event_External_UA_State_t;
+
+typedef struct _VoLTE_Event_Reg_Triger_Rereg_Init_Dereg {
+ LOCAL_PARA_HDR
+ kal_int32 id;
+ kal_int32 triger_type; // 1:rereg, 2:init, 3:dereg
+} VoLTE_Event_Reg_Triger_Rereg_Init_Dereg_t;
+
+typedef struct _VoLTE_Event_ACB_Skip_Info {
+ LOCAL_PARA_HDR
+ kal_int32 id; /* reg ua acct id */
+ kal_uint64 ua_id; // reg client information
+} VoLTE_Event_ACB_Skip_Info_t;
+
+/**
+ * @brief inter-task request struct declaraction
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ unsigned int request_id; ///< serial number of inter-task request
+ unsigned int conn_id1; ///< connection id
+ unsigned int conn_id2; ///< connection id
+
+ char data[0];
+
+ //unsigned int nat_port; ///< NAT server port
+ //char user_name[VOIP_STR_USER_INPUT_LEN]; ///< user name
+ //char wan_ip[VOIP_STR_64_LEN]; ///< WAN IP address
+ //char wan_dns[VOIP_STR_64_LEN]; ///< WAN DNS address
+ //char nat_ip[VOIP_STR_SERVER_ADDR_LEN]; ///< NAT server IP or domain name
+ //char bsid_fmt[VOIP_STR_64_LEN]; ///< BSID format
+} siptx_req_struct;
+
+typedef struct {
+ //unsigned char transport; ///< UDP or TCP, define as sip_transport_enum
+ unsigned char ip_protocol; ///< IPv4 or IPv6 or IPv4v6, define as sip_ip_protocol_enum
+ unsigned char is_ipsec; ///< ipsec flag
+ unsigned char is_tcp_on_demand;
+ unsigned char is_enable_force_udp;
+
+ unsigned int keep_alive; ///< keep alive
+ unsigned int keep_alive_mode;
+ unsigned int tcp_keepalive_interval;
+
+ char local_addr[VOLTE_MAX_ADDRESS_LENGTH]; ///< local send/recv address
+ unsigned int local_port; ///< local send/recv port
+
+ char target_addr[VOLTE_MAX_ADDRESS_LENGTH]; ///< target IP or domain name
+ unsigned int target_port; ///< target send/recv port, usually refer to server port
+
+ /* if is_ipsec == 1 */
+ unsigned int ipsec_port_start;
+ unsigned int ipsec_port_end;
+ unsigned int ipsec_port_curr;
+
+ int if_id;
+ int network_id;
+ int sip_dscp;
+ unsigned int sip_soc_priority;
+ unsigned int sip_soc_tcp_mss;
+ int sip_hdr_config;
+ int acct_id;
+
+ unsigned char backup_init_sa;
+ char connect_tcp_before_init_reg;
+ char non_ipsec_reuse_tcp;
+ char stop_sip_bye_retransmission;
+
+ char close_tcp_socket_after_30sec_inactivity;
+ char sip_soc_tcp_congestion_ctrl;
+ char ignore_tcp_disconnect_by_peer;
+ char add_timestamp_to_pcni;
+
+ int sip_bye_retransmit_total_time;
+
+ char icd_decrypt_dump;
+ char stop_err_resp_retx_when_not_needed;
+ unsigned int ignore_missing_sip_headers;
+} siptx_req_create_conn_struct;
+
+/**
+ * @brief inter-task response struct declaraction
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ unsigned int request_id; ///< serial number of of inter-task request
+ unsigned int conn_id1; ///< connection id
+ unsigned int conn_id2; ///< connection id
+ unsigned int result; ///< result
+ char data[0];
+
+ //unsigned short local_port; ///< opened local port
+ //unsigned short target_port; ///< reached target port
+ //char local_ip[VOIP_MAX_IP_SEGEMENT_LEN]; ///< local IP address
+ //char target_ip[VOIP_MAX_IP_SEGEMENT_LEN]; ///< target IP address
+} siptx_resp_struct;
+
+/**
+ * @brief Stack internal indicator struct declaration
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ int conn_id; ///< connection id
+ unsigned int cause; ///< cause
+} siptx_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ unsigned int conn_id; ///< connection id
+ unsigned int max_time; ///< maximum allowed execution time
+} siptx_req_connect_tcp_client_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ unsigned int request_id; ///< serial number of inter-task request
+ unsigned int conn_id1; ///< connection id
+ unsigned int conn_id2; ///< connection id
+ int reset_type; ///< siptc_tcp_client_reset_type_e
+} siptx_req_reset_tcp_struct;
+
+/**
+ * @brief inter-task top-down message struct declaraction
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ int conn_id1; ///< connection id
+ int conn_id2; ///< connection id
+ unsigned int reliable_transmit; ///< transport type
+ unsigned int result; ///< Status Code Constants
+ unsigned int request_id; ///< serial number
+ unsigned int user_data;
+ unsigned int conn_id2_allowed; ///< TRUE if usage of conn_id2 is allowed for transmit
+ void *sipmsg; ///< message struct pointer
+} sip_msg_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ int conn_id;
+ int acct_id;
+ unsigned int request_id;
+ unsigned int user_data;
+ char *via_header; /// via header from sent request
+} sip_sent_via_struct;
+
+
+//*****************************
+//*** UA LEGACY TYPE DEFINE ***
+//*****************************
+
+UA_IMCB_MAP_STRUCT(Notify, req_pcscf_restore) // message: MSG_ID_VOLTE_REQ_PCSCF_RESTORE
+/***** IMS VOPS to UA *****/
+UA_IMCB_MAP_STRUCT(Notify, notify_imsvops_req) /* message: NOTIFY_IMSVOPS_REQ VOLTE_NOITFY_IMSVOPS_REQ */
+
+/***** Reset IMS Reg Throttling Parameter to UA *****/
+UA_IMCB_MAP_STRUCT(Reset_IMS_Reg_Throttling_Para, reset_ims_reg_throttling_para_req) /* message: RESET_IMS_REG_THROTTLING_PARA_REQ MSG_ID_VOLTE_REQ_RESET_IMS_REG_THROTTLING_PARA */
+typedef VoLTE_Event_Reset_IMS_Reg_Throttling_Para_t volte_req_reset_ims_reg_throttling_para_struct;
+
+UA_IMCB_MAP_STRUCT(SRU_Info, ind_sru_info) // message: MSG_ID_VOLTE_IND_SRU_INFO
+
+/***** REG *****/
+/* To UA */
+UA_IMCB_MAP_STRUCT(Reg_Item, req_reg) // message: MSG_ID_VOLTE_REQ_REG
+UA_IMCB_MAP_STRUCT(Reg_Item, req_rereg) // message: MSG_ID_VOLTE_REQ_REREG
+UA_IMCB_MAP_STRUCT(Reg_Item, req_dereg) // message: MSG_ID_VOLTE_REQ_DEREG
+UA_IMCB_MAP_STRUCT(Reg_Capability, req_reg_add_capability) // message: MSG_ID_VOLTE_REQ_REG_ADD_CAPABILITY
+UA_IMCB_MAP_STRUCT(Reg_Capability, req_reg_del_capability) // message: MSG_ID_VOLTE_REQ_REG_DEL_CAPABILITY
+//UA_IMCB_MAP_STRUCT(Condition_Change_Notify, condition_change_notify) // message: MSG_ID_VOLTE_REQ_CONDITION_CHANGE_NOTIFY
+/* from UA */
+UA_IMCB_MAP_STRUCT(Reg_State, ind_reg_state) // message: MSG_ID_VOLTE_IND_REG_STATE
+UA_IMCB_MAP_STRUCT(IPSec_Policy_Add_Ind, ind_reg_ipsec_add) // message: MSG_ID_VOLTE_IND_REG_IPSEC_ADD
+UA_IMCB_MAP_STRUCT(IPSec_Policy_Flush_Ind, ind_reg_ipsec_flush) // message: MSG_ID_VOLTE_IND_REG_IPSEC_FLUSH
+UA_IMCB_MAP_STRUCT(IPSec_Policy_Delete_Ind, ind_reg_ipsec_delete) // message: MSG_ID_VOLTE_IND_REG_IPSEC_DELETE
+UA_IMCB_MAP_STRUCT(Reg_Ems_Mode, ind_reg_ems_mode) // message: MSG_ID_VOLTE_IND_REG_EMS_MODE
+UA_IMCB_MAP_STRUCT(ACB_Skip_Info, acb_skip_info) /* message: MSG_ID_VOLTE_SIPTX_ACB_SKIP_START_IND/MSG_ID_VOLTE_SIPTX_ACB_SKIP_END_IND */
+
+
+
+// ************************************
+// ***** IMS_STACK_MSGID WRAPPING *****
+// ************************************
+
+#define STACK_SIPTX_STACK_ILM_MAP_STRUCT(ilm, ua) \
+ typedef VoLTE_Stack_ ## ua ## _t volte_siptx_ ## ilm ## _struct; \
+
+#define STACK_SIPTX_EVENT_ILM_MAP_STRUCT(ilm, ua) \
+ typedef VoLTE_Event_ ## ua ## _t volte_siptx_ ## ilm ## _struct; \
+
+#define STACK_SIP_SIPTX_ILM_MAP_STRUCT(ilm, ua) \
+ typedef siptx_ ## ua ## _struct sip_ ## ilm ## _struct; \
+
+#define STACK_SIP_STACK_ILM_MAP_STRUCT(ilm, ua) \
+ typedef VoLTE_Stack_ ## ua ## _t sip_ ## ilm ## _struct; \
+
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(create_req, Channel_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(connect_req, Connection_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(send_sipmsg_req, Sip_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(abort_sipmsg_req, Sip_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(reset_tcp_req, Channel_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(start_keep_alive_req, Channel_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(stop_keep_alive_req, Channel_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(call_session_terminated_ind, Sip_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(call_session_started_ind, Sip_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_setup_req, IPSec_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_connect_req, IPSec_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_delete_req, IPSec_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_clear_req, IPSec_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_refresh_req, IPSec_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(create_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(destroy_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(connect_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(disconnect_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(send_sipmsg_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ind_sipmsg_rsp, Sip_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(abort_sipmsg_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(reset_tcp_rsp, Sip_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(start_keep_alive_rsp, Channel_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(stop_keep_alive_rsp, Channel_Info)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(disconnect_ind, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(reg_query_if_em_ts_exist_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_setup_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_connect_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_delete_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_clear_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_change_to_regular_rsp, Result)
+STACK_SIPTX_STACK_ILM_MAP_STRUCT(ipsec_refresh_rsp, Result)
+
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(setting_req, Setting)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(ua_state_ind, UA_State)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_reg_req, Reg_Item)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_rereg_req, Reg_Item)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_dereg_req, Reg_Item)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_network_change_req, Network_Change)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_update_setting_req, Setting)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_add_bind_req, Reg_Item)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_del_bind_req, Reg_Item)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_add_capability_req, Reg_Capability)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_del_capability_req, Reg_Capability)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_get_state_req, Reg_Item)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_reset_req, Reg_Item)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_rat_change_req, Rat_Change)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_restore_req, Reg_Item)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_3gpp_rat_change_req, 3gpp_Rat_Change)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_query_call_state_cnf, List_Current_Call_To_Stack)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_md_lower_layer_err_req, MD_Lower_Layer_Err)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_send_subsribe_req, Reg_Item)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_ip_change_notify_req, IP_Change_Notify)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(geolocation_req_cnf, Geolocation_Info)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_notify_imsvops_req, Notify)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_notify_sip_block_req, Notify)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(presence_unpublish_cnf, Presence_Unpublish)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_irat_without_ip_change_req, iRat_without_IP_Change)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_notify_conf_subsc_req, Notify)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_ff00h_update_req, FF00H_Update)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_e911_e2_timeout_req, Reg_Item)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_digitline_req, ATCmd_Relay)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(logging_event_notify_req, Logging_Event_Notify)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_3gpp_oos_ind_req, 3gpp_OOS_Ind)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_pcscf_restore_req, Notify)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_ps_data_off_req, PS_DATA_OFF_Req)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_call_status_ind, List_Current_Call_To_Stack)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_state_ind, Reg_State)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_query_state_ind, Query_State)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_update_plani_time, Update_PLANI_Time)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(ems_mode_ind, Reg_Ems_Mode)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_notify_done_ind, Reg_Notify_Done)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_cancel_sip_block_ind, Notify)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_dereg_start_ind, Reg_Dereg_Start)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_notify_conf_subsc_ind, Notify)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(sru_info_ind, SRU_Info)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(atcmd_relay_ind, ATCmd_Relay)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(external_ua_state, External_UA_State)
+STACK_SIPTX_EVENT_ILM_MAP_STRUCT(reg_condition_change_notify_req, Condition_Change_Notify)
+
+typedef int volte_siptx_update_rcs_status_req_struct;
+typedef VoLTE_AutoTesting_Info_t volte_siptx_auto_testing_id_update_req_struct;
+typedef siptx_req_struct volte_siptx_ipsec_change_to_regular_req_struct;
+typedef VoLTE_Event_IPSec_Policy_Flush_Ind_t volte_ipsec_policy_flush_ind_struct;
+typedef VoLTE_Event_IPSec_Policy_Add_Ind_t volte_ipsec_policy_add_ind_struct;
+typedef VoLTE_Event_IPSec_Policy_Delete_Ind_t volte_ipsec_policy_delete_ind_struct;
+typedef VoLTE_Event_IMS_HIF_Data volte_send_to_ims_hif_struct;
+typedef VoLTE_Event_IMS_HIF_Data volte_recv_from_ims_hif_struct;
+
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(create_conn_req, req_create_conn)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(delete_conn_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(delete_conn_obj_req_rsp, resp)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(abort_msg_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(setup_ipsec_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(delete_ipsec_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(connect_ipsec_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(refresh_ipsec_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_t1_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_t2_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_t4_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(clear_ipsec_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(connect_tcp_client_req, req_connect_tcp_client)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(record_timestamp_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(delete_conn_soc_fd_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(delete_conn_obj_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(reset_tcp_client_req, req_reset_tcp)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(setup_ipsec_change_to_regular, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_f_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(start_keep_alive_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(stop_keep_alive_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_a_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_b_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_c_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_d_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_e_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_g_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_h_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_i_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_j_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_k_timer_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(dbg_setting_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(query_if_em_ts_exist, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_b_timer_stop_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(check_reg_contact_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(record_cell_info_age_timestamp_req, req)
+STACK_SIP_SIPTX_ILM_MAP_STRUCT(modify_emc_cits_protect_timer_req, req)
+
+STACK_SIP_STACK_ILM_MAP_STRUCT(create_conn_rsp, Result)
+typedef siptx_resp_struct sip_delete_conn_rsp_struct;
+typedef sip_msg_req_struct sip_recv_msg_ind_struct;
+STACK_SIP_STACK_ILM_MAP_STRUCT(delete_conn_ind, Result)
+STACK_SIP_STACK_ILM_MAP_STRUCT(setup_ipsec_rsp, Result)
+STACK_SIP_STACK_ILM_MAP_STRUCT(delete_ipsec_rsp, Result)
+STACK_SIP_STACK_ILM_MAP_STRUCT(connect_ipsec_rsp, Result)
+STACK_SIP_STACK_ILM_MAP_STRUCT(clear_ipsec_rsp, Result)
+STACK_SIP_STACK_ILM_MAP_STRUCT(refresh_ipsec_rsp, Result)
+STACK_SIP_STACK_ILM_MAP_STRUCT(delete_conn_soc_fd_req_rsp, Result)
+STACK_SIP_STACK_ILM_MAP_STRUCT(reset_tcp_client_req_rsp, Result)
+STACK_SIP_STACK_ILM_MAP_STRUCT(ipsec_change_to_regular_req_rsp, Result)
+STACK_SIP_STACK_ILM_MAP_STRUCT(query_if_em_ts_exist_rsp, Result)
+
+typedef sip_msg_req_struct sip_send_msg_req_struct;
+
+#endif /* _IMS_STACK_STRUCT_H_ */
diff --git a/mcu/protocol/interface/ims/imsm_ddm_struct.h b/mcu/protocol/interface/ims/imsm_ddm_struct.h
new file mode 100644
index 0000000..f2d33ca
--- /dev/null
+++ b/mcu/protocol/interface/ims/imsm_ddm_struct.h
@@ -0,0 +1,62 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _IMSM_DDM_STRUCT_H
+#define _IMSM_DDM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+typedef enum {
+ EMERGENCY_IND_BEARER_UNKNOWN_SERVICE = 0,
+ EMERGENCY_IND_BEARER_NOT_FOR_EMERGENCY_SERVICE,
+ EMERGENCY_IND_BEARER_FOR_EMERGENCY_SERVICE
+} emergency_ind_enum;
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 index;
+ kal_uint8 contents[AT_EGPCORDP_CONTENTS_STRING_LEN];
+ kal_uint32 cid;
+}imsm_ddm_pco_update_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 emergency_ind;
+ kal_uint32 cid;
+}imsm_ddm_fallback_ipv4_ind_struct;
+
+#endif
diff --git a/mcu/protocol/interface/ims/imsm_imc_struct.h b/mcu/protocol/interface/ims/imsm_imc_struct.h
new file mode 100644
index 0000000..2e07f6f
--- /dev/null
+++ b/mcu/protocol/interface/ims/imsm_imc_struct.h
@@ -0,0 +1,100 @@
+/*****************************************************************************
+* 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#if 0
+#ifndef _IMSM_IMC_STRUCT_H
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif /* _IMSM_IMC_STRUCT_H */
+/* under construction !*/
+#endif
diff --git a/mcu/protocol/interface/ims/imsm_imcb_struct.h b/mcu/protocol/interface/ims/imsm_imcb_struct.h
new file mode 100644
index 0000000..f4544b4
--- /dev/null
+++ b/mcu/protocol/interface/ims/imsm_imcb_struct.h
@@ -0,0 +1,908 @@
+/*****************************************************************************
+* 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef _IMSM_IMCB_STRUCT_H
+#define _IMSM_IMCB_STRUCT_H
+
+#include "ps_public_enum.h"
+#include "sim_public_enum.h"
+#include "ims_common_def.h"
+//#include "imcb_imc_struct.h"
+
+#define IMC_IPV4V6_ADDR_LEN 0x14
+#define IMC_MAX_APN_LEN 100
+#define IMC_MAX_CONCATENATED_NUM 11
+#define IMC_MAXIMUM_NW_IF_NAME_STRING_SIZE (IMC_MAX_IF_NAME_LENGTH)
+#define IMC_MAXIMUM_CONTEXTS_ACTIVATED_FOR_ONE_TIME_SINGLE_APN_ACTIVATION 2
+#define IMC_MAX_SSID_LEN 32 // SSID length is in at maximum 32 octets
+
+/* Common define constant */
+
+#define IMC_MAX_PACKET_FILTER_NUM MAX_NUM_OF_SUPPORTED_PF_PER_PDUS
+#define IMC_MAX_PACKET_FILTER_PRECED_NUM 256
+#define IMC_MAX_REMOTE_ADDR_AND_MASK_LEN 32
+#define IMC_MAX_TFT_LEN 255
+#define IMC_PACKET_FILTER_ID_LEN 1
+
+/* Packet filter component length (octet) define */
+
+#define IMC_IPV4_REMOTE_ADDR_AND_MASK_LEN 8
+#define IMC_IPV6_REMOTE_ADDR_AND_MASK_LEN 32
+#define IMC_PROTOCOL_ID_NEXT_HEADER_LEN 1
+#define IMC_SINGLE_LOCAL_PORT_LEN 2
+#define IMC_LOCAL_PORT_RANGE_LEN 4
+#define IMC_SINGLE_REMOTE_PORT_LEN 2
+#define IMC_REMOTE_PORT_RANGE_LEN 4
+#define IMC_SECURITY_PARAMETER_ID_LEN 4
+#define IMC_TYPE_OF_SERVICE_TRAFFIC_CLASS_AND_MASK_LEN 2
+#define IMC_FLOW_LABEL_LEN 3
+
+
+/* Parameter list define */
+
+#define IMC_MAX_AUTHTOKEN_FLOWID_NUM 4 // temp max num (TS 24.008 10.5.162 does not restrict its max number...)
+#define IMC_MAX_PARAMETER_LIST_NUM 16
+#define IMC_MAX_PARAMETER_LIST_SIZE 255
+#define IMC_MAX_AUTHORIZATION_TOKEN_LEN 16 // temp max length (it could be very long...)
+#define IMC_MAX_FLOW_IDENTIFIER_NUM 4 // temp max num (TS 24.008 10.5.162 does not restrict its max number...)
+#define IMC_FLOW_IDENTIFIER_LEN 4
+
+
+/* Temp define constant */
+
+#define IMC_MAX_PF_COMP_TYPE_NUM 15
+#define IMC_MAX_PACKET_FILTER_CONTENT_LEN 47
+
+
+/* define constants for BITMAP */
+
+#define IMC_BMP_NONE 0x00000000
+#define IMC_BMP_V4_ADDR 0x00000001
+#define IMC_BMP_V6_ADDR 0x00000002
+#define IMC_BMP_PROTOCOL 0x00000004
+#define IMC_BMP_LOCAL_PORT_SINGLE 0x00000008
+#define IMC_BMP_LOCAL_PORT_RANGE 0x00000010
+#define IMC_BMP_REMOTE_PORT_SINGLE 0x00000020
+#define IMC_BMP_REMOTE_PORT_RANGE 0x00000040
+#define IMC_BMP_SPI 0x00000080
+#define IMC_BMP_TOS 0x00000100
+#define IMC_BMP_FLOW_LABEL 0x00000200
+#define IMC_BMP_EMPTY_TCP_ACK 0x80000000
+#define IMC_BMP_IP_FRAGMENT 0x40000000
+
+/* WFC */
+#define IMC_QCI_UNSPEC (0xFF)
+
+/* define ip_type for irat_without_ip_change */
+#define IMC_IRAT_IP_TYPE_NONE 0x00
+#define IMC_IRAT_IP_TYPE_V4_NOT_CHANGE 0x01
+#define IMC_IRAT_IP_TYPE_V6_NOT_CHANGE 0x02
+#define IMC_IRAT_IP_TYPE_V4V6_NOT_CHANGE 0x03
+
+/* PDN retry */
+#define IMC_PDN_RETRY_SUGGESTION_TIMER_INFINITE 0xFFFFFFFF
+
+/**********************************************************************/
+
+typedef enum{
+ IMC_INTERNAL_PS_CAUSE_NONE = 0,
+
+ //// Add new cause HERE!
+ //IMC_INTERNAL_PS_CAUSE_xxx_START = ,
+
+ IMC_INTERNAL_PS_CAUSE_END,
+} imc_internal_ps_cause_enum;
+
+typedef enum{
+ IMC_EXTEND_PS_CAUSE_NONE = 0,
+
+ //// Add new cause HERE!
+ //IMC_EXTEND_PS_CAUSE_xxx_START = ,
+
+ IMC_EXTEND_PS_CAUSE_END,
+} imc_extend_ps_cause_enum;
+
+
+
+typedef enum{
+ IMC_PDP_ADDR_NONE_ADDR_TYPE = 0X0,
+ IMC_PDP_ADDR_IPV4_ADDR_TYPE = 0X21,
+ IMC_PDP_ADDR_IPV6_ADDR_TYPE = 0X57,
+ IMC_PDP_ADDR_IPV4V6_ADDR_TYPE = 0X8D,
+ IMC_PDP_ADDR_NULL_PDP_ADDR_TYPE = 0X03 /* This is added incase if no pdpaddrtype is * specified */
+} imc_pdp_addr_type_enum;
+
+typedef enum{
+ IMC_CONCATENATED_MSG_TYPE_NONE = 0,
+ IMC_CONCATENATED_MSG_TYPE_ACTIVATION = 1,
+ IMC_CONCATENATED_MSG_TYPE_MODIFICATION = 2,
+ /* WFC */
+ IMC_CONCATENATED_MSG_TYPE_DELETION = 3,
+ IMC_CONCATENATED_MSG_TYPE_END
+} imc_concatenated_msg_type_enum;
+
+/* enum declaration */
+
+typedef enum{
+ IMC_PF_DIRECTION_PRE_REL7_TFT = 0x00,
+ IMC_PF_DIRECTION_UL_ONLY = 0x01,
+ IMC_PF_DIRECTION_DL_ONLY = 0x02,
+ IMC_PF_DIRECTION_BIDIRECTION = 0x03,
+} imc_pf_direction_enum;
+
+typedef enum{
+ IMC_TFT_OPCODE_SPARE = 0, // (0x00) Spare
+ IMC_TFT_OPCODE_CREATE_NEW_TFT = 1, // (0x01) Create new TFT
+ IMC_TFT_OPCODE_DELETE_TFT = 2, // (0x02) Delete existing TFT
+ IMC_TFT_OPCODE_ADD_PF = 3, // (0x03) Add packet filters to existing TFT
+ IMC_TFT_OPCODE_REPLACE_PF = 4, // (0x04) Replace packet filters in existing TFT
+ IMC_TFT_OPCODE_DELETE_PF = 5, // (0x05) Delete packet filters from existing TFT
+ IMC_TFT_OPCODE_NOTFT_OP = 6, // (0x06) No TFT operation
+ IMC_TFT_OPCODE_RESERVED // (0x07) Reserved
+} imc_tft_operation_enum;
+
+typedef enum {
+ IMC_PROGRESS_NOTIFY_CALL_WAITING = 0, // Not to IMSA
+ IMC_PROGRESS_NOTIFY_CALL_BARRING = 1, // Not to IMSA
+ IMC_PROGRESS_NOTIFY_CALL_FORWARDING = 2, // Not to IMSA
+ IMC_PROGRESS_NOTIFY_MWI = 258, // To IMSA
+ IMC_PROGRESS_NOTIFY_CONFERENCE = 257, // To IMSA
+ IMC_PROGRESS_NOTIFY_DIALOG = 256 // dummy
+} imc_ss_progress_notify_service_enum;
+
+
+/* IMS Packet Filter ID macros */
+#define IMC_QRI_NW_PFI_TO_PFID(_qri_, _nw_pfi_) (imcf_uint16)(((_qri_&0xFF)<<8) | (_nw_pfi_&0xFF))
+#define IMC_NW_PFI_TO_PFID(_pfi_) (imcf_uint16)(_pfi_&0xFFFF)
+#define IMC_PFID_GET_NW_PFI(_pfid_) (imcf_uint8)((_pfid_>>8)&0xFF)
+#define IMC_PFID_GET_QRI(_pfid_) (imcf_uint8)(_pfid_&0xFF)
+
+/***********************************************************************************/
+
+typedef struct {
+ imcf_uint8 qci;
+ imcf_uint8 gbr_present;
+ imcf_uint8 mbr_present;
+ imcf_uint8 pad[1];
+
+ imcf_uint64 dl_gbr;
+ imcf_uint64 ul_gbr;
+ imcf_uint64 dl_mbr;
+ imcf_uint64 ul_mbr;
+} imc_qos_struct;
+
+/* IPv4 remote address and subnet mask struct (WORD(4-byte) array, used by UPCM only) */
+typedef struct {
+ imcf_uint32 addr;
+ imcf_uint32 mask;
+} imc_remote_v4addr_struct;
+
+
+/* IPv6 remote address and subnet mask struct (WORD(4-byte) array, used by UPCM only) */
+typedef struct {
+ imcf_uint32 addr[4];
+ imcf_uint32 mask[4];
+} imc_remote_v6addr_struct;
+
+
+/* Packet filter struct for SM/ESM, TCM, L4C, & UPCM */
+typedef struct {
+ imcf_uint16 id; // Packet filter index
+ imcf_uint8 precedence; // Packet filter evaluation precedence index, more less more high (0~255)
+ imc_pf_direction_enum direction; // Direction of the packet filter
+ imcf_uint16 nw_id; // network assigned packet Filter ID; QRI+PFI, set with IMC_QRI_NW_PFI_TO_PFID
+
+ imcf_uint32 bitmap; // Used to indicate which of the following field exist
+
+ imcf_uint8 remote_addr_and_mask[IMC_MAX_REMOTE_ADDR_AND_MASK_LEN];
+ /* ----------------- Remote address and subnet mask (byte array) ----------------*
+ * *
+ * IPv4: addr = 0 ~ 3 *
+ * mask = 4 ~ 7 *
+ * <NOTE1: Length of IPv4 addr + mask = IMC_IPV4_REMOTE_ADDR_AND_MASK_LEN(8)> *
+ * *
+ * IPv6: addr = 0 ~ 15 *
+ * mask = 16 ~ 31 *
+ * <NOTE2: Length of IPv6 addr + mask = IMC_IPV6_REMOTE_ADDR_AND_MASK_LEN(32)> *
+ * *
+ * *
+ * <NOTE3: IMC_MAX_REMOTE_ADDR_AND_MASK_LEN is set as *
+ * IMC_IPV6_REMOTE_ADDR_AND_MASK_LEN> *
+ * *
+ * ------------------------------------------------------------------------------*
+ */
+
+ imcf_uint8 protocol_nxt_hdr; // Protocol number (IPv4) / Next header (IPv6)
+ imcf_uint8 pad2[3];
+
+ imcf_uint16 local_port_low; // Single local port / Local port range (low)
+ imcf_uint16 local_port_high; // (N/A) equal to low / Local port range (high)
+
+ imcf_uint16 remote_port_low; // Single remote port / Remote port range (low)
+ imcf_uint16 remote_port_high; // (N/A) equal to low / Remote port range (high)
+
+ imcf_uint32 spi; // IPsec security parameter index
+
+ imcf_uint8 tos; // Type of service (IPv4) / Traffic class (IPv6)
+ imcf_uint8 tos_msk; // Type of service mask (IPv4) / Traffic class mask (IPv6)
+ imcf_uint8 pad3[2];
+
+ imcf_uint32 flow_label; // Flow label (IPv6)
+} imc_pkt_filter_struct;
+
+
+typedef struct {
+ imcf_uint8 auth_token_len; // length of authorization token
+ imcf_uint8 pad[3];
+
+ imcf_uint8 auth_token[IMC_MAX_AUTHORIZATION_TOKEN_LEN]; // authorization token
+
+ imcf_uint8 flow_id_num; // number of flow identifiers
+ imcf_uint8 pad2[3];
+
+ imcf_uint8 flow_id_list[IMC_MAX_FLOW_IDENTIFIER_NUM][IMC_FLOW_IDENTIFIER_LEN];
+ /* flow identifier list
+ * (NOTE: an authtoken can follow one or more flow identifiers,
+ * and each flow identifier is IMC_FLOW_IDENTIFIER_LEN (4 byte) long)
+ */
+} imc_tft_authtoken_flowid_struct;
+
+
+typedef struct {
+ imcf_uint16 linked_pf_id_num; // Number of linked packet filter IDs carried in linked_pf_id_list
+ imcf_uint8 pad[2];
+
+ imcf_uint16* linked_pf_id_list; // Dynamicaly allocated Packet filter ID list, receiver must free
+ /* Linked packet filter ID list
+ * (NOTE1: Used to indicate to NW the change for which service applies to)
+ * (NOTE2: Will appear when, 1. GBR changes, 2. TFT operation = 'Add packet filters to existing TFT')
+ */
+
+ imcf_uint8 authtoken_flowid_num; // Number of authtoken_flowid group in authtoken_flowid_list[]
+ imcf_uint8 pad2[3];
+
+ imc_tft_authtoken_flowid_struct authtoken_flowid_list[IMC_MAX_AUTHTOKEN_FLOWID_NUM]; // Authorization and flow identifier group list
+} imc_tft_parameter_list_struct;
+
+/* TFT struct for SM/ESM, TCM, L4C */
+typedef struct {
+ /* only used for MO initial */
+ imc_tft_operation_enum tft_opcode; // TFT operation code
+ imcf_uint8 ebit_flag; // Indicate whether parameter list exists
+
+ /* should be fill fully and locate to indexing by (pf->id -1)*/
+ /* to indicate which one is delete */
+ imcf_uint16 pf_count; // Number of packet filters in pf_list
+ imc_pkt_filter_struct* pf_list; // Dynamicaly allocated Packet filter list, receiver must free
+ imc_tft_parameter_list_struct parameter_list; // Parameter list
+} imc_tft_info_struct;
+
+
+/***************************/
+/* Primary Bearer Activation */
+/***************************/
+typedef struct {
+ imcf_uint8 context_id;
+ imcf_uint8 primary_context_id;
+ imcf_bid_t bid; /* EBI or PSI|QFI */
+ imcf_uint8 qos_mod; //boolean
+
+ imc_access_rat_type_enum rat_type;
+
+ imc_qos_struct nw_assigned_qos;
+
+ imc_concatenated_msg_type_enum msg_type;
+ imcf_uint8 tft_mod; //boolean
+ imcf_uint8 signaling_flag;
+ imcf_uint8 pcscf_mod;
+
+ imcf_uint8 psdataoff_pdngw_support;
+
+ imc_tft_info_struct nw_assigned_tft;
+
+ imc_pcscf_list_struct pcscf_list;
+
+ imcf_uint32 mtu;
+} imc_single_concatenated_msg_struct;
+
+typedef enum {
+ IMC_PDN_ACT_PORGRESSING_NOTIFY_TYPE_NONE = 0,
+ IMC_PDN_ACT_PORGRESSING_NOTIFY_TYPE_V4V6_FALLBACK = 1,
+ IMC_PDN_ACT_PORGRESSING_NOTIFY_TYPE_END,
+} imc_pdn_act_progressing_notify_type_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_emergency_ind_enum emergency_ind;
+ imcf_uint8 progressing_notify_type; //imc_pdn_act_progressing_notify_type_enum
+ imcf_uint8 pad[2];
+} imsm_imcb_pdn_act_progressing_notify_req_struct,
+imsa_imcb_pdn_act_progressing_notify_req_struct;
+
+typedef struct {
+
+ imc_pdp_addr_type_enum pdp_addr_type;
+ /**
+ * Length of PDP Address Contents:
+ * - If the pdp_addr_type == IPV4, this field contains IPV4 address
+ * - If the pdp_addr_type == IPV6, this field contains IPV6 address,
+ * - If the pdp_addr_type == IPV4v6, this field contains IPV4 address in pdp_addr[0]~pdp_addr[3], IPV6 address in pdp_addr[4]~pdp_addr[19]
+ * .
+ */
+ imcf_uint8 pad2[3];
+
+ imc_single_concatenated_msg_struct main_context;
+
+ /** for 4G ESM concatenated message scenario. */
+ imcf_uint8 num_of_concatenated_contexts;
+ imcf_uint8 pad3[3];
+ /** for 4G ESM concatenated message scenario. */
+ imc_single_concatenated_msg_struct concatenated_context[IMC_MAX_CONCATENATED_NUM];
+
+} imc_pdn_context_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 transaction_id;
+ /**
+ IMS module need to know how many context activated for an APN.
+ * - 2 : IPv4 in array first place, IPv6 in array second place. or IPv6 in array first place, IPv4 in array second place
+ * - 1 : IPv4 in array first place. or IPv6 in array first place. or IPv4v6 in array first place
+ * - 0 : Abnormal, you can assert it.
+ * .
+ **/
+ imcf_uint8 count; // 1 or 2
+ imcf_uint8 pad[2];
+
+ /* M-only */
+ imcf_uint8 ssid[IMC_MAX_SSID_LEN]; /* in string format */
+
+ imc_pdn_context_struct contexts[IMC_MAXIMUM_CONTEXTS_ACTIVATED_FOR_ONE_TIME_SINGLE_APN_ACTIVATION];
+} imsm_imcb_pdn_act_ack_rsp_struct,
+imsa_imcb_pdn_act_ack_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 transaction_id;
+ imc_ps_cause_enum ps_cause;
+ imcf_uint8 is_suggestion_timer_present;
+ imcf_uint8 pad;
+ imcf_uint32 extend_ps_cause; //imc_extend_ps_cause_enum
+ imcf_uint32 internal_ps_cause; //imc_internalps_cause_enum
+ /* suggestion timer from IWLAN
+ 0 reserved for backward compatible
+ 0xFFFF used for retry until next power cycle
+ others retry follows the suggestion timer (sec)
+ */
+ imcf_uint32 suggestion_timer;
+} imsm_imcb_pdn_act_rej_rsp_struct,
+imsa_imcb_pdn_act_rej_rsp_struct;
+
+/***************************/
+/* Secondary Bearer Activation */
+/***************************/
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 transaction_id;
+ imc_ps_cause_enum ps_cause;
+ imcf_uint8 pad[2];
+
+ imc_single_concatenated_msg_struct main_context;
+
+ imcf_uint8 num_of_concatenated_contexts;
+ imcf_uint8 pad2[3];
+
+ imc_single_concatenated_msg_struct concatenated_context[IMC_MAX_CONCATENATED_NUM];
+
+ imcf_uint32 extend_ps_cause; //imc_extend_ps_cause_enum
+ imcf_uint32 internal_ps_cause; //imc_internalps_cause_enum
+} imsm_imcb_dedicated_bearer_act_ack_rsp_struct,
+imsa_imcb_dedicated_bearer_act_ack_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 transaction_id;
+ imc_ps_cause_enum ps_cause;
+ imcf_uint8 num_of_concatenated_contexts;
+ imcf_uint8 pad[1];
+
+ imc_single_concatenated_msg_struct concatenated_context[IMC_MAX_CONCATENATED_NUM];
+
+ imcf_uint32 extend_ps_cause; //imc_extend_ps_cause_enum
+ imcf_uint32 internal_ps_cause; //imc_internalps_cause_enum
+} imsm_imcb_dedicated_bearer_act_rej_rsp_struct,
+imsa_imcb_dedicated_bearer_act_rej_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_ps_cause_enum ps_cause;
+ imcf_uint8 pad[3];
+
+ imc_single_concatenated_msg_struct main_context;
+
+ imcf_uint8 num_of_concatenated_contexts;
+ imcf_uint8 pad2[3];
+
+ imc_single_concatenated_msg_struct concatenated_context[IMC_MAX_CONCATENATED_NUM];
+
+ imcf_uint32 extend_ps_cause; //imc_extend_ps_cause_enum
+ imcf_uint32 internal_ps_cause; //imc_internalps_cause_enum
+} imsm_imcb_dedicated_bearer_act_notify_req_struct,
+imsa_imcb_dedicated_bearer_act_notify_req_struct;
+
+/***************************/
+/* DEACT message structure */
+/***************************/
+typedef struct {
+ LOCAL_PARA_HDR
+ /** Because the IMS modules need to **link the relationship between ind and ack_rsp/rej_rsp**, it need to keep a transaction identifier between itself and x_module. */
+ imcf_uint8 transaction_id;
+ imc_ps_cause_enum ps_cause;
+ imcf_uint8 pad[2];
+
+ imcf_uint32 extend_ps_cause; //imc_extend_ps_cause_enum
+ imcf_uint32 internal_ps_cause; //imc_internalps_cause_enum
+} imsm_imcb_deact_rej_rsp_struct,
+imsa_imcb_deact_rej_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 transaction_id;
+ imcf_uint8 context_id;
+ imcf_uint8 context_id_is_valid;
+ imcf_uint8 pad;
+} imsm_imcb_deact_ack_rsp_struct,
+imsa_imcb_deact_ack_rsp_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 context_id;
+ imc_ps_cause_enum ps_cause;
+ /** When secondary context is deactivated. The IMS modules need to know if the secondary context's primary context is also deactivated. */
+ /* discuss with Wubai */
+ //imcf_uint8 if_primary_context_also_deactivated;
+ imcf_uint8 pad[2];
+
+ imcf_uint32 extend_ps_cause; //imc_extend_ps_cause_enum
+ imcf_uint32 internal_ps_cause; //imc_internalps_cause_enum
+} imsm_imcb_deact_notify_req_struct,
+imsa_imcb_deact_notify_req_struct;
+
+/***************************/
+/* Modify message structure */
+/***************************/
+
+typedef imsm_imcb_dedicated_bearer_act_ack_rsp_struct imsm_imcb_modify_ack_rsp_struct;
+typedef imsm_imcb_modify_ack_rsp_struct imsa_imcb_modify_ack_rsp_struct;
+typedef imsm_imcb_dedicated_bearer_act_rej_rsp_struct imsm_imcb_modify_rej_rsp_struct;
+typedef imsm_imcb_modify_rej_rsp_struct imsa_imcb_modify_rej_rsp_struct;
+typedef imsm_imcb_dedicated_bearer_act_notify_req_struct imsm_imcb_modify_notify_req_struct;
+typedef imsm_imcb_modify_notify_req_struct imsa_imcb_modify_notify_req_struct;
+
+#if 1 /* WFC */
+typedef struct {
+ LOCAL_PARA_HDR
+
+ imc_single_concatenated_msg_struct changed_context[IMC_MAX_CONCATENATED_NUM];
+
+ /* M-only */
+ imcf_uint8 trg_ssid[IMC_MAX_SSID_LEN]; /* in string format */
+
+ imcb_pdn_req_type_enum req_type;
+ imcb_ip_change_type_enum ip_change_type;
+} imsm_imcb_pdn_bearer_update_notify_req_struct,
+imsa_imcb_pdn_bearer_update_notify_req_struct;
+
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_access_rat_type_enum source_rat_type;
+ imc_access_rat_type_enum target_rat_type;
+ imc_emergency_ind_enum emergency_indication;
+} imsm_imcb_handover_start_notify_req_struct,
+imsa_imcb_handover_start_notify_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_access_rat_type_enum source_rat_type;
+ imc_access_rat_type_enum target_rat_type;
+ imcf_uint8 is_success;
+ imc_emergency_ind_enum emergency_indication;
+ imcf_uint8 pad[3];
+} imsm_imcb_handover_stop_notify_req_struct,
+imsa_imcb_handover_stop_notify_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_access_rat_type_enum source_rat_type;
+ imc_access_rat_type_enum target_rat_type;
+ imc_emergency_ind_enum emergency_indication;
+
+} imsm_imcb_handover_ip_ready_notify_req_struct,
+imsa_imcb_handover_ip_ready_notify_req_struct;
+#endif
+
+/***************************/
+/* DHCP message structure */
+/***************************/
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 context_id;
+ imcf_uint8 pad[3];
+ imcf_int32 network_id; /* drop on 93MD */
+ /** The IMS modules need to know if IPv6 address acquisition success or fail. */
+ /* discuss with Wubai */
+ //imc_result_enum result;
+ /** Document need TODO. */
+ imcf_uint8 global_ipv4_address[IMC_IPV4_ADDR_LEN];
+ /** Document need TODO. */
+ char nw_if_name[IMC_MAXIMUM_NW_IF_NAME_STRING_SIZE]; /* CCMNIx */
+ /* PDN device name is necessary when nw_if_name is empty */
+ char pdn_dev_name[IMC_MAXIMUM_NW_IF_NAME_STRING_SIZE]; /* CCMNIx */
+ imcb_pdn_req_type_enum req_type;
+} imsm_imcb_update_ipv4_global_addr_notify_req_struct,
+imsa_imcb_update_ipv4_global_addr_notify_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 context_id;
+ imcf_uint8 pad[3];
+ imcf_int32 network_id; /* drop on 93MD */
+ /** The IMS modules need to know if IPv6 address acquisition success or fail. */
+ /* discuss with Wubai */
+ //imc_result_enum result;
+ /** When Android finish **SLAAC(Receive Router Adv)**, it will inform IMS modules about the IPv6 **global address**. */
+ imcf_uint8 global_ipv6_address[IMC_IPV6_ADDR_LEN];
+ /** When Android finish **SLAAC(Receive Router Adv)**, it will inform IMS modules about the IPv6 address' **network interface**. */
+ char nw_if_name[IMC_MAXIMUM_NW_IF_NAME_STRING_SIZE]; /* CCMNIx */
+ /* PDN device name is necessary when nw_if_name is empty */
+ char pdn_dev_name[IMC_MAXIMUM_NW_IF_NAME_STRING_SIZE]; /* CCMNIx */
+ imcb_pdn_req_type_enum req_type;
+} imsm_imcb_update_ipv6_global_addr_notify_req_struct,
+imsa_imcb_update_ipv6_global_addr_notify_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint8 context_id;
+ imc_access_rat_type_enum source_rat_type;
+ imc_access_rat_type_enum target_rat_type;
+ /*
+ 0 NONE
+ 1 V4_NOT_CHANGE
+ 2 V6_NOT_CHANGE
+ 3 V4V6_NOT_CHANGE
+ */
+ imcf_uint8 ip_type;
+} imsm_imcb_irat_without_ip_change_req_struct,
+imsa_imcb_irat_without_ip_change_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imcf_uint16 index;
+ imcf_uint16 value;
+} imsm_imcb_pco_update_req_struct,
+imsa_imcb_pco_update_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_emergency_ind_enum emergency_indication;
+ imcf_uint8 cause; //reserved
+ imcf_uint8 pad[2];
+} imsm_imcb_reset_suggestion_timer_req_struct,
+imsa_imcb_reset_suggestion_timer_req_struct;
+
+
+// ***************
+// ** IMSM part **
+// ***************
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ imcf_uint32 trans_id;
+ imcf_bool is_emergency;
+ imcf_uint32 pcscf_reselect_flag;
+ imcf_uint32 access_rat_type;
+
+}imcb_imsm_pdn_act_req_struct,
+imsa_imcb_pdn_act_ind_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef enum
+{
+ IMSM_DEACT_CAUSE_DONT_CARE = 0,
+ IMSM_DEACT_CAUSE_DEACT_NORMAL = 1,
+ IMSM_DEACT_CAUSE_DEACT_RA_INITIAL_ERROR = 2,
+ IMSM_DEACT_CAUSE_DEACT_NO_PCSCF = 3,
+ IMSM_DEACT_CAUSE_DEACT_RA_REFRESH_ERROR = 4,
+ IMSM_DEACT_CAUSE_DEACT_RA_ERROR = 5,
+ IMSM_DEACT_CAUSE_USER_FORCE_TO_LOCAL_RELEASE = 6,
+ IMSM_DEACT_CAUSE_AOSP_SHUTDOWN = 7,
+ IMSM_DEACT_CAUSE_AOSP_HANDOVER = 8,
+ IMSM_DEACT_CAUSE_APN_CHANGED = 9,
+ IMSM_DEACT_CAUSE_MAX
+} imsm_deact_cause_enum;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ imcf_bool is_abort;
+ imcf_bool context_id_is_valid;
+ imcf_uint8 abort_activate_transaction_id;
+ imcf_uint32 trans_id;
+ imcf_uint32 context_id;
+ imsm_deact_cause_enum cause;
+
+}imcb_imsm_pdn_deact_req_struct,
+imsa_imcb_deact_ind_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ imcf_uint8 transaction_id;
+ imcf_uint8 context_id;
+ imcf_uint8 qos_mod; //boolean
+ imcf_uint8 pad[1];
+
+ imc_qos_struct ue_defined_qos;
+
+ imcf_uint8 tft_mod; //boolean
+ imcf_uint8 pad2[3];
+
+ imc_tft_info_struct ue_defined_tft;
+
+}imcb_imsm_bearer_mod_req_struct,
+imsa_imcb_modify_ind_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ imcf_uint8 transaction_id;
+ imcf_uint8 primary_context_id;
+ imcf_uint8 signaling_flag; /* boolean */
+ imcf_uint8 pcscf_reselect_flag; /* boolean */
+
+ imc_qos_struct ue_defined_qos;
+ imc_tft_info_struct ue_defined_tft;
+
+
+}imcb_imsm_bearer_act_req_struct,
+imsa_imcb_dedicated_bearer_act_ind_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef enum {
+ IMSM_UE_PRRA_FAIL_TYPE_NONE = 0,
+ IMSM_UE_PRRA_FAIL_TYPE_PDN_DEACT_PROCEDURE_INCORRECT = 1,
+ IMSM_UE_PRRA_FAIL_TYPE_BEARER_FSM_STATE_INCORRECT = 2,
+ IMSM_UE_PRRA_FAIL_TYPE_TRANSACTION_FSM_STATE_INCORRECT = 3,
+ IMSM_UE_PRRA_FAIL_TYPE_PDN_DEACT_TIMEOUT = 4,
+ IMSM_UE_PRRA_FAIL_TYPE_PDN_ACT_TIMEOUT = 5, //can save critical logs only, no need to ASSERT
+ IMSM_UE_PRRA_FAIL_TYPE_END,
+} imsm_ue_para_fail_type_enum;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ imcf_uint32 checking_fail_type; //imc_input_msg_para_checking_fail_type_enum
+ imcf_uint32 message_id;
+ imcf_uint32 transaction_id;
+ imcf_uint8 context_id;
+ /*
+ 0 IMCB_BR_FSM_STATE_INACTIVE
+ 1 IMCB_BR_FSM_STATE_ACTIVE
+ */
+ imcf_uint8 expected_bearer_fsm_state; //imcb_bearer_fsm_state_enum
+ /*
+ 0 IMCB_TRANSACTION_STATE_INIT
+ 1 IMCB_TRANSACTION_STATE_ALLOC
+ */
+ imcf_uint8 expected_transaction_fsm_state; //imcb_transaction_state_enum
+ imcf_uint8 pad;
+}imcb_imsm_para_fail_req_struct,
+imsa_imcb_input_msg_para_checking_fail_ind_struct;
+
+#endif /* _IMSM_IMCB_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/imsm_struct.h b/mcu/protocol/interface/ims/imsm_struct.h
new file mode 100644
index 0000000..cb2c86d
--- /dev/null
+++ b/mcu/protocol/interface/ims/imsm_struct.h
@@ -0,0 +1,146 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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:
+ * ---------
+ * imsm_struct.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 07 27 2018 vend_mti_wsd_005
+ * [MOLY00333058] [XCAP] XCAP check-in
+ *
+ * IMSM sends XCAP DNS info
+ *
+ * 06 14 2018 sameer.sethi
+ * [MOLY00333058] [XCAP] XCAP check-in
+ *
+ * IMSM sends XCAP DNS info
+ *
+ * 06 14 2018 sameer.sethi
+ * [MOLY00333058] [XCAP] XCAP check-in
+ *
+ * IMSM sends XCAP DNS info
+ *
+ * 07 26 2017 ke.cheng
+ * [MOLY00265660] [Rose][Bianco][N1]The CMCC can not camp on volte network
+ *
+ * sync the code from R1.MP to UMOLYA
+ *
+ * 04 10 2017 mingchun.cheng
+ * [MOLY00221513] [Gen93] L4 Integration M1 check in
+ * to support SSDS.
+ *
+ ****************************************************************************/
+
+#ifndef _IMSM_STRUCT_H
+#define _IMSM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+#include "netinfo_common_struct.h"
+
+typedef enum {
+ MAPPING_MOD_IMSM = 0,
+ MAPPING_MOD_SIMMNGR = 1,
+ MAPPING_MOD_D2CM = 2,
+ MAPPING_MOD_ATP = 3,
+ MAPPING_MOD_SSDS = 4,
+ MAPPING_MOD_XCAP = 5,
+} mapping_mod_id_enum;
+
+typedef ip_info_struct imsm_ip_info_struct;
+typedef net_info_struct imsm_net_info_struct;
+typedef if_info_struct imsm_if_info_struct;
+
+#define IMSM_REQ_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id;
+
+#define IMSM_CNF_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR \
+ kal_uint32 src_id; \
+ kal_bool is_success; \
+ kal_uint16 err_cause;
+
+#define IMSM_IND_LOCAL_PARA_HDR \
+ LOCAL_PARA_HDR
+
+//request to IMSM
+typedef struct {
+ IMSM_REQ_LOCAL_PARA_HDR
+
+ kal_uint32 trans_id;
+
+ kal_bool add; //add(KAL_TRUE) or delete(KAL_FALSE)
+
+ imsm_ip_info_struct ip_info; //IP address
+ imsm_net_info_struct net_info; //DNS
+ imsm_if_info_struct if_info; //network interface
+} imsm_set_route_dns_req_struct;
+
+//response from IMSM
+typedef struct {
+ IMSM_CNF_LOCAL_PARA_HDR
+
+ kal_uint32 trans_id;
+ kal_uint32 ps_id;
+ kal_uint32 network_id;
+} imsm_set_route_dns_cnf_struct;
+
+//indication from IMSM
+typedef struct {
+ IMSM_IND_LOCAL_PARA_HDR
+
+ kal_bool isWFC;
+} imsm_wfc_ind_struct;
+
+#endif /* _IMSM_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/imsvt_imcb_struct.h b/mcu/protocol/interface/ims/imsvt_imcb_struct.h
new file mode 100644
index 0000000..2af1169
--- /dev/null
+++ b/mcu/protocol/interface/ims/imsvt_imcb_struct.h
@@ -0,0 +1,609 @@
+#ifndef __IMSVT_IMCB_STRUCT_H__
+#define __IMSVT_IMCB_STRUCT_H__
+
+#include "kal_public_defs.h"
+
+#if __IMCF_NO_UA__
+
+#define VOLTE_MAX_SDP_PARAMETER_SET_LENGTH (256) // H.264, Spros parameter sets, must align with LTE_VT_SRV_UA_PARAMETER_SIZE_MAX.
+#define VOLTE_MAX_SUB_PARAM_LENGTH (128)
+#define VOLTE_MAX_SDP_FMTP_TOT_VALUE_LENGTH (32)// The maximum length of total fmtp specific parameter key and value, must align with LTE_VT_SRV_UA_FMTP_SIZE_MAX.
+#define VOLTE_MAX_SDP_EGBYTE_LENGTH (8)
+#define VOLTE_IPADDR_LENGTH (16) // IP address in binary
+#define IMC_MAX_IF_NAME_LENGTH (16)
+#define VOLTE_MAX_IF_NAME_LENGTH (IMC_MAX_IF_NAME_LENGTH)
+
+#define VOLTE_MAX_IMAGE_NUM (4)
+#define VOLTE_MAX_RTCP_FB_SIZE (8)
+#define VOLTE_MAX_VIDEO_CAP_NUM (4)
+#define VOLTE_MAX_PS_NUM (32)
+#define VOLTE_MAX_PROFILELEVEL_SIZE (32)
+#define VOLTE_MAX_EXTMAP_URI_SIZE (256)
+#define VOLTE_MAX_EXTMAP_NUM (4) // RFC 5285
+
+typedef char imcf_int8 ;
+typedef short int imcf_int16;
+typedef int imcf_int32;
+
+typedef unsigned char imcf_uint8 ;
+typedef unsigned short int imcf_uint16;
+typedef unsigned int imcf_uint32;
+
+#else
+#include "volte_vt_event.h"
+#include "volte_def.h"
+#endif
+
+#define VT_MAX_SDP_PARAMETER_SET_LENGTH VOLTE_MAX_SDP_PARAMETER_SET_LENGTH
+#define VT_MAX_SUB_SDP_PARAMETER_SET_LENGTH VOLTE_MAX_SUB_PARAM_LENGTH
+#define VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH VOLTE_MAX_SDP_FMTP_TOT_VALUE_LENGTH
+#define VT_MAX_SDP_EGBYTE_LENGTH VOLTE_MAX_SDP_EGBYTE_LENGTH
+#define VT_MAX_IMAGE_NUM VOLTE_MAX_IMAGE_NUM
+#define VT_MAX_RTCP_FB_SIZE VOLTE_MAX_RTCP_FB_SIZE
+#define VT_MAX_VIDEO_CAP_NUM VOLTE_MAX_VIDEO_CAP_NUM
+#define VT_ADDR_LENGTH VOLTE_IPADDR_LENGTH
+#define VT_MAX_PS_NUM VOLTE_MAX_PS_NUM
+#define VT_MAX_LEVEL_SIZE VOLTE_MAX_PROFILELEVEL_SIZE
+#define VT_MAX_EXTMAP_URI_SIZE VOLTE_MAX_EXTMAP_URI_SIZE
+#define VT_MAX_EXTMAP_NUM VOLTE_MAX_EXTMAP_NUM
+#define VT_MAX_IF_NAME_LENGTH VOLTE_MAX_IF_NAME_LENGTH
+
+#define IMSVT_PARA_HDR \
+ PEER_BUFF_HDR \
+ unsigned int request_id; \
+ unsigned int data_len;
+
+typedef struct imsvt_para_hdr_struct {
+ IMSVT_PARA_HDR
+} imsvt_para_hdr_struct;
+
+typedef enum vt_srv_imcb_session_modify_type_e {
+ VT_SRV_IMCB_SESSION_MODIFY_TYPE_CAMERA,
+ VT_SRV_IMCB_SESSION_MODIFY_TYPE_CALL_TPYE,
+ VT_SRV_IMCB_SESSION_MODIFY_TYPE_RTP,
+ VT_SRV_IMCB_SESSION_MODIFY_TYPE_END
+} vt_srv_imcb_session_modify_type_t ;
+
+typedef enum vt_srv_imcb_session_modify_result_e {
+ VT_SRV_IMCB_SESSION_MODIFY_OK = 0,
+ VT_SRV_IMCB_SESSION_MODIFY_WrongVideoDir, /*wrong video direction cause up/downgrade failed*/
+ VT_SRV_IMCB_SESSION_MODIFY_InternalError, /*acct or session object broken*/
+ VT_SRV_IMCB_SESSION_MODIFY_Result_BW_ModifyFailed, /*bandwidth modify require failed*/
+ VT_SRV_IMCB_SESSION_MODIFY_NotActiveState, /*call session not in active state*/
+ VT_SRV_IMCB_SESSION_MODIFY_LocalRel, /*local release:Ex.SRVCC,Hungup,call refresh timer timeout,no rpt packets*/
+ VT_SRV_IMCB_SESSION_MODIFY_IsHold, /*the call at hold state*/
+ VT_SRV_IMCB_SESSION_MODIFY_NoNeed, /*acorrding the video action state, not need up/downgrade */
+ VT_SRV_IMCB_SESSION_MODIFY_InvalidPara, /*input parameter invalid*/
+ VT_SRV_IMCB_SESSION_MODIFY_ReqTimeout, /*SIPTX error,transaction timeout*/
+ VT_SRV_IMCB_SESSION_MODIFY_RejectByRemote, /*reject by remote*/
+ VT_SRV_IMCB_SESSION_MODIFY_Canceled, /*canceled by user*/
+ VT_SRV_IMCB_SESSION_MODIFY_InVideoAction, /*video action is ongoing*/
+ VT_SRV_IMCB_SESSION_MODIFY_IsReinvite, /*is_reinvite*/
+}vt_srv_imcb_session_modify_result_t;
+
+enum vt_srv_imcb_session_modify_cancel_cause_e {
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_CAUSE_cancel= 0,
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_CAUSE_timeout,
+};
+
+enum vt_srv_imcb_session_modify_cancel_result_e {
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_success = 0,
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_downgrade,
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_normal,
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_disable,
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_remote_reject, /*remote reject the upgrade while local cancel*/
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_internal_error,
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_local_rel,
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_bw_modify_fail,
+ VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_req_timeout,
+};
+
+
+typedef struct rtcp_fb_param_type_s {
+ imcf_uint16 rtcp_fb_id; // such as "ack","nack","trr-int","ccm","app"
+ imcf_uint16 rtcp_fb_param; // such as pli"
+ imcf_int8 rtcp_fb_sub_param[VT_MAX_SUB_SDP_PARAMETER_SET_LENGTH]; //such as smaxpr=120 of tmmbr
+}vt_srv_rtcp_fb_param_type_t;
+
+typedef struct vt_srv_image_s {
+ imcf_uint32 x; ///< RFC6236 image attributes
+ imcf_uint32 y;
+ imcf_int8 sar[VT_MAX_SDP_EGBYTE_LENGTH];
+ imcf_int8 par[VT_MAX_SDP_EGBYTE_LENGTH];
+ imcf_int8 q[VT_MAX_SDP_EGBYTE_LENGTH];
+} vt_srv_image_t;
+
+typedef struct vt_srv_imcb_msg_get_cap_ind_s {
+ IMSVT_PARA_HDR
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 pad;
+ imcf_uint16 operator_code;
+} vt_srv_imcb_msg_get_cap_ind_struct, imsvt_imcb_get_cap_ind_struct;
+
+/*******************
+** VT_CAP_SETTING **
+********************/
+
+typedef struct vt_srv_h264_cap_cfg_s { /* Codec part */
+ imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
+
+ imcf_uint16 max_recv_level; ///< require 2 bytes, reserved.
+ imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
+ imcf_uint8 pading;
+
+ imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_int8 sprop_level_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_uint32 max_mbps; ///< reserved. VT service provides default value
+ imcf_uint32 max_smbps; ///< reserved. VT service provides default value
+ imcf_uint32 max_fs; ///< reserved. VT service provides default value
+ imcf_uint32 max_cpb; ///< reserved. VT service provides default value
+ imcf_uint32 max_dpb; ///< reserved. VT service provides default value
+ imcf_uint32 max_br; ///< reserved. VT service provides default value
+ imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value
+
+ imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value
+ imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value
+ imcf_uint8 in_band_parameter_sets; //0, 1
+ imcf_uint8 level_asymmetry_allowed; //0, 1
+ imcf_uint32 framerate;
+ imcf_uint32 frame_width;
+ imcf_uint32 frame_height;
+ vt_srv_image_t image_send[VT_MAX_IMAGE_NUM];
+ vt_srv_image_t image_recv[VT_MAX_IMAGE_NUM];
+} vt_srv_h264_cap_cfg_t;
+
+typedef struct vt_srv_hevc_cap_cfg_s {
+ imcf_uint8 profile_space;
+ imcf_uint8 profile_id;
+ imcf_uint8 tier_flag;
+ imcf_uint8 level_id;
+
+ imcf_uint8 interop_constraints[6];
+ imcf_uint8 pad[2];
+
+ imcf_uint8 profile_comp_ind[4];
+
+ imcf_uint8 sprop_sub_layer_id;
+ imcf_uint8 recv_sub_layer_id;
+ imcf_uint8 max_recv_level_id;
+ imcf_uint8 tx_mode; //"SRST", "MRST" or "MRMT"
+
+ imcf_int8 sprop_vps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_int8 sprop_sps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_int8 sprop_pps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_int8 sprop_sei[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+
+ imcf_uint32 max_lsr;
+ imcf_uint32 max_lps;
+ imcf_uint32 max_cpb;
+ imcf_uint32 max_dpb;
+ imcf_uint32 max_br;
+ imcf_uint32 max_tr;
+ imcf_uint32 max_tc;
+ imcf_uint32 max_fps;
+ imcf_uint32 sprop_max_don_diff;
+ imcf_uint32 sprop_depack_buf_nalus;
+ imcf_uint32 sprop_depack_buf_bytes;
+ imcf_uint32 depack_buf_cap;
+ imcf_uint32 sprop_seg_id;
+ imcf_uint32 sprop_spatial_seg_idc;
+
+ imcf_int8 dec_parallel_cap[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_int8 include_dph[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_uint32 framerate;
+ imcf_uint32 frame_width;
+ imcf_uint32 frame_height;
+ vt_srv_image_t image_send[VT_MAX_IMAGE_NUM];
+ vt_srv_image_t image_recv[VT_MAX_IMAGE_NUM];
+} vt_srv_hevc_cap_cfg_t;
+
+typedef union vt_srv_video_codec_cap_cfg_u {
+ vt_srv_h264_cap_cfg_t h264_codec;
+ vt_srv_hevc_cap_cfg_t hevc_codec;
+} vt_srv_video_codec_cap_cfg_t;
+
+typedef struct vt_srv_video_media_bitrate_s {
+ imcf_uint32 format; ///<H264 or H265
+ imcf_uint32 profile;
+ imcf_uint32 level;
+ imcf_uint32 minbitrate;
+ imcf_uint32 bitrate;
+} vt_srv_video_media_bitrate_t;
+
+typedef struct vt_srv_rtp_ext_map_s {
+ imcf_uint8 ext_id;
+ imcf_uint8 direction;
+ imcf_uint8 reserved[2];
+ imcf_int8 ext_uri[VT_MAX_EXTMAP_URI_SIZE]; // size 256
+} vt_srv_rtp_ext_map_t;
+
+typedef struct vt_srv_h264_ps_s {
+ imcf_uint32 profile_level_id;
+ imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
+} vt_srv_h264_ps_t;
+
+typedef struct vt_srv_hevc_ps_s {
+ imcf_uint8 profile_id; ///< Range: 0~31, 1 if not present.
+ imcf_uint8 level_id; ///< Range: 0~255, 93(level 3.1) if not present.
+ imcf_uint8 pad[2];
+ imcf_int8 sprop_vps[VT_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_int8 sprop_sps[VT_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_int8 sprop_pps[VT_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_int8 sprop_sei[VT_MAX_SDP_PARAMETER_SET_LENGTH];
+} vt_srv_hevc_ps_t;
+
+typedef struct vt_srv_video_capability_s {
+ /* old start */
+ imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
+
+ imcf_uint16 max_recv_level; ///< require 2 bytes, reserved.
+ imcf_uint8 packetization_mode; ///< VoLTE_Event_Packetize_Mode_e
+ imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
+
+ imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_int8 sprop_level_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_uint32 max_mbps; ///< reserved. VT service provides default value
+ imcf_uint32 max_smbps; ///< reserved. VT service provides default value
+ imcf_uint32 max_fs ; ///< reserved. VT service provides default value
+ imcf_uint32 max_cpb ; ///< reserved. VT service provides default value
+ imcf_uint32 max_dpb ; ///< reserved. VT service provides default value
+ imcf_uint32 max_br ; ///< reserved. VT service provides default value
+ imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value
+
+ imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value
+ imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value
+ imcf_uint8 in_band_parameter_sets; //0, 1
+ imcf_uint8 level_asymmetry_allowed; //0, 1
+ /* old end */
+
+ vt_srv_video_codec_cap_cfg_t codec_cap; // Use mime_Type to judge the codec cap.
+
+ /* rtp_rtcp part */
+ imcf_uint8 media_type; //such as video/audio
+ imcf_uint8 mime_Type; // such as H.264
+ //imcf_uint8 video_payload_type;// num such as: 97,98, 100
+ imcf_uint8 rtp_profile;//supported rtp_profile for special media such as RTP/AVP,RTP/AVPF
+ imcf_uint8 reserved;
+ imcf_uint32 sample_rate;//timescale, which use to calculte rtp timestamp
+
+ /*@ rtp packet transmission param
+ *@ contain b=AS,PT,packetization params related to the codec type
+ *@ ----------------------------------------------------------------------
+ *@consider the negotiated params also can set through rtp_rtcp_capability
+ *@ rtp_rtcp_capability must be can for one explicit item
+ *@ then should not contain alternatives in rtp_packetize_params,such as "packetization-moe=1;packetization-mode=0"
+ *@ ----------------------------------------------------------------------
+ */
+ //imcf_uint32 video_b_as; //b=AS in kb/s
+ imcf_uint32 packetize_mode;
+ imcf_uint32 extmap_num;
+ vt_srv_rtp_ext_map_t extmap[VT_MAX_EXTMAP_NUM]; //now only CVO support
+
+ //imcf_uint32 video_b_rs; //b=RS in bps
+ //imcf_uint32 video_b_rr; //b=RR in bps
+ imcf_uint32 rtcp_rsize; //a=rtcp_rsize
+
+ /*@ rtcp packet transmission param
+ *@ contain b=RS,b=RR,and feedback message type
+ *@ may be serveral feedback message supported like:
+ *@ ---------sdp--------------
+ *@ a=rtcp-fb:98 ccm tstr
+ *@ a=rtcp-fb:98 ccm fir
+ *@ a=rtcp-fb:* ccm tmmbr smaxpr=120
+ *@ ---------------------------
+ *@ so need a array of rtcp_fb_type_t to represent all thest feedback messages
+ *@ rtcp_fb_param_num represent the size of the array
+ */
+ imcf_uint32 rtcp_fb_param_num;
+ vt_srv_rtcp_fb_param_type_t rtcp_fb_type[VT_MAX_RTCP_FB_SIZE]; // SIZE 5
+} vt_srv_video_capability_t;
+
+typedef struct vt_srv_imcb_msg_vt_cap_setting_s {
+ IMSVT_PARA_HDR
+ imcf_int32 accout_id;
+ imcf_int32 video_cap_num; ///< number of cap.
+ vt_srv_video_capability_t video_cap[VT_MAX_VIDEO_CAP_NUM]; ///< video capability from MA
+ vt_srv_h264_ps_t h264_ps[VT_MAX_PS_NUM]; // SIZE 32
+ vt_srv_hevc_ps_t hevc_ps[VT_MAX_PS_NUM]; // SIZE 32
+ vt_srv_video_media_bitrate_t bitrate_info[VT_MAX_LEVEL_SIZE]; // SIZE 20
+
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 pad2;
+ imcf_uint16 operator_code;
+
+ /* CAUTION: please keep VoLTE_Event_VT_Cap_Setting_t in sync when you want to add elements here,
+ IMCB is forwarding pointer to this structure and it is casted to VoLTE_Event_VT_Cap_Setting_t */
+} vt_srv_imcb_msg_get_cap_rsp_struct, imsvt_imcb_get_cap_rsp_struct,
+vt_srv_vt_cap_setting_t;
+
+typedef struct vt_srv_imcb_msg_config_s {
+ // required by RTP and RTCP session
+ imcf_uint8 call_id; // identify this call
+ imcf_uint8 video_payload_type; // RTP payload type
+ imcf_uint8 remote_addr_type; ///< VoLTE_Event_IP_Version_e
+ imcf_uint8 rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e
+
+ imcf_uint16 remote_rtp_port;
+ imcf_uint16 remote_rtcp_port;
+ imcf_uint16 local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1
+ imcf_uint16 local_rtp_port; ///< rtp port number for media attribute in SDP message
+ imcf_int8 remote_rtp_address[VT_ADDR_LENGTH];
+ imcf_int8 remote_rtcp_address[VT_ADDR_LENGTH];
+ imcf_int8 local_address[VT_ADDR_LENGTH];
+ imcf_uint32 video_b_as; // RTP bandwidth
+ imcf_uint32 video_b_rs; // RTCP sender bandwidth
+ imcf_uint32 video_b_rr; // RTCP receiver bandwidth
+
+ imcf_uint8 media_type; //such as video/audio
+ imcf_uint8 mime_Type; // such as H.264
+ imcf_uint16 rtcp_rsize;
+ imcf_uint32 packetize_mode;
+ imcf_uint32 sample_rate;//timescale, which use to calculte rtp timestamp
+ imcf_uint32 rtcp_fb_param_num;
+ vt_srv_rtcp_fb_param_type_t rtcp_fb_type[VT_MAX_RTCP_FB_SIZE]; // SIZE? 32
+
+ imcf_uint8 rtp_profile;//supported rtp_profile for special media such as RTP/AVP,RTP/AVPF
+ imcf_uint8 camera_direction;
+ imcf_uint8 bHold; //local hold
+ imcf_uint8 bHeld; //remote hold
+
+ vt_srv_rtp_ext_map_t extmap;
+
+ /* WFC */
+ imcf_uint32 video_dscp;
+ imcf_uint32 video_soc_priority;
+
+ /*------ old start --------------*/
+ imcf_uint16 pad_rtcp_rsize; /* move to new one*/
+ imcf_uint16 rtcpfb_type; //bitmap, VoLTE_Event_RTCP_FB_Type_e
+ imcf_int8 id[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
+ imcf_int8 trr_int[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
+ imcf_int8 id_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
+ imcf_int8 ack_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
+ imcf_int8 nack_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
+ imcf_int8 tmmbr_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
+ imcf_int8 vbcm_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH];
+ /*------ old end --------------*/
+
+ // require by H.264 or H265
+ vt_srv_video_codec_cap_cfg_t codec_cfg;
+
+ /*------ old start --------------*/
+ // required by H.264 codec, RFC 6184
+ imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts
+
+ imcf_uint16 max_recv_level; ///< require 2 bytes, reserved.
+ imcf_uint8 packetization_mode; ///< VoLTE_Event_Packetize_Mode_e
+ imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet.
+
+ imcf_int8 sprop_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_int8 sprop_level_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH];
+ imcf_uint32 max_mbps; ///< reserved. VT service provides default value
+ imcf_uint32 max_smbps; ///< reserved. VT service provides default value
+ imcf_uint32 max_fs ; ///< reserved. VT service provides default value
+ imcf_uint32 max_cpb ; ///< reserved. VT service provides default value
+ imcf_uint32 max_dpb ; ///< reserved. VT service provides default value
+ imcf_uint32 max_br ; ///< reserved. VT service provides default value
+ imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value, 0: SDP will not present the value
+
+ imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value, 0: SDP will not present the value
+ imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value, 0: SDP will not present the value
+ imcf_uint8 in_band_parameter_sets; ///< 0, 1. we only support 0: support SPS, PPS in SDP
+ imcf_uint8 level_asymmetry_allowed; ///<0, 1. we only support 0: symmetry communication
+ /*------ old end --------------*/
+} vt_srv_imcb_msg_config_t;
+
+typedef struct vt_srv_imcb_msg_setting {
+ // 0 : inactive (VoLTE)
+ // 1 : active (ViLTE)
+ imcf_uint32 mode;
+
+ imcf_uint8 ebi; /* drop on 97 MD, set to zero (0) */
+ imcf_uint8 video_type;
+ imcf_uint8 pad[2];
+ imcf_uint32 network_id; /*drop on 93 MD */
+
+ // 0 : inactive
+ // 1 : send_only
+ // 2 : recv_only
+ // 3 : send_recv
+
+ imcf_uint32 early_media_direction;
+
+ /*kbps, please ignore when Wifi access RAT */
+ /*0: is for un-specified, please DO NOT use this element */
+ imcf_uint32 nw_assigned_ul_bw;
+ imcf_uint32 nw_assigned_dl_bw;
+
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 pad2[3];
+
+ imcf_uint8 if_name[VT_MAX_IF_NAME_LENGTH];
+
+ /* 180 - 2 = 178 */
+ imcf_uint8 bearer_id; // LTE: EPS Bearer Identifier (EBI), NR: 5G QoS Flow Identifier (QFI)
+ imcf_uint8 pdu_session_id; // LTE: 0, NR: PDU Session ID (1-15)
+
+ imcf_uint8 extension[178];
+
+} vt_srv_imcb_msg_setting_t;
+
+typedef struct vt_srv_imcb_msg_param_s {
+ IMSVT_PARA_HDR
+ vt_srv_imcb_msg_setting_t setting;
+ vt_srv_imcb_msg_config_t config;
+}
+ vt_srv_imcb_msg_config_init_ind_struct, imsvt_imcb_config_init_ind_struct,
+ vt_srv_imcb_msg_config_update_ind_struct, imsvt_imcb_config_update_ind_struct,
+ vt_srv_imcb_msg_config_deinit_ind_struct, imsvt_imcb_config_deinit_ind_struct,
+ vt_srv_imcb_msg_param_t
+;
+
+typedef struct vt_srv_imcb_msg_session_modify_s {
+ IMSVT_PARA_HDR
+ imcf_uint8 call_id; /* identify this call */
+
+ // 0 : inactive (VoLTE)
+ // 1 : active (ViLTE)
+ imcf_uint8 mode;
+
+ // 0 : inactive
+ // 1 : send_only
+ // 2 : recv_only
+ // 3 : send_recv
+ imcf_uint8 camera_direction;
+
+ imcf_uint8 result; /* vt_srv_imcb_session_modify_result_t */
+
+ /* remeber to do offset to UA, UA do not contain this one */
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 pad[3];
+}
+
+/*
+ VT -- req --> UA .... UA -- ind --> VT
+ VT <- cnf --- UA .... UA <- rsp -- VT
+
+*/
+ vt_srv_imcb_msg_session_modify_req_struct, imsvt_imcb_modify_session_req_struct,
+ vt_srv_imcb_msg_session_modify_ind_struct, imsvt_imcb_modify_session_ind_struct,
+ vt_srv_imcb_msg_session_modify_rsp_struct, imsvt_imcb_modify_session_rsp_struct,
+ vt_srv_imcb_msg_session_modify_cnf_struct, imsvt_imcb_modify_session_cnf_struct;
+
+typedef struct vt_srv_imcb_msg_session_modify_cancel_req_s {
+ IMSVT_PARA_HDR
+ imcf_uint8 call_id; /* identify this call */
+ /* remeber to do offset to UA, UA do not contain this one */
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 cause;
+ imcf_uint8 pad[5];
+}vt_srv_imcb_msg_session_modify_cancel_req_struct,imsvt_imcb_modify_session_cancel_req_struct;
+
+typedef struct vt_srv_imcb_msg_session_modify_cancel_cnf_s {
+ IMSVT_PARA_HDR
+ imcf_uint8 call_id; /* identify this call */
+ /* remeber to do offset to UA, UA do not contain this one */
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 result;
+ imcf_uint8 pad[5];
+}vt_srv_imcb_msg_session_modify_cancel_cnf_struct,imsvt_imcb_modify_session_cancel_cnf_struct;
+
+typedef struct vt_srv_imcb_msg_session_modify_cancel_s {
+ IMSVT_PARA_HDR
+ imcf_uint8 call_id; /* identify this call */
+ /* remeber to do offset to UA, UA do not contain this one */
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 pad[2];
+}
+vt_srv_imcb_msg_session_modify_cancel_ind_struct,imsvt_imcb_modify_session_cancel_ind_struct,
+vt_srv_imcb_msg_session_modify_local_bw_ready_ind_struct,imsvt_imcb_modify_session_local_bw_ready_ind_struct;
+
+typedef struct vt_srv_imcb_msg_call_progress_ind_s {
+ IMSVT_PARA_HDR
+ imcf_uint8 call_id; /* identify this call */
+ /* remeber to do offset to UA, UA do not contain this one */
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 call_mode;
+ imcf_uint8 pad1;
+
+ imcf_uint32 ecpi;
+ imcf_uint32 reserved;
+}vt_srv_imcb_msg_call_progress_ind_struct, imsvt_imcb_call_progress_ind_struct;
+
+typedef struct vt_srv_imcb_msg_mod_bw_req_s {
+ IMSVT_PARA_HDR
+ imcf_uint8 call_id; /* identify this call */
+ imcf_uint8 pad[3];
+
+ imcf_uint32 video_bandwidth;
+
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 pad2[3];
+} vt_srv_imcb_msg_mod_bw_req_t, imsvt_imcb_mod_bw_req_struct;
+
+typedef struct {
+ IMSVT_PARA_HDR
+ imcf_uint32 error_num;
+} imsvt_imcb_comm_error_struct;
+
+typedef struct {
+ IMSVT_PARA_HDR
+ imcf_uint8 token;
+ imcf_uint8 pad[3];
+} imsvt_imcb_loop_test_ind_struct;
+
+typedef struct {
+ IMSVT_PARA_HDR
+ imcf_uint8 token;
+ imcf_uint8 pad[3];
+} imsvt_imcb_loop_test_rsp_struct;
+
+typedef enum vt_srv_imcb_rat_type_e {
+ VT_SRV_IMCB_RAT_TYPE_NONE = 0,
+ VT_SRV_IMCB_RAT_TYPE_2G = VT_SRV_IMCB_RAT_TYPE_NONE,
+ VT_SRV_IMCB_RAT_TYPE_3G_FDD,
+ VT_SRV_IMCB_RAT_TYPE_3G_TDD,
+ VT_SRV_IMCB_RAT_TYPE_4G_FDD,
+ VT_SRV_IMCB_RAT_TYPE_4G_TDD,
+
+ /* WFC */
+ VT_SRV_IMCB_RAT_TYPE_802_11,
+ VT_SRV_IMCB_RAT_TYPE_802_11a,
+ VT_SRV_IMCB_RAT_TYPE_802_11b,
+ VT_SRV_IMCB_RAT_TYPE_802_11g,
+ VT_SRV_IMCB_RAT_TYPE_802_11n,
+ VT_SRV_IMCB_RAT_TYPE_802_11ac,
+
+ /* C2K */
+ VT_SRV_IMCB_RAT_TYPE_1xRTT,
+ VT_SRV_IMCB_RAT_TYPE_HRPD,
+ VT_SRV_IMCB_RAT_TYPE_eHRPD,
+
+ VT_SRV_IMCB_RAT_TYPE_5G_FDD,
+ VT_SRV_IMCB_RAT_TYPE_5G_TDD,
+
+ VT_SRV_IMCB_RAT_TYPE_MAX = VT_SRV_IMCB_RAT_TYPE_5G_TDD,
+ VT_SRV_IMCB_RAT_TYPE_UNSPEC = 0x80
+} vt_srv_imcb_rat_type;
+
+
+typedef struct {
+ IMSVT_PARA_HDR
+ imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
+ imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
+ imcf_uint8 pad[2];
+
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 pad2[3];
+} vt_srv_imcb_handover_start_ind_struct, imsvt_imcb_handover_start_ind_struct;
+
+typedef struct {
+ IMSVT_PARA_HDR
+ imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
+ imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
+ imcf_uint8 is_success;
+ imcf_uint8 pad[1];
+
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 pad2[3];
+} vt_srv_imcb_handover_stop_ind_struct, imsvt_imcb_handover_stop_ind_struct;
+
+typedef struct {
+ IMSVT_PARA_HDR
+ imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
+ imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
+ imcf_uint8 sim_slot_id; /* start from 0 */
+ imcf_uint8 pad;
+ imcf_uint32 network_id; /* drop on 93MD */
+} vt_srv_imcb_pdn_handover_begin_ind_struct, imsvt_imcb_pdn_handover_begin_ind_struct;
+
+typedef struct {
+ IMSVT_PARA_HDR
+ imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */
+ imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */
+ imcf_uint8 is_success;
+ imcf_uint8 sim_slot_id;
+ imcf_uint32 network_id; /* drop on 93MD */
+} vt_srv_imcb_pdn_handover_end_ind_struct, imsvt_imcb_pdn_handover_end_ind_struct;
+
+#endif
diff --git a/mcu/protocol/interface/ims/iwlan_imsp_struct.h b/mcu/protocol/interface/ims/iwlan_imsp_struct.h
new file mode 100644
index 0000000..e723860
--- /dev/null
+++ b/mcu/protocol/interface/ims/iwlan_imsp_struct.h
@@ -0,0 +1,240 @@
+/*****************************************************************************
+* 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) 2013
+*
+* 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:
+ * ------------
+ * iwlan_imsp_struct.h
+ *
+ * Project:
+ * ------------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ * This file defines the interface messages between IWLAN and IMS Proxy.
+ *
+ * Author:
+ * -----------
+ *
+ *
+ *===========================================================
+ * $Log$
+ *
+ * 05 21 2018 hsin-jun.tang
+ * [MOLY00325423] [IWLAN] Debug enhancement - A. IWLAN log enhancement, B. KAL legacy API DHL new API
+ * [IWLAN] log enhancemnet -
+ * A. apply DHL new log API
+ * B. log enhancement - primitives number to enum
+ * change:
+ * D2RM, L4C, SDM, ATP
+ * no change:
+ * WO, L4BNW, SIM, L4BPWR, IMC
+ *
+ * ATP:
+ * 1. ESRVSTATE
+ * 2. ECNCFG
+ * 3. EWIFIEN
+ * 4. EWFCPREF
+ * 5. EWIFIASC
+ * 6. Remove EPLWTH, EGREG
+ * 7. EIWLPING
+ * 8. EIRAT
+ *
+ * 08 24 2017 mt.tsai
+ * [MOLY00266685] [GEN93][TMOUS] TMO-US Feature in
+ * [GEN93] TMO-US 2017Q4 Feature in
+ * Details:
+ * (6273) 1st PDN LTE prefer
+ * (96501) Roaming no incall handover
+ * (6331) thr adjust while EVS call
+ * (4974) 2/3G prefer
+ * (6732) VoPS
+ * (4995) Rove-out alert
+ * (5025) SIP 403 block WiFi
+ * (6335) PCSCF block RAT
+ * (...) QoS & RSL table.
+ *
+ * 08 24 2017 mt.tsai
+ * [MOLY00266685] [GEN93][TMOUS] TMO-US Feature in
+ *
+ * [GEN93] TMO-US 2017Q4 Feature in
+ * Details:
+ * (6273) 1st PDN LTE prefer
+ * (96501) Roaming no incall handover
+ * (6331) thr adjust while EVS call
+ * (4974) 2/3G prefer
+ * (6732) VoPS
+ * (4995) Rove-out alert
+ * (5025) SIP 403 block WiFi
+ * (6335) PCSCF block RAT
+ * (...) QoS & RSL table.
+ *
+ *****************************************************************************/
+
+#ifndef _IWLAN_IMSP_STRUCT_H_
+#define _IWLAN_IMSP_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ims_common_def.h"
+#include "ps_public_enum.h"
+#include "sim_public_enum.h"
+
+#define LTECSR_EXT_LEN 512
+#define THR_CNT 3
+
+/******************************************************************************
+ * +EGREG: <n>,<stat>[,[<lac>],[<ci>],[<eAct>],[<rac>],[<nwk_existence >],
+ * [<roam_indicator>] [,<cause_type>,<reject_cause>]]
+ *****************************************************************************/
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 stat;
+ kal_char ci[5]; //4B cid+\0
+ kal_uint32 e_act;
+ kal_uint8 rom_ind;
+} iwlan_imsp_cellreg_info_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 srv_stat;
+} iwlan_imsp_datasrv_state_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 roam_stat;
+} iwlan_imsp_dataroam_state_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char oper[7]; //3formcc, 3formnc, 1for\n
+} iwlan_imsp_eops_info_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 act;
+ kal_int32 sig1;
+ kal_int32 sig2;
+ kal_int32 rssi_qdbm;
+ kal_int32 rscp_qdbm;
+ kal_int32 ecn0_qdbm;
+ kal_int32 rsrq_qdbm;
+ kal_int32 rsrp_qdbm;
+} iwlan_imsp_cell_siglevel_req_struct;
+
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 vops_en;
+} iwlan_imsp_vops_info_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_int32 bf_voice;
+ kal_int32 bf_video;
+ kal_int32 bt_voice;
+ kal_int32 bt_video;
+} iwlan_imsp_ssac_barinfo_req_struct;
+
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool succ;
+ kal_uint32 latency;
+} iwlan_imsp_epdgping_rpt_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 in_srv;
+} iwlan_imsp_wifisrv_state_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_int32 rssi;
+ kal_int32 snr;
+} iwlan_imsp_wifisig_update_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool enable;
+} iwlan_imsp_configuration_req_struct;
+
+typedef iwlan_imsp_configuration_req_struct iwlan_imsp_volte_cfg_req_struct;
+typedef iwlan_imsp_configuration_req_struct iwlan_imsp_vilte_cfg_req_struct;
+typedef iwlan_imsp_configuration_req_struct iwlan_imsp_vowifi_cfg_req_struct;
+typedef iwlan_imsp_configuration_req_struct iwlan_imsp_viwifi_cfg_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool allow;
+ kal_uint8 pref;
+} iwlan_imsp_wfcpref_cfg_req_struct;
+
+typedef iwlan_imsp_configuration_req_struct iwlan_imsp_wifiui_cfg_req_struct;
+typedef iwlan_imsp_configuration_req_struct iwlan_imsp_dataroam_cfg_req_struct;
+typedef iwlan_imsp_configuration_req_struct iwlan_imsp_imscarrier_cfg_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ kal_uint32 msg;
+ kal_uint8 call_mode;
+} iwlan_imsp_call_info_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 version;
+ kal_uint8 state;
+ kal_uint8 id;
+ kal_int32 loss_rate;
+ kal_int32 thrpt;
+ kal_char ext_body[LTECSR_EXT_LEN];
+} iwlan_imsp_call_quality_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 thr_cnt;
+ kal_int32 thr[THR_CNT];
+} iwlan_imsp_siglvl_thrcfg_ind_struct;
+
+typedef iwlan_imsp_siglvl_thrcfg_ind_struct iwlan_imsp_cellsiglvl_thrcfg_ind_struct;
+typedef iwlan_imsp_siglvl_thrcfg_ind_struct iwlan_imsp_wifisiglvl_thrcfg_ind_struct;
+
+
+
+#endif // _IWLAN_IMSP_STRUCT_H_
+
diff --git a/mcu/protocol/interface/ims/iwlan_n3epc_struct.h b/mcu/protocol/interface/ims/iwlan_n3epc_struct.h
new file mode 100644
index 0000000..c6028e1
--- /dev/null
+++ b/mcu/protocol/interface/ims/iwlan_n3epc_struct.h
@@ -0,0 +1,89 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _IWLAN_N3EPC_STRUCT_H
+#define _IWLAN_N3EPC_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "network_dev_info_struct.h"
+
+typedef enum {
+ N3EPC_DPD_SUCC,
+ N3EPC_DPD_FAIL,
+ N3EPC_DPD_TIMEOUT,
+ N3EPC_DPD_NOT_READY,
+} n3epc_dpd_enum;
+
+/*******************************************************************************
+* IWLAN to WO REQ *
+*******************************************************************************/
+// MSG_ID_IWLAN_N3EPC_DPD_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+} iwlan_n3epc_dpd_req_struct;
+
+/*******************************************************************************
+* WO TO IWLAN CNF *
+*******************************************************************************/
+// MSG_ID_IWLAN_N3EPC_DPD_CNF
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ n3epc_dpd_enum res_cause;
+} iwlan_n3epc_dpd_cnf_struct;
+
+/*******************************************************************************
+* WO TO IWLAN IND *
+*******************************************************************************/
+// MSG_ID_IWLAN_N3EPC_STATUS_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ nw_device_id_enum device;
+ kal_bool is_ready;
+} iwlan_n3epc_status_ind_struct;
+
+// MSG_ID_IWLAN_N3EPC_MOBIKE_IND
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ kal_bool enable;
+} iwlan_n3epc_mobike_ind_struct;
+
+#endif //_IWALN_N3EPC_STRUCT_H
diff --git a/mcu/protocol/interface/ims/iwlan_sdm_struct.h b/mcu/protocol/interface/ims/iwlan_sdm_struct.h
new file mode 100644
index 0000000..2a15f56
--- /dev/null
+++ b/mcu/protocol/interface/ims/iwlan_sdm_struct.h
@@ -0,0 +1,119 @@
+/*****************************************************************************
+* 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) 2013
+*
+* 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:
+ * ------------
+ * iwlan_imsp_struct.h
+ *
+ * Project:
+ * ------------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ * This file defines the interface messages between IWLAN and SDM.
+ *
+ * Author:
+ * -----------
+ *
+ *
+ *===========================================================
+ * $Log$
+ *
+ * 05 21 2018 hsin-jun.tang
+ * [MOLY00325423] [IWLAN] Debug enhancement - A. IWLAN log enhancement, B. KAL legacy API DHL new API
+ * [IWLAN] log enhancemnet -
+ * A. apply DHL new log API
+ * B. log enhancement - primitives number to enum
+ * change:
+ * D2RM, L4C, SDM, ATP
+ * no change:
+ * WO, L4BNW, SIM, L4BPWR, IMC
+ *
+ * ATP:
+ * 1. ESRVSTATE
+ * 2. ECNCFG
+ * 3. EWIFIEN
+ * 4. EWFCPREF
+ * 5. EWIFIASC
+ * 6. Remove EPLWTH, EGREG
+ * 7. EIWLPING
+ * 8. EIRAT
+ *
+ *
+ *****************************************************************************/
+
+#ifndef _IWLAN_SDM_STRUCT_H_
+#define _IWLAN_SDM_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ps_public_enum.h"
+
+typedef enum {
+ IWLAN_SDM_APP_0 = 0,
+ IWLAN_SDM_APP_1 = 1,
+ IWLAN_SDM_APP_SMSIP = 2,
+ IWLAN_SDM_APP_CNT,
+} iwlan_sdm_app_e;
+
+
+typedef enum {
+ IWLAN_SDM_ACTION_RESERVED = 0,
+ IWLAN_SDM_ACTION_START = 1,
+ IWLAN_SDM_ACTION_END = 2,
+ IWLAN_SDM_ACTION_CNT,
+} iwlan_sdm_action_e;
+
+
+
+//From SDM
+// MSG_ID_IWLAN_SDM_ECSCM_INFO_REQ / MSG_ID_EVHD_WMOB_WANS_ECSCM_INFO_REQ;
+
+
+typedef struct {
+ LOCAL_PARA_HDR
+ iwlan_sdm_app_e app; //<application>: 2 SMS over IP
+ iwlan_sdm_action_e action; //<start-end_indication>: 1=start 2=end
+} iwlan_sdm_ecscm_info_req_struct;
+
+typedef iwlan_sdm_ecscm_info_req_struct evhd_wmob_wans_ecscm_info_req_struct;
+
+
+
+
+#endif // _IWLAN_SDM_STRUCT_H_
+
diff --git a/mcu/protocol/interface/ims/iwlan_wo_struct.h b/mcu/protocol/interface/ims/iwlan_wo_struct.h
new file mode 100644
index 0000000..b3e652d
--- /dev/null
+++ b/mcu/protocol/interface/ims/iwlan_wo_struct.h
@@ -0,0 +1,92 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _IWLAN_WO_STRUCT_H
+#define _IWLAN_WO_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+typedef enum {
+ WO_DPD_SUCC,
+ WO_DPD_FAIL,
+ WO_DPD_TIMEOUT,
+ WO_DPD_NOT_READY,
+} wo_dpd_enum;
+
+/*******************************************************************************
+* IWLAN to WO REQ *
+*******************************************************************************/
+//MSG_ID_IWLAN_WO_DPD_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+}iwlan_wo_dpd_req_struct;
+
+/*******************************************************************************
+* WO TO IWLAN CNF *
+*******************************************************************************/
+//MSG_ID_IWLAN_WO_DPD_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ wo_dpd_enum res_cause;
+}iwlan_wo_dpd_cnf_struct;
+
+/*******************************************************************************
+* WO TO IWLAN IND *
+*******************************************************************************/
+//MSG_ID_IWLAN_WO_STATUS_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_bool is_ready;
+}iwlan_wo_status_ind_struct;
+
+//MSG_ID_IWLAN_WO_MOBIKE_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ kal_uint32 cid;
+ kal_bool enable;
+}iwlan_wo_mobike_ind_struct;
+
+#endif //_IWALN_WO_STRUCT_H
diff --git a/mcu/protocol/interface/ims/ltecsr_struct.h b/mcu/protocol/interface/ims/ltecsr_struct.h
new file mode 100644
index 0000000..07c0b8d
--- /dev/null
+++ b/mcu/protocol/interface/ims/ltecsr_struct.h
@@ -0,0 +1,1178 @@
+/*****************************************************************************
+* 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:
+ * ---------
+ * ltecsr_struct.h
+ *
+ * Project:
+ * --------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ * define the message struct parameters
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _LTECSR_STRUCT_H
+#define _LTECSR_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+
+#include "codec_def.h"
+#include "ims_common_def.h"
+#include "ims_nvram_editor.h"
+
+/* value define for common_para2 */
+typedef enum e_ltecsr_feature_option {
+ LTECSR_FEATURE_NONE = (0),
+ LTECSR_FEATURE_DTMF_MUTE = (1<<0),
+ LTECSR_FEATURE_HOLDCALL_DL_CHECK = (1<<1),
+ LTECSR_FEATURE_ALWAYS_ONE_SHOT_DTMF = (1<<2),
+ LTECSR_FEATURE_DTMF_END_SEP_ENABLE = (1<<3),
+ LTECSR_FEATURE_DYNAMIC_QOS = (1<<4),
+ LTECSR_FEATURE_FIX_RTCP_INTERVAL_ACTIVE = (1<<5),
+ LTECSR_FEATURE_FIX_RTCP_INTERVAL_HOLD = (1<<6),
+ LTECSR_FEATURE_PING_PCSCF_ENABLE = (1<<7),
+ LTECSR_FEATURE_RTCP_MAX_INTERVAL_ENABLE = (1<<8),
+ LTECSR_FEATURE_IGNORE_BEARER_LOST = (1<<9),
+ LTECSR_FEATURE_DTMF_END_DURATION_UPDATE = (1<<10),
+ LTECSR_FRATURE_CMR_DISABLE = (1<<11),
+ LTECSR_FEATURE_SEND_INCOMING_DLPKT = (1<<12),
+ LTECSR_FEATURE_DISABLE_UDPCHECKSUM_SEND = (1<<13),
+} ltecsr_feature_option_e;
+
+/* value define for nvram stat_feature_option */
+typedef enum e_ltecsr_stat_feature_option {
+ LTECSR_STAT_NONE = (0),
+ LTECSR_STAT_MDMI = (1<<0),
+ LTECSR_STAT_CIQ = (1<<1),
+ LTECSR_STAT_ECHO = (1<<2),
+ LTECSR_STAT_HIDDEN = (1<<3),
+ LTECSR_STAT_RJIL = (1<<4),
+} ltecsr_stat_feature_option_e;
+
+typedef enum e_func_class {
+ FC_RTP = IMCB_IMC_FC_RTP,
+ FC_XMIT = IMCB_IMC_FC_XMIT,
+ FC_VOICE = IMCB_IMC_FC_VOICE,
+ FC_VIDEO = IMCB_IMC_FC_VIDEO,
+ FC_DTMF = IMCB_IMC_FC_DTMF,
+ FC_CODEC = IMCB_IMC_FC_CODEC,
+ FC_HANDOVER = IMCB_IMC_FC_HANDOVER,
+ FC_TTY = IMCB_IMC_FC_TTY,
+} func_class_e;
+
+typedef enum e_xmit_mode {
+ XMIT_MODE_NONE=0,
+ XMIT_MODE_INACTIVE,
+ XMIT_MODE_SENDONLY,
+ XMIT_MODE_RECVONLY,
+ XMIT_MODE_SENDRECV,
+ XMIT_MODE_ACTIVE,
+} xmit_mode_e;
+
+typedef enum e_ecfg{
+ LTECSR_ECFG_NONE = 0,
+ LTECSR_ECFG_DTX_ENABLE = 1,
+ LTECSR_ECFG_SILENCE_DROPCALL_THRESHOLD = 2,
+ LTECSR_ECFG_JBM_LOAD_PARAMS_ENABLE = 3,
+ LTECSR_ECFG_JBM_PREBUF_LEN = 4,
+ LTECSR_ECFG_JBM_JITTER_MAX_DEPTH = 5,
+ LTECSR_ECFG_JBM_JITTER_FULL_OFFSET = 6,
+ LTECSR_ECFG_LTECSR_COMMON_PARA0 = 7,
+ LTECSR_ECFG_LTECSR_COMMON_PARA1 = 8,
+ LTECSR_ECFG_LTECSR_COMMON_PARA2 = 9,
+ LTECSR_ECFG_LTECSR_COMMON_PARA3 = 10,
+ LTECSR_ECFG_LTECSR_COMMON_PARA4 = 11,
+
+ LTECSR_ECFG_SILENCE_TO_RRC_REPORT_THRRESHOLD = 12,
+ LTECSR_ECFG_RTP_EXPIRE_TIMER = 13,
+ LTECSR_ECFG_RTCP_EXPIRE_TIMER = 14,
+ LTECSR_ECFG_RTCP_XR_INTERVAL = 15,
+ LTECSR_ECFG_RTCP_XR_COMPOUND_RTCP = 16,
+ LTECSR_ECFG_RTCP_XR_GMIN = 17,
+ LTECSR_ECFG_RTCP_FIX_INTERVAL_ACTIVE = 18,
+ LTECSR_ECFG_RTCP_FIX_INTERVAL_HOLD = 19,
+ LTECSR_ECFG_TTY_SYNC_BUF_TIME = 20,
+ LTECSR_ECFG_TTY_WAIT_TIME = 21,
+ LTECSR_ECFG_TTY_SEN_DIFF = 22,
+ LTECSR_ECFG_SILENCE_PING_PCSCF_THRESHOLD = 23,
+ LTECSR_ECFG_RTCP_MIN_INTERVAL = 24,
+ LTECSR_ECFG_RTCP_MAX_INTERVAL = 25,
+ LTECSR_ECFG_STAT_FEATURE_OPTION = 26,
+ LTECSR_ECFG_STAT_REPORT_INTERVAL = 27,
+ LTECSR_ECFG_EVS_PREFER_RATE = 28,
+
+ LTECSR_ECFG_RESET_DEFAULT = 29,
+
+ LTECSR_ECFG_TEXT_RTP_EXPIRE_TIMER = 30,
+ LTECSR_ECFG_TEXT_RTCP_EXPIRE_TIMER = 31,
+ LTECSR_ECFG_TEXT_RTP_RTCP_EXPIRE_TIMER = 32,
+ LTECSR_ECFG_WFC_SILENCE_THRESHOLD = 33,
+ LTECSR_ECFG_EVOLTE_DELAY_THRESHOLD = 34,
+ LTECSR_ECFG_EVOLTE_JITTER_THRESHOLD = 35,
+ LTECSR_ECFG_EVOLTE_PLR_THRESHOLD = 36,
+ LTECSR_ECFG_EVOLTE_ANBR_ENABLE = 37,
+ LTECSR_ECFG_EVOLTE_ANBR_PARA = 38,
+
+ LTECSR_ECFG_DUMP_PROFILE = 39,
+ LTECSR_ECFG_NO_RTP_DROPCALL = 40,
+ LTECSR_ECFG_UL_SILENCE_DROPCALL_THRESHOLD = 41,
+
+ LTECSR_ECFG_RA_PARA = 44,
+ LTECSR_ECFG_RA_DURATION_MAX = 45,
+ LTECSR_ECFG_RA_DURATION_LOW = 46,
+ LTECSR_ECFG_RA_RSRP_POOR_TH = 47,
+ LTECSR_ECFG_RA_RSRP_GOOD_TH = 48,
+ LTECSR_ECFG_RA_SINR_POOR_TH = 49,
+ LTECSR_ECFG_RA_SINR_GOOD_TH = 50,
+
+ LTECSR_ECFG_MAX ,
+} ecfg_e;
+
+enum VoLTE_Event_IP_Version_e {
+ VoLTE_Event_IPv4 = 0,
+ VoLTE_Event_IPv6,
+ /*add here*/
+ VoLTE_Event_IPv_Max,
+};
+
+enum VoLTE_Event_ECN_RTP_METHOD_e {
+ VoLTE_Event_ECN_RTP_NONE = 0,
+ VoLTE_Event_ECN_RTP,
+ VoLTE_Event_ECN_RTP_ICE,
+ VoLTE_Event_ECN_RTP_LEAP,
+ /*add here*/
+ VoLTE_Event_ECN_RTP_Max,
+};
+
+/* Bit-map
+
+ bit0: ALTC
+
+*/
+enum VoLTE_Event_Media_Feature_Flag_e {
+ VoLTE_Event_Media_Feature_Flag_Altc = (1<<0),
+};
+
+typedef enum e_dtmf_mode {
+ DTMF_IN_BAND=0,
+ DTMF_OUT_BAND=1,
+ DTMF_INOUT_BAND=2,
+} dtmf_mode_e;
+
+typedef enum e_dtmf_duration {
+ DTMF_PLAY_INFINITE=-1,
+ DTMF_STOP=0,
+ DTMF_PLAY_ONESHOT=40,
+ /* others value: for unit(ms) */
+} dtmf_duration_e;
+
+typedef enum e_dtmf_clock_rate {
+ DTMF_CLOCK_RATE_8000 = 0,
+ DTMF_CLOCK_RATE_16000 = 1,
+} dtmf_clock_rate_e;
+
+typedef struct s_xxx2ltecsr_dtmf_param {
+ kal_int32 cid;
+// kal_int32 sid;
+ kal_uint8 digit;
+// kal_int8 mode;
+ kal_int8 duration;
+} xxx2ltecsr_dtmf_param_t;
+
+typedef enum e_dtmf_event_state {
+ DTMF_KEY_RELEASE =0,
+ DTMF_KEY_PUSH_STR=1,
+ DTMF_KEY_PUSH_ING=2,
+ DTMF_KEY_PUSH_RE1=3,
+ DTMF_KEY_PUSH_RE2=4,
+ DTMF_KEY_PUSH_RE3=5,
+} dtmf_event_state_e;
+
+typedef enum {
+ LTECSR_HO_START = 0,
+ LTECSR_HO_END = 1
+} ltecsr_ho_stage_enum;
+
+
+
+#define VOLTE_IPV4_LENGTH 4
+#define VOLTE_IPV6_LENGTH 16
+
+/** For EVS START **/
+/* Ref 3GPP 26.445 Table A.3 */
+/* Only for Primary mode */
+enum VoLTE_EVS_Codec_Bitrate_e {
+ VoLTE_EVS_Codec_Bitrate_5_9 = 0x0,
+ VoLTE_EVS_Codec_Bitrate_7_2,
+ VoLTE_EVS_Codec_Bitrate_8_0,
+ VoLTE_EVS_Codec_Bitrate_9_6,
+ VoLTE_EVS_Codec_Bitrate_13_2,
+ VoLTE_EVS_Codec_Bitrate_16_4,
+ VoLTE_EVS_Codec_Bitrate_24_4,
+ VoLTE_EVS_Codec_Bitrate_32_0,
+ VoLTE_EVS_Codec_Bitrate_48_0,
+ VoLTE_EVS_Codec_Bitrate_64_0,
+ VoLTE_EVS_Codec_Bitrate_96_0,
+ VoLTE_EVS_Codec_Bitrate_128_0 = 0xB,
+ VoLTE_EVS_Codec_Bitrate_NONE = 0xF,
+};
+
+enum VoLTE_EVS_Bandwidth_e {
+ VoLTE_EVS_Bandwidth_NB = 0x0,
+ VoLTE_EVS_Bandwidth_WB,
+ VoLTE_EVS_Bandwidth_SWB,
+ VoLTE_EVS_Bandwidth_FB,
+ VoLTE_EVS_Bandwidth_MAX,
+ VoLTE_EVS_Bandwidth_NONE = 0xF,
+};
+/** For EVS END **/
+
+typedef struct s_media_param {
+ VoLTE_Event_Media_config_t o;
+} media_param_t;
+
+typedef struct bearer_mbr_gbr {
+ kal_int32 dl_gbr;
+ kal_int32 dl_mbr;
+ kal_int32 ul_gbr;
+ kal_int32 ul_mbr;
+} bearer_mbr_gbr_t;
+
+typedef struct s_xxx2ltecsr_param {
+
+ /* call id */
+ kal_int32 cid;
+
+ /* session id */
+ kal_int32 voice_sid;
+ kal_int32 video_sid;
+
+ /* BID for voice and video */
+ /* for media_del, BID is not used */
+ kal_int32 voice_bid; /* LTE: EBI, NR: PSI|QFI */
+ kal_int32 video_bid; /* LTE: EBI, NR: PSI|QFI */
+
+ /* channel for voice and video */
+ kal_uint16 voice_type; /* 0 (LTE), 1 (WIFI), 2 (NR) */
+ kal_uint16 video_type; /* 0 (LTE), 1 (WIFI), 2 (NR) */
+
+ /* op code */
+ kal_uint32 func_class;
+
+ /* Default Bearer ID */
+ kal_uint32 default_bid; /* LTE: Default EBI, NR: PSI|Default QFI */
+
+ /* PDN Context ID */
+ kal_uint32 pdn_cid;
+
+ /* all parameters */
+ media_param_t params;
+
+ /* pcscf */
+ kal_uint32 ip_version; /* 1 (IPv4), 2 (IPv6) */
+ kal_int8 pcscf_address[IMCB_IMC_IPADDR_LENGTH];
+ kal_uint8 if_name[IMC_MAX_IF_NAME_LENGTH];
+
+ /* text sid for TTY/RTT
+ 0 default value
+ -1 delete tty/rtt
+ others tty/rtt alive
+ */
+ kal_int32 tty_sid;
+ kal_int32 tty_bid; /* LTE: EBI, NR: PSI|QFI */
+
+ kal_uint16 tty_type; /* 0 (LTE), 1 (WIFI), 2 (NR) */
+ kal_uint16 gbr_mbr_present_mask; /* 0x1 voice, 0x2 video, 0x4 tty */
+
+ bearer_mbr_gbr_t voice_bearer_quatlity;
+ bearer_mbr_gbr_t video_bearer_quatlity;
+ bearer_mbr_gbr_t tty_bearer_quatlity;
+} xxx2ltecsr_param_t ;
+/* from IMC to LTECSR */
+typedef struct s_ltecsr_media_new {
+ LOCAL_PARA_HDR
+ kal_uint32 tv_sec; // IMCB use gettimeofday to get the time from 1970 (sec)
+ xxx2ltecsr_param_t param;
+} ltecsr_media_new_struct;
+
+typedef struct s_ltecsr_media_del {
+ LOCAL_PARA_HDR
+ xxx2ltecsr_param_t param;
+} ltecsr_media_del_struct;
+
+typedef struct s_ltecsr_media_update {
+ LOCAL_PARA_HDR
+ xxx2ltecsr_param_t param;
+} ltecsr_media_update_struct;
+
+typedef struct s_ltecsr_media_active {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+ kal_int32 direction;
+} ltecsr_media_active_struct;
+
+/* from LTECSR to IMC */
+typedef struct s_ltecsr_media_no_dlpkt_struct {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+} ltecsr_media_no_dlpkt_struct;
+
+typedef struct s_ltecsr_media_no_ulpkt_struct {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+} ltecsr_media_no_ulpkt_struct;
+
+
+/*from LTECSR to IMC, if ANBR can not supported by the negotiated codec, notify UA for further SIP procedure*/
+typedef struct s_ltecsr_media_anbr_notify_ind_struct {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+ kal_uint32 anbr_value; /*for cid, AS(including RTP and RTCP) supported by access network(e.g, LTE)*/
+}ltecsr_media_anbr_notify_ind_struct;
+
+/*from IMC to LTECSR, UA tells that SIP negotiated based on ANBR fails, then LTECSR shall not notify ANBR with the same bearer and session again*/
+typedef struct s_ltecsr_media_anbr_notify_rsp_struct {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+ kal_uint32 anbr_result; /*0: SIP negotiated base on ANBR fails; 1: SIP negotiated based on ANBR success; other value: ignore*/
+}ltecsr_media_anbr_notify_rsp_struct;
+
+
+
+/**
+ * IMC External
+ */
+typedef struct s_ltecsr_dtmf_req {
+ LOCAL_PARA_HDR
+ xxx2ltecsr_dtmf_param_t param;
+} ltecsr_dtmf_req_struct;
+
+typedef struct s_ltecsr_media_incoming_dlpkt_struct {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+} ltecsr_media_incoming_dlpkt_struct;
+
+/* HANDOVER with ebi */
+typedef struct s_ltecsr_handover_begin_struct{
+ imcf_uint8 source_rat_type;
+ imcf_uint8 target_rat_type;
+ imcf_uint8 default_ebi;
+ imcf_uint8 pad;
+ imcf_uint32 network_id;
+} ltecsr_handover_begin_struct;
+
+typedef struct s_ltecsr_handover_end_struct{
+ imcf_uint8 source_rat_type;
+ imcf_uint8 target_rat_type;
+ imcf_uint8 is_success;
+ imcf_uint8 default_ebi;
+ imcf_uint32 network_id;
+} ltecsr_handover_end_struct;
+
+/**
+ * L1SP External
+ */
+typedef struct s_ltecsr_voice_ul_data_notify {
+ LOCAL_PARA_HDR
+} ltecsr_voice_ul_data_notify_struct;
+
+/**
+ * LTECSR Internal
+ */
+typedef struct s_ltecsr_media_init {
+ LOCAL_PARA_HDR
+ xxx2ltecsr_param_t param;
+} ltecsr_media_init_struct;
+
+typedef struct s_ltecsr_media_start {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+ kal_int32 sid;
+} ltecsr_media_start_struct;
+
+typedef struct s_ltecsr_media_stop {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+ kal_int32 sid;
+} ltecsr_media_stop_struct;
+
+typedef struct s_ltecsr_media_xmit_mode_set {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+ kal_int32 sid;
+ kal_int8 xmit_mode; /* xmit_mode_e */
+} ltecsr_media_xmit_mode_set_struct;
+
+typedef struct s_ltecsr_dtmf_play {
+ LOCAL_PARA_HDR
+ xxx2ltecsr_dtmf_param_t param;
+} ltecsr_dtmf_play_struct;
+
+typedef struct s_ltecsr_dtmf_stop {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+} ltecsr_dtmf_stop_struct;
+
+typedef struct s_ltecsr_media_pt_set {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+ kal_int32 codec;
+ kal_int32 pt;
+} ltecsr_media_pt_set_struct;
+
+typedef struct s_ltecsr_rtcp_send_interval_set {
+ LOCAL_PARA_HDR
+ kal_int32 cid;
+ kal_int32 sid;
+ kal_int32 rtcp_send_interval;
+} ltecsr_rtcp_send_interval_set_struct;
+
+
+/* For new mechanism,
+ * ecfg_req/ecfg_cnf are used for LTECSR internally.
+ * we keep structure here for old IMC code not removed yet.
+ */
+typedef struct s_ltecsr_ecfg_req {
+ LOCAL_PARA_HDR
+ kal_bool op_code; // 0:get, 1:set
+ ecfg_e config_type;
+ kal_uint8 config_size;
+ kal_uint32 value; // only set op_code will use it
+} ltecsr_ecfg_req_struct;
+
+typedef struct s_ltecsr_ecfg_cnf {
+ LOCAL_PARA_HDR
+ kal_bool result; // KAL_TRUE or KAL_FALSE
+ kal_bool op_code; // 0:get, 1:set
+ ecfg_e config_type;
+ kal_uint8 config_size;
+ kal_uint32 value; // only get op_code will use it
+} ltecsr_ecfg_cnf_struct;
+
+
+typedef struct s_ltecsr_epdg_ho_ind {
+ LOCAL_PARA_HDR
+ kal_int32 stage; // ltecsr_ho_stage_enum
+ kal_int32 rat; // rat: 0->3GPP, 1->WiFi
+ kal_int32 network_id; // network_id
+ kal_int32 pdn_id; // if (stage==1 && rat==0), pdn_id must be non-zero; LTE: Default EBI, NR: PDU Session ID
+ kal_uint8 if_name[IMC_MAX_IF_NAME_LENGTH];
+} ltecsr_epdg_ho_ind_struct;
+
+/* interface to ATP */
+typedef enum e_ltecsr_event_type {
+ LTECSR_EVENT_NONE = 0,
+ LTECSR_EVENT_ONE_WAY = 1,
+ LTECSR_EVENT_NEED_CNF = 2,
+ LTECSR_EVENT_CNF = 3,
+ LTECSR_EVENT_MAX = 0xff,
+} ltecsr_event_type_e;
+
+typedef enum e_ltecsr_atp_event {
+ LTECSR_ATP_NONE = 0,
+ LTECSR_ATP_RTP_SESSION_TIMEOUT = 1,
+ LTECSR_ATP_PKT_INFO_URC = 2,
+ LTECSR_ATP_IMS_AUDIO_SILENCE_IND = 3,
+ LTECSR_ATP_MAX = 0xff,
+} ltecsr_atp_event_e;
+
+typedef enum e_ltecsr_action_ind {
+ LTECSR_IND_NONE = 0,
+ LTECSR_IND_EPDG = 1,
+ LTECSR_IND_PCSCF = 2,
+ LTECSR_IND_MAX = 0xff,
+} ltecsr_action_ind_e;
+
+typedef struct s_ltecsr_atp_req_struct {
+ LOCAL_PARA_HDR
+ kal_uint32 index;
+ ltecsr_event_type_e type;
+ ltecsr_atp_event_e msg;
+} ltecsr_atp_req_struct;
+
+typedef struct s_ltecsr_rtp_sample_time_ind_struct {
+ LOCAL_PARA_HDR
+ kal_uint8 pdn_id;
+ kal_uint32 network_id;
+ kal_uint32 timer;
+} ltecsr_rtp_sample_time_ind_struct;
+
+typedef struct s_ltecsr_rtp_session_expire_ind {
+ kal_uint32 id;
+ kal_uint32 pdn_id;
+ kal_uint32 network_id;
+ kal_uint32 timer;
+ kal_uint32 timeout;
+ kal_uint32 action;
+} ltecsr_rtp_session_expire_ind_struct;
+
+typedef struct s_ltecsr_pkt_info_urc_struct {
+ kal_uint32 id;
+ kal_uint32 pdn_id;
+ kal_uint32 network_id;
+ kal_uint32 timer; // statistic duration (ms)
+ kal_uint32 ul_lost; // Uplink pkt loss rate (1/256)
+ kal_uint32 dl_lost; // Downlink pkt loss rate (%)
+ kal_uint32 jitter; // jitter (ms)
+ kal_uint32 rtt; // round trip time (ms)
+} ltecsr_pkt_info_urc_struct;
+
+typedef struct s_ltecsr_ims_audio_silence_ind_struct {
+ kal_uint32 call_id;
+ kal_uint32 is_silence;
+} ltecsr_ims_audio_silence_ind_struct;
+
+
+typedef struct _ltecsr_ims_notify_msg_t{
+ kal_uint32 call_id; //unique call id
+ kal_uint8 msg_id; //enum value should be maintain in shared point
+ kal_uint8 ver; //structure version number start from 0
+ kal_uint16 rsv; //reserve bit must fill 0 (for 4 byte alignment)
+ kal_uint8 ext[64]; //reserve for future other usage
+} ltecsr_ims_notify_msg_t;
+
+typedef struct s_ltecsr_ims_notify_ind_struct {
+ LOCAL_PARA_HDR
+ ltecsr_ims_notify_msg_t msg;
+} ltecsr_ims_notify_ind_struct;
+
+typedef struct s_ltecsr_ims_notify_req_struct {
+ LOCAL_PARA_HDR
+ ltecsr_ims_notify_msg_t msg;
+} ltecsr_ims_notify_req_struct;
+
+typedef enum e_ltecsr_ims_notify{
+ LTECSR_IMS_NOTIFY_NONE = 0,
+ LTECSR_IMS_RTP_TIMER_EXPIRE = 1,
+ LTECSR_IMS_RTCP_TIMER_EXPIRE = 2,
+ LTECSR_IMS_RTP_WARNING_TIMER_EXPIRE = 3,
+ LTECSR_IMS_TEXT_RTP_RTCP_TIMER_EXPIRE = 4,
+ LTECSR_IMS_TEXT_RTP_TIMER_EXPIRE = 5,
+ LTECSR_IMS_TEXT_RTCP_TIMER_EXPIRE = 6,
+ LTECSR_IMS_PARAM_ERROR_NOTIFY = 7,
+ LTECSR_IMS_RTP_TIMER_SDP_REFRESH = 8,
+ LTECSR_IMS_NOTIFY_MAX = 0xff,
+} ltecsr_ims_notify_e;
+
+/**
+ * L1C to LTECSR
+ */
+typedef struct s_ltecsr_l1c_latency_test_detection_ind {
+ LOCAL_PARA_HDR
+ kal_bool latency_test_flag; // 1: detected, 0: not detected
+} ltecsr_l1c_latency_test_detection_ind_struct;
+
+/*
+ * LTECSR Self Profile(NVRAM) Logging
+ */
+#ifdef __VOLTE_SUPPORT__
+typedef struct {
+ LOCAL_PARA_HDR
+
+ kal_uint32 sim_slot_id;
+ nvram_ef_ltecsr_profile_record_struct profile;
+} ltecsr_profile_dump_struct;
+#endif
+
+/*
+ * LTECSR to IWLAN
+ */
+typedef enum _ltecsr_ping_result_e {
+ NETWORK_PING_PCSCF_NO_REPLY = 1,
+ NETWORK_PING_PCSCF_PART_REPLY = 2,
+ NETWORK_PING_PCSCF_FULL_REPLY = 3,
+}ltecsr_ping_result_e;
+
+/*********** ERRC ************/
+typedef enum e_ltecsr_errc_volte_status {
+ LTECSR_ERRC_VOLTE_CALL_START = 0,
+ LTECSR_ERRC_VOLTE_CALL_END = 1,
+} ltecsr_errc_volte_status_e;
+
+typedef enum e_ltecsr_errc_delay_budget_cmd {
+ LTECSR_ERRC_DB_RELEASE = 0,
+ LTECSR_ERRC_DB_SETUP = 1,
+} ltecsr_errc_delay_budget_cmd_e;
+
+typedef enum e_ltecsr_errc_delay_budget_type {
+ LTECSR_ERRC_DB_INVALID = 0,
+ LTECSR_ERRC_DB_TYPE1 = 1,
+ LTECSR_ERRC_DB_TYPE2 = 2,
+} ltecsr_errc_delay_budget_type_e;
+
+typedef enum e_ltecsr_errc_volte_quality {
+ LTECSR_ERRC_VOICE_GOOD = 0,
+ LTECSR_ERRC_VOICE_BAD = 1,
+} ltecsr_errc_volte_quality_e;
+
+
+/* VoLTE Status: LTECSR -> ERRC */
+typedef struct s_ltecsr_errc_volte_status_ntf_struct {
+ LOCAL_PARA_HDR
+ ltecsr_errc_volte_status_e volte_status;
+} ltecsr_errc_volte_status_ntf_struct;
+
+
+/* Delay Budget: ERRC -> LTECSR */
+typedef struct s_ltecsr_errc_delay_budget_rpt_req_struct {
+ LOCAL_PARA_HDR
+ ltecsr_errc_delay_budget_cmd_e cmd;
+} ltecsr_errc_delay_budget_rpt_req_struct;
+
+typedef struct s_ltecsr_errc_delay_budget_result_ind_struct {
+ LOCAL_PARA_HDR
+ ltecsr_errc_delay_budget_type_e type; // type 1 or 2 report to eNB
+ kal_int16 value; // unit: ms, reported value
+} ltecsr_errc_delay_budget_result_ind_struct; // JBM could use this info to do some enhancement
+
+/* Delay Budget: LTECSR -> ERRC */
+typedef struct s_ltecsr_errc_delay_budget_rpt_cnf_struct {
+ LOCAL_PARA_HDR
+ ltecsr_errc_volte_quality_e volte_quality;
+ kal_int16 e2e_delay; // unit: ms
+ kal_int16 speech_delay; // unit: ms, UL+DL speech delay
+ kal_int16 JBM_delay_budget; // unit: ms
+ kal_int16 delay_threshold; // unit: ms, mouth-to-ear delay threshold defined by NVRAM
+} ltecsr_errc_delay_budget_rpt_cnf_struct,ltecsr_errc_delay_budget_rpt_ind_struct;
+
+/*ANBRQ support or not from LTE: UPCM -> LTECSR*/
+typedef struct s_ltecsr_upcm_anbrq_config_ind_struct {
+ LOCAL_PARA_HDR
+ kal_bool anbrq_config; /*true: anbrq support; false: anbrq not support*/
+}ltecsr_upcm_anbrq_config_ind_struct;
+
+/*ABNR: UPCM->LTECSR*/
+typedef struct s_ltecsr_upcm_anbr_ind_struct {
+ LOCAL_PARA_HDR
+#ifdef __FIVEG_VOICE__
+ kal_uint8 bearer_id; // EBI/QFI
+ kal_uint8 pdu_session_id; // LTE: 0, NR: PSI
+#else /* __FIVEG_VOICE__ */
+ kal_uint8 ebi;
+#endif /* __FIVEG_VOICE__ */
+ kal_bool is_ul;
+ kal_uint32 bitrate; /*bps, recommendated bitrate (in RTP payload level) from Access Network, after removing LTE related header (ROHC/PDCP/RLC/MAC.)*/
+}ltecsr_upcm_anbr_ind_struct;
+
+/*ANBRQ: LTECSR->UPCM*/
+typedef struct s_ltecsr_upcm_anbrq_req_struct {
+ LOCAL_PARA_HDR
+#ifdef __FIVEG_VOICE__
+ kal_uint8 bearer_id; // EBI/QFI
+ kal_uint8 pdu_session_id; // LTE: 0, NR: PSI
+#else /* __FIVEG_VOICE__ */
+ kal_uint8 ebi;
+#endif /* __FIVEG_VOICE__ */
+ kal_bool is_ul;
+ kal_uint32 bitrate; /*bps, queryed bitrate (in RTP payload level) to Access Network*/
+}ltecsr_upcm_anbrq_req_struct;
+
+#ifdef __FIVEG_VOICE__
+/*IPV4V6: LTECSR->UPCM*/
+typedef struct s_ltecsr_upcm_ipv4v6_req_struct {
+ LOCAL_PARA_HDR
+ kal_uint8 bearer_id; // EBI/QFI
+ kal_uint8 ipv4v6_type;
+ kal_uint8 pdu_session_id; // LTE: 0, NR: PSI
+}ltecsr_upcm_ipv4v6_req_struct;
+#endif /* __FIVEG_VOICE__ */
+
+/*********** NRRC - LTECSR SAP ************/
+typedef enum {
+ LTECSR_NR_DELAY_BUDGET_REPORTING_COMMAND_STOP = 0,
+ LTECSR_NR_DELAY_BUDGET_REPORTING_COMMAND_START = 1
+} ltecsr_nr_delay_budget_reporting_command_enum;
+
+typedef enum {
+ LTECSR_NR_DELAY_BUDGET_REPORT_TYPE_TYPE1 = 1
+} ltecsr_nr_delay_budget_report_type_enum;
+
+/* NRRC_LTECSR_DELAY_BUDGET_REPORT_REQ (NRRC -> LTECSR) */
+typedef struct s_ltecsr_nrrc_delay_budget_report_req_struct {
+ LOCAL_PARA_HDR
+ ltecsr_nr_delay_budget_reporting_command_enum command;
+} nrrc_ltecsr_delay_budget_report_req_struct;
+
+/* NRRC_LTECSR_DELAY_BUDGET_REPORT_IND (LTECSR -> NRRC) */
+typedef struct s_ltecsr_nrrc_delay_budget_report_ind_struct{
+ LOCAL_PARA_HDR
+ kal_bool valid;
+ kal_bool is_voice_quality_good;
+ kal_uint16 voice_delay;
+ kal_uint16 jbm_delay_budget;
+ kal_uint16 max_acceptable_delay;
+} nrrc_ltecsr_delay_budget_report_ind_struct;
+
+/* NRRC_LTECSR_DELAY_BUDGET_RESULT_HANDLE_REQ (NRRC -> LTECSR) */
+typedef struct s_ltecsr_nrrc_delay_budget_result_handle_req_struct {
+ LOCAL_PARA_HDR
+ ltecsr_nr_delay_budget_report_type_enum type;
+ kal_int16 drx_adjustment;
+} nrrc_ltecsr_delay_budget_result_handle_req_struct;
+
+#endif
+
diff --git a/mcu/protocol/interface/ims/n3cf_atp_struct.h b/mcu/protocol/interface/ims/n3cf_atp_struct.h
new file mode 100644
index 0000000..fc26afd
--- /dev/null
+++ b/mcu/protocol/interface/ims/n3cf_atp_struct.h
@@ -0,0 +1,69 @@
+
+#ifndef _N3CF_ATP_STRUCT_H
+#define _N3CF_ATP_STRUCT_H
+/****************************************************************************/
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+/****************************************************************************/
+
+typedef enum {
+ ATP_N3CF_DRP_OP_FLUSH = 0, //no use now
+ ATP_N3CF_DRP_OP_DUMP = 1,
+ ATP_N3CF_DRP_OP_CNT,
+} atp_n3cf_drp_op_enum;
+
+
+/****************************************************************************/
+
+// MSG_ID_ATP_N3CF_EN3CFGSET_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+ kal_char cfg_value[256];
+} atp_n3cf_en3cfgset_req_struct;
+
+// MSG_ID_ATP_N3CF_EN3CFGSET_IND
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+ kal_int32 status;
+} atp_n3cf_en3cfgset_ind_struct;
+
+// MSG_ID_ATP_N3CF_EN3CFGGET_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+} atp_n3cf_en3cfgget_req_struct;
+
+// MSG_ID_ATP_N3CF_EN3CFGGET_CNF
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char cfg_name[64];
+ kal_char cfg_value[256];
+ kal_int32 status;
+} atp_n3cf_en3cfgget_cnf_struct;
+
+//MSG_ID_ATP_N3cf_DUMP_RUNTIME_PARA_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ atp_n3cf_drp_op_enum op; // 0: flush NVRAM 1: dump to NVRAM
+} atp_n3cf_dump_runtime_para_req_struct;
+
+// MSG_ID_ATP_N3CF_EPVS_SET_REQ
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_char pvs_name[64];
+ kal_uint8 pvs_value[256];
+ kal_int32 status;
+} atp_n3cf_epvs_set_req_struct;
+
+// MSG_ID_ATP_N3CF_EPVS_SET_CNF
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool status;
+} atp_n3cf_epvs_set_cnf_struct;
+
+/****************************************************************************/
+#endif /* _N3CF_ATP_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/sase_imc_struct.h b/mcu/protocol/interface/ims/sase_imc_struct.h
new file mode 100644
index 0000000..a93f214
--- /dev/null
+++ b/mcu/protocol/interface/ims/sase_imc_struct.h
@@ -0,0 +1,71 @@
+/*****************************************************************************
+* 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef _SASE_IMC_STRUCT_H
+#define _SASE_IMC_STRUCT_H
+
+#include "ps_public_enum.h"
+#include "sim_public_enum.h"
+#include "ims_common_def.h"
+#include "ims_interface_md.h"
+
+typedef enum {
+ SASE_IMC_IMS_CALL_STATUS_UNSPEC = 0,
+ SASE_IMC_IMS_CALL_STATUS_BEGIN,
+ SASE_IMC_IMS_CALL_STATUS_CONNECTED,
+ SASE_IMC_IMS_CALL_STATUS_END,
+} sase_imc_ims_call_status_enum;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_acct_type_enum acct_type; //defined in ims_interface_md.h
+ kal_uint32 call_id;
+ ims_call_mode_enum call_mode; //defined in ims_interface_md.h
+ sase_imc_ims_call_status_enum call_status;
+} sase_imc_ims_call_status_ind_struct;
+
+#endif /* _SASE_IMC_STRUCT_H */
diff --git a/mcu/protocol/interface/ims/sdm_atp_enums.h b/mcu/protocol/interface/ims/sdm_atp_enums.h
new file mode 100644
index 0000000..4e41a27
--- /dev/null
+++ b/mcu/protocol/interface/ims/sdm_atp_enums.h
@@ -0,0 +1,173 @@
+/*****************************************************************************
+* 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) 2015
+*
+* 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:
+ * ------------
+ * sdm_atp_enums.h
+ *
+ * Project:
+ * ------------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ * This file defines the enum between SDM and IMS Proxy.
+ *
+ * Author:
+ * -----------
+ * -------
+ *
+ *===========================================================
+ * $Log$
+ *
+ * 03 25 2020 chen-wei.lan
+ * [MOLY00499773] [FTAA][CNY][MDST][SWIFT][MT6873][Margaux][Q0][MP2][SQC][NSA][China][Shanghai][Static][SIM1:CU][SIM2:Verizon]Externel (EE),0,0,99,/data/vendor/core/,1,modem,[Fatal error(buf)] err_code1:0x00000823 err_code2:0x00000100 err_code3:0xCCCCCCCC MD Offender:NAS
+ * IMS SMS MT END
+ *
+ * 04 05 2017 hsuanchang.chen
+ * [MOLY00237411] [6293][PreIT] UTK/STK SMS Flow Merge
+ *
+ * . interface
+ *
+ * 04 05 2017 hsuanchang.chen
+ * [MOLY00232032] [SDM] [MT SMS AT Merge] merge +CMT/+EIMSCMT and +CDS/+EIMSCDS
+ *
+ * . ATP and interface
+ *
+ * 03 20 2017 hsuanchang.chen
+ * [MOLY00228407] [SDM] Internal Re-arch
+ *
+ * . remove tab and un-used code
+ *
+ * 10 25 2016 zhichao.zhao
+ * [MOLY00204308] [Áªµ÷][Jade][CT][VoLTE]SDM will not select CS domain for SMS when CS is unregistered in LTE
+ *
+ * .correct build error
+ *
+ * 10 25 2016 zhichao.zhao
+ * [MOLY00204308] [Áªµ÷][Jade][CT][VoLTE]SDM will not select CS domain for SMS when CS is unregistered in LTE
+ *
+ * .
+ *
+ * 05 23 2016 ian-yw.chen
+ * [MOLY00180481] [SDM][ATT req.] Report start and end of MO SMS over IMS to AP (SDM/IMSP part)
+ * .
+ *
+ * 03 24 2016 chinte.chen
+ * [MOLY00167924] [L4][R12] Handling of SCM at VDM/SDM/L4 part
+ * .
+ *
+ *****************************************************************************/
+
+#ifndef _SDM_ATP_ENUMS_H_
+#define _SDM_ATP_ENUMS_H_
+
+// mirror from rmmi_reg_state_enum and nas_reg_status_enum @/mcu/modem/interface/ims/vdm_imsp_struct.h
+typedef enum
+{
+ SDM_NAS_PS_REG_STATUS_NOT_REGISTERED = 0,
+ SDM_NAS_PS_REG_STATUS_REGISTERED_HOME,
+ SDM_NAS_PS_REG_STATUS_NOT_REGISTERED_SEARCHING,
+ SDM_NAS_PS_REG_STATUS_REG_DENIED,
+ SDM_NAS_PS_REG_STATUS_OUT_OF_COVERAGE,
+ SDM_NAS_PS_REG_STATUS_REGISTERED_ROAMING,
+ SDM_NAS_PS_REG_STATUS_SMS_ONLY_HOME,
+ SDM_NAS_PS_REG_STATUS_SMS_ONLY_ROAMING,
+ SDM_NAS_PS_REG_STATUS_EMERGENCY_ONLY,
+ SDM_NAS_PS_REG_STATUS_CSFB_NOT_PREFERRED_HOME,
+ SDM_NAS_PS_REG_STATUS_CSFB_NOT_PREFERRED_ROAMING
+} sdm_nas_ps_reg_status_enum;
+
+typedef enum
+{
+ SDM_NAS_CS_REG_STATUS_NOT_REGISTERED = 0,
+ SDM_NAS_CS_REG_STATUS_REGISTERED_HOME,
+ SDM_NAS_CS_REG_STATUS_NOT_REGISTERED_SEARCHING,
+ SDM_NAS_CS_REG_STATUS_REG_DENIED,
+ SDM_NAS_CS_REG_STATUS_OUT_OF_COVERAGE,
+ SDM_NAS_CS_REG_STATUS_REGISTERED_ROAMING,
+ SDM_NAS_CS_REG_STATUS_SMS_ONLY_HOME,
+ SDM_NAS_CS_REG_STATUS_SMS_ONLY_ROAMING,
+ SDM_NAS_CS_REG_STATUS_EMERGENCY_ONLY,
+ SDM_NAS_CS_REG_STATUS_CSFB_NOT_PREFERRED_HOME,
+ SDM_NAS_CS_REG_STATUS_CSFB_NOT_PREFERRED_ROAMING
+}sdm_nas_cs_reg_status_enum;
+
+// mirror from proxy_cmd_result_enum
+typedef enum
+{
+ SDM_AT_CMD_FAIL,
+ SDM_AT_CMD_SUCCESS,
+ SDM_AT_CMD_INTERMEDIATE_RSP,
+ SDM_AT_CMD_NO_CARRIER,
+ SDM_AT_CMD_BUSY,
+ SDM_AT_CMD_CONNECT,
+ SDM_AT_CMD_CONNECT_PS
+} sdm_at_cmd_result_enum;
+
+typedef enum
+{
+ SDM_IMS_SESSION_INDICATION_START = 1,
+ SDM_IMS_SESSION_INDICATION_STOP,
+
+} sdm_ims_session_indication_enum;
+
+typedef enum
+{
+ SMS_OVER_INVALID_DOMAIN,
+ SMS_OVER_3GPP_CS,
+ SMS_OVER_3GPP_IMS,
+ SMS_OVER_3GPP2_CS,
+ SMS_OVER_3GPP2_IMS,
+ STATUS_REPORT_OVER_3GPP_CS,
+ STATUS_REPORT_OVER_3GPP_IMS,
+ STATUS_REPORT_OVER_3GPP2_CS,
+ STATUS_REPORT_OVER_3GPP2_IMS,
+} sdm_sms_domain_enum;
+
+typedef enum
+{
+ SDM_SYS_TYPE_3GPP = 0x00,
+ SDM_SYS_TYPE_3GPP2 = 0x01,
+} sdm_system_type_enum;
+
+typedef enum
+{
+ SDM_SMS_CURRENT_DOMAIN_CS = 0x00,
+ SDM_SMS_CURRENT_DOMAIN_IMS = 0x01,
+} sdm_sms_current_domain_enum;
+
+#endif // _SDM_ATP_ENUMS_H_
diff --git a/mcu/protocol/interface/ims/sdm_atp_struct.h b/mcu/protocol/interface/ims/sdm_atp_struct.h
new file mode 100644
index 0000000..8ecb48e
--- /dev/null
+++ b/mcu/protocol/interface/ims/sdm_atp_struct.h
@@ -0,0 +1,767 @@
+/*****************************************************************************
+* 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) 2013
+*
+* 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:
+ * ------------
+ * sdm_atp_struct.h
+ *
+ * Project:
+ * ------------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ * This file defines the interface messages between SDM and IMS Proxy.
+ *
+ * Author:
+ * -----------
+ * -------
+ *
+ *===========================================================
+ * $Log$
+ *
+ * 08 20 2021 vishwas.hegde
+ * [MOLY00693453] [In-house][MPR][CYCLE-7][MT6890][Colgin][India][[Delhi]][4GMM][MP7][FreeTest][RJIO]DUT is not able to recieve SMS
+ *
+ * .
+ *
+ * 09 18 2020 chen-wei.lan
+ * [MOLY00568087] [Gen97] Support 5g t911
+ * 5G-911
+ *
+ * 09 11 2020 chen-wei.lan
+ * [MOLY00568087] [Gen97] Support 5g t911
+ *
+ * [MPD]t911
+ *
+ * 07 27 2020 yulong.chang
+ * [MOLY00549478] [Gen97][HE3.0]N3GPP offload over data feature
+ * VoData SDM part
+ *
+ * 03 25 2020 chen-wei.lan
+ * [MOLY00499773] [FTAA][CNY][MDST][SWIFT][MT6873][Margaux][Q0][MP2][SQC][NSA][China][Shanghai][Static][SIM1:CU][SIM2:Verizon]Externel (EE),0,0,99,/data/vendor/core/,1,modem,[Fatal error(buf)] err_code1:0x00000823 err_code2:0x00000100 err_code3:0xCCCCCCCC MD Offender:NAS
+ * IMS SMS MT END
+ *
+ * 02 07 2020 chen-wei.lan
+ * [MOLY00498827] [Need Patch] [Sanity Fail] Failed SMS sending on LTE / UMTS / GSM mode.
+ * nas register status
+ *
+ * 09 25 2019 chen-wei.lan
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM
+ *
+ * 07 12 2019 chen-wei.lan
+ * [MOLY00346647] [MT6297][VDM/L4] changes for 97
+ *
+ * [SDM patch back]7342306
+ *
+ * 03 12 2019 ian-yw.chen
+ * [MOLY00390240] [Gen97] SMS features and revise
+ * .
+ *
+ * 06 27 2018 hsuanchang.chen
+ * [MOLY00335837] [¶³UT] Fix ¶³UT issue
+ * . Fix Cloud UT issue
+ *
+ * 08 07 2017 hsuanchang.chen
+ * [MOLY00220138] [SDM] LR12 to UMOLYA sync
+ *
+ * . sync [MOLY00261843] [CDMA-less][LR11.MP5] main feature CR (SDM)
+ *
+ * 04 05 2017 hsuanchang.chen
+ * [MOLY00237411] [6293][PreIT] UTK/STK SMS Flow Merge
+ *
+ * . interface
+ *
+ * 04 05 2017 hsuanchang.chen
+ * [MOLY00232032] [SDM] [MT SMS AT Merge] merge +CMT/+EIMSCMT and +CDS/+EIMSCDS
+ *
+ * . ATP and interface
+ *
+ * 04 05 2017 hsuanchang.chen
+ * [MOLY00229182] [MT6293] EIMSCFG for SDM (SDM replace WFC enable to vowifi enable)
+ * .
+ *
+ * 03 24 2017 hsuanchang.chen
+ * [MOLY00228407] [SDM] Internal Re-arch
+ *
+ * add +ECFGSET/+ECFGGET for SDM Profile
+ *
+ * 03 20 2017 hsuanchang.chen
+ * [MOLY00228407] [SDM] Internal Re-arch
+ *
+ * . remove tab and un-used code
+ *
+ * 01 06 2017 hsuanchang.chen
+ * [MOLY00220510] [93 PREIT_DEV][UMOLYA] Rename IMSP interface/context/API to ATP and reorg folder layout
+ *
+ * . SDM interface part
+ *
+ * 12 15 2016 hsuanchang.chen
+ * [SDM] rename IMSP to ATP
+ *
+ * 10 25 2016 zhichao.zhao
+ * [MOLY00204308] [Áªµ÷][Jade][CT][VoLTE]SDM will not select CS domain for SMS when CS is unregistered in LTE
+ *
+ * .
+ *
+ * 05 23 2016 ian-yw.chen
+ * [MOLY00180481] [SDM][ATT req.] Report start and end of MO SMS over IMS to AP (SDM/IMSP part)
+ * .
+ *
+ * 03 24 2016 chinte.chen
+ * [MOLY00167924] [L4][R12] Handling of SCM at VDM/SDM/L4 part
+ * .
+ *
+ * 03 15 2016 ian-yw.chen
+ * [MOLY00169015] [COPY CR][VzW][MT6735][Pre-LC][AT command][2.51] case fail at AT+CMSS=1, shows error
+ * SDM part
+ *
+ * 03 02 2016 ian-yw.chen
+ * [MOLY00163894] [SMS][TC01] 3GPP2 SMS over IMS
+ * [MT/PP download/STK] interface
+ *
+ * 03 02 2016 ian-yw.chen
+ * [MOLY00163894] [SMS][TC01] 3GPP2 SMS over IMS
+ * [MO] interfaces
+ *
+ * 03 01 2016 ian-yw.chen
+ * [MOLY00147454] VZW 3GPP2 SMS over IMS
+ * SDM and interfaces
+ *
+ * 09 18 2015 mika.leinonen
+ * [MOLY00141364] [WWFT][MT6755][Jade][EU][Telefonica][VoLTE][Germany][FT] SMS must be sent over SGs in Telefonica Germany networks
+ * Integration change for UMOLY TRUNK.
+ * Dynamic framework implemented to configure MO SMS domain preferences in 4G per operator country variant.
+ * Review SDM: http://mtksap20:8080/go?page=ReviewDisplay&reviewid=213739
+ * Review IMSP: http://mtksap20:8080/go?page=ReviewDisplay&reviewid=213748
+ *
+ * 08 26 2015 ben.chiu
+ * [MOLY00138217] [ViLTE] M0 migration ViLTE feature Interface
+ * ViLTE interface patch back
+ *
+ * 07 30 2015 chinte.chen
+ * [MOLY00132834] [COPY_CR][TMO][EM] Enable/Disable SMS over SGs through EM for TMO requirement 58071
+ * .
+ *
+ * 07 09 2015 nick.wang
+ * [MOLY00127009] WFC Patch back to UMOLY- interface part
+ * .moly wfc interface patch
+ *
+ * 07 09 2015 nick.wang
+ * [MOLY00127009] WFC Patch back to UMOLY- interface part
+ * .jade interface sync
+ *
+ * 05 08 2015 chinte.chen
+ * [MOLY00110919] [SAT] Support STK SMS over IP
+ * .
+ *
+ * 12 01 2014 chinte.chen
+ * [MOLY00086104] [SDM][Revise] remove redundant src_id from IMSP/SDM/IMCSMS
+ * .
+ *
+ * 11 22 2013 chinte.chen
+ * [MOLY00047460] [MT6582LTE][IMS][VoLTE][Basic IT][IT3-045] Memory status reporting re-enable of SMSoIP
+ * .
+ *
+ * 09 30 2013 chinte.chen
+ * [MOLY00038966] [6290E1][VoLTE][IT][BringUp] Unable to complete RAT mode config
+ * .
+ *
+ * 09 23 2013 jeff.wu
+ * [MOLY00038672] [6290E1][VoLTE][IT][BringUp] SDM assert when receiving SMS over IP config ind
+ * Rename sdm_atp_sms_over_ip_config_ind_struct to match msg id.
+ *
+ * 09 16 2013 chinte.chen
+ * [MOLY00038029] [6290E1][VoLTE][IT][SMS] fixed SMS related build error
+ * .
+ *****************************************************************************/
+
+#ifndef SDM_ATP_STRUCT_H
+#define SDM_ATP_STRUCT_H
+
+#include "ps_public_struct.h"
+#include "sdm_imcsms_enums.h"
+#include "ims_common_def.h"
+#include "sdm_atp_enums.h"
+#include "sim_public_enum.h"
+#include "c2k_sms_enums.h"
+#include "ps_public_enum.h"
+
+
+#define _C2K_MT_SMS_AT_MERGE_ 1
+#define MAX_C2K_SMS_PDU_LENGTH 255
+
+/*************************************
+*
+* IMS domain
+*
+*************************************/
+
+/* MSG_ID_SDM_ATP_CMD_SEND_SMS_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_cmd_send_sms_ind_struct;
+
+
+/* MSG_ID_SDM_ATP_CMD_SEND_SMS_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_cmd_send_command_ind_struct;
+
+
+/* MSG_ID_SDM_ATP_CMD_SEND_SMS_RSP */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool is_mr_present;
+ kal_uint8 mr_value;
+ kal_bool is_err_cause_present;
+ kal_uint16 err_cause_value;
+} sdm_atp_cmd_send_sms_rsp_struct;
+
+
+/* MSG_ID_SDM_ATP_URC_RCV_SMS_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+ sms_addr_struct sc_addr;
+} sdm_atp_urc_rcv_sms_req_struct;
+
+/* MSG_ID_SDM_ATP_CMD_SEND_DELIVER_REPORT_IND */
+/* MSG_ID_SDM_ATP_CMD_SEND_CS_DELIVER_REPORT */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 n_value;
+ kal_uint8 length;
+ kal_bool is_cdscnma;
+ atp_cmd_mode_enum cmd_mode;
+} sdm_atp_cmd_send_deliver_report_ind_struct, sdm_atp_cmd_send_cs_deliver_report_struct;
+
+typedef struct{
+ LOCAL_PARA_HDR
+ wfc_profile_enum wfc_profile;
+} sdm_atp_cmd_wfc_profile_ind_struct, sdm_atp_cmd_set_wfc_profile_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool volte_enable;
+ kal_bool vilte_enable;
+ kal_bool vowifi_enable;
+ kal_bool viwifi_enable;
+ kal_bool ims_sms_enable;
+ kal_bool eims_enable;
+} sdm_atp_cmd_eimscfg_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_vodata_enable;
+} sdm_atp_cmd_evodata_ind_struct;
+
+/* MSG_ID_SDM_ATP_CMD_SEND_MEM_AVL_NOTIF_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 smma; /* 0:abort the smma, 1:send smma */
+} sdm_atp_cmd_send_mem_avl_notif_ind_struct;
+
+
+/* MSG_ID_SDM_ATP_CMD_SEND_SMMA_UPDATE_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool update_mem; /* TRUE if SDM rcv +EMEMS=1,1 */
+ kal_bool update_file; /* TRUE if SDM rcv MEM_AVL_NOTIF_CNF */
+} sdm_atp_cmd_send_smma_update_req_struct;
+
+
+/* MSG_ID_SDM_ATP_IMS_REG_STATUS_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+ ims_reg_state_enum ims_reg_state;
+ ims_reg_type_enum ims_reg_type;
+ ims_access_rat_enum rat;
+ ims_reg_service_enum ims_reg_service;
+ ims_ecmp_enum ecmp;
+ ims_reg_sip_uri_type_enum sip_uri_type;
+} sdm_atp_ims_reg_status_ind_struct;
+
+
+/* MSG_ID_SDM_ATP_SMS_OVER_IP_CONFIG_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 sms_over_ip_nw_ind;
+} sdm_atp_sms_over_ip_config_ind_struct;
+
+/* MSG_ID_SDM_ATP_IMSI_GET_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_imsi_get_req_struct;
+
+/* MSG_ID_SDM_ATP_IMSI_GET_CNF */
+typedef struct{
+ LOCAL_PARA_HDR
+ sdm_at_cmd_result_enum result;
+} sdm_atp_imsi_get_cnf_struct;
+
+/* MSG_ID_SDM_ATP_CMD_STK_SMS_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_cmd_stk_sms_ind_struct;
+
+/* MSG_ID_SDM_ATP_STK_SMS_QUERY_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_stk_sms_query_req_struct;
+
+/* MSG_ID_SDM_ATP_STK_SMS_QUERY_CNF */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 pdu_len;
+ kal_uint8 sms_pdu[MAX_SMS_PDU_LEN];
+ sdm_system_type_enum system_type;
+} sdm_atp_stk_sms_query_cnf_struct;
+
+/* MSG_ID_SDM_ATP_STK_SMS_TR_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+ sat_terminal_res_enum tr;
+ kal_bool addition_info_present;
+ kal_uint8 addition_info;
+} sdm_atp_stk_sms_tr_req_struct;
+
+/* MSG_ID_SDM_ATP_IMS_SMS_SMART_CONGESTION_REQ*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ sdm_ims_session_indication_enum indication; // CSCM=<SMSoIP=2>,<start-end indication>, Start:1, End:2
+
+} sdm_atp_ims_sms_smart_congestion_req_struct;
+
+
+/* MSG_ID_SDM_ATP_CMD_SEND_SMS_DELIVER_IND*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ sdm_sms_domain_enum sms_domain;
+} sdm_atp_cmd_send_sms_deliver_ind_struct;
+
+/* MSG_ID_SDM_ATP_CMD_SEND_C2K_SMS_DELIVER_IND*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 pdu_len;
+ kal_uint8 pdu[MAX_C2K_SMS_PDU_LENGTH];
+} sdm_atp_cmd_send_c2k_sms_deliver_ind_struct;
+
+/* MSG_ID_SDM_ATP_SMS_DELIVER_URC_IND */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} sdm_atp_sms_deliver_urc_ind_struct;
+
+/* MSG_ID_SDM_ATP_C2K_SMS_DELIVER_URC_IND */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} sdm_atp_c2k_sms_deliver_urc_ind_struct;
+
+/* MSG_ID_SDM_ATP_CMD_SEND_STATUS_REPORT_IND*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ sdm_sms_domain_enum sms_domain;
+} sdm_atp_cmd_send_status_report_ind_struct;
+
+/* MSG_ID_SDM_ATP_STATUS_REPORT_URC_IND */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} sdm_atp_status_report_urc_ind_struct;
+
+/*
+ MSG_ID_SDM_ATP_IMS_NORMAL_SMS_SMART_CONGESTION_START_REQ,
+ MSG_ID_SDM_ATP_IMS_STK_SMS_SMART_CONGESTION_START_REQ,
+ MSG_ID_SDM_ATP_IMS_CMSS_SMS_SMART_CONGESTION_START_REQ,
+ MSG_ID_SDM_ATP_IMS_C2K_SMS_SMART_CONGESTION_START_REQ,
+ MSG_ID_SDM_ATP_IMS_UTK_SMS_SMART_CONGESTION_START_REQ,
+*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} sdm_atp_ims_sms_smart_congestion_start_req_struct;
+
+typedef sdm_atp_ims_sms_smart_congestion_start_req_struct sdm_atp_ims_normal_sms_smart_congestion_start_req_struct;
+typedef sdm_atp_ims_sms_smart_congestion_start_req_struct sdm_atp_ims_stk_sms_smart_congestion_start_req_struct;
+typedef sdm_atp_ims_sms_smart_congestion_start_req_struct sdm_atp_ims_cmss_sms_smart_congestion_start_req_struct;
+typedef sdm_atp_ims_sms_smart_congestion_start_req_struct sdm_atp_ims_c2k_sms_smart_congestion_start_req_struct;
+typedef sdm_atp_ims_sms_smart_congestion_start_req_struct sdm_atp_ims_utk_sms_smart_congestion_start_req_struct;
+
+/* MSG_ID_SDM_ATP_IMS_SMS_SMART_CONGESTION_STOP_REQ */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} sdm_atp_ims_sms_smart_congestion_stop_req_struct;
+
+/*
+ MSG_ID_SDM_ATP_IMS_NORMAL_SMS_SMART_CONGESTION_START_CNF,
+ MSG_ID_SDM_ATP_IMS_STK_SMS_SMART_CONGESTION_START_CNF,
+ MSG_ID_SDM_ATP_IMS_CMSS_SMS_SMART_CONGESTION_START_CNF,
+ MSG_ID_SDM_ATP_IMS_C2K_SMS_SMART_CONGESTION_START_CNF,
+ MSG_ID_SDM_ATP_IMS_UTK_SMS_SMART_CONGESTION_START_CNF,
+*/
+typedef struct{
+ LOCAL_PARA_HDR
+ sdm_at_cmd_result_enum result;
+} sdm_atp_ims_sms_smart_congestion_start_cnf_struct;
+
+typedef sdm_atp_ims_sms_smart_congestion_start_cnf_struct sdm_atp_ims_normal_sms_smart_congestion_start_cnf_struct;
+typedef sdm_atp_ims_sms_smart_congestion_start_cnf_struct sdm_atp_ims_stk_sms_smart_congestion_start_cnf_struct;
+typedef sdm_atp_ims_sms_smart_congestion_start_cnf_struct sdm_atp_ims_cmss_sms_smart_congestion_start_cnf_struct;
+typedef sdm_atp_ims_sms_smart_congestion_start_cnf_struct sdm_atp_ims_c2k_sms_smart_congestion_start_cnf_struct;
+typedef sdm_atp_ims_sms_smart_congestion_start_cnf_struct sdm_atp_ims_utk_sms_smart_congestion_start_cnf_struct;
+
+/* MSG_ID_SDM_ATP_IMS_SMS_SMART_CONGESTION_STOP_CNF */
+typedef struct{
+ LOCAL_PARA_HDR
+ sdm_at_cmd_result_enum result;
+} sdm_atp_ims_sms_smart_congestion_stop_cnf_struct;
+
+/* MSG_ID_SDM_ATP_IMS_SMS_SMART_CONGESTION_URC_IND */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ sdm_ims_session_indication_enum indication; // <start-end indication> Start:1, End:2
+
+} sdm_atp_ims_sms_smart_congestion_urc_ind_struct;
+/*******************/
+/* C2K SMS over IMS */
+/*******************/
+
+/* MSG_ID_SDM_ATP_CMD_SEND_C2K_SMS_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool is_da_valid;
+ kal_bool is_international;
+ kal_uint8 da[MAX_C2K_SMS_DA];
+} sdm_atp_cmd_send_c2k_sms_ind_struct;
+
+/* MSG_ID_SDM_ATP_CMD_SEND_C2K_SMS_RSP */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 error_class;
+ kal_uint16 cause_code;
+ kal_uint16 msg_id;
+} sdm_atp_cmd_send_c2k_sms_rsp_struct;
+
+
+/* MSG_ID_SDM_ATP_URC_RCV_C2K_SMS_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_urc_rcv_c2k_sms_req_struct;
+
+
+/* MSG_ID_SDM_ATP_SEND_C2K_MSG_URC_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint16 length;
+ kal_uint8 pdu[MAX_SMS_PDU_LEN];
+} sdm_atp_send_c2k_msg_urc_ind_struct;
+
+
+/* MSG_ID_SDM_ATP_CMD_SEND_C2K_ACKNOWLEDGE_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_cmd_send_c2k_acknowledge_ind_struct;
+
+
+/*************************************
+*
+* CS domain
+*
+*************************************/
+
+/* MSG_ID_SDM_ATP_CS_SMS_SUBMIT */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_cs_sms_submit_struct;
+
+
+/* MSG_ID_SDM_ATP_CS_SMS_SUBMIT_REPORT_ACK */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_cs_sms_submit_report_ack_struct;
+
+
+/* MSG_ID_SDM_ATP_CS_SMS_SUBMIT_REPORT_NACK */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_cs_sms_submit_report_nack_struct;
+
+
+/* MSG_ID_SDM_ATP_CS_SMS_COMMAND */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_cs_sms_command_struct;
+
+/* MSG_ID_SDM_ATP_CS_SMS_SMMA */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 smma; /*0:abort the smma, 1: send smma*/
+} sdm_atp_cs_sms_smma_struct;
+
+/* MSG_ID_SDM_ATP_SMS_OVER_SGS_CONFIG_IND */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool enable;
+} sdm_atp_sms_over_sgs_config_ind_struct;
+
+/* MSG_ID_SDM_ATP_CS_STK_SMS_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_atp_cs_stk_sms_req_struct;
+
+/* MSG_ID_SDM_ATP_CS_STK_SMS_CNF */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 result;
+ sat_terminal_res_enum tr;
+ kal_bool addition_info_present;
+ kal_uint8 addition_info;
+} sdm_atp_cs_stk_sms_cnf_struct;
+
+/*************************************
+*
+* CMSS: Message Send from Storage
+*
+*************************************/
+
+/* MSG_ID_SDM_ATP_CMD_SEND_CMSS_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 index;
+ l4c_number_struct da;
+} sdm_atp_cmd_send_cmss_ind_struct;
+
+/* MSG_ID_SDM_ATP_CMD_SEND_CMSS_RSP */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool is_mr_present;
+ kal_uint8 mr_value;
+ kal_bool is_err_cause_present;
+ kal_uint16 err_cause_value;
+} sdm_atp_cmd_send_cmss_rsp_struct;
+
+/* MSG_ID_SDM_ATP_CMSS_IMS_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool is_retry;
+ kal_uint8 domain; //Domain = 0 for IMS; Domain = 1 for CS
+ kal_uint8 mr;
+ kal_uint8 index;
+ l4c_number_struct da;
+} sdm_atp_cmss_ims_req_struct;
+
+typedef sdm_atp_cmss_ims_req_struct sdm_atp_cmss_cs_req_struct;
+
+/* MSG_ID_SDM_ATP_CMSS_IMS_CNF */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 result;
+ //<result> 0: if unable to get the PDU correctly from the storage
+ // 1: if operation is successful
+ // 2: if sending the SMS over CS domain fails, but PDU is successfully retrieved.
+ // (Only Possible if the domain is CS)
+ sms_addr_struct sca;
+ kal_uint8 mr;
+} sdm_atp_cmss_ims_cnf_struct;
+
+typedef sdm_atp_cmss_ims_cnf_struct sdm_atp_cmss_cs_cnf_struct;
+
+/* MSG_ID_SDM_ATP_UPDATE_MSG_BOX_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool result;
+ kal_uint8 mr;
+} sdm_atp_update_msg_box_req_struct;
+
+/* MSG_ID_SDM_ATP_UPDATE_MSG_BOX_CNF */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool result;
+} sdm_atp_update_msg_box_cnf_struct;
+
+/*************************************
+*
+* miscellaneous
+*
+*************************************/
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_SDM_ECFG_SET_REQ
+ * AT> AT+ECFGSET=<cfg_name>,<cfg_value>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 name[64];
+ kal_uint8 value[128];
+} sdm_atp_ecfg_set_req_struct;
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_SDM_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;
+
+} sdm_atp_ecfg_set_cnf_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_SDM_ECFG_GET_REQ
+ * AT> AT+ECFGSET=<cfg_name>
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 name[64];
+} sdm_atp_ecfg_get_req_struct;
+
+
+/*
+ * @brief
+ * @note MSG_ID_ATP_SDM_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;
+
+ kal_uint8 name[64];
+ kal_uint8 value[128];
+} sdm_atp_ecfg_get_cnf_struct;
+
+/*
+* @brief
+* @note MSG_ID_SDM_ATP_REPORT_PSI_URC_IND
+* +EPSI: <psi>
+*/
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 psi[128];
+} sdm_atp_report_psi_urc_ind_struct;
+
+/*
+ * MSG_ID_ATP_SDM_SMS_STATUS_IND
+ * +C5GUSMS: <sms_available>, <sms_allowed>
+ */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 sms_available;
+ kal_uint8 sms_allowed;
+} atp_sdm_sms_status_urc_ind_struct;
+
+/* MSG_ID_SDM_ATP_CMD_EXIT_SCBM_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+ exit_scbm_reason_enum reason;
+} sdm_atp_cmd_exit_scbm_ind_struct;
+
+/* MSG_ID_SDM_ATP_SEND_SCBM_URC_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+ md_scbm_status_enum md_scbm_status;
+} sdm_atp_send_scbm_urc_ind_struct;
+
+/******************************************************************************
+ * AT+EAPPROVE:<dial_string>
+ * +EAPPROVE:<is_allowed>,<is_emergency>
+ *****************************************************************************/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 dial_num[MAX_CC_ATD_NUM_LEN];
+} sdm_atp_fdn_ecc_check_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool is_allowed;
+ kal_bool is_emergency;
+ kal_uint16 emergency_service_category;
+} sdm_atp_fdn_ecc_check_cnf_struct;
+
+/******************************************************************************
+ * AT+ESMSEND:<domain>,<direction>
+ *****************************************************************************/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ sdm_sms_current_domain_enum domain; //0: cs, 1: ims
+ kal_uint8 direction; //0: mo, 1: mt
+} sdm_atp_ims_mt_sms_end_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool is_ut_mode_valid;
+ kal_bool ut_mode;
+ kal_bool is_force_sms_category_valid;
+ kal_uint8 force_sms_category; //0: normal, 1: emergency
+} sdm_ut_config_struct;
+
+/******************************************************************************
+ * +EIMSINFO: <rat>,<cell_id>,<cell_service>, <plmn_id>,<plmn_type>,
+ * <lac>,<tac>,<support_emc>,<lte_underly_cs_plmn_id>
+ *****************************************************************************/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ rat_enum rat;
+ cell_service_enum cell_service;
+ kal_bool is_limited_service_emc_support;
+ kal_uint32 cell_id;
+ plmn_id_struct plmn_id;
+ domain_id_enum domain_id;
+ plmn_id_struct lte_cs_plmn_id;//LTE underlying CS PLMN ID, only available for LTE combined attach UE
+} sdm_atp_cell_info_update_ind_struct;
+
+#endif // SDM_ATP_STRUCT_H
+
diff --git a/mcu/protocol/interface/ims/sdm_imc_struct.h b/mcu/protocol/interface/ims/sdm_imc_struct.h
new file mode 100644
index 0000000..34d5c3c
--- /dev/null
+++ b/mcu/protocol/interface/ims/sdm_imc_struct.h
@@ -0,0 +1,87 @@
+/*****************************************************************************
+* 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) 2013
+*
+* 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:
+ * ------------
+ * sdm_imc_struct.h
+ *
+ * Project:
+ * ------------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ * This file defines the interface messages between SDM and IMC.
+ *
+ * Author:
+ * -----------
+ * -------
+ *
+ *===========================================================
+ * $Log$
+ *
+ * 01 03 2019 hsuanchang.chen
+ * [MOLY00376426] [VzW][Gen93][Gen95] SMS to 911 and SCBM feature - SDM part
+ * . T911 SDM code
+ *
+ *****************************************************************************/
+
+#ifndef _SDM_IMC_STRUCT_H_
+#define _SDM_IMC_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ims_common_def.h"
+#include "ims_interface_md.h"
+#include "l3_inc_enums.h"
+#include "ps_public_enum.h"
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_access_rat_enum rat;
+} sdm_imc_scbm_start_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_access_rat_enum rat;
+ exit_scbm_reason_enum cause;
+} sdm_imc_scbm_stop_ind_struct;
+
+
+#endif /* _SDM_IMC_STRUCT_H_ */
diff --git a/mcu/protocol/interface/ims/sdm_imcsms_enums.h b/mcu/protocol/interface/ims/sdm_imcsms_enums.h
new file mode 100644
index 0000000..8e26dc7
--- /dev/null
+++ b/mcu/protocol/interface/ims/sdm_imcsms_enums.h
@@ -0,0 +1,137 @@
+/*****************************************************************************
+* 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) 2013
+*
+* 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:
+ * ------------
+ * sdm_imcsms_enums.h
+ *
+ * Project:
+ * ------------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ * This file defines the enums between SDM and IMC SMS.
+ *
+ * Author:
+ * -----------
+ * -------
+ *
+ *===========================================================
+ * $Log$
+ *
+ * 04 24 2019 ian-yw.chen
+ * [MOLY00401131] [Gen97] porting from 95
+ *
+ * [porting from UMOLYE][to_20181230]
+ * SDM part
+ * (MPD)
+ *
+ * 04 24 2019 ian-yw.chen
+ * [MOLY00401131] [Gen97] porting from 95
+ *
+ * [porting from UMOLYE][to_20181230]
+ * SDM part
+ * (MPD)
+ *
+ * 03 14 2016 ian-yw.chen
+ * [MOLY00166564] [MT6755][VzW][chipset][LC1][InHouse][MTK-HQ][RnS][LTE][SMS][2.30] MO 3GPP SMS RETRY BEHAVIOR-DEFAULT SIP T1, TIMER F AND T2 TIMERS
+ * add SBP_SDM_RETRY_TIMER (revise MOLY00135505)
+ * interfaces
+ *
+ * 03 02 2016 ian-yw.chen
+ * [MOLY00163894] [SMS][TC01] 3GPP2 SMS over IMS
+ * [MT/PP download/STK] interface
+ *
+ * 03 02 2016 ian-yw.chen
+ * [MOLY00163894] [SMS][TC01] 3GPP2 SMS over IMS
+ * [MO] interfaces
+ *
+ * 03 01 2016 ian-yw.chen
+ * [MOLY00147454] VZW 3GPP2 SMS over IMS
+ * SDM and interfaces
+ *****************************************************************************/
+
+#ifndef SDM_IMCSMS_ENUMS_H
+#define SDM_IMCSMS_ENUMS_H
+
+typedef enum
+{
+ IMCSMS_SMMA_REQ, // 0
+ IMCSMS_SMMA_ABORT // 1
+}imcsms_smma_req_type_enum;
+
+typedef enum
+{
+ C2K_SMS_NO_ERROR = 0,
+ C2K_SMS_TEMPORARY_ERROR = 2,
+ C2K_SMS_PERMANENT_ERROR = 3,
+ C2K_SMS_LIMIED_SERVICE = 4 //ONLY in __TC01_IMS_SUPPORT__
+}c2k_sms_error_class_enum;
+
+typedef enum
+{
+ C2K_SMS_USER_DATA_SIZE_ERROR = 106,
+ C2K_SMS_CAUSE_OTHER_GENERAL_PROBLEM = 107,
+ C2K_SMS_CAUSE_OK = 32768,
+ C2K_SMS_CAUSE_NETWORK_NOT_READY = 32773
+}c2k_sms_cause_code_enum;
+
+typedef enum
+{
+ RP_MESSAGE = 0,
+ MO_STATUS = 1,
+ C2K_MT_MESSAGE = 2,
+ C2K_MT_PP_DOWNLOAD = 3
+}esmsoims_type_enum;
+
+
+typedef enum
+{
+ IMCSMS_ERR_TYPE_MS_ERROR,
+ IMCSMS_ERR_TYPE_CP_ERROR,
+ IMCSMS_ERR_TYPE_RP_ERROR,
+ IMCSMS_ERR_TYPE_NW_ERROR
+} imcsms_error_type_enum;
+
+typedef enum
+{
+ NORMAL_SMS_3GPP_TYPE,
+ NORMAL_SMS_3GPP2_TYPE,
+} imcsms_sdm_sms_type_enum;
+
+#endif // SDM_IMCSMS_ENUMS_H
+
diff --git a/mcu/protocol/interface/ims/sdm_imcsms_struct.h b/mcu/protocol/interface/ims/sdm_imcsms_struct.h
new file mode 100644
index 0000000..3239805
--- /dev/null
+++ b/mcu/protocol/interface/ims/sdm_imcsms_struct.h
@@ -0,0 +1,336 @@
+/*****************************************************************************
+* 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) 2013
+*
+* 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:
+ * ------------
+ * sdm_imcsms_struct.h
+ *
+ * Project:
+ * ------------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ * This file defines the interface messages between SDM and IMC SMS.
+ *
+ * Author:
+ * -----------
+ * -------
+ *
+ *===========================================================
+ * $Log$
+ *
+ * 05 20 2020 chen-wei.lan
+ * [MOLY00523592] Support for MT SMS in 3GPP2 format over IMS domain in CDMA less project.
+ * 3gpp2 sms in cdma less project
+ *
+ * 09 25 2019 chen-wei.lan
+ * [MOLY00443561] [Gen97] SCBM
+ * SCBM
+ *
+ * 07 12 2019 chen-wei.lan
+ * [MOLY00346647] [MT6297][VDM/L4] changes for 97
+ *
+ * [SDM patch back]7342306
+ *
+ * 04 24 2019 ian-yw.chen
+ * [MOLY00401131] [Gen97] porting from 95
+ *
+ * [porting from UMOLYE][to_20181230]
+ * SDM part
+ * (MPD)
+ *
+ * 04 24 2019 ian-yw.chen
+ * [MOLY00401131] [Gen97] porting from 95
+ *
+ * [porting from UMOLYE][to_20181230]
+ * SDM part
+ * (MPD)
+ *
+ * 04 05 2017 hsuanchang.chen
+ * [MOLY00237411] [6293][PreIT] UTK/STK SMS Flow Merge
+ *
+ * . interface
+ *
+ * 03 20 2017 hsuanchang.chen
+ * [MOLY00228407] [SDM] Internal Re-arch
+ *
+ * . remove tab and un-used code
+ *
+ * 09 26 2016 hsuanchang.chen
+ * [MOLY00203894] [SDM] UMOLYA.PS.DEV merge back UMOLYA
+ *
+ * .
+ *
+ * 06 07 2016 ya.li
+ * [MOLY00175415] [CMCC VoLTE Spec 2.0 New Requirement][IMCSMS][IMCSMS MO retry for 202 receive or not](CR3,interface part)
+ *
+ * .
+ *
+ * 03 15 2016 ian-yw.chen
+ * [MOLY00169015] [COPY CR][VzW][MT6735][Pre-LC][AT command][2.51] case fail at AT+CMSS=1, shows error
+ * SDM part
+ *
+ * 03 02 2016 ian-yw.chen
+ * [MOLY00163894] [SMS][TC01] 3GPP2 SMS over IMS
+ * [MT/PP download/STK] interface
+ *
+ * 03 02 2016 ian-yw.chen
+ * [MOLY00163894] [SMS][TC01] 3GPP2 SMS over IMS
+ * [MO] interfaces
+ *
+ * 03 01 2016 ian-yw.chen
+ * [MOLY00147454] VZW 3GPP2 SMS over IMS
+ * SDM and interfaces
+ *
+ * 11 04 2015 ian-yw.chen
+ * [MOLY00129787] [Copy CR]SMS over IMS implementation
+ * (TC01) IMCSMS-interfaces part
+ *
+ * 05 08 2015 chinte.chen
+ * [MOLY00110919] [SAT] Support STK SMS over IP
+ * .
+ *
+ * 12 01 2014 chinte.chen
+ * [MOLY00086104] [SDM][Revise] remove redundant src_id from IMSP/SDM/IMCSMS
+ * .
+ *
+ * 09 03 2014 chinte.chen
+ * [MOLY00077889] [WW FT][2014 TMO US][MT6752][VoLTE/SRVCC][Seattle][ASSERT][Fatal error(buff)] err_code1:2083 err_code2:32MD offender
+ * .
+ *****************************************************************************/
+
+#ifndef SDM_IMCSMS_STRUCT_H
+#define SDM_IMCSMS_STRUCT_H
+
+#include "ps_public_struct.h"
+#include "sim_public_enum.h"
+#include "ims_common_def.h"
+#include "sdm_imcsms_enums.h"
+
+
+
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 error_type; /* cp or rp error*/
+ kal_uint16 error_cause;
+ #ifdef __TC01_IMS_SUPPORT__
+ kal_uint8 retry_after;
+ #endif
+ kal_bool need_retry_in_cs;
+} imcsms_err_info_struct;
+
+
+/* MSG_ID_SDM_IMCSMS_SUBMIT */
+typedef struct{
+ LOCAL_PARA_HDR
+ ims_access_rat_enum rat;
+ kal_bool is_emergency_sms;
+} sdm_imcsms_submit_struct, sdm_imcsms_command_struct;
+
+/* MSG_ID_SDM_IMCSMS_C2K_SUBMIT */
+typedef struct{
+ LOCAL_PARA_HDR
+ /*Add destination address here for SIP header*/
+ kal_bool is_da_valid;
+ kal_bool is_international;
+ kal_uint8 da[MAX_C2K_SMS_DA];
+ ims_access_rat_enum rat;
+ kal_bool is_emergency_sms;
+} sdm_imcsms_c2k_submit_struct, sdm_imcsms_utk_submit_struct;
+
+/* MSG_ID_SDM_IMCSMS_STK_SUBMIT */
+typedef struct{
+ LOCAL_PARA_HDR
+ ims_access_rat_enum rat;
+ kal_bool is_emergency_sms;
+} sdm_imcsms_stk_submit_struct;
+
+/* MSG_ID_SDM_IMCSMS_STK_SUBMIT_REPORT_ACK */
+typedef struct{
+ LOCAL_PARA_HDR
+ sat_terminal_res_enum tr;
+} sdm_imcsms_stk_submit_report_ack_struct;
+
+
+/* MSG_ID_SDM_IMCSMS_STK_SUBMIT_REPORT_NACK */
+typedef struct{
+ LOCAL_PARA_HDR
+ sat_terminal_res_enum tr;
+ kal_bool addition_info_present;
+ kal_uint8 addition_info;
+ imcsms_err_info_struct err_info;
+} sdm_imcsms_stk_submit_report_nack_struct;
+
+/* MSG_ID_SDM_IMCSMS_C2K_SUBMIT_REPORT_ACK / MSG_ID_SDM_IMCSMS_UTK_SUBMIT_REPORT_ACK */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_imcsms_c2k_submit_report_ack_struct, sdm_imcsms_utk_submit_report_ack_struct;
+
+/* MSG_ID_SDM_IMCSMS_C2K_SUBMIT_REPORT_NACK / MSG_ID_SDM_IMCSMS_UTK_SUBMIT_REPORT_NACK */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 error_class;
+ kal_uint16 cause_code;
+} sdm_imcsms_c2k_submit_report_nack_struct, sdm_imcsms_utk_submit_report_nack_struct;
+
+/* MSG_ID_SDM_IMCSMS_SUBMIT_REPORT_ACK */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 mr;
+} sdm_imcsms_submit_report_ack_struct;
+
+
+/* MSG_ID_SDM_IMCSMS_SUBMIT_REPORT_NACK */
+typedef struct{
+ LOCAL_PARA_HDR
+ imcsms_err_info_struct err_info;
+} sdm_imcsms_submit_report_nack_struct;
+
+
+/* MSG_ID_SDM_IMCSMS_DELIVER */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 smi;
+ sms_addr_struct sc_addr;
+ kal_uint8 psi[128];
+} sdm_imcsms_deliver_struct, sdm_imcsms_status_report_struct;
+
+
+/* MSG_ID_SDM_IMCSMS_DELIVERY_REPORT_ACK */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 smi;
+} sdm_imcsms_deliver_report_ack_struct;
+
+
+/* MSG_ID_SDM_IMCSMS_DELIVERY_REPORT_NACK */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 smi;
+} sdm_imcsms_deliver_report_nack_struct;
+
+/* MSG_ID_SDM_IMCSMS_C2K_DELIVER */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_imcsms_c2k_deliver_struct;
+
+/* MSG_ID_SDM_IMCSMS_C2K_ACKNOWLEDGE */
+typedef struct{
+ LOCAL_PARA_HDR
+} sdm_imcsms_c2k_acknowledge_struct;
+
+#ifdef __SUPPORT_C2K_SMS_OVER_IMS_CDMA_LESS__
+/* MSG_ID_SDM_IMCSMS_CDMA_LESS_C2K_DELIVER */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool is_emergency_sms;
+} sdm_imcsms_cdma_less_c2k_deliver_struct;
+#endif
+
+/* MSG_ID_SDM_IMCSMS_MEM_AVL_NOTIF */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 req_type; /* 0: IMCSMS_SMMA_REQ, 1: IMCSMS_SMMA_ABORT */
+} sdm_imcsms_mem_avl_notif_struct;
+
+
+/* MSG_ID_SDM_IMCSMS_MEM_AVL_NOTIF_CNF */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool result;
+} sdm_imcsms_mem_avl_notif_cnf_struct;
+
+/* MSG_ID_SDM_IMCSMS_IS_CS_ALLOWED_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+ imcsms_sdm_sms_type_enum sms_type;
+ kal_uint32 accound_id; //specific for different kind of IMS registration (for IMS UA usage)
+ kal_uint8 seq_id; //to identify the SMS (for IMS UA usage)
+} sdm_imcsms_is_cs_allowed_req_struct;
+
+/* MSG_ID_SDM_IMCSMS_IS_CS_ALLOWED_CNF */
+typedef struct{
+ LOCAL_PARA_HDR
+ imcsms_sdm_sms_type_enum sms_type;
+ kal_uint32 accound_id;
+ kal_uint8 seq_id;
+ kal_bool result;
+} sdm_imcsms_is_cs_allowed_cnf_struct;
+
+#ifdef __TC01_IMS_SUPPORT__
+/* MSG_ID_SDM_IMCSMS_RCV_MSG_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint16 msg_id;
+ kal_uint8 error_class;
+ esmsoims_type_enum direction;
+ kal_uint16 length;
+ kal_uint8 data[MAX_SMS_PDU_LEN];
+} sdm_imcsms_rcv_msg_ind_struct;
+#endif
+
+typedef enum{
+ MO_IMS_TEMP_FAILURE = 2,
+ MO_IMS_PERM_FAILURE ,
+ MO_IMS_OTHER_FAILURE
+}sdm_imcsms_error_cause_enum;
+
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 msg_ref;
+ sms_addr_struct sca;
+ ims_access_rat_enum rat;
+ kal_bool is_emergency_sms;
+}
+sdm_imcsms_cmss_submit_struct;
+
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_uint8 mr;
+}
+sdm_imcsms_cmss_submit_report_ack_struct;
+
+typedef struct{
+ LOCAL_PARA_HDR
+ imcsms_err_info_struct err_info;
+}
+sdm_imcsms_cmss_submit_report_nack_struct;
+
+extern kal_bool sdm_get_imcsms_retry_for_202_rev(void);
+
+#endif // SDM_IMCSMS_STRUCT_H
+
diff --git a/mcu/protocol/interface/ims/simmngr_def_enums.h b/mcu/protocol/interface/ims/simmngr_def_enums.h
new file mode 100644
index 0000000..d6552b3
--- /dev/null
+++ b/mcu/protocol/interface/ims/simmngr_def_enums.h
@@ -0,0 +1,128 @@
+#ifndef _SIMMNGR_DEF_ENUMS_H
+#define _SIMMNGR_DEF_ENUMS_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+#include "ims_common_def.h"
+
+#define SIMMNGR_SIM_CHECK_OK 0
+#define SIMMNGR_SIM_CHECK_FAIL 1
+#define SIMMNGR_SIM_CHECK_INIT 2
+#define SIMMNGR_SIM_CHECK_RETRY 3
+#define SIMMNGR_SIM_CHECK_NOT_INSERT 4
+
+#define SIMMNGR_LOCAL_PARA_HDR LOCAL_PARA_HDR\
+ kal_uint32 trans_id;
+
+typedef enum {
+ SIMMNGR_SIM_TYPE_USIM = 0,
+ SIMMNGR_SIM_TYPE_ISIM,
+ SIMMNGR_SIM_TYPE_GSM_SIM,
+ SIMMNGR_SIM_TYPE_MAX,
+} simmngr_sim_type_enum;
+
+typedef enum {
+ SIMMNGR_QUERY_USIM_INFO_IMSI = 0, /*0*/
+ SIMMNGR_QUERY_USIM_INFO_MNC_LEN,
+ SIMMNGR_QUERY_USIM_INFO_PSISMSC,
+ SIMMNGR_QUERY_USIM_INFO_SMSP,
+ SIMMNGR_QUERY_USIM_INFO_MSISDN,
+ SIMMNGR_QUERY_USIM_INFO_SERVICE_TABLE,
+ SIMMNGR_QUERY_ISIM_INFO_IMPI,
+ SIMMNGR_QUERY_ISIM_INFO_PSISMSC,
+ SIMMNGR_QUERY_ISIM_INFO_IMPU,
+ SIMMNGR_QUERY_ISIM_INFO_DOMAIN,
+ SIMMNGR_QUERY_ISIM_INFO_SERVICE_TABLE, /*10*/
+ SIMMNGR_QUERY_ISIM_INFO_PCSCF,
+ SIMMNGR_QUERY_SIM_INFO_IMEI,
+ //Note: For mapping IMSM definition, please add new query from here down, or there will be request it mis-sync
+ SIMMNGR_QUERY_USIM_INFO_OPLMNACT,
+ SIMMNGR_QUERY_USIM_INFO_HPLMNACT,
+ SIMMNGR_QUERY_USIM_INFO_EPDGID,
+ SIMMNGR_QUERY_USIM_INFO_EPDGSELECTION,
+ SIMMNGR_QUERY_USIM_INFO_EPDGIDEM,
+ SIMMNGR_QUERY_USIM_INFO_EPDGSELECTIONEM,
+ SIMMNGR_QUERY_USIM_INFO_GBABP,
+ SIMMNGR_QUERY_ISIM_INFO_GBABP, /*20*/
+ SIMMNGR_QUERY_USIM_INFO_GID1,
+ SIMMNGR_QUERY_USIM_INFO_GID2,
+ SIMMNGR_QUERY_USIM_INFO_PNN,
+ SIMMNGR_QUERY_USIM_INFO_SPN,
+ SIMMNGR_QUERY_USIM_INFO_EHPLMN,
+ SIMMNGR_QUERY_SIM_INFO_IMEISV,
+ SIMMNGR_QUERY_SIM_INFO_MAX,
+} simmngr_sim_info_query_enum;
+
+typedef enum {
+ SIMMNGR_SIM_STATE_NOTIFY_NOT_READY = 0,
+ SIMMNGR_SIM_STATE_NOTIFY_READY = 1,
+ SIMMNGR_SIM_STATE_NOTIFY_REFRESH = 2,
+} simmngr_sim_state_notify_enum;
+
+typedef enum {
+ SIMMNGR_SIM_STATE_CHECK_CNF_READY = 0, /**< MT is not pending for any password */
+ SIMMNGR_SIM_STATE_CHECK_CNF_SIM_PIN = 1, /**< MT is waiting SIM PIN to be given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_SIM_PUK = 2, /**< MT is waiting SIM PUK to be given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_SIM_PIN = 3, /**< MT is waiting phone SIM card password to be given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_FSIM_PIN = 4, /**< MT is waiting phone-to-very first SIM card password to be given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_FSIM_PUK = 5, /**< MT is waiting phone-to-very first SIM card unblocking password to be given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_SIM_PIN2 = 6, /**< MT is waiting SIM PIN2 to given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_SIM_PUK2 = 7, /**< MT is waiting SIM PUK2 to given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_NET_PIN = 8, /**< MT is waiting network personalization password to given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_NET_PUK = 9, /**< MT is waiting network personalization unblocking password to given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_NETSUB_PIN = 10, /**MT is waiting network subset personalization password to be given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_NETSUB_PUK = 11, /**MT is waiting network subset personalization unblocking password to be given */
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_SP_PIN = 12, /**MT is waiting service provider personalization password to be given*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_SP_PUK = 13, /**MT is waiting service provider personalization unblocking password to be given*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_CORP_PIN = 14, /**MT is waiting corporate personalization password to be given*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_PH_CORP_PUK = 15, /**MT is waiting corporate personalization unblocking password to be given*/
+
+ SIMMNGR_SIM_STATE_CHECK_CNF_NOT_INSERT = 100, /**SIM not inserted*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_PIN_REQUIRED = 101, /**SIM PIN required*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_PUK_REQUIRED = 102, /**SIM PUK required*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_SIM_FAILURE = 103, /**SIM failure*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_WRONG = 104, /**SIM wrong*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_INCORRECT_PASSWD = 105, /**Incorrect password*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_BUSY = 106, /**SIM busy*/
+
+ SIMMNGR_SIM_STATE_CHECK_CNF_RADIO_OFF = 201, /**device radio off*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_ERROR = 202, /**unknown state*/
+
+ SIMMNGR_SIM_STATE_CHECK_CNF_SIM_BLOCK = 262, /**SIM blocked*/
+ SIMMNGR_SIM_STATE_CHECK_CNF_POWERED_DOWN = 772, /**SIM powered down*/
+} simmngr_sim_state_check_cnf_enum;
+
+typedef enum {
+ SIMMNGR_SIM_INSERT_STATE_PLUG_OUT = 0,
+ SIMMNGR_SIM_INSERT_STATE_PLUG_IN = 1,
+ SIMMNGR_SIM_INSERT_ABNORMAL = 2,
+} simmngr_sim_insert_state_enum;
+
+typedef enum {
+ SIMMNGR_SERVICE_U_SMSP = 12,
+ SIMMNGR_SERVICE_U_GID1 = 17,
+ SIMMNGR_SERVICE_U_GID2 = 18,
+ SIMMNGR_SERVICE_U_SPN = 19,
+ SIMMNGR_SERVICE_U_MSISDN = 21,
+ SIMMNGR_SERVICE_U_OPLMNWACT = 42,
+ SIMMNGR_SERVICE_U_HPLMNWACT = 43,
+ SIMMNGR_SERVICE_U_PLMN_NAME = 45,
+ SIMMNGR_SERVICE_U_GBA = 68,
+ SIMMNGR_SERVICE_U_EHPLMN = 71,
+ SIMMNGR_SERVICE_U_SM_OVER_IP = 91,
+ SIMMNGR_SERVICE_U_EPDG_CONF_INFO_SUPPORT = 106,
+ SIMMNGR_SERVICE_U_EPDG_CONF_INFO_CONF = 107,
+ SIMMNGR_SERVICE_U_EPDG_CONF_INFO_EMER_SERVICE_SUPPORT = 110,
+ SIMMNGR_SERVICE_U_EPDG_CONF_INFO_EMER_SERVICE_CONF = 111,
+ SIMMNGR_SERVICE_U_END
+}simmngr_usim_service_enum;
+
+typedef enum {
+ SIMMNGR_SERVICE_I_PCSCF = 1,
+ SIMMNGR_SERVICE_I_GBA = 2,
+ SIMMNGR_SERVICE_I_PCSCF_DISCOVER_SUPPORT = 5,
+ SIMMNGR_SERVICE_I_END
+}simmngr_isim_service_enum;
+
+#endif
diff --git a/mcu/protocol/interface/ims/simmngr_struct.h b/mcu/protocol/interface/ims/simmngr_struct.h
new file mode 100644
index 0000000..2bae879
--- /dev/null
+++ b/mcu/protocol/interface/ims/simmngr_struct.h
@@ -0,0 +1,262 @@
+#ifndef _SIMMNGR_STRUCT_H
+#define _SIMMNGR_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+#include "ims_common_def.h"
+
+#include "simmngr_def_enums.h"
+
+typedef struct simmngr_sim_type_check_req_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+} simmngr_sim_type_check_req_struct;
+
+typedef struct simmngr_sim_insert_check_req_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+} simmngr_sim_insert_check_req_struct;
+
+typedef struct simmngr_sim_state_check_req_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+} simmngr_sim_state_check_req_struct;
+
+typedef struct simmngr_query_sim_info_req_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint16 request;//simmngr_sim_info_query_enum
+ kal_uint8 sim_type;// 0 : usim, 1 : isim
+ kal_uint8 ch_id;// isim only
+} simmngr_query_sim_info_req_struct;
+
+typedef struct simmngr_write_sim_ef_req_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint16 request;
+ kal_uint8 sim_type;// 0 : usim, 1 : isim
+ kal_uint8 ch_id;// isim only
+ //Data in peer buff struct
+} simmngr_write_sim_ef_req_struct;
+
+typedef struct simmngr_sim_aka_req_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint8 sim_type;// 0 : usim, 1 : isim
+ kal_uint8 ch_id;// isim only
+ kal_uint8 rand_len;
+ kal_uint8 autn_len;
+ kal_uint8 rand[32];
+ kal_uint8 autn[32];
+} simmngr_sim_aka_req_struct;
+
+typedef struct simmngr_sim_aka_cnf_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint8 result;
+ kal_uint8 sim_type;
+ kal_uint16 response_len;
+ kal_uint8 response[256];
+} simmngr_sim_aka_cnf_struct;
+
+typedef struct simmngr_sim_gba_auth_req_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint8 sim_type;// 0 : usim, 1 : isim
+ kal_uint8 ch_id;// isim only
+ kal_uint8 param1_len;
+ kal_uint8 param2_len;
+ kal_uint8 param1[64];
+ kal_uint8 param2[64];
+ kal_uint8 gba_type;
+} simmngr_sim_gba_auth_req_struct;
+
+typedef struct simmngr_sim_gba_auth_cnf_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint8 result;
+ kal_uint8 sw1;//Only available when result is Success
+ kal_uint8 sw2;//Only available when result is Success
+ kal_uint8 sim_type;
+ kal_uint16 response_len;
+ kal_uint8 response[256];
+} simmngr_sim_gba_auth_cnf_struct;
+
+typedef struct simmngr_sim_insert_check_cnf_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint8 insert_state;// simmngr_sim_insert_state_enum
+} simmngr_sim_insert_check_cnf_struct;
+
+typedef struct simmngr_query_sim_info_cnf_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint16 request;//simmngr_sim_info_query_enum
+ kal_uint8 result;
+} simmngr_query_sim_info_cnf_struct;
+
+typedef struct simmngr_write_sim_ef_cnf_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint16 request;
+ kal_uint8 result;
+} simmngr_write_sim_ef_cnf_struct;
+
+typedef struct simmngr_sim_type_check_cnf_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint8 result;
+ kal_uint8 sim_type;// 0 : usim, 1 : isim
+ kal_uint8 ch_id;// isim only
+} simmngr_sim_type_check_cnf_struct;
+
+typedef struct simmngr_imsi_result_t {
+ kal_uint8 imsi[16];
+ kal_uint8 imsi_len;
+ kal_uint8 mnc_len;
+} simmngr_imsi_result_t;
+
+typedef struct simmngr_imei_result_t {
+ kal_uint8 imei[16];
+ kal_uint8 imei_len;
+} simmngr_imei_result_t;
+
+typedef struct simmngr_mnc_len_result_t {
+ kal_uint8 mnc_len;
+} simmngr_mnc_len_result_t;
+
+typedef struct simmngr_psismsc_result_t {
+ kal_uint8 psismsc[256];
+ kal_uint16 psismsc_len;
+} simmngr_psismsc_result_t;
+
+typedef struct simmngr_impu_result_t {
+ kal_uint8 impu_num;
+ kal_uint8 impu_len[20];
+ kal_uint8 impu[20][256];
+} simmngr_impu_result_t;
+
+typedef struct simmngr_smsp_result_t {
+ kal_uint8 smsp[64];
+ kal_uint8 smsp_len;
+} simmngr_smsp_result_t;
+
+typedef struct simmngr_impi_result_t {
+ kal_uint8 impi[256];
+ kal_uint16 impi_len;
+} simmngr_impi_result_t;
+
+typedef struct simmngr_domain_result_t {
+ kal_uint8 domain[256];
+ kal_uint16 domain_len;
+} simmngr_domain_result_t;
+
+typedef struct simmngr_service_table_result_t {
+ kal_uint8 service_table[256];
+ kal_uint16 service_table_len;
+} simmngr_service_table_result_t;
+
+typedef struct simmngr_msisdn_result_t {
+ kal_uint8 msisdn_str_len;
+ kal_uint8 msisdn_str[24];// only 20bytes(string), 4bytes reserved
+} simmngr_msisdn_result_t;
+
+typedef struct simmngr_pcscf_result_t {
+ kal_uint8 pcscf_len[20];// V4 + V6
+ kal_uint8 pcscf[20][128];// V4 + V6
+ kal_uint8 pcscf_num;
+} simmngr_pcscf_result_t;
+
+typedef struct simmngr_trans_ef256_result_t {
+ kal_uint8 ef256_data[256];
+ kal_uint16 ef256_result_len;
+} simmngr_trans_ef256_result_t; //Many EF data are maximum 256 len, so use the same structure
+
+typedef struct simmngr_gid1_result_t {
+ kal_uint8 gid1_len;
+ kal_uint8 gid1[30];//currently we use 30 as max length
+} simmngr_gid1_result_t;
+
+typedef struct simmngr_gid2_result_t {
+ kal_uint8 gid2_len;
+ kal_uint8 gid2[30];//currently we use 30 as max length
+} simmngr_gid2_result_t;
+
+typedef struct simmngr_sim_state_check_cnf_struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint16 state;//simmngr_sim_state_check_cnf_enum
+ kal_uint8 result;
+} simmngr_sim_state_check_cnf_struct;
+
+typedef struct simmngr_sim_data_ind_struct {
+ LOCAL_PARA_HDR
+ kal_uint32 data;
+} simmngr_sim_state_ind_struct,simmngr_sim_data_ind_struct;
+
+typedef struct simmngr_sim_app_ready_ind_struct {
+ LOCAL_PARA_HDR
+ kal_uint32 ch_id;
+ kal_uint8 trans_id; /* Used by DSBP_RECONFIG's users. Use 1~255 in order for each SIM task. */
+} simmngr_usim_detected_ind_struct,simmngr_isim_ch_ind_struct;
+
+/* ATP */
+//From SIMMNGR to ATP
+typedef struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint8 value;
+} atp_simmngr_cmee_set_req_struct;
+
+typedef struct {
+ SIMMNGR_LOCAL_PARA_HDR
+} atp_simmngr_cpin_query_req_struct;
+
+typedef struct {
+ SIMMNGR_LOCAL_PARA_HDR
+} atp_simmngr_esims_query_req_struct;
+
+typedef struct {
+ SIMMNGR_LOCAL_PARA_HDR
+} atp_simmngr_imei_query_req_struct;
+
+typedef struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ //0:ISIM 1:USIM 2:CSIM 3:SIM 4:RUIM
+ kal_uint8 application_id;
+} atp_simmngr_esimapp_query_req_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+//Response to SIMMNGR
+typedef struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ ims_result_code_enum result;
+ ims_err_id_enum err_id;
+} atp_simmngr_cmee_set_cnf_struct,atp_simmngr_common_at_cnf_struct;
+
+typedef struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ ims_result_code_enum result;
+ ims_err_id_enum err_id;
+ kal_uint8 code[40]; //Raw data for CPIN, i.e. +CPIN:<code>
+} atp_simmngr_cpin_query_cnf_struct;
+
+typedef struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint8 success; //Query Result
+ kal_uint8 inserted_status;
+} atp_simmngr_esims_query_cnf_struct;
+
+typedef struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ kal_uint8 success; //Query Result
+ kal_uint8 imei_len;
+ kal_uint8 imei[20];
+} atp_simmngr_imei_query_cnf_struct;
+
+typedef struct {
+ SIMMNGR_LOCAL_PARA_HDR
+ ims_result_code_enum result;
+ ims_err_id_enum err_id;
+ kal_uint8 application_id; //For ISIM
+ kal_uint8 ch_id; //For ISIM
+} atp_simmngr_esimapp_query_cnf_struct;
+
+#endif
diff --git a/mcu/protocol/interface/ims/ssds_imc_struct.h b/mcu/protocol/interface/ims/ssds_imc_struct.h
new file mode 100644
index 0000000..7a8dd8b
--- /dev/null
+++ b/mcu/protocol/interface/ims/ssds_imc_struct.h
@@ -0,0 +1,54 @@
+/*****************************************************************************
+* 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).
+*
+*****************************************************************************/
+#ifndef _SSDS_IMC_STRUCT_H_
+#define _SSDS_IMC_STRUCT_H_
+
+
+#include "ims_interface_md.h"
+
+
+
+
+
+
+
+#endif
+
+
+
+
+
+
+
diff --git a/mcu/protocol/interface/ims/vdm_ddm_struct.h b/mcu/protocol/interface/ims/vdm_ddm_struct.h
new file mode 100644
index 0000000..e794c15
--- /dev/null
+++ b/mcu/protocol/interface/ims/vdm_ddm_struct.h
@@ -0,0 +1,50 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _VDM_DDM_STRUCT_H
+#define _VDM_DDM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "atcmd_struct.h"
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 index;
+ kal_uint8 contents[AT_EGPCORDP_CONTENTS_STRING_LEN];
+}vdm_ddm_pco_update_ind_struct;
+
+#endif
diff --git a/mcu/protocol/interface/ims/vdm_imc_struct.h b/mcu/protocol/interface/ims/vdm_imc_struct.h
new file mode 100644
index 0000000..4f2621b
--- /dev/null
+++ b/mcu/protocol/interface/ims/vdm_imc_struct.h
@@ -0,0 +1,709 @@
+/*****************************************************************************
+* 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) 2013
+*
+* 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:
+ * ------------
+ * vdm_imc_struct.h
+ *
+ * Project:
+ * ------------
+ * MOLY
+ *
+ * Description:
+ * ------------
+ * This file defines the interface messages between VDM and IMC.
+ *
+ * Author:
+ * -----------
+ * -------
+ *
+ *===========================================================
+ * $Log$
+ *
+ * 01 10 2022 ot_hitesh.c
+ * [MOLY00774161] [mt2735][CS eCall][NG eCall][patch back] ecall patch back from NR15.R3.MD700.MP.ECAll.DEV
+ * .
+ *
+ * 12 16 2021 ot_hitesh.c
+ * [MOLY00774161] [mt2735][CS eCall][NG eCall][patch back] ecall patch back from NR15.R3.MD700.MP.ECAll.DEV
+ * .
+ *
+ * 09 18 2020 chen-wei.lan
+ * [MOLY00570287] [Gen97] VzW T_VzW and T_eps_fallback timer Implementation
+ *
+ * .
+ *
+ * 09 15 2020 chen-wei.lan
+ * [MOLY00570287] [Gen97] VzW T_VzW and T_eps_fallback timer Implementation
+ * [MPD]tepsfb
+ *
+ * 08 28 2020 tong.li
+ * [MOLY00562709] [5GHP][feature][Data&Call]game space mode
+ * .
+ *
+ * 01 20 2020 chen-wei.lan
+ * [MOLY00469609] [gen97][VDM/SDM/L4] changes for 97
+ * [Huawei 380]10279893 & active mspm
+ *
+ * 09 23 2019 ssu-hsien.wu
+ * [MOLY00438070] [Gen97][IMS] STKCALL and STKUSSD over IMS
+ *
+ * .
+ *
+ * 08 26 2019 jani.manninen
+ * [MOLY00433041] [Gen97][EPSFB] IT related issues
+ *
+ * VMOLY.APOLLO.SQC - IMS 5G Voice Support Changes
+ *
+ * 08 21 2019 jani.manninen
+ * [MOLY00432937] [VONR] LTECSR Changes for 5G Voice Support - LTECSR
+ *
+ * Interface clean up for 5G Voice Support
+ *
+ * 07 24 2019 yung-liang.tsou
+ * [MOLY00421171] [VMOLY] patch back imc em related patches
+ * .
+ *
+ * 07 03 2019 olli.kettunen
+ * [MOLY00401775] [Submarine] Improve UA to VDM mo call cnf/rsp SAP trace output
+ *
+ * - Improve tracing of UA-IMCB SAP mo_call_cnf by using enum type
+ * - Improve tracing of IMCB-IMC SAP mo_call_rsp by using enum instead of imcf_uint8 in SAP message struct definitions.
+ * - Improve IMC-VDM SAP mo_call_cnf tracing by using enum definitions in message structure.
+ * .
+ *
+ * 05 07 2019 savvas.chou
+ * [MOLY00403400] [Submarine] M1 to VMOLY
+ * .
+ *
+ * 01 30 2019 kuan-wei.chen
+ * [MOLY00346647] [MT6297][VDM/L4] changes for 97
+ * [VMOLY.EVB.SEPT.DEV][MPD] sync VDM CL: 6995175~7345261
+ *
+ * 11 01 2018 kuan-wei.chen
+ * [MOLY00346647] [MT6297][VDM/L4] changes for 97
+ * [VMOLY][VDM][MPD]
+ *
+ * 08 17 2018 kuan-wei.chen
+ * [MOLY00346647] [MT6297][VDM/L4] changes for 97
+ * [VMOLY] vdm related others
+ *
+ * 11 22 2017 yulong.chang
+ * [MOLY00291144] [VDM][Verizon][WiFi] UE will not select CS domain when T_ePDG_CS is ongoing (VDM part)
+ * VzW_2017June_VZ_REQ_WIFI_2990111 T_ePDG_CS (VDM part)
+ *
+ * 11 22 2017 yulong.chang
+ * [MOLY00290314] [VDM][Hugeland Tool] Enhanced the delay release CS semaphore mechanism (VDM part)
+ *
+ * Enhanced delay release CS semaphore (VDM part)
+ *
+ * 11 22 2017 yulong.chang
+ * [MOLY00290314] [VDM][Hugeland Tool] Enhanced the delay release CS semaphore mechanism (VDM part)
+ * Enhanced delay release CS semaphore (VDM part)
+ *
+ * 08 28 2017 yulong.chang
+ * [MOLY00274096] [VzW] addl call_domain_cause - IMSP/VDM/IMC part
+ * [LR11.MP5->UMOLYA sync] MOLY00254610 [VzW] addl call_domain_cause - IMSP/VDM/IMC part
+ *
+ * 12 14 2016 jerry.cheng
+ * [MOLY00210061] [93][VDM] UMOLY sync to UMOLYA
+ * .sync [MOLY00204150] TK vzw hVoLTE/E911 implementation
+ *
+ * TK hVoLTE.
+ *
+ * 06 28 2016 kuan-wei.chen
+ * [MOLY00186867] L4/CM/SIM code sync
+ * .
+ *
+ * 10 13 2015 ben.chiu
+ * [MOLY00144959] [UMOLY][LR11][TMO][WFC] Revert to cellular for emergency call
+ * ALFMS00685674, WFC emergency call, 3.5.1.2.3 Cellular Fallback
+ * 3.5.1.2.3 Cellular Fallback ID: GID-FLD-5009 When the emergency call preference is set to cellular, the device shall check for cellular coverage. If found, the device shall deregister from the IMS domain, revert back to cellular and place the 911 call. the handset shall remain on cellular for a duration of time specified by the guard timer to allow for potential PSAP call back. Once the guard timer expires, the device shall re-register on IMS if the Wi-Fi conditions are met. The guard timer shall be at least 3 minutes.
+ *
+ * 09 17 2015 ben.chiu
+ * [MOLY00141935] [IMS interface][version#0x39]IMS interface v1.2 check-in
+ * (v1.2)ims interface re-org
+ *
+ * 08 26 2015 ben.chiu
+ * [MOLY00138217] [ViLTE] M0 migration ViLTE feature Interface
+ * ViLTE interface patch back
+ *
+ * 07 09 2015 nick.wang
+ * [MOLY00127009] WFC Patch back to UMOLY- interface part
+ * .moly wfc interface patch
+ *
+ * 07 09 2015 nick.wang
+ * [MOLY00127009] WFC Patch back to UMOLY- interface part
+ * .jade interface sync
+ *
+ * 06 17 2015 nick.wang
+ * [MOLY00118763] [WFC] feature patch back IMS interface for MD (MP7)
+ * .IMS interface
+ *
+ * 06 09 2015 benjamin.kuo
+ * [MOLY00119265] [WFC] feature patch back for VDM/SDM/IMSP - interface/SAP parts
+ * interface - SAP part.
+ *
+ * 04 02 2015 benjamin.kuo
+ * [MOLY00105813] [WFC] migrate VDM from WFC.FPB to CMCCVOLTE.WFC.FPB
+ * .interface part
+ *
+ * 02 04 2015 allan.ke
+ * [MOLY00092209] [CMCC VoLTE] ?@???o?_Conference call
+ *
+ * 02 04 2015 allan.ke
+ * [MOLY00092209] [CMCC VoLTE] ?@???o?_Conference call
+ * .
+ *
+ * 04 02 2015 benjamin.kuo
+ * [MOLY00105813] [WFC] migrate VDM from WFC.FPB to CMCCVOLTE.WFC.FPB
+ * .interface part
+ *
+ * 02 04 2015 allan.ke
+ * [MOLY00092209] [CMCC VoLTE] ?@???o?_Conference call
+ *
+ * 02 04 2015 allan.ke
+ * [MOLY00092209] [CMCC VoLTE] ?@???o?_Conference call
+ * .
+ * 04 27 2015 ben.chiu
+ * [MOLY00109234] [VoLTE][Volunteer Patch] MP7.CMCCVOLTE.FPB merge back to MP7/MP7.CMCC
+ * MP7.CMCCVOLTE.FPB merge back to MP7
+ *
+ *
+ * 04 27 2015 ben.chiu
+ * [MOLY00109234] [VoLTE][Volunteer Patch] MP7.CMCCVOLTE.FPB merge back to MP7/MP7.CMCC
+ * MP7.CMCCVOLTE.FPB merge back to MP7
+ *
+ * 02 20 2014 ben.chiu
+ * [MOLY00056441] Use string instead enum for call type in CRING
+ * generate string:VOICE or VIDEO in peer_buffer to VDM for CRING
+ *
+ * 02 17 2014 ben.chiu
+ * [MOLY00055885] [6290E2][VoLTE][MWC] incorrect URC oder of VDM and IMSP
+ * Merge from MWC_CBr for MWC issue, CRING and ECPI:0
+ *
+ * 02 17 2014 ben.chiu
+ * [MOLY00056189] [6290E2][VoLTE][SRVCC] New feature for SRVCC R10 - IMC part
+ * check-in SRVCC R10 feature for IMC and /modem_interface/ims
+ *
+ * 01 13 2014 ben.chiu
+ * [MOLY00053410] [VoLTE][IMC] merge IMC to MOLY TRUNK
+ * Add ads_ctrl message to VDM for Test Mode
+ *****************************************************************************/
+
+#ifndef _VDM_IMC_STRUCT_H_
+#define _VDM_IMC_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ims_common_def.h"
+#include "l3_inc_enums.h"
+
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+#ifndef MAX_MSD_LENGTH
+#define MAX_MSD_LENGTH 140
+#endif
+#endif
+
+/******************************************************************************
+ * Call Control and Supplementary Service
+ *****************************************************************************/
+// DTMF tone generation related
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 digit;
+} vdm_imc_ims_cc_send_digit_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} vdm_imc_ims_cc_send_digit_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 digit;
+} vdm_imc_ims_cc_start_send_digit_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} vdm_imc_ims_cc_start_send_digit_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} vdm_imc_ims_cc_stop_send_digit_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} vdm_imc_ims_cc_stop_send_digit_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ hvolte_call_domain_enum call_domain;
+ kal_bool is_for_silent_redial;
+ hvolte_mode_change_cause_enum cause;
+} vdm_imc_ims_cc_set_hvolte_call_domain_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ timer_epdg_cs_status_enum status;
+} vdm_imc_timer_epdg_cs_status_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ vdm_call_domain_enum ecbm_domain;
+} vdm_imc_ecbm_start_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ exit_ecbm_reason_enum exit_ecbm_cause;
+}vdm_imc_ecbm_end_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} vdm_imc_ecbm_start_rsp_struct,
+ vdm_imc_ecbm_end_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 call_id;
+ ims_call_category_enum call_category;
+} vdm_imc_is_cs_allowed_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 call_id;
+ ims_call_category_enum call_category;
+ kal_bool is_allowed;
+} vdm_imc_is_cs_allowed_cnf_struct;
+
+
+// SRVCC
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32 num_of_calls;
+ ims_srvcc_call_ctxt_struct srvcc_call_ctxt_from_ims[IMS_MAX_CALL_NUM];
+ kal_uint8 conf_call_number_list[IMS_MAX_CALL_NUM_IN_CONF][IMC_P_ASSERT_URI_LEN];
+} vdm_imc_srvcc_context_transfer_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ srvcc_status_enum srvcc_ho_status;
+} vdm_imc_srvcc_status_update_req_struct;
+
+// Call Control and Supplementary Service
+// MO call establishment related
+
+typedef enum {
+ IMS_CALL_SERVICE_NORMAL = 0,
+ IMS_CALL_SERVICE_CALL_PULL = 1,
+#if defined(__NG_ECALL_SUPPORT__) /*ECALL*/
+ IMS_CALL_SERVICE_ECALL_TEST = 100,
+ IMS_CALL_SERVICE_ECALL_RECONFIGURE = 101,
+#endif
+ //add here
+ IMS_CALL_SERVICE_END
+} ims_call_service_enum;
+
+typedef enum {
+ IMS_CALL_380_XML_TYPE_NOT_SET = 0,
+ IMS_CALL_380_XML_TYPE_EMERGENCY,
+ IMS_CALL_380_XML_TYPE_RESTORATION,
+ IMS_CALL_380_XML_TYPE_UNKNOWN,
+ /*add here*/
+ IMS_CALL_380_XML_TYPE_MAX,
+} ims_call_380_xml_type_enum;
+
+typedef enum {
+ IMS_CALL_380_XML_ACTION_NOT_SET = 0,
+ IMS_CALL_380_XML_ACTION_EMERGENCY_REGISTRATION,
+ IMS_CALL_380_XML_ACTION_INITIAL_REGISTRATION,
+ IMS_CALL_380_XML_ACTION_ANONYMOUS_EMERGECYCALL,
+ IMS_CALL_380_XML_ACTION_UNKNOWN,
+ /*add here*/
+ IMS_CALL_380_XML_ACTION_MAX,
+} ims_call_380_xml_action_enum;
+
+typedef enum {
+ IMS_CALL_CAUSE_380_CONTACT_NOT_SET = 0,
+ IMS_CALL_CAUSE_380_CONTACT_SOS_AND_CATEGORY_KNOWN,
+ IMS_CALL_CAUSE_380_CONTACT_SOS_AND_CATEGORY_UNKNOWN,
+ IMS_CALL_CAUSE_380_CONTACT_NOT_SOS,
+ IMS_CALL_CAUSE_380_CONTACT_NO_CONTACT,
+ /*add here*/
+ IMS_CALL_CAUSE_380_CONTACT_MAX,
+} ims_call_cause_380_contact_enum;
+
+typedef enum {
+ IMS_CALL_CAUSE_380_XML_NOT_SET = 0,
+ IMS_CALL_CAUSE_380_XML_ACTION_EMERGECY_REG,
+ IMS_CALL_CAUSE_380_XML_ACTION_UNKNOWN_CATEGORY_MAPPED,
+ IMS_CALL_CAUSE_380_XML_ACTION_UNKNOWN_CATEGORY_NOT_MAPPED,
+ IMS_CALL_CAUSE_380_XML_ACTION_UNKNOWN_NO_CONTACT,
+ /*add here*/
+ IMS_CALL_CAUSE_380_XML_MAX,
+} ims_call_cause_380_xml_enum;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_call_category_enum call_category;
+ ims_call_mode_enum call_mode;
+ kal_uint8 number[MAX_CC_ATD_NUM_LEN];
+ ims_call_type_enum call_type;
+ ims_access_rat_enum rat;
+ ims_ecc_category_enum emergency_service_category;
+ ims_call_service_enum service;
+ kal_uint8 clir;
+ kal_uint8 digit_from_line_number[IMC_MAX_URI_LENGTH];
+ kal_uint8 rtt_setting;
+#if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
+ kal_uint8 msd_data_len;
+ kal_uint8 msd_data[MAX_MSD_LENGTH];
+#endif
+} vdm_imc_ims_cc_mo_call_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+ ims_access_rat_enum rat;
+ ims_ecc_category_enum emergency_service_category;
+ ims_call_service_enum service;
+ kal_int32 q850_cause; // ims_q850_cause_enum in ims_common_def.h
+ kal_uint8 country_specific_urn[IMC_MAX_URI_LENGTH];
+ ims_call_cause_380_contact_enum cause_380_contact;
+ ims_call_cause_380_xml_enum cause_380_xml;
+ ims_call_380_xml_type_enum xml_type_380;
+ ims_call_380_xml_action_enum xml_action_380;
+} vdm_imc_ims_cc_mo_call_cnf_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ kal_uint8 redial_setting; //ims_stk_setup_call_enum
+ kal_uint8 stk_type; //vdm_stk_type_enum
+ ims_call_category_enum call_category;
+ ims_call_mode_enum call_mode;
+ kal_uint8 number[MAX_CC_ATD_NUM_LEN];
+ ims_call_type_enum call_type;
+ ims_access_rat_enum rat;
+} vdm_imc_ims_cc_stk_call_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+ ims_access_rat_enum rat;
+ kal_int32 q850_cause; // ims_q850_cause_enum in ims_common_def.h
+} vdm_imc_ims_cc_stk_call_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id; //380 received on this call
+} vdm_imc_ims_cc_mo_call_domain_conflict_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool result;
+} vdm_imc_ims_cc_mo_call_domain_conflict_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_call_category_enum call_category;
+ ims_call_mode_enum call_mode;
+ kal_uint8 conf_call_participants;
+ kal_uint8 conf_call_number_list[IMS_MAX_CALL_NUM_IN_CONF][MAX_CC_ATD_NUM_LEN];
+} vdm_imc_ims_cc_mo_conf_call_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+ kal_int32 q850_cause; // ims_q850_cause_enum in ims_common_def.h
+} vdm_imc_ims_cc_mo_conf_call_cnf_struct;
+
+// MT call establishment related
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 seq_no;
+ ims_cc_eaic_info_struct eaic_info;
+} vdm_imc_ims_cc_mt_call_present_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ kal_uint8 seq_no;
+ ims_cc_eaic_result_enum eaic_result;
+ ims_cc_mt_reason_enum mt_reason;
+ kal_uint8 rtt_setting;
+} vdm_imc_ims_cc_mt_call_present_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} vdm_imc_ims_cc_mt_call_accept_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_cc_evta_mode_enum mode;
+} vdm_imc_ims_cc_mt_vt_special_accept_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} vdm_imc_ims_cc_mt_call_accept_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} vdm_imc_ims_cc_mt_vt_special_accept_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_ecpi_info_struct ecpi_info;
+} vdm_imc_ims_cc_mt_call_setup_ind_struct;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 seq_no;
+ ims_ecpi_info_struct ecpi_info;
+} vdm_imc_ims_cc_mt_call_abort_ind_struct;
+
+// Hangup call related
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_ecpi_info_struct ecpi_info;
+} vdm_imc_ims_cc_call_disconnect_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} vdm_imc_ims_cc_mt_call_ring_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} vdm_imc_ims_cc_hangup_all_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} vdm_imc_ims_cc_hangup_all_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+} vdm_imc_ims_cc_force_hangup_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} vdm_imc_ims_cc_force_hangup_cnf_struct;
+
+// Supplementary service related
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ ims_call_related_ss_type_enum opcode;
+ ims_cc_mo_disconnect_cause_enum cause;
+} vdm_imc_ims_cc_call_related_ss_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} vdm_imc_ims_cc_call_related_ss_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} vdm_imc_ims_cc_ext_error_report_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ims_ext_error_report_enum ceer_cause;
+ ims_cc_result_enum result;
+ ims_cc_cause_enum cause;
+} vdm_imc_ims_cc_ext_error_report_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} vdm_imc_ims_cc_list_current_calls_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 total_call;
+ ims_call_list_struct call_list[IMS_MAX_CALL_NUM];
+} vdm_imc_ims_cc_list_current_calls_cnf_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} vdm_imc_ims_cc_alloc_conf_call_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool is_success;
+ kal_uint8 conf_call_id;
+} vdm_imc_ims_cc_alloc_conf_call_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ voice_ads_ctrl_enum ads_ctrl;
+} vdm_imc_ads_ctrl_ind_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+} vdm_imc_c2k_1x_call_status_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ kal_uint8 msg_type;
+ ims_ecpi_info_struct ecpi_info;
+} vdm_imc_ims_cc_call_progress_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ rat_enum available_rat;
+ rat_enum prefer_rat;
+} vdm_imc_normal_service_scan_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ proc_status_enum status;
+} vdm_imc_normal_service_scan_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ imcf_uint32 call_id;
+ ims_enh_volte_si_call_status_enum call_status;
+} vdm_imc_enh_volte_si_call_status_ind_struct;
+
+#if defined(__NG_ECALL_SUPPORT__)
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+ kal_uint8 msd_data_len;
+ kal_uint8 msd_data[MAX_MSD_LENGTH];
+} vdm_imc_update_msd_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 call_id;
+} vdm_imc_in_band_msd_transfer_rsp_struct;
+#endif
+#endif /* _VDM_IMC_STRUCT_H_ */
diff --git a/mcu/protocol/interface/ims/vdm_sdm_struct.h b/mcu/protocol/interface/ims/vdm_sdm_struct.h
new file mode 100644
index 0000000..121b9cc
--- /dev/null
+++ b/mcu/protocol/interface/ims/vdm_sdm_struct.h
@@ -0,0 +1,60 @@
+/*****************************************************************************
+* 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) 2012
+*
+* 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).
+*
+*****************************************************************************/
+
+#ifndef _VDM_SDM_STRUCT_H
+#define _VDM_SDM_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "ims_common_def.h"
+#include "l3_inc_enums_public.h"
+
+//MSG_ID_VDM_SDM_ECBM_MODE_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool is_ecbm_on;
+ rat_enum ecbm_rat;
+ exit_ecbm_reason_enum cause;
+}vdm_sdm_ecbm_mode_ind_struct;
+
+/* MSG_ID_SDM_VDM_EXIT_SCBM_IND */
+typedef struct{
+ LOCAL_PARA_HDR
+ exit_scbm_reason_enum reason;
+}sdm_vdm_exit_scbm_ind_struct;
+
+#endif
+
diff --git a/mcu/protocol/interface/ims/xcap_imc_struct.h b/mcu/protocol/interface/ims/xcap_imc_struct.h
new file mode 100644
index 0000000..5a47ef3
--- /dev/null
+++ b/mcu/protocol/interface/ims/xcap_imc_struct.h
@@ -0,0 +1,82 @@
+/*****************************************************************************
+* 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef _XCAP_IMC_STRUCT_H
+#define _XCAP_IMC_STRUCT_H
+
+#include "ps_public_enum.h"
+#include "sim_public_enum.h"
+#include "ims_common_def.h"
+#include "ims_interface_md.h"
+
+typedef enum {
+ XCAP_IMC_IMS_CALL_STATUS_UNSPEC = 0,
+ XCAP_IMC_IMS_CALL_STATUS_BEGIN,
+ XCAP_IMC_IMS_CALL_STATUS_CONNECTED,
+ XCAP_IMC_IMS_CALL_STATUS_END,
+} xcap_imc_ims_call_status_enum;
+
+/*
+ * @brief IMS diable by IMSM
+ * @note MSG_ID_XCAP_IMC_IMS_DEREG_REQ/CNF
+ * AT+EIMSDEREG=??
+ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint32 dereg_cause;
+} xcap_imc_ims_dereg_req_struct,
+ xcap_imc_ims_dereg_cnf_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ imc_acct_type_enum acct_type; //defined in ims_interface_md.h
+ kal_uint32 call_id;
+ ims_call_mode_enum call_mode; //defined in ims_interface_md.h
+ xcap_imc_ims_call_status_enum call_status;
+} xcap_imc_ims_call_status_ind_struct;
+
+#endif /* _XCAP_IMC_STRUCT_H */