blob: 6b8961bee25e36e3ed880ca0f5a099d954d13d92 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001#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 *****************************************************************************/
86typedef struct {
87 UINT16 tag;
88 UINT16 len;
89 UINT8 *value_ptr;
90} ims_dbg_tlv;
91
92
93typedef 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 */
103typedef 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 */
117typedef 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
124typedef 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/* ------------------------------------------------ */
148typedef inet_method_enum ims_dbg_method_enum;
149
150/* ------------------------------------------------ */
151/* Define transport protocol sending SIP message */
152/* ------------------------------------------------ */
153typedef sip_transport_enum ims_dbg_transport_enum;
154
155/* ------------------------------------------------ */
156/* Define SIP message direction */
157/* ------------------------------------------------ */
158typedef 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/* ------------------------------------------------ */
167typedef 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
197typedef 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 */
207typedef 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 */
224typedef 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 */
236typedef 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 */
246typedef 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 */
261typedef 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
269typedef 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 */
280typedef 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
318typedef 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__ */