blob: 0835196c40b6ca86a2c716776e6469607d10bfcd [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2012
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*****************************************************************************
37 *
38 * Filename:
39 * ---------
40 * dhl_trace.h
41 *
42 * Project:
43 * --------
44 * MOLY
45 *
46 * Description:
47 * ------------
48 * PS trace define macros and trace API
49 *
50 * Author:
51 * -------
52 * -------
53 * -------
54 * -------
55 *
56 * 05 16 2019 victoria.wang
57 * [MOLY00354132] [Gen 95][ERRC][SYS] Stored SIB C-struct debug trace
58 * [Add][DHL] print c structure logging API
59 *
60 * 04 21 2019 yh.sung
61 * [MOLY00392990] [VMOLY][UTF] Phase 2 Landing
62 * [UTF][DHL] UTF Trace API - trace interface
63 *
64 * 04 18 2018 yancy.chien
65 * [MOLY00321239] [Gen95] tst_log_primitive migration for MSG_ID_FDD_CPHY_MSG_CONTAINER_REQ/ MSG_ID_TDD_CPHY_MSG_CONTAINER_REQ
66 * 1. Add dhl_log_primitive_custom API.
67 * 2. Remove special handling for TDD/FDD in tst_log_primitive.
68 *
69 * 04 28 2017 yu-hsiang.peng
70 * [MOLY00243678] [VTF_SMT][MT6293] Assert message output in META mode without ELT connect
71 * [UMOLYA.TRUNK] Support Meta EE trace before MDLogger connect - phase1
72 *
73 * 04 27 2017 yancy.chien
74 * [MOLY00242548] [DHL] Build warning removal
75 * Apply A style.
76 *
77 * 04 27 2017 yancy.chien
78 * [MOLY00242548] [DHL] Build warning removal
79 * Apply A style.
80 *
81 * 01 06 2017 yu-hsiang.peng
82 * [MOLY00222943] [MT6293] DHL Seamless Meta Support
83 * [UMOLYA.TRUNK] Merge Seamless Meta mode from IT CBr -DHL
84 *
85 * 10 27 2016 yancy.chien
86 * [MOLY00181823] [DHL] UMOLY Migrate to UMOLYA - W16.44 Migration.
87 *
88 * 09 21 2016 yancy.chien
89 * [MOLY00181823] [DHL] UMOLY Migrate to UMOLYA
90 *
91 * 05 26 2016 yancy.chien
92 * [MOLY00181823] [DHL] UMOLY Migrate to UMOLYA
93 * .
94 *
95 * 04 08 2016 eason.lai
96 * [MOLY00172942] SMP modem warning migration
97 * DHL modem warning message porting
98 *
99 * 12 23 2015 hk.yang
100 * [MOLY00152442] [LR11][DHL] L2 PDU logging
101 * [UMOLY] L2 pdu logging API.
102 *
103 * 11 25 2015 eason.lai
104 * [MOLY00134958] [MT6292] [DHL] logging service migration
105 * refine the xl1sim option in DHL and restore the patch of CL#1796032.
106 *
107 * 11 23 2015 eason.lai
108 * [MOLY00134958] [MT6292] [DHL] logging service migration
109 * xl1sim introduce SMP DHL
110 *
111 * 09 11 2015 eason.lai
112 * [MOLY00141576] [DHL] fixed LR11 build error
113 * .
114 *
115 * 08 24 2015 eason.lai
116 * [MOLY00138696] [DHL] replace CC IRQ with intra-event and polling to descresing support effort when l1core hang
117 * add MTB L1 access level
118 *
119 * 07 22 2015 eason.lai
120 * [MOLY00130157] [TK6291][DHL] smart logging migration
121 * .
122 *
123 * 07 10 2015 eason.lai
124 * merge code
125 *
126 * 04 09 2015 eason.lai
127 * [MOLY00105513] [TK6291][DHL] introduce GPD/SPD wrapper
128 * GPD/SPD wrapper and L2copro log dma
129 *
130 * 11 14 2014 eason.lai
131 * [MOLY00084440] [MT6291][DHL] Patch back UMOLY trunk from MT6291_DEV
132 * first time patch back
133 *
134 * 09 25 2014 ken.liu
135 * [MOLY00079600] Modify the access level of EL1 trace for MBJ
136 * Add internal trace access level for MBJ L1.
137 *
138 * 05 07 2014 eason.lai
139 * [MOLY00064969] [DHL]expand tab to 4 spaces to have better typesettings
140 * .
141 *
142 * 04 23 2014 eason.lai
143 * [MOLY00063500] [DHL] set dhl_log_primitve6 as empty function when disable dhl module
144 * .
145 *
146 * 04 01 2014 mojo.lai
147 * [MOLY00060735] Custom read write memory feature
148 *
149 * 01 14 2014 ken.liu
150 * [MOLY00049431] [MT6290E1][DHL] Reserve MOD_NIL (0) to support trace decoding without database
151 * enable new sys trace and dhl header format
152 *
153 * 01 14 2014 mojo.lai
154 * [MOLY00053674] Add new log primitive API
155 * .
156 *
157 * 01 08 2014 ken.liu
158 * [MOLY00052051] [DHL] add support for internal trace access level
159 * update access level define names.
160 *
161 * 01 08 2014 ken.liu
162 * [MOLY00052051] [DHL] add support for internal trace access level
163 * add access level defines.
164 *
165 * 12 31 2013 ken.liu
166 * [MOLY00052051] [DHL] add support for internal trace access level
167 * enable dhl_internal_trace support.
168 *
169 * 12 06 2013 ken.liu
170 * [MOLY00049267] [MT6290E1][DHL] kal_brief_trace_macro support for MIPS reduction
171 * add flag to skip function call when trace is off.
172 *
173 * 10 18 2013 mojo.lai
174 * [MOLY00041595] [MT6290E1][MMDS_DC] MMDC feature patch back to MOLY trunk
175 * .
176 *
177 * 10 18 2013 mojo.lai
178 * [MOLY00041595] [MT6290E1][MMDS_DC] MMDC feature patch back to MOLY trunk
179 * .
180 *
181 * 08 20 2013 mojo.lai
182 * [MOLY00034193] Show yellow screen while modem warning happens
183 * .
184 *
185 * 07 30 2013 mojo.lai
186 * [MOLY00031661] Support IP packet logging
187 * .
188 *
189 * 06 11 2013 mojo.lai
190 * [MOLY00025737] DHL multimode support peer trace
191 * .
192 *
193 * 05 27 2013 ken.liu
194 * [MOLY00023653] Driver test environment updated for no_ltelib
195 * provide dummy dhl api for driver test load.
196 *
197 * 05 22 2013 mojo.lai
198 * [MOLY00009210] DHL
199 * L2 copro support
200 *
201 * 05 14 2013 mojo.lai
202 * [MOLY00009210] DHL
203 * Add virtual channel id for BTT
204 *
205 * 04 30 2013 ken.liu
206 * [MOLY00012607] MOLY multimode build tst API migration
207 * sync dhl_peer_trace and dhl_EM_logger() from stanleyHY's CBr.
208 *
209 * 04 09 2013 ken.liu
210 * [MOLY00012607] MOLY multimode build tst API migration
211 * add _kal_trace and _kal_brief_trace function wrapper for users via function pointer.
212 *
213 * 04 02 2013 ken.liu
214 * [MOLY00012607] MOLY multimode build tst API migration
215 * enable macro for kal_trace & kal_brief_trace api wrapper.
216 *
217 * 03 20 2013 ken.liu
218 * [MOLY00011772] [MT7208][NW-UE SIM][TC 6.2.2.8] ASSERT at m11301.c, 2027
219 * Back out changelist 107910
220 *
221 * 12 21 2012 ken.liu
222 * [MOLY00005322] TATAKA merge to MOLY
223 * add dhl_brief_trace api.
224 *
225 * 12 05 2012 ken.liu
226 * [MOLY00005322] TATAKA merge to MOLY
227 * add wrapper for kal_brief_trace_macro
228 *
229 * 11 13 2012 ken.liu
230 * [MOLY00005322] TATAKA merge to MOLY
231 * sync new ps trace definition macro.
232 *
233 * 11 07 2012 ken.liu
234 * [MOLY00005322] TATAKA merge to MOLY
235 * dhl module check-in.
236 ****************************************************************************/
237
238#ifndef _DHL_TRACE_H
239#define _DHL_TRACE_H
240
241#if !defined(__DHL_MODULE__)
242#include "kal_trace.h"
243
244#define dhl_trace(...)
245#define dhl_internal_trace(...)
246#define dhl_brief_trace(...)
247#define dhl_peer_trace(...)
248#define dhl_raw_trace(...)
249#define dhl_print(...)
250#define dhl_print_string(...)
251#define dhl_print_system_trace(...)
252
253#define dhl_print_struct(...)
254#define dhl_debug_print(...)
255
256#define dhl_trace_impl(...)
257#define dhl_internal_trace_impl(...)
258#define dhl_print_impl(...)
259#define dhl_EM_logger(...)
260#define dhl_log_primitive6(...)
261
262#define dhl_print_meta_string(...)
263
264#define DHL_MAC_LOG_L2_PDU(pointer, length) do {\
265 } while(0)
266#define DHL_RLC_LOG_L2_PDU(pointer, length) do {\
267 } while(0)
268#define DHL_PDCP_LOG_L2_PDU(pointer, length) do {\
269 }while(0)
270
271#define DHL_MAC_CHECK_L2_PDU() do {\
272 }while(0)
273#define DHL_RLC_CHECK_L2_PDU() do {\
274 }while(0)
275#define DHL_PDCP_CHECK_L2_PDU() do {\
276 }while(0)
277
278#else
279
280#ifndef GEN_FOR_PC
281#include <stdio.h>
282#include <stdarg.h>
283#else
284typedef char *va_list;
285#endif
286#include "kal_general_types.h"
287#include "kal_public_defs.h"
288
289#if defined(__RVCT__)
290#pragma diag_suppress 870
291#endif /* __RVCT_ */
292
293#ifdef __cplusplus
294extern "C" {
295#endif
296
297#if defined(__DHL_MODULE__) && defined(__EM_MODE__) /* for ilm_struct type definition */
298#ifndef GEN_FOR_PC
299struct ilm_struct;
300extern void tst_EM_logger(struct ilm_struct *ilm_ptr);
301extern void dhl_EM_logger(struct ilm_struct *ilm_ptr);
302#endif
303#endif //#if defined(__DHL_MODULE__) && defined(__EM_MODE__)
304
305#define MAX_MSG_NBR_IN_MODULE 20
306
307//Define Trace Macro for PS trace
308#if defined(GEN_FOR_PC) && !defined(GEN_FOR_CPARSER)
309#define BEGIN_TRACE_MAP(MOD) START_MODULE_MSG MOD MAX_MSG_NBR_IN_MODULE
310#define BEGIN_TRACE_MAP_WITH_RANGE(MOD, MIN_VAL, MAX_VAL) START_RANGE_MODULE_MSG MOD MAX_MSG_NBR_IN_MODULE MIN_VAL MAX_VAL
311#define TRC_MSG(MSG,STR) MSG STR
312#define TRC_MSG_NEWLINE(MSG,STR,NUM) MSG STR NUM
313#define END_TRACE_MAP(MOD) END_MODULE_MSG
314#define END_TRACE_MAP_WITH_RANGE(MOD, MIN_VAL, MAX_VAL) MOD MIN_VAL MAX_VAL END_RANGE_MODULE_MSG
315#else //Define Trace Macro for PS trace
316#define BEGIN_TRACE_MAP(MOD) enum MOD##_MSG_ENUM{\
317 MOD##_empty_string=MOD<<MAX_MSG_NBR_IN_MODULE,
318#define BEGIN_TRACE_MAP_WITH_RANGE(MOD, MIN_VAL, MAX_VAL) enum MOD##_##MIN_VAL##_MSG_ENUM{\
319 MOD##_##MIN_VAL##_empty_string = (MOD<<MAX_MSG_NBR_IN_MODULE) + MIN_VAL - 1,
320#define TRC_MSG(MSG,STR) MSG##__enum,
321#define TRC_MSG_NEWLINE(MSG,STR,NUM) MSG##__enum, MSG##_NEWLINE_EXPAND__enum = MSG##__enum+NUM,
322#define END_TRACE_MAP(MOD) MOD##__end};
323#define END_TRACE_MAP_WITH_RANGE(MOD, MIN_VAL, MAX_VAL) MOD##_##MIN_VAL##__end};
324#endif //Define Trace Macro for PS trace
325
326
327#if defined(__DHL_MODULE__) && !defined(__DHL_BRINUP_DUMMY_BUILD__)
328#define __DHL_TRACE_ENABLED__
329#endif //#ifdef __DHL_MODULE__
330
331#ifndef __DHL_TRACE_ENABLED__
332#if defined(L1_SIM) && !defined (__UE_SIMULATOR__)
333#define __DHL_TRACE_ENABLED__
334#elif defined(KAL_ON_OSCAR) || defined(MCD_DLL_EXPORT)
335#define __DHL_TRACE_EMPTY_FUNCTION__
336#endif //#if defined(KAL_ON_OSCAR) || defined(MCD_DLL_EXPORT)
337#endif
338
339
340
341typedef enum
342{
343 TRACE_FUNC,
344 TRACE_STATE,
345 TRACE_INFO,
346 TRACE_WARNING,
347 TRACE_ERROR,
348 TRACE_GROUP_1,
349 TRACE_GROUP_2,
350 TRACE_GROUP_3,
351 TRACE_GROUP_4,
352 TRACE_GROUP_5,
353 TRACE_GROUP_6,
354 TRACE_GROUP_7,
355 TRACE_GROUP_8,
356 TRACE_GROUP_9,
357 TRACE_GROUP_10,
358 TRACE_PEER
359} trace_class_enum;
360
361typedef enum
362{
363 DHL_CUSTOM_ILM_NO_LOG,
364 DHL_CUSTOM_ILM_HEADER_ONLY,
365 DHL_CUSTOM_ILM_WO_PEER_BUFF,
366 DHL_CUSTOM_ILM_CPHY_MSG_CONTAINER
367} e_custom_ilm_trace_option;
368
369
370#if defined (__DHL_TRACE_ENABLED__)
371
372#define DHL_USER_FLAG_NONE (0x0)
373#define DHL_FLAG_EM (0x1)
374
375/* User API for querying trace started to output or not, contact: Shengfu Tsai */
376extern kal_bool dhl_is_trace_started();
377
378/* trace */
379#define DHL_ACCESS_LEVEL_1_ALL_USER (0x01)
380#define DHL_ACCESS_LEVEL_4_MTK_INTERNAL (0x04)
381#define DHL_ACCESS_LEVEL_5_MBJ_L1 (0x05)
382#define DHL_ACCESS_LEVEL_5_MTB_L1 (0x05)
383#define DHL_ACCESS_LEVEL_7_HQ_ONLY (0x07)
384/* trace */
385extern void dhl_print(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *fmt, ...);
386extern void dhl_print_string(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *str);
387extern void meta_print_string(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *str);
388#define dhl_print_system_trace(_c, _s) \
389 dhl_print_string((_c), DHL_USER_FLAG_NONE, 0, (_s));
390
391
392/*
393#ifndef GEN_FOR_PC
394struct ilm_struct;
395extern void dhl_log_primitive(struct ilm_struct *ilm);
396extern void dhl_log_primitive_without_filter_check(struct ilm_struct *ilm);
397extern void dhl_log_primitive_custom(struct ilm_struct *ilm, e_custom_ilm_trace_option option);
398extern void dhl_FT_log_primitive(struct ilm_struct *ilm);
399#else
400*/
401/* primitive */
402/**
403* \brief output internal message communication log if module's filter on. send by KAL service.
404* \param ilm_struct for internal message
405*/
406extern void dhl_log_primitive(ilm_struct *ilm);
407extern void dhl_log_primitive_without_filter_check(ilm_struct *ilm);
408extern void dhl_log_primitive_custom(ilm_struct *ilm, e_custom_ilm_trace_option option);
409/**
410* \brief Only for FT task. internal message communication log.
411* \param ilm_struct for internal message
412*/
413extern void dhl_FT_log_primitive(ilm_struct *ilm);
414/**
415* \brief output primitive C structure if module's filter on.
416* \param module's id
417* \param sap_type if need partial logging
418* \param msg_type for getting c structure that define in message structure definition
419* \param buf_len the size of c structure
420* \param buf pointer to the stucture data
421* \par Sample code
422* \code{.c}
423* dhl_string_struct buf;
424* kal_uint32 buf_len = sizeof(dhl_string_struct);
425* dhl_log_primitive_struct(MOD_DHL, INVALID_SAP, MSG_ID_DHL_STRING, buf_len, &buf);
426* \endcode
427*/
428extern void dhl_log_primitive_struct(module_type src_mod, sap_type sap_id, msg_type msg_id, kal_uint32 buf_len, void *buf);
429//#endif
430
431
432//for seamless meta
433extern void meta_print_system_trace(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const kal_char *str);
434#define dhl_print_meta_string(_c, _s) meta_print_system_trace((_c), DHL_USER_FLAG_NONE, 0, (_s))
435
436
437// Only available on MoDIS
438#ifdef UNIT_TEST
439#include "kal_public_defs.h"
440extern void _dhl_print_struct(module_type src, msg_type msg_id, int buf_len, void *buf);
441#define dhl_print_struct(_s,_m,_l,_b) _dhl_print_struct(_s,_m,_l,_b)
442#define dhl_debug_print(_c,_m,_f, ...) dhl_print(_c, DHL_USER_FLAG_NONE, _m, _f, __VA_ARGS__);
443#else
444#define dhl_print_struct(_s,_m,_l,_b)
445#define dhl_debug_print(_f, ...)
446#endif
447
448#define dhl_trace_impl(_t, _u, _msg, _mod, _argv, _arg_info) \
449 dhl_internal_trace_impl(_t, _u, DHL_ACCESS_LEVEL_1_ALL_USER, _msg, _mod, _argv, _arg_info)
450
451extern void dhl_internal_trace_impl(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint8 access_level, kal_uint32 msg_index, kal_uint32 module_id, const char *arg_type, va_list argument_info);
452extern void dhl_print_impl(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *fmt, va_list argument_info);
453extern void dhl_raw_trace_impl(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const kal_char *fmt, kal_uint32 buf_len, const kal_uint8 *pData, kal_bool chk_filter);
454extern void dhl_peer_trace_impl(kal_uint32 global_peer_msg_id, kal_uint32 raw_data_len, kal_uint8 *raw_data, kal_uint32 trace_index, kal_uint32 module_id, const char *arg_type, va_list argument_info);
455
456//typedef void (*TST_String_Inject_CB)(kal_uint32 index, kal_uint8 *pData);
457// External buffer logging via ILM
458typedef enum
459{
460 DHL_EXTERNAL_BUFFER_TYPE_BEGIN = 0,
461 DHL_EXTERNAL_BUFFER_L2COPRO_IP_HEADER_LOG,
462 DHL_EXTERNAL_BUFFER_TYPE_MAX
463} dhl_external_buffer_type;
464
465/*
466 * Parameter note:
467 * sent_end
468 * the end of buffer address sent
469 * may not align with the buffer end sent
470 * (fragment should be handled by user)
471 */
472typedef void (*buffer_tx_done_cb)(dhl_external_buffer_type type, kal_uint8 *sent_end, kal_int32 sent_len);
473kal_bool register_buffer_tx_done_callback(dhl_external_buffer_type type, buffer_tx_done_cb cb);
474/*
475 * Parameter usage note:
476 * msg_id
477 * MSG_ID_DHL_L2COPRO_DL_IP_HEADER_LOG
478 * MSG_ID_DHL_L2COPRO_UL_IP_HEADER_LOG
479 * local_para
480 * caller-free
481 * local_para_len
482 * <= 64 bytes
483 */
484typedef struct
485{
486 kal_uint8 *buf_address;
487 kal_uint32 buf_len;
488} S_DHL_SEND_BODY;
489kal_bool dhl_send_ilm_log(dhl_external_buffer_type type, msg_type msg_id, kal_uint8 *local_para, kal_int32 local_para_len, S_DHL_SEND_BODY *p_send_body_array, kal_uint32 body_number);
490
491#ifdef TST_TRACE_COMPAT
492#define kal_print_string_trace kal_wap_trace //alias kal_print_string_trace as kal_wap_trace
493extern void kal_wap_trace(module_type mod_id, trace_class_enum trc_class, const char *fmt, ...);
494extern void kal_bootup_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
495extern void kal_prompt_trace(module_type, const kal_char *fmt, ...);
496extern void kal_trace_for_3rd_party(trace_class_enum, kal_uint32, const kal_char *, va_list);
497#endif
498//#define __DHL_LEGACY_TRACE_API_ENABLED__
499#if defined(__DHL_LEGACY_TRACE_API_ENABLED__)
500/*index trace & raw trace & peer trace*/
501/*dhl*/
502extern void dhl_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const char *arg_type, ...);
503extern void dhl_internal_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint8 access_level, kal_uint32 msg_index, const char *arg_type, ...);
504extern void dhl_brief_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const char *arg_type, ...);
505extern void dhl_raw_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const kal_char *fmt, kal_uint32 buf_len, const kal_uint8 *pData);
506extern void dhl_peer_trace(kal_uint32 global_peer_msg_id, kal_uint32 raw_data_len, kal_uint8 *raw_data, kal_uint32 trace_index, const char *arg_type, ...);
507/*kal*/
508#ifdef TST_TRACE_COMPAT
509#define kal_critical_trace kal_trace
510#define kal_critical_brief_trace kal_brief_trace
511#define kal_critical_assert_trace kal_assert_trace
512extern void kal_critical_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
513extern void kal_critical_brief_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
514extern void kal_critical_assert_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
515#if !defined(_MSC_VER)
516#define kal_trace(trc_class, msg_index, ...) \
517 dhl_trace(trc_class, DHL_USER_FLAG_NONE, msg_index, ##__VA_ARGS__)
518#define kal_brief_trace(trc_class, msg_index, ...) \
519 dhl_brief_trace(trc_class, DHL_USER_FLAG_NONE, msg_index, ##__VA_ARGS__)
520//Target build
521extern kal_bool tst_is_PsTrc_open_and_pstrace_flag; //For optimization, the AND flag of tst_is_PsTrc_open and tst_pstrace_flag
522extern void dhl_brief_trace_opt_helper(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const char *arg_type, ...);
523#define kal_brief_trace_macro(trc_class, msg_index, ...) do { \
524 if (tst_is_PsTrc_open_and_pstrace_flag) {\
525 dhl_brief_trace_opt_helper(trc_class, DHL_USER_FLAG_NONE, msg_index, ##__VA_ARGS__); \
526 } \
527 } while(0)
528#else
529extern void kal_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
530extern void kal_brief_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
531//PC build (MoDIS or MCDDLL)
532extern void kal_brief_trace_macro(trace_class_enum, kal_uint32, const kal_char *, ...);
533#endif // _MSC_VER
534extern void _kal_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
535extern void _kal_brief_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
536extern void kal_lib_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
537extern void kal_assert_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
538extern void kal_buffer_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *fmt, kal_uint32 buf_len, const kal_uint8 *pData);
539extern void kal_dev_trace(trace_class_enum trc_class, kal_uint32 msg_index, const char *arg_type, ...);
540#endif // TST_TRACE_COMPAT
541#endif //__DHL_LEGACY_TRACE_API_ENABLED__
542#else //__DHL_TRACE_ENABLED__
543#if defined(__DHL_TRACE_EMPTY_FUNCTION__)
544/*
545 * For non-target platform (PC simulator or MNT),
546 * we define trace-related functions as inline function to avoid compile error
547 * in VC++.
548 */
549
550static __inline void dhl_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const char *arg_type, ...)
551{
552 return;
553}
554
555static __inline void dhl_internal_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint8 access_level, kal_uint32 msg_index, const char *arg_type, ...)
556{
557 return;
558}
559
560static __inline void dhl_brief_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const char *arg_type, ...)
561{
562 return;
563}
564
565static __inline void dhl_raw_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const kal_char *fmt, kal_uint32 buf_len, const kal_uint8 *pData)
566{
567 return;
568}
569
570static __inline void dhl_print(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *fmt, ...)
571{
572 return;
573}
574
575#define dhl_print_system_trace(_c, _s)
576#define dhl_print_struct(_s,_m,_l,_b)
577#define dhl_debug_print(_f, ...)
578
579static __inline void dhl_peer_trace(kal_uint32 global_peer_msg_id, kal_uint32 raw_data_len, kal_uint8 *raw_data, kal_uint32 trace_index, const char *arg_type, ...)
580{
581 return;
582}
583
584static __inline void dhl_trace_impl(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const char *arg_type, va_list argument_info)
585{
586 return;
587}
588
589static __inline void dhl_print_impl(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *fmt, va_list argument_info)
590{
591 return;
592}
593
594static __inline void kal_critical_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
595{
596 return ;
597}
598
599static __inline void kal_critical_brief_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
600{
601 return ;
602}
603static __inline void kal_critical_assert_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
604{
605 return ;
606}
607
608
609static __inline void kal_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
610{
611 return ;
612}
613
614static __inline void kal_brief_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
615{
616 return ;
617}
618
619static __inline void kal_brief_trace_macro(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
620{
621 return ;
622}
623
624static __inline void kal_trace_for_3rd_party(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, va_list argument_info)
625{
626 return ;
627}
628
629static __inline void kal_lib_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
630{
631 return ;
632}
633static __inline void kal_assert_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
634{
635 return ;
636}
637static __inline void kal_wap_trace(module_type mod_id, trace_class_enum trc_class, const char *fmt, ...)
638{
639 return ;
640}
641static __inline void kal_print_string_trace(module_type mod_id, trace_class_enum trc_class, const char *fmt, ...)
642{
643 return ;
644}
645
646static __inline void kal_buffer_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *fmt, kal_uint32 buf_len, const kal_uint8 *pData)
647{
648 return;
649}
650
651static __inline void kal_dev_trace(trace_class_enum trc_class, kal_uint32 msg_index, const char *arg_type, ...)
652{
653 return;
654}
655
656static __inline void kal_bootup_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
657{
658 return ;
659}
660
661#if !defined(__LTE_REMOVE_TEMPERAL__)
662static __inline void kal_prompt_trace(module_type mod_id, const kal_char *fmt, ...)
663{
664 return;
665}
666#endif /* end of !__LTE_REMOVE_TEMPERAL__ */
667#else // __DHL_TRACE_EMPTY_FUNCTION__
668//Define empty functions for Target SW
669#define dhl_trace(...)
670#define dhl_internal_trace(...)
671#define dhl_brief_trace(...)
672#define dhl_raw_trace(...)
673#define dhl_print(...)
674#define dhl_print_string(...)
675#define dhl_print_system_trace(...)
676
677#define dhl_print_struct(...)
678#define dhl_debug_print(...)
679#define dhl_peer_trace(...)
680
681#define dhl_trace_impl(...)
682#define dhl_print_impl(...)
683#define dhl_internal_trace_impl(...)
684
685#define kal_trace(...)
686#define kal_brief_trace(...)
687#define _kal_trace(...)
688#define _kal_brief_trace(...)
689#define kal_brief_trace_macro(...)
690#define kal_trace_for_3rd_party(...)
691#define kal_lib_trace(...)
692#define kal_assert_trace(...)
693#define kal_wap_trace(...)
694#define kal_print_string_trace(...)
695#define kal_buffer_trace(...)
696#define kal_dev_trace(...)
697#define kal_bootup_trace(...)
698#define kal_prompt_trace(...)
699#define kal_critical_trace(...)
700#define kal_critical_brief_trace(...)
701#define kal_critical_assert_trace(...)
702
703#define dhl_EM_logger(...)
704#define dhl_brief_trace_opt_helper(...)
705#endif
706#endif
707
708#define kal_sys_trace tst_sys_trace
709#define kal_sys_init_trace tst_sys_init_trace
710#define kal_sys_fatal_trace tst_sysfatal_trace
711
712#if defined(__DHL_MODULE__)
713extern void tst_log_primitive(ilm_struct *ilm_ptr);
714extern void tst_sys_init_trace(const kal_char *info);
715extern void tst_sys_trace(kal_char *info);
716extern void tst_sysfatal_trace(kal_char *info);
717extern kal_int32 tst_trace_check_ps_filter_off(trace_class_enum trc_class, kal_uint32 *module_id, kal_uint32 supportOption);
718
719#define kal_bootup_print tst_sys_init_trace
720#else
721#ifdef __DHL_TRACE_EMPTY_FUNCTION__
722#if !defined(__LTE_REMOVE_TEMPERAL__)
723static __inline void tst_sys_init_trace(const kal_char *info)
724{
725 return ;
726}
727static __inline void tst_sys_trace(kal_char *info)
728{
729 return ;
730}
731static __inline void tst_sysfatal_trace(kal_char *info)
732{
733 return ;
734}
735static __inline kal_int32 tst_trace_check_ps_filter_off(trace_class_enum trc_class, kal_uint32 *module_id, kal_uint32 supportOption)
736{
737 return ;
738}
739#endif /* end of !__LTE_REMOVE_TEMPERAL__ */
740#else
741#define tst_sys_init_trace(...)
742#define tst_sys_trace(...)
743#define tst_sysfatal_trace(...)
744#define tst_trace_check_ps_filter_off(...)
745#endif
746#endif //#ifdef __DHL_MODULE__
747
748typedef void (*TST_VC_CallBack)(const kal_uint8 *pData, kal_uint32 nLen);
749typedef void (*TST_String_Inject_CB)(kal_uint32 index, kal_uint8 *pData);
750
751/*
752* tst_virtual_channel_id:
753* regiester new virtual channel here and remake tst
754*/
755typedef enum
756{
757 TVCI_GPS_LOGGING,
758 TVCI_DNT_L2COPRO_LOGGING,
759 TVCI_CATCHER_POLLING,
760 TVCI_GDB_COMM,
761 TVCI_AST_LOGGING,
762 TVCI_MINI_LOG,
763 TVCI_VM_LOGGING,
764 TVCI_BTT,
765 TVCI_LAST_ID
766}
767tst_virtual_channel_id;
768
769#define MAX_VC_RESPONSE_LEN (1023)
770
771kal_bool tst_vc_register_channel(tst_virtual_channel_id channel_id, TST_VC_CallBack fnCmd);
772kal_bool tst_vc_response(tst_virtual_channel_id channel_id, const kal_uint8 *pData, kal_uint16 len);
773
774#define TVCI_CREATE_FILE 0x24540001
775#define TVCI_CLOSE_FILE 0x24540002
776
777void tst_log_with_offset_single_gpd(sap_type desc_SAP, sap_type raw_data_sap, kal_uint32 msg_index, const char *arg_type, kal_uint32 offset, kal_uint32 *dl_gpd);
778
779kal_bool dhl_get_assert_bypass_buf(kal_char **buf, kal_uint32 *buf_size, kal_uint32 *buf_index);
780kal_bool dhl_ack_assert_bypass_buf(kal_char *buf, kal_uint32 message_size, kal_uint32 buf_index);
781
782void dhl_log_primitive6(module_type src_mod_id, module_type dest_mod_id, sap_type sap_id, msg_type msg_id, local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr);
783
784typedef enum
785{
786 DHL_CUSTOM_MEM_PMIC,
787 DHL_CUSTOM_MEM_MAX
788} DHL_CUSTOM_MEM_TYPE;
789
790typedef void (*DHL_CUSTOM_READ_MEM_CALLBACK)(void *read_addr, kal_uint32 len, kal_uint32 option, void **read_buffer_addr, kal_uint32 *read_buffer_len);
791typedef void (*DHL_CUSTOM_WRITE_MEM_CALLBACK)(void *write_addr, kal_uint32 len, kal_uint32 option, void *write_buffer_addr);
792
793kal_bool dhl_register_custom_mem_read(DHL_CUSTOM_MEM_TYPE mem_type, DHL_CUSTOM_READ_MEM_CALLBACK read_cb);
794kal_bool dhl_register_custom_mem_write(DHL_CUSTOM_MEM_TYPE mem_type, DHL_CUSTOM_WRITE_MEM_CALLBACK write_cb);
795
796#ifdef __cplusplus
797}
798#endif
799
800
801typedef enum
802{
803 /* 0~7 reserve for L2 PDU */
804 /* should not over DHL_L2_PDU_TYPE_NUM */
805 DHL_L2_PDU_MAC_TYPE = 1,
806 DHL_L2_PDU_RLC_TYPE = 2,
807 DHL_L2_PDU_PDCP_TYPE = 3,
808 DHL_L2_PDU_RLC_PDU_TYPE = 4,
809} dhl_log_pdu_type;
810
811void dhl_log_pdu(dhl_log_pdu_type type, kal_uint8 *data, kal_uint32 length);
812void dhl_flush_pdu(dhl_log_pdu_type type);
813kal_bool dhl_check_pdu_filter(dhl_log_pdu_type type);
814
815#define DHL_MAC_CHECK_L2_PDU() dhl_check_pdu_filter(DHL_L2_PDU_MAC_TYPE)
816#define DHL_RLC_CHECK_L2_PDU() (dhl_check_pdu_filter(DHL_L2_PDU_RLC_TYPE) || dhl_check_pdu_filter(DHL_L2_PDU_RLC_PDU_TYPE))
817#define DHL_PDCP_CHECK_L2_PDU() dhl_check_pdu_filter(DHL_L2_PDU_PDCP_TYPE)
818
819#define DHL_MAC_LOG_L2_PDU(pointer, length) do { \
820 if(DHL_MAC_CHECK_L2_PDU()) { \
821 dhl_log_pdu(DHL_L2_PDU_MAC_TYPE, pointer, length);\
822 } \
823 } while(0)
824#define DHL_RLC_LOG_L2_PDU(pointer, length) do { \
825 if(DHL_RLC_CHECK_L2_PDU()) { \
826 dhl_log_pdu(DHL_L2_PDU_RLC_TYPE, pointer, length);\
827 } \
828 } while(0)
829#define DHL_PDCP_LOG_L2_PDU(pointer, length) do { \
830 if(DHL_PDCP_CHECK_L2_PDU()) { \
831 dhl_log_pdu(DHL_L2_PDU_PDCP_TYPE, pointer, length);\
832 } \
833 }while(0)
834
835
836//for UT only
837void dhl_mon_set_l2_pdu_filter(dhl_log_pdu_type type, kal_bool enable);
838
839
840#endif
841#endif /* _DHL_TRACE_H */
842