[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
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 */