[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6

MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF  modem version: NA

Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/protocol/interface/general/mmi2voip_struct.h b/mcu/protocol/interface/general/mmi2voip_struct.h
new file mode 100644
index 0000000..4813523
--- /dev/null
+++ b/mcu/protocol/interface/general/mmi2voip_struct.h
@@ -0,0 +1,759 @@
+/*****************************************************************************
+*  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) 2006
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ * mmi2voip_struct.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file describes the structure used for communicating between MMI and VoIP.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _MMI2VOIP_STRUCT_H
+#define _MMI2VOIP_STRUCT_H
+
+#define VOIP_DEBUG_CALL_LIST
+//#define VOIP_3PCC_SUPPORT                   /* 3pcc call flows support */
+//#define VOIP_EARLY_MEDIA_SUPPORT            /* early media support */
+//#define VOIP_SIP_CAPACITY_SUPPORT
+
+/***************************************************************************** 
+* Define
+*****************************************************************************/
+#define SIP_CONFORMANCE_TEST
+
+#define VOIP_MAX_NUM_CODEC	    (15) /* Maximum number of codec */
+//#define VOIP_MAX_NUM_SESSION	(2)  /* Maximum number of RTP session within a dialog */
+#define VOIP_MAX_SOCK_ADDR_LEN  (16) /* Length of IP address */
+#define VOIP_MAX_DERIEVED_ADDR  (2)  /* Maximum number of derived address */
+#define VOIP_MAX_IP_SEG_LEN     (4)  /* Maximum number of IP segement */
+
+/* result */
+#define VOIP_OK	                     (0)	/* Succsess */
+#define VOIP_ERROR	                 (1)	/* Failure happens in VoIP task */
+#define VOIP_SIP_ERROR	             (2)	/* Failure happens in SIP task */
+#define VOIP_FS_ERROR	             (3)	/* File system related error */
+#define VOIP_NAT_ERROR	             (4)	/* NAT related error */
+
+/* cause */
+#define VOIP_NO_ERROR	             (0) /*no error */
+#define VOIP_UNSPECIFIED_ERROR	    (-1) /*Unspecified error */
+#define VOIP_NOT_REGISTERED	        (-2) /* UA has not registered yet */
+#define VOIP_ALREADY_REGISTERED     (-3) /*UA has already registered */
+#define VOIP_INVALID_PARAM          (-4) /* Invalid parameter */
+#define VOIP_CREATE_UAC_ERROR       (-5) /*Create UAC failed */
+#define VOIP_GET_ADDR_FAILED        (-6) /* Get derived address failed during MO/MT call */
+#define VOIP_CALL_ABORT_LOCALLY     (-7) /* Force to abort call */
+#define VOIP_RECV_BYE               (-8) /* Receive BYE request from remote side */
+#define VOIP_INCORRECT_CALL_STATE   (-9) /* Call state is not possible to achieve requested operation */
+#define VOIP_BEARER_DISCONNECTED    (-10) /* Network is down */
+#define VOIP_ABORT_FAILED           (-11) /*Abort failed */
+#define VOIP_CALL_NOT_EXIST         (-12) /* Call does not exist */
+#define VOIP_INVALID_URI            (-13) /* Invalid URI */
+#define VOIP_SWAP_FAILED            (-14) /* Whole swap failed */
+#define VOIP_SWAP_PARTIAL_FAILED    (-15) /* Hold successfully, retrieve failed */
+#define VOIP_TRANSFER_FAILED        (-16) /* Transfer failed, keep the same state */
+#define VOIP_MERGE_FAILED           (-17) /* Call merge failed */
+#define VOIP_MERGE_PARTIAL_FAILED   (-18) /* Call merge partial failed */
+#define VOIP_NAT_FAILED             (-19) /* Get NAT information from sever failed. */
+#define VOIP_TEMPORARY_BUSY         (-20) /* No empty slot in call list to servce request. */
+#define VOIP_UNSUPPORTED_NAT_TYPE   (-21) /* The NAT type is not supported. */
+#define VOIP_NETWORK_ERROR          (-22) /* Network Error */
+#define VOIP_BUSY                   (-23) /* VoIP task is executoing another action now */
+#define VOIP_INVALID_CALL_REQ       (-24) /* Invalid call request */
+#define VOIP_PARTIAL_FAILED         (-25) /* Partial failed */
+#define VOIP_REREGISTER_FAILED      (-26) /* Re-register failed. */
+#define VOIP_SDP_MISMATCHED         (-27) /* Incorrect SDP session in the response */
+#define VOIP_DNS_ERROR              (-28) /* Failure happens in SIP task */
+#define VOIP_NO_RESOURCE            (-29) /* no resource or memory to execute */ /* new for Julia */
+#define VOIP_SIP_FS_ERROR           (-30) /* FS error *//* new for Julia */ 
+#define VOIP_DHCP_ERROR             (-31) /* DHCP get IP error */ /* for MMI to retry login */
+
+
+/* sync with SIP error */
+#define VOIP_SIP_300_MULTIPLE_CHOICES         (300)
+#define VOIP_SIP_301_MOVED_PERMANENTLY        (301)
+#define VOIP_SIP_302_MOVED_TEMPORARILY        (302)
+#define VOIP_SIP_305_USE_PROXY                (305)
+#define VOIP_SIP_400_BAD_REQUEST              (400)
+#define VOIP_SIP_401_UNAUTHORIZED             (401)
+#define VOIP_SIP_403_FORBIDDEN                (403)
+#define VOIP_SIP_404_NOT_FOUND                (404)
+#define VOIP_SIP_405_METHOD_NOT_ALLOW         (405)
+#define VOIP_SIP_406_NOT_ACCEPTABLE           (406)
+#define VOIP_SIP_407_PROXY_AUTH_REQUIRED      (407)
+#define VOIP_SIP_408_REQUEST_TIMEOUT          (408)
+#define VOIP_SIP_412_CONDITIONAL_REQ_FAIL     (412) /* Conditional Request Failed */
+#define VOIP_SIP_422_INTERVAL_TOO_BRIEF       (422) /* Session-Expires too brief */
+#define VOIP_SIP_423_INTERVAL_TOO_BRIEF       (423) /* Expires too brief */
+#define VOIP_SIP_478_UNRESOLVEABLE_DEST       (478) /* unresolveable destination */
+#define VOIP_SIP_480_TEMP_UNAVAILABLE         (480)
+#define VOIP_SIP_481_CALL_TRANS_NOT_EXIST     (481)
+#define VOIP_SIP_484_ADDRESS_INCOMPLETE       (484)
+#define VOIP_SIP_486_BUSY_HERE                (486)
+#define VOIP_SIP_488_NOT_ACCEPTABLE_HERE      (488)
+#define VOIP_SIP_487_REQ_TERMINATED           (487)
+#define VOIP_SIP_491_REQUEST_PENDING          (491)
+#define VOIP_SIP_499_UNRESOLVEABLE_DEST       (499) /* unresolveable destination */
+#define VOIP_SIP_500_SERVER_INT_ERROR         (500)
+#define VOIP_SIP_503_SERVICE_UNAVAILABLE      (503)
+#define VOIP_SIP_600_BUSY_EVERYWHERE          (600)			
+#define VOIP_SIP_603_DECLINE                  (603)
+#define VOIP_SIP_606_NOT_ACCEPTABLE           (606)			
+
+/* Type of OUTBOUND server */
+#define VOIP_OUTBOUND_NEVER         (0)
+#define VOIP_OUTBOUND_AUTO          (1)
+#define VOIP_OUTBOUND_ALWAYS        (2)
+
+/* Type of NAT */
+#define VOIP_NAT_TYPE_NONE          (0)
+#define VOIP_NAT_TYPE_STATIC_IP     (1)
+#define VOIP_NAT_TYPE_STUN          (2)
+
+/* Type of DTMF */
+#define VOIP_DTMF_IN_BAND           (0)
+#define VOIP_DTMF_OUT_OF_BAND       (1)
+#define VOIP_DTMF_TYPE_NONE         (2)
+
+/* File Length */
+#define VOIP_FILE_LEN               (32)
+#define VOIP_CALL_FILE_PATH         "Z:\\@voip"
+#define VOIP_CALL_FILE_NAME         "call"
+#define VOIP_CONF_STATE_FILE_NAME   "conf"
+
+#define VOIP_MAX_NUM_DIALOG	    (2)  /* Maximum number of dialogs within a call */
+
+/* Conference Server Related */
+#define VOIP_CONF_STATE_USER_COUNT  (10) /* Maximum number of conference server state */
+
+#ifdef SIP_CONFORMANCE_TEST
+
+#define VOIP_SIP_OPTION_LEN     (1500)
+#endif
+
+/*****************************************************************************
+* Dialog status
+*****************************************************************************/
+#define VOIP_SDP_STATUS_NONE            0x00000000
+#define VOIP_SDP_STATUS_IS_DTMF         0x00000001
+#define VOIP_SDP_STATUS_PT_CHANGE       0x00000002
+#define VOIP_SDP_STATUS_INVITE_SDP      0x00000004
+#define VOIP_SDP_STATUS_SDP_NO_MEDIA    0x00000008
+#define VOIP_SDP_STATUS_EXCHANGED       0x00000010
+#define VOIP_SDP_STATUS_EARLY_MEDIA     0x00000020
+
+/*****************************************************************************
+* Typedef 
+*****************************************************************************/
+/* This structure is used for the profile setting */
+typedef struct
+{
+    kal_uint16  sip_port;                               /* Sip server port number */
+    kal_uint16  local_port;                             /* Local port (default 0: auto assign) */
+    kal_uint16  outbound_port;                          /* Port of outbound server */
+    kal_uint16  registrar_port;                         /* Port of registrar server */
+    kal_uint16  stun_port;                              /* Port of STUN server */
+    kal_uint16  rtp_start_port;                         /* Start of RTP port */
+    kal_uint16  rtp_end_port;                           /* End of RTP port */
+    kal_char    disp_name[VOIP_DISP_NAME_LEN*3];        /* Display name of the user */
+    kal_char    sip_server[VOIP_URI_LEN];               /* Sip server address */
+    kal_char    sip_username[VOIP_USERNAME_LEN];        /* Username of SIP */
+    kal_char    sip_password[VOIP_PASSWORD_LEN];        /* Password of SIP */
+    kal_char    *domain_name;                           /* pointer to the domain part of username filed*/
+    kal_bool    is_IP_domain;                           /* if the domain is in IP form */
+    kal_uint8   outbound_type;                          /* Enable or disable outbound server */
+    kal_bool    enable_registrar;                       /* Enable or disable registrar server */    
+    kal_char    outbound_server[VOIP_URI_LEN];          /* Address of outbound server */
+    kal_char    outbound_username[VOIP_USERNAME_LEN];   /* Username of outbound server */
+    kal_char    outbound_password[VOIP_PASSWORD_LEN];   /* Password of outbound server */
+    kal_char    registrar_server[VOIP_URI_LEN];         /* Address of registrar server */
+    kal_char    registrar_username[VOIP_USERNAME_LEN];  /* Username of registrar server */
+    kal_char    registrar_password[VOIP_PASSWORD_LEN];  /* Password of registrar server */
+    kal_char    auth_username[VOIP_USERNAME_LEN];       /* Authorization username */
+    kal_uint8   nat_type;                               /* Type of NAT*/
+    kal_uint8   fire_wall[4];                           /* IP address of firewall */
+    kal_char    stun_server[VOIP_URI_LEN];              /* Address of STUN server */
+    kal_char    voice_mail[VOIP_URI_LEN];               /* Voice mail serfer */
+    kal_bool    nat_refresh;                            /* Auto or manual refresh NAT */
+    kal_uint8   nat_refresh_time;                       /* NAT manual refresh interval */
+    kal_uint32  data_account;                           /* Index of data account */
+}voip_profile_struct;
+
+/* This structure is used for SIP capability */
+#ifdef VOIP_SIP_CAPACITY_SUPPORT
+typedef struct
+{
+    kal_bool                        enable;
+    voip_sip_cap_boolean_type_enum  audio;
+    voip_sip_cap_boolean_type_enum  application;
+    voip_sip_cap_boolean_type_enum  data;
+    voip_sip_cap_boolean_type_enum  control;
+    voip_sip_cap_boolean_type_enum  video;
+    voip_sip_cap_boolean_type_enum  text;
+    voip_sip_cap_boolean_type_enum  automata;
+    voip_sip_cap_class_type_enum    class;
+    voip_sip_cap_duplex_type_enum   duplex;
+    voip_sip_cap_mobility_type_enum mobility;
+    kal_char                        description[64];
+    kal_bool                        events;
+    kal_uint8                       priority;
+    kal_bool                        methods;
+    kal_bool                        extensions;
+    kal_bool                        schemes;
+    voip_sip_cap_actor_type_enum    actor;
+    voip_sip_cap_boolean_type_enum  isfocus;
+}voip_sip_cap_struct;
+#endif
+
+#ifdef VOIP_SIP_CAPACITY_SUPPORT
+typedef struct _voip_caller_pref_struct
+{
+    voip_sip_cap_struct             caller_pref;
+    voip_caller_pref_type_enum      pref_type;
+} voip_caller_pref_struct;
+#endif
+/* This structure is used for the option of a call */
+typedef struct 
+{
+    voip_codec_enum         codec_order[VOIP_MAX_NUM_CODEC];        /* Array index of codec */
+    kal_bool                auto_decline;                           /* Auto decline anonymouse */
+    kal_bool                do_not_disturb;                         /* Auto reject all calls */
+    kal_bool                hide_user_id;                           /* Hide user id or not */
+    kal_bool                auto_answer;                            /* Auto answer mode in MMI */
+    kal_uint8               dtmf;                                   /* In band or out-of-band DTMF */
+    kal_bool                comfortable_noise;                      /* enable confortable noise or not */
+    kal_bool    srtp;                                   /* enable srtp usage or not */
+#ifdef VOIP_SIP_CAPACITY_SUPPORT
+    voip_sip_cap_struct     sip_cap;                                /* SIP Capability */
+    voip_caller_pref_struct caller_pref[VOIP_MAX_CALLER_PREFERENCE];/* Caller Preference */
+#endif
+    kal_bool                early_media;                            /* if send early media */
+}voip_setting_struct;
+
+
+/* This structure defines a structure to carry all kinds of call id. */
+typedef struct
+{
+    kal_uint32  call_id;    /* Call ID */
+    kal_uint32  dialog_id;  /* Dialog ID */
+}voip_call_id_struct;
+
+
+/* This structure is used for the address of a call. */
+typedef struct
+{
+    kal_char   disp_name[VOIP_DISP_NAME_LEN*3]; /*Display name of the user, could be null */
+    kal_char    uri[VOIP_URI_LEN];             /* Eg, "sip: a@b.c" */
+}voip_addr_struct;
+
+/* This structure is used for ringing indication */
+typedef struct
+{
+    voip_addr_struct *refer_by;
+    voip_call_id_struct *replaced_call;
+}voip_ring_data_struct;
+
+typedef struct
+{
+    kal_uint32 newmsgs;
+    kal_uint32 oldmsgs;
+    kal_bool is_urgent_present;
+    kal_uint32 new_urgentmsgs;
+    kal_uint32 old_urgentmsgs;
+}voip_msg_struct;
+
+/* socket address strcuture */
+typedef struct 
+{
+   kal_int16	addr_len;
+   kal_uint8	addr[VOIP_MAX_SOCK_ADDR_LEN];
+   kal_uint16	port; 
+} voip_sockaddr_struct;
+
+/* NAT address information */
+typedef struct
+{
+    voip_sockaddr_struct local_addr;
+    voip_sockaddr_struct derived_addr;
+}voip_nat_addr_struct;
+
+/* SDP crypto */
+typedef struct
+{
+    kal_uint8 crypto_idx;
+    srtp_crypto_struct crypto;
+} voip_crypto_struct;
+
+/* SDP sessoin */
+typedef struct
+{
+    kal_uint64      remote_sdp_version;                 /* remote SDP version */
+    kal_uint16      payload_type[VOIP_MAX_NUM_CODEC];   /* payload type */
+    kal_uint16      local_payload_type[VOIP_MAX_NUM_CODEC]; /* local payload type */
+    kal_uint16      dtmf_payload_type;                  /* payload type of DTMF */
+    kal_uint16      num_codec;                          /* number of codec supported in this section  */
+    kal_uint16      remote_rtp_port;                    /* remote RTP port number */
+    kal_uint16      remote_rtcp_port;                   /* remote RTCP port number */
+    kal_uint16      local_rtp_port;                     /* local RTP port number */
+    kal_uint16      local_rtcp_port;                    /* local RTCP port number */
+    kal_uint16      ptime;
+    kal_uint16      maxptime;
+    kal_uint16      modeset[VOIP_MAX_NUM_CODEC];        /* modeset of codec */
+    voip_codec_enum codec[VOIP_MAX_NUM_CODEC];          /* suppored codec list */
+    kal_uint8       local_addr[VOIP_MAX_IP_SEG_LEN];    /* local address */
+    kal_uint8       remote_addr[VOIP_MAX_IP_SEG_LEN];   /* remote address */
+    kal_uint32      sdp_status;                         /* status info about sdp session */
+    voip_rtp_direction_enum direction;                  /* media direction, 
+                                                           sendonly, recvonly, sendrecv, inactive */
+    voip_annex_enum g7231_annexa;                       /* annexa for G7231 */
+    voip_annex_enum g729_annexb;                        /* annexb for G729 */
+    voip_crypto_struct      *crypto_info;                       /* crypto information */
+}voip_sdp_struct; /* voip_session_struct; */
+
+/* This structure defines a dialog between two peers */
+typedef struct
+ {
+    kal_uint32              dialog_id;                          /* unique id of the dialog */
+    kal_int16               dialog_idx;                         /* unique index of call dialog */
+    voip_addr_struct        user_addr;                          /* remote side address */
+    voip_sdp_struct         sdp_info;                           /* Information of each media stream */
+#ifdef VOIP_EARLY_MEDIA_SUPPORT
+    voip_sdp_struct         early_sdp_info;                     /* information of early media stream */
+#endif
+    voip_nat_addr_struct    stun_addr[VOIP_MAX_DERIEVED_ADDR];  /* stun address */
+    voip_dlg_state_enum     dialog_state;                       /* dialog state */
+    kal_bool                in_use;                             /* dialog is in used */
+    kal_uint8               rel_prov_rsp;                       /* if 100rel is required in MT invite */
+}voip_dialog_struct;
+
+typedef struct
+{
+    kal_uint32              version;        /* version of the conference state */
+    kal_bool                is_conference;  /* if the call is a conference server call */
+    voip_subs_state_enum    subs_state;     /* if the call state is subscribed */
+}voip_call_conf_info_struct;
+
+typedef struct
+{
+    kal_uint32                  call_id;                      /* Call id */
+    voip_dialog_struct          dialog[VOIP_MAX_NUM_DIALOG];  /* Dialog */
+    voip_call_conf_info_struct  conf_info;                    /* information of conference server */
+    voip_call_state_enum        call_state;                   /* Call state */
+    kal_uint8                   num_dialogs;                  /* Number of dialog in this call */
+    kal_bool                    is_bk_call;                   /* If the call is a background call */
+}voip_call_struct;
+
+typedef struct
+{    
+    voip_codec_enum         codec[VOIP_MAX_NUM_CODEC];          /* suppored codec list */
+    voip_dlg_state_enum     dialog_state;                       /* dialog state */
+    kal_bool                in_use;                             /* dialog is in used */
+    kal_uint16              payload_type[VOIP_MAX_NUM_CODEC];   /* payload type */
+    kal_uint16              dtmf_payload_type;                  /* payload type of DTMF */
+    kal_uint16              num_codec;                          /* number of codec supported in this section  */
+    kal_uint16              remote_rtp_port;                    /* remote RTP port number */
+    kal_uint16              remote_rtcp_port;                   /* remote RTCP port number */
+    kal_uint16              local_rtp_port;                     /* local RTP port number */
+    kal_uint16              local_rtcp_port;                    /* local RTCP port number */
+    kal_uint8               local_addr[VOIP_MAX_IP_SEG_LEN];    /* local address */
+    kal_uint8               remote_addr[VOIP_MAX_IP_SEG_LEN];   /* remote address */
+    kal_bool                is_dtmf;                            /* is DTMF supported */
+    kal_bool                is_sdp_exchanged;                   /* is SDP exchange finished */
+    voip_rtp_direction_enum direction;                          /* media direction, */
+    voip_annex_enum         g7231_annexa;                       /* G7231 annexa */
+    voip_annex_enum         g729_annexb;                        /* G729 annexb */
+    voip_crypto_struct      *crypto_info;                            /* crypto info */
+}voip_dialog_info_struct;
+
+typedef struct
+{
+    kal_uint32              call_id;
+    voip_dialog_info_struct dialog[VOIP_MAX_NUM_DIALOG];    /* dialog */
+    voip_call_state_enum    call_state;                     /* Call state */
+    kal_uint8               num_dialogs;                    /* Number of dialog in this call */
+    kal_bool                is_bk_call;                     /* If the call is a background call */
+    kal_bool                is_conference;                  /* If the call is a conference server call */
+}voip_call_info_struct;
+
+typedef struct
+{
+    voip_msg_struct msg[VOIP_MWI_TOTAL];            /* message indication list */  
+    kal_bool        msg_present[VOIP_MWI_TOTAL];    /* if the message is present */
+    kal_bool        is_account_present;             /* if message account is present */
+    kal_char        msg_account[VOIP_URI_LEN];      /* Eg, "sip: a@b.c" */    
+}voip_mwi_info_struct;
+
+
+typedef struct
+{
+    kal_char                    disp_name[VOIP_DISP_NAME_LEN*3];    /*Display name of the user, could be null */
+    kal_char                    uri[VOIP_URI_LEN];                  /* Eg, "sip: a@b.c" */
+    voip_conf_user_status_enum  state;
+}voip_conf_user_struct;
+
+
+/*****************************************************************************
+* Message struct 
+*****************************************************************************/
+#define VOIP_MSG_STRUCT
+/* Registration */
+typedef struct
+{
+    kal_uint8           ref_count;
+    kal_uint16          msg_len;  
+    voip_profile_struct profile; /* Profile settings */
+    voip_setting_struct setting; /* Setting of the call */
+}mmi_voip_register_req_struct;
+
+/* Setting */
+typedef struct
+{
+    kal_uint8           ref_count;
+    kal_uint16          msg_len;  
+    voip_setting_struct setting; /*Setting of the call */
+}mmi_voip_setting_req_struct;
+
+typedef struct
+{
+    kal_uint8  ref_count;
+    kal_uint16 msg_len;  
+    kal_uint8  result; /* result */
+    kal_int32  cause;  /* cause of the result */
+}mmi_voip_result_struct;
+
+typedef mmi_voip_result_struct mmi_voip_register_rsp_struct;
+typedef mmi_voip_result_struct mmi_voip_deregister_rsp_struct;
+typedef mmi_voip_result_struct mmi_voip_deregister_ind_struct;
+typedef mmi_voip_result_struct mmi_voip_setting_rsp_struct;
+
+/* call related indications */
+typedef struct
+{
+    kal_uint8        ref_count;
+    kal_uint16       msg_len;  
+    kal_uint32       call_id;                      /* call id of the ringing call */
+    kal_uint32       dialog_id;                    /* dialog id of the ringing call */
+    voip_addr_struct refer_by;                     /* Address of the refer-by field */
+    kal_wchar        call_list[VOIP_FILE_LEN];     /* Name of call list file */
+    kal_bool         is_refer_by;                  /* If the call is refered by other users */
+#ifdef VOIP_DEBUG_CALL_LIST
+    voip_call_info_struct call_info[6];
+#endif
+}mmi_voip_call_ring_ind_struct;
+
+typedef struct
+{
+    kal_uint8   ref_count;
+    kal_uint16  msg_len;  
+    kal_uint32       call_id;                      /* call id of the ringing call */
+    kal_uint32       dialog_id;                    /* dialog id of the ringing call */
+    kal_uint32       replace_call_id;              /* call id of the replaced call */
+    kal_uint32       replace_dialog_id;            /* dialog id of the ringing call */
+}mmi_voip_call_replace_ind_struct;
+
+typedef struct
+{
+    kal_uint8        ref_count;
+    kal_uint16       msg_len;
+    kal_uint8        result;                       /* Accept the call or not */
+    kal_uint32       call_id;                      /* call id of the ringing call */
+    kal_uint32       dialog_id;                    /* dialog id of the ringing call */
+    kal_uint32       replace_call_id;              /* call id of the replaced call */
+    kal_uint32       replace_dialog_id;            /* dialog id of the ringing call */
+}mmi_voip_call_replace_cnf_struct;
+
+typedef struct
+{
+    kal_uint8        ref_count;
+    kal_uint16       msg_len;
+    kal_uint32       replace_call_id;              /* call id of the replaced call */
+    kal_uint32       replace_dialog_id;            /* dialog id of the replaced call */
+    voip_call_struct call;                          /* affected call */
+}mmi_voip_call_replace_complete_ind_struct;
+
+typedef struct
+{
+    kal_uint8   ref_count;
+    kal_uint16  msg_len;  
+    kal_uint32  call_id;                            /* Call ID */
+    kal_uint32  dialog_id;                          /* Dialog ID */
+    kal_int32   cause;                              /* cause of the result */
+    kal_uint8   result;                             /* result */
+    kal_wchar   call_list[VOIP_FILE_LEN];           /* length of cal list file */
+    kal_uint16  status_code;                        /* status code of call end */
+#ifdef VOIP_DEBUG_CALL_LIST
+    voip_call_info_struct call_info[6];
+#endif
+}mmi_voip_call_end_ind_struct;
+
+typedef struct
+{
+    kal_uint8           ref_count;
+    kal_uint16          msg_len;  
+    kal_uint32          call_id;                      /* Call ID */
+    kal_uint32          dialog_id;                    /* Dialog ID */
+    kal_char            tansfer_target[VOIP_URI_LEN]; /* Address of the transfer target. Used when the remote site asks to transfer the call */
+    voip_state_ind_enum change_cause;                 /* Main state of  changes */
+    voip_call_struct    call;                         /* affect call */
+#if 0
+/* under construction !*/
+#ifdef VOIP_DEBUG_CALL_LIST
+/* under construction !*/
+#endif
+#endif
+}mmi_voip_call_state_ind_struct;
+
+typedef struct
+{
+    kal_uint8               ref_count;
+    kal_uint16              msg_len;  
+    kal_uint32              call_id;                  /* Call ID */
+    kal_uint32              dialog_id;                /* Dialog ID */
+    voip_call_progress_enum status;                   /* Status of the call (ringing, forward, and etc..) */
+    kal_wchar               call_list[VOIP_FILE_LEN]; /* length of cal list file */
+#ifdef VOIP_DEBUG_CALL_LIST
+    voip_call_info_struct call_info[6];
+#endif
+}mmi_voip_progressing_ind_struct;
+
+/* call action request */
+typedef struct
+{
+    kal_uint8           ref_count;
+    kal_uint16          msg_len;  
+    kal_char            target_call[VOIP_URI_LEN];    /* Eg, "sip: a@b.c"  Call to be dialed */
+    voip_call_id_struct active_call;                  /* Call to be activated. Call Transfer also uses this as the transferee */
+    voip_call_id_struct hold_call;                    /* Call to be held */
+    voip_call_id_struct rel_call;                     /* Call to be released or rejected */
+    voip_call_act_enum  op_code;                      /* Operation code  */
+    kal_int8            abort_call_id;
+#ifdef VOIP_SIP_CAPACITY_SUPPORT
+    voip_caller_pref_struct caller_pref[VOIP_MAX_CALLER_PREFERENCE];
+#endif
+}mmi_voip_call_act_req_struct;
+
+typedef struct
+{
+    kal_uint8           ref_count;
+    kal_uint16          msg_len;  
+    voip_call_act_enum  op_code;                      /* Operation code */
+    kal_uint8           result;                       /* result */
+    kal_int32           cause;                        /* cause of the result */
+    kal_wchar           call_list[VOIP_FILE_LEN];     /* length of cal list file */
+#ifdef VOIP_DEBUG_CALL_LIST
+    voip_call_info_struct call_info[6];
+#endif
+}mmi_voip_call_act_rsp_struct;
+
+/* MWI, this primitive is used to notify the status of waiting message. */
+typedef struct
+{
+    kal_uint8               ref_count;
+    kal_uint16              msg_len;  
+    kal_bool                is_msg_waiting;
+    voip_mwi_info_struct    mwi_info;
+}mmi_voip_waiting_msg_ind_struct;
+
+/* conference state indication structure */
+typedef struct
+{
+    kal_uint8                   ref_count;
+    kal_uint16                  msg_len;
+    kal_uint32                  call_id;                    /* call ID */
+    kal_uint32                  dlg_id;                     /* dialog ID */
+    kal_uint32                  count;                      /* number of entity in this indication */
+    kal_wchar                   file_path[VOIP_FILE_LEN];   /* file path+name for entity list */
+    voip_conf_state_enum        conf_state;                 /* state of conference indication */
+}mmi_voip_conference_state_ind_struct;
+
+#ifdef SIP_CONFORMANCE_TEST
+/* MWI, this primitive is used to notify the status of waiting message. */
+typedef struct
+{
+    kal_uint8   ref_count;
+    kal_uint16  msg_len;  
+    kal_char    uri[VOIP_URI_LEN]; /* Address of remote server */
+}mmi_voip_option_req_struct;
+
+/* MWI, this primitive is used to notify the status of waiting message. */
+typedef struct
+{
+    kal_uint8   ref_count;
+    kal_uint16  msg_len;  
+    kal_uint8   result;                       /* result */
+    kal_int32   cause;                        /* cause of the result */
+    kal_char    data[VOIP_SIP_OPTION_LEN];
+}mmi_voip_option_rsp_struct;
+#endif /* SIP_CONFORMANCE_TEST */
+
+/* Transferee, this primitive is used to notify an refer is received */
+typedef struct
+{
+    kal_uint8   ref_count;
+    kal_uint16  msg_len;
+    kal_bool    result;
+}mmi_voip_transferee_cnf_struct;
+
+typedef struct
+{
+    kal_uint8           ref_count;
+    kal_uint16          msg_len;  
+    kal_uint8           result;                       /* result */
+    kal_int32           cause;                        /* cause of the result */
+    kal_uint32          call_id;                      /* Call ID */
+    kal_uint32          dialog_id;                    /* Dialog ID */
+}mmi_voip_act_bk_rej_rsp_struct;
+
+#endif /* _MMI2VOIP_STRUCT_H */
+