[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/ims/ims_dbg.h b/mcu/protocol/interface/ims/ims_dbg.h
new file mode 100644
index 0000000..6b8961b
--- /dev/null
+++ b/mcu/protocol/interface/ims/ims_dbg.h
@@ -0,0 +1,336 @@
+#ifndef __IMS_DBG_H__
+#define __IMS_DBG_H__
+
+#include "ims_interface_ap.h"
+#include "volte_def.h"
+#include "sip/inet_msg_def.h"
+#include "sip/sip_status_code.h"
+#include "sip/sip_msg_defs.h"
+
+#include "sdp/sdp_msg_api.h"
+
+#include "ims_dbg_enum.h"
+#include "ims_dbg_struct.h"
+
+/******************************************************************************
+ *
+ * Constants
+ *
+ *****************************************************************************/
+#define __IMS_EM_CCCI__ 0
+
+
+#define IMS_DBG_MAX_SIP_INFO_SIZE 8192
+#define IMS_DBG_TLV_TL_SIZE (IMS_DBG_TLV_TAG_SIZE+IMS_DBG_TLV_LEN_SIZE)
+#define IMS_DBG_ROOT_TL_SIZE (IMS_DBG_TLV_TAG_SIZE+IMS_DBG_TLV_LEN_SIZE)
+#define IMS_DBG_SEGMENT_SIZE (IMS_DBG_TLV_TAG_SIZE+IMS_DBG_TLV_LEN_SIZE) // segment: tag (2) + length=0 (2)
+#define IMS_DBG_SEGMENT_VALUE_LEN 0
+
+/* will be assign to response code if SIP message is request */
+#define IMS_DBG_INVALID_RSP_CODE 0
+/* will be assign to method type if SIP message is response */
+#define IMS_DBG_INVALID_METHOD_TYPE INET_METHOD_MAX
+
+#define IMS_DGB_VAR_LEN 0xFE
+#define IMS_DBG_MAX_ROOT 6
+#define IMS_DBG_MAX_TLV 20
+
+#define IMS_DBG_TLV_SET_T(tlv, t)\
+ ((ims_dbg_tlv *)tlv)->tag = (UINT16)t;
+
+#define IMS_DBG_TLV_SET_L(tlv, l)\
+ ((ims_dbg_tlv *)tlv)->len = (UINT16)l;
+
+#define IMS_DBG_TLV_SET_V(tlv, v)\
+ ((ims_dbg_tlv *)tlv)->value_ptr = (UINT8 *)v;
+
+#define IMS_DBG_TLV_SET_TLV(tlv, t, l, v)\
+ IMS_DBG_TLV_SET_T(tlv, t)\
+ IMS_DBG_TLV_SET_L(tlv, l)\
+ IMS_DBG_TLV_SET_V(tlv, v)
+
+#define IMS_DBG_NULL_CHECK_RETURN(_c_) if ((_c_ == NULL)) { ErrMsg(IMSUA_TRACE_ERROR_01216, #_c_); return; }
+
+/* EM defined struct value variable quick setup macro */
+#define IMS_DBG_EM_DEF_VALUE_SET(_ptr_, _elm_, _val_) \
+ _ptr_->is_##_elm_##_valid = KAL_TRUE; \
+ _ptr_->_elm_ = _val_;
+
+#define IMS_DBG_EM_DEF_VALUE_CLEAR(_ptr_, _elm_) \
+ _ptr_->is_##_elm_##_valid = KAL_FALSE; \
+ _ptr_->_elm_ = 0;
+
+/* EM defined struct string variable quick setup macro */
+#define IMS_DBG_EM_DEF_STR_SET(_dst_, _elm_, _src_, _len_) \
+ _dst_->is_##_elm_##_valid = KAL_TRUE; \
+ voip_snprintf((char*)_dst_->_elm_, _len_, "%s", _src_);
+
+#define IMS_DBG_EM_DEF_STR_CLEAR(_dst_, _elm_, _len_) \
+ _dst_->is_##_elm_##_valid = KAL_FALSE; \
+ memset(_dst_->_elm_, 0, _len_);
+
+/* EM defined struct array variable quick setup macro */
+#define IMS_DBG_EM_DEF_ARRAY_SET(_dst_, _elm_, _src_, _len_) \
+ _dst_->is_##_elm_##_valid = KAL_TRUE; \
+ memcpy(_dst_->_elm_, _src_, _len_);
+
+#define IMS_DBG_EM_DEF_ARRAY_CLEAR(_dst_, _elm_, _len_) \
+ _dst_->is_##_elm_##_valid = KAL_FALSE; \
+ memset(_dst_->_elm_, 0, _len_);
+
+/******************************************************************************
+ *
+ * Definitions
+ *
+ *****************************************************************************/
+typedef struct {
+ UINT16 tag;
+ UINT16 len;
+ UINT8 *value_ptr;
+} ims_dbg_tlv;
+
+
+typedef struct {
+ UINT8 root_cnt;
+ UINT8 obj_cnt;
+ UINT16 root_tag[IMS_DBG_MAX_ROOT];
+ ims_dbg_tlv object[IMS_DBG_MAX_TLV];
+} ims_dbg_tlv_tbl;
+
+/*
+ * ROOT tag enum
+ */
+typedef enum {
+ IMS_DBG_ROOT_SIP_TAG,
+ IMS_DBG_ROOT_EM_TAG,
+ IMS_DBG_ROOT_SETTING_TAG,
+ IMS_DBG_ROOT_TAG_NUM
+} ims_dbg_root_tag_enum;
+
+/*
+ * indication message ID enum (IMCB <- UAs)
+ */
+
+/*
+ * request message ID enum (IMCB -> UAs -> VoLTE Stack)
+ */
+typedef enum {
+ IMS_DBG_REQ_START_CODE = 1000000,
+ //MSG_ID_IMS_DBG_SETTING_REQ,
+ IMS_DBG_REQ_MSG_NUM
+} ims_dbg_req_msg_enum;
+
+
+typedef enum {
+ IMS_DBG_SIP_TIME_TAG,
+ IMS_DBG_SIP_SRC_IP_TAG,
+ IMS_DBG_SIP_DST_IP_TAG,
+ IMS_DBG_SIP_DIR_TAG,
+ IMS_DBG_SIP_BEARER_TYPE_TAG,
+ IMS_DBG_SIP_TP_TAG,
+ IMS_DBG_SIP_TAG,
+ IMS_DBG_SIP_MSG_TYPE_TAG,
+ IMS_DBG_SIP_METHOD_TAG,
+ IMS_DBG_SIP_RESP_CODE_TAG,
+ IMS_DBG_SIP_SEGMENT_TAG,
+ IMS_DBG_SIP_TS_TAG,
+ IMS_DBG_SIP_CSEQ_TAG,
+
+ /* add here */
+
+ IMS_DBG_SIP_INFO_TAG_NUM
+} ims_dbg_sip_info_tag_enum;
+
+
+/* ------------------------------------------------ */
+/* Define transport protocol sending SIP message */
+/* ------------------------------------------------ */
+typedef inet_method_enum ims_dbg_method_enum;
+
+/* ------------------------------------------------ */
+/* Define transport protocol sending SIP message */
+/* ------------------------------------------------ */
+typedef sip_transport_enum ims_dbg_transport_enum;
+
+/* ------------------------------------------------ */
+/* Define SIP message direction */
+/* ------------------------------------------------ */
+typedef enum {
+ IMS_DBG_DIR_MO = 0x00,
+ IMS_DBG_DIR_MT = 0x01,
+ IMS_DBG_DIR_MAX,
+} ims_dbg_direction_enum;
+
+/* ------------------------------------------------ */
+/* Define SIP message type */
+/* ------------------------------------------------ */
+typedef enum {
+ IMS_DBG_MSG_TYPE_REQUEST = 0x00,
+ IMS_DBG_MSG_TYPE_RESPONSE = 0x01,
+ IMS_DBG_MSG_TYPE_MAX,
+} ims_dbg_msg_type_enum;
+
+#if 0 /* move to sync ims_dbg_def.h */
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#else
+typedef ims_dbg_sip_info_ind_struct imcb_ua_dbg_sip_info_struct;
+#endif
+
+
+/* ------------------------------------------------ *
+ * ATT Diagnostic Metric
+ * ------------------------------------------------ */
+/*
+ * ATT DM Type Enum
+ */
+typedef enum {
+ IMS_DBG_ATT_DM_TYPE_MM_START = 0x000,
+ IMS_DBG_ATT_DM_TYPE_MM01,
+ IMS_DBG_ATT_DM_TYPE_MM02,
+ IMS_DBG_ATT_DM_TYPE_MM03,
+ IMS_DBG_ATT_DM_TYPE_MM04,
+
+ IMS_DBG_ATT_DM_TYPE_SP_START = 0x100,
+ IMS_DBG_ATT_DM_TYPE_SPRX,
+ IMS_DBG_ATT_DM_TYPE_SPTX,
+
+ IMS_DBG_ATT_DM_TYPE_INVALID = 0xFFFFFFFF,
+} ims_dbg_att_dm_type_enum;
+
+/*
+ * ATT Reg Type Enum
+ */
+typedef enum {
+ IMS_DBG_ATT_REG_TYPE_UNKNOWN = 0,
+ IMS_DBG_ATT_REG_TYPE_INITIAL,
+ IMS_DBG_ATT_REG_TYPE_REREG,
+ IMS_DBG_ATT_REG_TYPE_DEREG,
+ IMS_DBG_ATT_REG_TYPE_REAUTH,
+ IMS_DBG_ATT_REG_TYPE_INVALID = 0xFFFFFFFF,
+} ims_dbg_att_reg_type_enum;
+
+/*
+ * ATT Reg Direction Enum
+ */
+typedef enum {
+ IMS_DBG_ATT_REG_DIR_UNKNOWN = 0,
+ IMS_DBG_ATT_REG_DIR_UEAT,
+ IMS_DBG_ATT_REG_DIR_NETWORK,
+ IMS_DBG_ATT_REG_DIR_INVALID = 0xFFFFFFFF,
+} ims_dbg_att_reg_dir_enum;
+
+/*
+ * ATT Reg State Enum
+ */
+typedef enum {
+ IMS_DBG_ATT_REG_STATE_UNKNOWN = 0,
+ IMS_DBG_ATT_REG_STATE_NOT_REGISTERED,
+ IMS_DBG_ATT_REG_STATE_REGISTERING,
+ IMS_DBG_ATT_REG_STATE_AUTH_CHALLENGE,
+ IMS_DBG_ATT_REG_STATE_AUTH_REGISTER,
+ IMS_DBG_ATT_REG_STATE_REGISTERED,
+ IMS_DBG_ATT_REG_STATE_NOTIFIED,
+ IMS_DBG_ATT_REG_STATE_TIMEOUT,
+ IMS_DBG_ATT_REG_STATE_INVALID = 0xFFFFFFFF,
+} ims_dbg_att_reg_state_enum;
+
+/*
+ * ATT SIP Result Enum
+ */
+typedef enum {
+ IMS_DBG_ATT_SIP_RESULT_UNKNOWN = 0,
+ IMS_DBG_ATT_SIP_RESULT_TIMEOUT,
+ IMS_DBG_ATT_SIP_RESULT_LOST_RAN,
+ /* remaining part is assigned by number, e.g. 200 OK = 200 */
+ IMS_DBG_ATT_SIP_RESULT_INVALID = 0xFFFFFFFF,
+} ims_dbg_att_sip_result_enum;
+
+typedef enum {
+ IMS_DBG_ACCESS_RAT_CELLULAR,
+ IMS_DBG_ACCESS_RAT_WIFI,
+ IMS_DBG_ACCESS_RAT_NUM
+} ims_dbg_access_rat_enum;
+
+
+/* ------------------------------------------------ *
+ * CMCC IMS EVENT INFO Metric (for collecting KPI statistics)
+ * ------------------------------------------------ *
+ */
+typedef enum
+{
+ EVENT_INFO_NONE = 0,
+
+ /* MO Call */
+ EVENT_INFO_MO_CALL_STARTED = 1, /* Send the initial INVITE */
+ EVENT_INFO_MO_CALL_ALERTED, /* Receive 183 (with early media), otherwise receive 180, otherwise receive 200 OK for INVITE*/
+ EVENT_INFO_MO_CALL_ESTABLISHED, /* Receive 200 OK for INVITE */
+ EVENT_INFO_MO_CALL_END, /* Normal End (local/remote user triggered) for MO Call */
+ EVENT_INFO_MO_CALL_DROPPED, /* Unexpected End for MO Call */
+ EVENT_INFO_MO_CALL_FAILED, /* Unexpected failure during MO call establishment */
+ EVENT_INFO_MO_CALL_EARLY_RELEASE, /* Send CANCEL before having received 180 */
+
+ /* MT Call */
+ EVENT_INFO_MT_CALL_STARTED = 51, /* Receive the initial INVITE*/
+ EVENT_INFO_MT_CALL_ALERTED, /* Send 180 Ringing */
+ EVENT_INFO_MT_CALL_ESTABLISHED, /* Send 200 OK for INVITE */
+ EVENT_INFO_MT_CALL_END, /* Normal End (local/remote user triggered) for MT Call */
+ EVENT_INFO_MT_CALL_DROPPED, /* Unexpected End for MT Call */
+ EVENT_INFO_MT_CALL_FAILED, /* Unexpected failure during MT call establishment */
+ EVENT_INFO_MT_CALL_EARLY_RELEASE, /* Receive CANCEL before having sent 180 */
+
+ /* SMS */
+ EVENT_INFO_MT_SMS_FAILED = 201, /* MT IMS SMS directly rejected by SMS UA */
+
+ /* Registration */
+ EVENT_INFO_INIT_REG_REQ = 501,
+ EVENT_INFO_INIT_REG_401_RECEIVED,
+ EVENT_INFO_INIT_REG_REQ_WITH_IPSEC,
+ EVENT_INFO_INIT_REG_COMPLETE,
+ EVENT_INFO_INIT_REG_FAILED,
+ EVENT_INFO_REREG_REG_REQ,
+ EVENT_INFO_REREG_REG_401_RECEIVED,
+ EVENT_INFO_REREG_REG_REQ_WITH_NEW_IPSEC,
+ EVENT_INFO_REREG_REG_COMPLETE,
+ EVENT_INFO_REREG_REG_FAILED,
+}ims_dbg_ims_event_info_enum;
+
+typedef enum {
+ EVENT_FAILURE_CAUSE_NONE = 0,
+
+ /* Call */
+ EVENT_FAILURE_CAUSE_NOT_USER_TRIGGERD = 1,
+ EVENT_FAILURE_CAUSE_RTP_RTCP_Timeout = 2,
+ EVENT_FAILURE_CAUSE_BEARER_LOST = 3,
+ EVENT_FAILURE_CAUSE_NOT_ALERTED = 4,
+
+ /* SMS */
+ EVENT_FAILURE_CAUSE_IMS_OVER_SMS_DISABLED = 51,
+ EVENT_FAILURE_CAUSE_SMS_OBJ_CREATED_FAILED = 52,
+ EVENT_FAILURE_CAUSE_SMS_MEDIA_TYPE_NOT_SUPPORTED = 53,
+
+ /* MISC */
+ EVENT_FAILURE_CAUSE_IMS_UNREGISTERED = 101,
+}ims_dbg_ims_event_info_failure_cause_enum;
+
+#endif /* __IMS_DBG_H__ */