rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | #ifndef __IMS_DBG_H__ |
| 2 | #define __IMS_DBG_H__ |
| 3 | |
| 4 | #include "ims_interface_ap.h" |
| 5 | #include "volte_def.h" |
| 6 | #include "sip/inet_msg_def.h" |
| 7 | #include "sip/sip_status_code.h" |
| 8 | #include "sip/sip_msg_defs.h" |
| 9 | |
| 10 | #include "sdp/sdp_msg_api.h" |
| 11 | |
| 12 | #include "ims_dbg_enum.h" |
| 13 | #include "ims_dbg_struct.h" |
| 14 | |
| 15 | /****************************************************************************** |
| 16 | * |
| 17 | * Constants |
| 18 | * |
| 19 | *****************************************************************************/ |
| 20 | #define __IMS_EM_CCCI__ 0 |
| 21 | |
| 22 | |
| 23 | #define IMS_DBG_MAX_SIP_INFO_SIZE 8192 |
| 24 | #define IMS_DBG_TLV_TL_SIZE (IMS_DBG_TLV_TAG_SIZE+IMS_DBG_TLV_LEN_SIZE) |
| 25 | #define IMS_DBG_ROOT_TL_SIZE (IMS_DBG_TLV_TAG_SIZE+IMS_DBG_TLV_LEN_SIZE) |
| 26 | #define IMS_DBG_SEGMENT_SIZE (IMS_DBG_TLV_TAG_SIZE+IMS_DBG_TLV_LEN_SIZE) // segment: tag (2) + length=0 (2) |
| 27 | #define IMS_DBG_SEGMENT_VALUE_LEN 0 |
| 28 | |
| 29 | /* will be assign to response code if SIP message is request */ |
| 30 | #define IMS_DBG_INVALID_RSP_CODE 0 |
| 31 | /* will be assign to method type if SIP message is response */ |
| 32 | #define IMS_DBG_INVALID_METHOD_TYPE INET_METHOD_MAX |
| 33 | |
| 34 | #define IMS_DGB_VAR_LEN 0xFE |
| 35 | #define IMS_DBG_MAX_ROOT 6 |
| 36 | #define IMS_DBG_MAX_TLV 20 |
| 37 | |
| 38 | #define IMS_DBG_TLV_SET_T(tlv, t)\ |
| 39 | ((ims_dbg_tlv *)tlv)->tag = (UINT16)t; |
| 40 | |
| 41 | #define IMS_DBG_TLV_SET_L(tlv, l)\ |
| 42 | ((ims_dbg_tlv *)tlv)->len = (UINT16)l; |
| 43 | |
| 44 | #define IMS_DBG_TLV_SET_V(tlv, v)\ |
| 45 | ((ims_dbg_tlv *)tlv)->value_ptr = (UINT8 *)v; |
| 46 | |
| 47 | #define IMS_DBG_TLV_SET_TLV(tlv, t, l, v)\ |
| 48 | IMS_DBG_TLV_SET_T(tlv, t)\ |
| 49 | IMS_DBG_TLV_SET_L(tlv, l)\ |
| 50 | IMS_DBG_TLV_SET_V(tlv, v) |
| 51 | |
| 52 | #define IMS_DBG_NULL_CHECK_RETURN(_c_) if ((_c_ == NULL)) { ErrMsg(IMSUA_TRACE_ERROR_01216, #_c_); return; } |
| 53 | |
| 54 | /* EM defined struct value variable quick setup macro */ |
| 55 | #define IMS_DBG_EM_DEF_VALUE_SET(_ptr_, _elm_, _val_) \ |
| 56 | _ptr_->is_##_elm_##_valid = KAL_TRUE; \ |
| 57 | _ptr_->_elm_ = _val_; |
| 58 | |
| 59 | #define IMS_DBG_EM_DEF_VALUE_CLEAR(_ptr_, _elm_) \ |
| 60 | _ptr_->is_##_elm_##_valid = KAL_FALSE; \ |
| 61 | _ptr_->_elm_ = 0; |
| 62 | |
| 63 | /* EM defined struct string variable quick setup macro */ |
| 64 | #define IMS_DBG_EM_DEF_STR_SET(_dst_, _elm_, _src_, _len_) \ |
| 65 | _dst_->is_##_elm_##_valid = KAL_TRUE; \ |
| 66 | voip_snprintf((char*)_dst_->_elm_, _len_, "%s", _src_); |
| 67 | |
| 68 | #define IMS_DBG_EM_DEF_STR_CLEAR(_dst_, _elm_, _len_) \ |
| 69 | _dst_->is_##_elm_##_valid = KAL_FALSE; \ |
| 70 | memset(_dst_->_elm_, 0, _len_); |
| 71 | |
| 72 | /* EM defined struct array variable quick setup macro */ |
| 73 | #define IMS_DBG_EM_DEF_ARRAY_SET(_dst_, _elm_, _src_, _len_) \ |
| 74 | _dst_->is_##_elm_##_valid = KAL_TRUE; \ |
| 75 | memcpy(_dst_->_elm_, _src_, _len_); |
| 76 | |
| 77 | #define IMS_DBG_EM_DEF_ARRAY_CLEAR(_dst_, _elm_, _len_) \ |
| 78 | _dst_->is_##_elm_##_valid = KAL_FALSE; \ |
| 79 | memset(_dst_->_elm_, 0, _len_); |
| 80 | |
| 81 | /****************************************************************************** |
| 82 | * |
| 83 | * Definitions |
| 84 | * |
| 85 | *****************************************************************************/ |
| 86 | typedef struct { |
| 87 | UINT16 tag; |
| 88 | UINT16 len; |
| 89 | UINT8 *value_ptr; |
| 90 | } ims_dbg_tlv; |
| 91 | |
| 92 | |
| 93 | typedef struct { |
| 94 | UINT8 root_cnt; |
| 95 | UINT8 obj_cnt; |
| 96 | UINT16 root_tag[IMS_DBG_MAX_ROOT]; |
| 97 | ims_dbg_tlv object[IMS_DBG_MAX_TLV]; |
| 98 | } ims_dbg_tlv_tbl; |
| 99 | |
| 100 | /* |
| 101 | * ROOT tag enum |
| 102 | */ |
| 103 | typedef enum { |
| 104 | IMS_DBG_ROOT_SIP_TAG, |
| 105 | IMS_DBG_ROOT_EM_TAG, |
| 106 | IMS_DBG_ROOT_SETTING_TAG, |
| 107 | IMS_DBG_ROOT_TAG_NUM |
| 108 | } ims_dbg_root_tag_enum; |
| 109 | |
| 110 | /* |
| 111 | * indication message ID enum (IMCB <- UAs) |
| 112 | */ |
| 113 | |
| 114 | /* |
| 115 | * request message ID enum (IMCB -> UAs -> VoLTE Stack) |
| 116 | */ |
| 117 | typedef enum { |
| 118 | IMS_DBG_REQ_START_CODE = 1000000, |
| 119 | //MSG_ID_IMS_DBG_SETTING_REQ, |
| 120 | IMS_DBG_REQ_MSG_NUM |
| 121 | } ims_dbg_req_msg_enum; |
| 122 | |
| 123 | |
| 124 | typedef enum { |
| 125 | IMS_DBG_SIP_TIME_TAG, |
| 126 | IMS_DBG_SIP_SRC_IP_TAG, |
| 127 | IMS_DBG_SIP_DST_IP_TAG, |
| 128 | IMS_DBG_SIP_DIR_TAG, |
| 129 | IMS_DBG_SIP_BEARER_TYPE_TAG, |
| 130 | IMS_DBG_SIP_TP_TAG, |
| 131 | IMS_DBG_SIP_TAG, |
| 132 | IMS_DBG_SIP_MSG_TYPE_TAG, |
| 133 | IMS_DBG_SIP_METHOD_TAG, |
| 134 | IMS_DBG_SIP_RESP_CODE_TAG, |
| 135 | IMS_DBG_SIP_SEGMENT_TAG, |
| 136 | IMS_DBG_SIP_TS_TAG, |
| 137 | IMS_DBG_SIP_CSEQ_TAG, |
| 138 | |
| 139 | /* add here */ |
| 140 | |
| 141 | IMS_DBG_SIP_INFO_TAG_NUM |
| 142 | } ims_dbg_sip_info_tag_enum; |
| 143 | |
| 144 | |
| 145 | /* ------------------------------------------------ */ |
| 146 | /* Define transport protocol sending SIP message */ |
| 147 | /* ------------------------------------------------ */ |
| 148 | typedef inet_method_enum ims_dbg_method_enum; |
| 149 | |
| 150 | /* ------------------------------------------------ */ |
| 151 | /* Define transport protocol sending SIP message */ |
| 152 | /* ------------------------------------------------ */ |
| 153 | typedef sip_transport_enum ims_dbg_transport_enum; |
| 154 | |
| 155 | /* ------------------------------------------------ */ |
| 156 | /* Define SIP message direction */ |
| 157 | /* ------------------------------------------------ */ |
| 158 | typedef enum { |
| 159 | IMS_DBG_DIR_MO = 0x00, |
| 160 | IMS_DBG_DIR_MT = 0x01, |
| 161 | IMS_DBG_DIR_MAX, |
| 162 | } ims_dbg_direction_enum; |
| 163 | |
| 164 | /* ------------------------------------------------ */ |
| 165 | /* Define SIP message type */ |
| 166 | /* ------------------------------------------------ */ |
| 167 | typedef enum { |
| 168 | IMS_DBG_MSG_TYPE_REQUEST = 0x00, |
| 169 | IMS_DBG_MSG_TYPE_RESPONSE = 0x01, |
| 170 | IMS_DBG_MSG_TYPE_MAX, |
| 171 | } ims_dbg_msg_type_enum; |
| 172 | |
| 173 | #if 0 /* move to sync ims_dbg_def.h */ |
| 174 | /* under construction !*/ |
| 175 | /* under construction !*/ |
| 176 | /* under construction !*/ |
| 177 | /* under construction !*/ |
| 178 | /* under construction !*/ |
| 179 | /* under construction !*/ |
| 180 | /* under construction !*/ |
| 181 | /* under construction !*/ |
| 182 | /* under construction !*/ |
| 183 | /* under construction !*/ |
| 184 | /* under construction !*/ |
| 185 | /* under construction !*/ |
| 186 | /* under construction !*/ |
| 187 | /* under construction !*/ |
| 188 | /* under construction !*/ |
| 189 | /* under construction !*/ |
| 190 | /* under construction !*/ |
| 191 | /* under construction !*/ |
| 192 | /* under construction !*/ |
| 193 | /* under construction !*/ |
| 194 | /* under construction !*/ |
| 195 | /* under construction !*/ |
| 196 | #else |
| 197 | typedef ims_dbg_sip_info_ind_struct imcb_ua_dbg_sip_info_struct; |
| 198 | #endif |
| 199 | |
| 200 | |
| 201 | /* ------------------------------------------------ * |
| 202 | * ATT Diagnostic Metric |
| 203 | * ------------------------------------------------ */ |
| 204 | /* |
| 205 | * ATT DM Type Enum |
| 206 | */ |
| 207 | typedef enum { |
| 208 | IMS_DBG_ATT_DM_TYPE_MM_START = 0x000, |
| 209 | IMS_DBG_ATT_DM_TYPE_MM01, |
| 210 | IMS_DBG_ATT_DM_TYPE_MM02, |
| 211 | IMS_DBG_ATT_DM_TYPE_MM03, |
| 212 | IMS_DBG_ATT_DM_TYPE_MM04, |
| 213 | |
| 214 | IMS_DBG_ATT_DM_TYPE_SP_START = 0x100, |
| 215 | IMS_DBG_ATT_DM_TYPE_SPRX, |
| 216 | IMS_DBG_ATT_DM_TYPE_SPTX, |
| 217 | |
| 218 | IMS_DBG_ATT_DM_TYPE_INVALID = 0xFFFFFFFF, |
| 219 | } ims_dbg_att_dm_type_enum; |
| 220 | |
| 221 | /* |
| 222 | * ATT Reg Type Enum |
| 223 | */ |
| 224 | typedef enum { |
| 225 | IMS_DBG_ATT_REG_TYPE_UNKNOWN = 0, |
| 226 | IMS_DBG_ATT_REG_TYPE_INITIAL, |
| 227 | IMS_DBG_ATT_REG_TYPE_REREG, |
| 228 | IMS_DBG_ATT_REG_TYPE_DEREG, |
| 229 | IMS_DBG_ATT_REG_TYPE_REAUTH, |
| 230 | IMS_DBG_ATT_REG_TYPE_INVALID = 0xFFFFFFFF, |
| 231 | } ims_dbg_att_reg_type_enum; |
| 232 | |
| 233 | /* |
| 234 | * ATT Reg Direction Enum |
| 235 | */ |
| 236 | typedef enum { |
| 237 | IMS_DBG_ATT_REG_DIR_UNKNOWN = 0, |
| 238 | IMS_DBG_ATT_REG_DIR_UEAT, |
| 239 | IMS_DBG_ATT_REG_DIR_NETWORK, |
| 240 | IMS_DBG_ATT_REG_DIR_INVALID = 0xFFFFFFFF, |
| 241 | } ims_dbg_att_reg_dir_enum; |
| 242 | |
| 243 | /* |
| 244 | * ATT Reg State Enum |
| 245 | */ |
| 246 | typedef enum { |
| 247 | IMS_DBG_ATT_REG_STATE_UNKNOWN = 0, |
| 248 | IMS_DBG_ATT_REG_STATE_NOT_REGISTERED, |
| 249 | IMS_DBG_ATT_REG_STATE_REGISTERING, |
| 250 | IMS_DBG_ATT_REG_STATE_AUTH_CHALLENGE, |
| 251 | IMS_DBG_ATT_REG_STATE_AUTH_REGISTER, |
| 252 | IMS_DBG_ATT_REG_STATE_REGISTERED, |
| 253 | IMS_DBG_ATT_REG_STATE_NOTIFIED, |
| 254 | IMS_DBG_ATT_REG_STATE_TIMEOUT, |
| 255 | IMS_DBG_ATT_REG_STATE_INVALID = 0xFFFFFFFF, |
| 256 | } ims_dbg_att_reg_state_enum; |
| 257 | |
| 258 | /* |
| 259 | * ATT SIP Result Enum |
| 260 | */ |
| 261 | typedef enum { |
| 262 | IMS_DBG_ATT_SIP_RESULT_UNKNOWN = 0, |
| 263 | IMS_DBG_ATT_SIP_RESULT_TIMEOUT, |
| 264 | IMS_DBG_ATT_SIP_RESULT_LOST_RAN, |
| 265 | /* remaining part is assigned by number, e.g. 200 OK = 200 */ |
| 266 | IMS_DBG_ATT_SIP_RESULT_INVALID = 0xFFFFFFFF, |
| 267 | } ims_dbg_att_sip_result_enum; |
| 268 | |
| 269 | typedef enum { |
| 270 | IMS_DBG_ACCESS_RAT_CELLULAR, |
| 271 | IMS_DBG_ACCESS_RAT_WIFI, |
| 272 | IMS_DBG_ACCESS_RAT_NUM |
| 273 | } ims_dbg_access_rat_enum; |
| 274 | |
| 275 | |
| 276 | /* ------------------------------------------------ * |
| 277 | * CMCC IMS EVENT INFO Metric (for collecting KPI statistics) |
| 278 | * ------------------------------------------------ * |
| 279 | */ |
| 280 | typedef enum |
| 281 | { |
| 282 | EVENT_INFO_NONE = 0, |
| 283 | |
| 284 | /* MO Call */ |
| 285 | EVENT_INFO_MO_CALL_STARTED = 1, /* Send the initial INVITE */ |
| 286 | EVENT_INFO_MO_CALL_ALERTED, /* Receive 183 (with early media), otherwise receive 180, otherwise receive 200 OK for INVITE*/ |
| 287 | EVENT_INFO_MO_CALL_ESTABLISHED, /* Receive 200 OK for INVITE */ |
| 288 | EVENT_INFO_MO_CALL_END, /* Normal End (local/remote user triggered) for MO Call */ |
| 289 | EVENT_INFO_MO_CALL_DROPPED, /* Unexpected End for MO Call */ |
| 290 | EVENT_INFO_MO_CALL_FAILED, /* Unexpected failure during MO call establishment */ |
| 291 | EVENT_INFO_MO_CALL_EARLY_RELEASE, /* Send CANCEL before having received 180 */ |
| 292 | |
| 293 | /* MT Call */ |
| 294 | EVENT_INFO_MT_CALL_STARTED = 51, /* Receive the initial INVITE*/ |
| 295 | EVENT_INFO_MT_CALL_ALERTED, /* Send 180 Ringing */ |
| 296 | EVENT_INFO_MT_CALL_ESTABLISHED, /* Send 200 OK for INVITE */ |
| 297 | EVENT_INFO_MT_CALL_END, /* Normal End (local/remote user triggered) for MT Call */ |
| 298 | EVENT_INFO_MT_CALL_DROPPED, /* Unexpected End for MT Call */ |
| 299 | EVENT_INFO_MT_CALL_FAILED, /* Unexpected failure during MT call establishment */ |
| 300 | EVENT_INFO_MT_CALL_EARLY_RELEASE, /* Receive CANCEL before having sent 180 */ |
| 301 | |
| 302 | /* SMS */ |
| 303 | EVENT_INFO_MT_SMS_FAILED = 201, /* MT IMS SMS directly rejected by SMS UA */ |
| 304 | |
| 305 | /* Registration */ |
| 306 | EVENT_INFO_INIT_REG_REQ = 501, |
| 307 | EVENT_INFO_INIT_REG_401_RECEIVED, |
| 308 | EVENT_INFO_INIT_REG_REQ_WITH_IPSEC, |
| 309 | EVENT_INFO_INIT_REG_COMPLETE, |
| 310 | EVENT_INFO_INIT_REG_FAILED, |
| 311 | EVENT_INFO_REREG_REG_REQ, |
| 312 | EVENT_INFO_REREG_REG_401_RECEIVED, |
| 313 | EVENT_INFO_REREG_REG_REQ_WITH_NEW_IPSEC, |
| 314 | EVENT_INFO_REREG_REG_COMPLETE, |
| 315 | EVENT_INFO_REREG_REG_FAILED, |
| 316 | }ims_dbg_ims_event_info_enum; |
| 317 | |
| 318 | typedef enum { |
| 319 | EVENT_FAILURE_CAUSE_NONE = 0, |
| 320 | |
| 321 | /* Call */ |
| 322 | EVENT_FAILURE_CAUSE_NOT_USER_TRIGGERD = 1, |
| 323 | EVENT_FAILURE_CAUSE_RTP_RTCP_Timeout = 2, |
| 324 | EVENT_FAILURE_CAUSE_BEARER_LOST = 3, |
| 325 | EVENT_FAILURE_CAUSE_NOT_ALERTED = 4, |
| 326 | |
| 327 | /* SMS */ |
| 328 | EVENT_FAILURE_CAUSE_IMS_OVER_SMS_DISABLED = 51, |
| 329 | EVENT_FAILURE_CAUSE_SMS_OBJ_CREATED_FAILED = 52, |
| 330 | EVENT_FAILURE_CAUSE_SMS_MEDIA_TYPE_NOT_SUPPORTED = 53, |
| 331 | |
| 332 | /* MISC */ |
| 333 | EVENT_FAILURE_CAUSE_IMS_UNREGISTERED = 101, |
| 334 | }ims_dbg_ims_event_info_failure_cause_enum; |
| 335 | |
| 336 | #endif /* __IMS_DBG_H__ */ |