blob: b10d9dc729b00b3bc27cd67e47b5afcbed824959 [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) 2005
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 * Filename:
38 * ---------
39 * @file kal_trace.h
40 *
41 * Description:
42 * ------------
43 * @brief Interface of KAL trace. TODO: should phase-out.
44 *
45 * ==========================================================================
46 * $Log$
47 *
48 * 09 18 2019 victoria.wang
49 * [MOLY00416922] DHL Legacy Wrapper migration and phase-out
50 * [Remove][DHL] phase out legacy wrapper API
51 *
52 * 04 21 2019 yh.sung
53 * [MOLY00392990] [VMOLY][UTF] Phase 2 Landing
54 * [UTF][DHL] UTF Trace API - trace interface
55 *
56 * 01 25 2019 yu-hsiang.peng
57 * [MOLY00381457] [DHL 2.0] Common Feature Development
58 * [SEPT.DEV] support mipi custom read
59 *
60 ****************************************************************************/
61
62#ifndef _KAL_TRACE_H
63#define _KAL_TRACE_H
64
65#include "dhl_unified_trace.h"
66#if defined(__DHL_MODULE__)
67#else
68
69#include <stdarg.h>
70#ifndef GEN_FOR_PC
71#include <stdio.h>
72#endif
73#include "kal_general_types.h"
74#include "kal_public_defs.h"
75
76#if defined(__MTK_TARGET__) && !defined(__GNUC__)
77#pragma diag_suppress 870
78#endif //#ifdef __MTK_TARGET__
79
80#ifdef __cplusplus
81extern "C" {
82#endif
83
84#if defined(__TST_MODULE__) && defined(__EM_MODE__) /* for ilm_struct type definition */
85#ifndef GEN_FOR_PC
86struct ilm_struct;
87extern void tst_EM_logger(struct ilm_struct *ilm_ptr);
88#if defined(__DHL_MODULE__)
89extern void dhl_EM_logger(struct ilm_struct *ilm_ptr);
90#endif
91#endif
92#endif //#if defined(__TST_MODULE__) && defined(__EM_MODE__)
93
94#if !defined(__DHL_MODULE__)
95#define dhl_trace(...)
96#define dhl_internal_trace(...)
97#define dhl_brief_trace(...)
98#define dhl_peer_trace(...)
99#define dhl_raw_trace(...)
100#define dhl_print(...)
101#define dhl_print_string(...)
102#define dhl_print_system_trace(...)
103
104#define dhl_print_struct(...)
105#define dhl_debug_print(...)
106
107#define dhl_trace_impl(...)
108#define dhl_internal_trace_impl(...)
109#define dhl_print_impl(...)
110#define dhl_EM_logger(...)
111#endif //#if !defined(__DHL_MODULE__)
112
113#define MAX_MSG_NBR_IN_MODULE 20
114#define ADDITIONAL_BUFFER_FOR_MUX 45
115#define DEFAULT_RS232_FRAME_SIZE 5 /* STX, LenHi, LenLo, Type, Checksum*/
116#define SAP_LOCAL_PARA_FILTER 0x02
117#define SAP_PEER_BUFF_FILTER 0x04
118
119#define STX_OCTET 0x55
120#define LOGGED_PRIMITIVE_TYPE 0x60
121#define PS_TRACE_INDEX_TRACE_TYPE 0x61
122#define PS_PROMPT_TRACE_TYPE 0x62
123#define CONTROL_COMMAND_TYPE 0x63
124#define INJECT_PRIMITIVE_TYPE 0x64
125#define SYS_TRACE_TYPE 0x65
126
127//Define Trace Macro for PS trace
128#if defined(GEN_FOR_PC) && !defined(GEN_FOR_CPARSER)
129#define BEGIN_TRACE_MAP(MOD) START_MODULE_MSG MOD MAX_MSG_NBR_IN_MODULE
130#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
131#define TRC_MSG(MSG,STR) MSG STR
132#define TRC_MSG_NEWLINE(MSG,STR,NUM) MSG STR NUM
133#define END_TRACE_MAP(MOD) END_MODULE_MSG
134#define END_TRACE_MAP_WITH_RANGE(MOD, MIN_VAL, MAX_VAL) MOD MIN_VAL MAX_VAL END_RANGE_MODULE_MSG
135#else //Define Trace Macro for PS trace
136#define BEGIN_TRACE_MAP(MOD) enum MOD##_MSG_ENUM{\
137 MOD##_empty_string=MOD<<MAX_MSG_NBR_IN_MODULE,
138#define BEGIN_TRACE_MAP_WITH_RANGE(MOD, MIN_VAL, MAX_VAL) enum MOD##_##MIN_VAL##_MSG_ENUM{\
139 MOD##_##MIN_VAL##_empty_string = (MOD<<MAX_MSG_NBR_IN_MODULE) + MIN_VAL - 1,
140#define TRC_MSG(MSG,STR) MSG##__enum,
141#define TRC_MSG_NEWLINE(MSG,STR,NUM) MSG##__enum, MSG##_NEWLINE_EXPAND__enum = MSG##__enum+NUM,
142#define END_TRACE_MAP(MOD) MOD##__end};
143#define END_TRACE_MAP_WITH_RANGE(MOD, MIN_VAL, MAX_VAL) MOD##_##MIN_VAL##__end};
144#endif //Define Trace Macro for PS trace
145
146
147//Decide which path should enter
148#ifdef __TST_MODULE__
149#if !defined(__FUE__) && !defined(__UBL__)
150#if !defined(MODULE_TRACE_OFF)
151#define __TST_TRACE_ENABLED__
152#elif defined(__TST_CRITICAL_TRACE_LEVEL__) //__PRIORITY_TRACING_ENABLED__ should be disabled in MoDIS
153#define __TST_CRITICAL_TRACE_ENABLED__
154#endif //!defined(MODULE_TRACE_OFF) &&
155#endif
156#endif //#ifdef __TST_MODULE__
157
158#ifndef __TST_TRACE_ENABLED__
159#if defined(KAL_ON_OSCAR) || defined(MCD_DLL_EXPORT) || defined(L1_SIM)
160#define __TST_TRACE_EMPTY_FUNCTION__
161
162#if defined(__TST_CRITICAL_TRACE_ENABLED__)
163#undef __TST_CRITICAL_TRACE_ENABLED__
164#endif //__TST_CRITICAL_TRACE_ENABLED__
165#endif //#if defined(KAL_ON_OSCAR) || defined(MCD_DLL_EXPORT) || defined(L1_SIM)
166#endif
167
168
169#if !defined(__TST_CRITICAL_TRACE_ENABLED__) || defined(GEN_FOR_PC)
170typedef enum
171{
172 TRACE_FUNC,
173 TRACE_STATE,
174 TRACE_INFO,
175 TRACE_WARNING,
176 TRACE_ERROR,
177 TRACE_GROUP_1,
178 TRACE_GROUP_2,
179 TRACE_GROUP_3,
180 TRACE_GROUP_4,
181 TRACE_GROUP_5,
182 TRACE_GROUP_6,
183 TRACE_GROUP_7,
184 TRACE_GROUP_8,
185 TRACE_GROUP_9,
186 TRACE_GROUP_10,
187 TRACE_PEER
188} trace_class_enum;
189
190
191typedef enum
192{
193 DHL_CUSTOM_MEM_PMIC,
194 DHL_CUSTOM_MEM_MIPI,
195 DHL_CUSTOM_MEM_MAX
196} DHL_CUSTOM_MEM_TYPE;
197
198#else //__TST_CRITICAL_TRACE_ENABLED__
199typedef unsigned char trace_class_enum;
200#endif //__TST_CRITICAL_TRACE_ENABLED__
201
202
203#if defined(__TST_TRACE_ENABLED__)
204#define kal_print_string_trace kal_wap_trace //alias kal_print_string_trace as kal_wap_trace
205//#define kal_critical_trace kal_trace
206//#define kal_critical_brief_trace kal_brief_trace
207//#define kal_critical_assert_trace kal_assert_trace
208extern void kal_critical_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
209extern void kal_critical_brief_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
210extern void kal_critical_assert_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
211
212/*******************************************************************************
213* <GROUP Functions>
214*
215* FUNCTION
216* kal_trace
217* DESCRIPTION
218* This function is used to output the pre-defined trace to PC.
219* The engineers SHOULD define their own traces before using this function.
220* If a trace is defined as ��Today is %d-$d-%d��, kal_trace simply sends the trace ID and the content of %d to PC.
221* That will reduce the communication traffic. In the chapter 2, we will introduce how to ass a new trace.
222*
223*
224* Property:
225*�� ��Message Compression�� type API
226*�� Cannot be invoked in LISR/HISR context.
227*�� Can send up to 128 bytes parameters
228*�� Suggested to use this API for most of the scenario.
229*
230* PARAMETERS
231* trc_class: [IN] The trace class of this trace. Each module has 15 classes to category.
232* msg_index: [IN] Message index. This part will be handled by tool.
233* arg_type: [IN] This part will be handled by tool.
234* ...: [IN] Parameters to log
235* RETURNS
236* NONE
237* NOTE
238*
239******************************************************************************/
240extern void kal_trace_for_3rd_party(trace_class_enum, kal_uint32, const kal_char *, va_list);
241extern void kal_lib_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
242extern void kal_assert_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
243extern void kal_wap_trace(module_type mod_id, trace_class_enum trc_class, const char *fmt, ...);
244extern 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);
245extern void kal_dev_trace(trace_class_enum trc_class, kal_uint32 msg_index, const char *arg_type, ...);
246extern void kal_bootup_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
247extern void kal_brief_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
248extern void kal_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
249
250#define __TST_OPTIMIZATION_FOR_SPEED__ //Default enable in MOLY
251
252#ifdef __TST_OPTIMIZATION_FOR_SPEED__ //Optimization, kal_brief_trace_macro definition
253
254#if !defined(_MSC_VER)
255
256//Target build
257extern kal_bool tst_is_PsTrc_open_and_pstrace_flag; //For optimization, the AND flag of tst_is_PsTrc_open and tst_pstrace_flag
258extern void kal_brief_trace_opt_helper(trace_class_enum trc_class, kal_uint32 msg_index, const char *arg_type, ...);
259
260#define kal_brief_trace_macro(trc_class, msg_index,...) do{\
261 if(tst_is_PsTrc_open_and_pstrace_flag){\
262 kal_brief_trace_opt_helper(trc_class, msg_index, ##__VA_ARGS__);\
263 }\
264 }while(0)
265
266#else
267
268//PC build (MoDIS or MCDDLL)
269extern void kal_trace_macro(trace_class_enum, kal_uint32, const kal_char *, ...);
270
271#endif
272
273#else //__TST_OPTIMIZATION_FOR_SPEED__
274
275#if !defined(_MSC_VER)
276
277//Target build
278#define kal_brief_trace_macro(...) kal_brief_trace(__VA_ARGS__)
279
280#else
281
282//PC build (MoDIS or MCDDLL)
283extern void kal_trace_macro(trace_class_enum, kal_uint32, const kal_char *, ...);
284
285#endif
286
287#endif //__TST_OPTIMIZATION_FOR_SPEED__
288
289
290#else //__TST_TRACE_ENABLED__
291#if defined(__TST_TRACE_EMPTY_FUNCTION__)
292/*
293* For non-target platform (PC simulator or MNT),
294* we define trace-related functions as inline function to avoid compile error
295* in VC++.
296*/
297
298static __inline void kal_critical_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
299{
300 return ;
301}
302
303static __inline void kal_critical_brief_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
304{
305 return ;
306}
307static __inline void kal_critical_assert_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
308{
309 return ;
310}
311
312static __inline void kal_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
313{
314 return ;
315}
316
317static __inline void kal_brief_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
318{
319 return ;
320}
321
322static __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)
323{
324 return ;
325}
326
327static __inline void kal_lib_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
328{
329 return ;
330}
331static __inline void kal_assert_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
332{
333 return ;
334}
335static __inline void kal_wap_trace(module_type mod_id, trace_class_enum trc_class, const char *fmt, ...)
336{
337 return ;
338}
339static __inline void kal_print_string_trace(module_type mod_id, trace_class_enum trc_class, const char *fmt, ...)
340{
341 return ;
342}
343
344static __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)
345{
346 return;
347}
348
349static __inline void kal_dev_trace(trace_class_enum trc_class, kal_uint32 msg_index, const char *arg_type, ...)
350{
351 return;
352}
353
354static __inline void kal_bootup_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
355{
356 return ;
357}
358
359static __inline void kal_brief_trace_macro(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
360{
361 return ;
362}
363
364#elif defined(__TST_CRITICAL_TRACE_ENABLED__)
365//Support partial tracing API enable
366extern void kal_critical_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
367extern void kal_critical_brief_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
368extern void kal_critical_assert_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
369
370#define kal_trace(...)
371#define kal_brief_trace(...)
372#define kal_trace_for_3rd_party(...)
373#define kal_lib_trace(...)
374#define kal_assert_trace(...)
375#define kal_wap_trace(...)
376#define kal_print_string_trace(...)
377#define kal_buffer_trace(...)
378#define kal_dev_trace(...)
379#define kal_bootup_trace(...)
380#define kal_brief_trace_macro(...)
381
382#if __TST_CRITICAL_TRACE_LEVEL__ > 0
383
384#define TRACE_FUNC 0
385#define TRACE_STATE 1
386#define TRACE_INFO 2
387#define TRACE_WARNING 3
388#define TRACE_ERROR 4
389#define TRACE_GROUP_1 5
390#define TRACE_GROUP_2 6
391#define TRACE_GROUP_3 7
392#define TRACE_GROUP_4 8
393#define TRACE_GROUP_5 9
394#define TRACE_GROUP_6 10
395#define TRACE_GROUP_7 11
396#define TRACE_GROUP_8 12
397#define TRACE_GROUP_9 13
398#define TRACE_GROUP_10 14
399#define TRACE_PEER 15
400
401#undef kal_trace
402#undef kal_brief_trace
403
404#define _kal_trace(trace_class_enum, ...) kal_critical_trace_##trace_class_enum(trace_class_enum, __VA_ARGS__)
405#define _kal_brief_trace(trace_class_enum, ...) kal_critical_brief_trace_##trace_class_enum(trace_class_enum, __VA_ARGS__)
406
407#define kal_trace(trace_class_enum, ...) _kal_trace(trace_class_enum, __VA_ARGS__)
408#define kal_brief_trace(trace_class_enum, ...) _kal_brief_trace(trace_class_enum, __VA_ARGS__)
409#define kal_brief_trace_macro(trace_class_enum, ...) _kal_brief_trace(trace_class_enum, __VA_ARGS__)
410
411//#define kal_assert_trace_(trace_class_enum, ...) kal_critical_assert_trace_##trace_class_enum(__VA_ARGS__)
412
413//declare the empty defined
414#define kal_critical_trace_0(...)
415#define kal_critical_trace_1(...)
416#define kal_critical_trace_2(...)
417#define kal_critical_trace_3(...)
418#define kal_critical_trace_5(...)
419#define kal_critical_trace_6(...)
420#define kal_critical_trace_7(...)
421#define kal_critical_trace_8(...)
422#define kal_critical_trace_9(...)
423#define kal_critical_trace_10(...)
424#define kal_critical_trace_11(...)
425#define kal_critical_trace_12(...)
426#define kal_critical_trace_13(...)
427#define kal_critical_trace_14(...)
428#define kal_critical_trace_15(...)
429
430#define kal_critical_brief_trace_0(...)
431#define kal_critical_brief_trace_1(...)
432#define kal_critical_brief_trace_2(...)
433#define kal_critical_brief_trace_3(...)
434#define kal_critical_brief_trace_5(...)
435#define kal_critical_brief_trace_6(...)
436#define kal_critical_brief_trace_7(...)
437#define kal_critical_brief_trace_8(...)
438#define kal_critical_brief_trace_9(...)
439#define kal_critical_brief_trace_10(...)
440#define kal_critical_brief_trace_11(...)
441#define kal_critical_brief_trace_12(...)
442#define kal_critical_brief_trace_13(...)
443#define kal_critical_brief_trace_14(...)
444#define kal_critical_brief_trace_15(...)
445
446//ignore the known issues, wrap logging APIs in other APIs
447#define kal_critical_trace_trc_class(...)
448#define kal_critical_brief_trace_trc_class(...)
449
450//define ERROR --> 4
451#define kal_critical_trace_4 kal_critical_trace
452#define kal_critical_brief_trace_4 kal_critical_brief_trace
453#endif
454
455#if __TST_CRITICAL_TRACE_LEVEL__ > 1
456//define WARNING 3
457#undef kal_critical_trace_3
458#undef kal_critical_brief_trace_3
459#define kal_critical_trace_3 kal_critical_trace
460#define kal_critical_brief_trace_3 kal_critical_brief_trace
461#endif
462
463#if __TST_CRITICAL_TRACE_LEVEL__ > 2
464//define TRACE_STATE 1
465#undef kal_critical_trace_1
466#undef kal_critical_brief_trace_1
467#define kal_critical_trace_1 kal_critical_trace
468#define kal_critical_brief_trace_1 kal_critical_brief_trace
469#endif
470
471#if __TST_CRITICAL_TRACE_LEVEL__ > 3
472//define TRACE_INFO 2
473#undef kal_critical_trace_2
474#undef kal_critical_brief_trace_2
475#define kal_critical_trace_2 kal_critical_trace
476#define kal_critical_brief_trace_2 kal_critical_brief_trace
477#endif
478
479#if __TST_CRITICAL_TRACE_LEVEL__ > 4
480//#define TRACE_PEER 15
481#undef kal_critical_trace_15
482#undef kal_critical_brief_trace_15
483#define kal_critical_trace_15 kal_critical_trace
484#define kal_critical_brief_trace_15 kal_critical_brief_trace
485#endif
486
487#if __TST_CRITICAL_TRACE_LEVEL__ > 5
488//#define TRACE_GROUP_1 5
489#undef kal_critical_trace_5
490#undef kal_critical_brief_trace_5
491#define kal_critical_trace_5 kal_critical_trace
492#define kal_critical_brief_trace_5 kal_critical_brief_trace
493#endif
494
495#if __TST_CRITICAL_TRACE_LEVEL__ > 6
496//#define TRACE_GROUP_2 6
497#undef kal_critical_trace_6
498#undef kal_critical_brief_trace_6
499#define kal_critical_trace_6 kal_critical_trace
500#define kal_critical_brief_trace_6 kal_critical_brief_trace
501#endif
502
503#if __TST_CRITICAL_TRACE_LEVEL__ > 7
504//#define TRACE_GROUP_3 7
505#undef kal_critical_trace_7
506#undef kal_critical_brief_trace_7
507#define kal_critical_trace_7 kal_critical_trace
508#define kal_critical_brief_trace_7 kal_critical_brief_trace
509#endif
510
511#if __TST_CRITICAL_TRACE_LEVEL__ > 8
512//#define TRACE_GROUP_4 8
513#undef kal_critical_trace_8
514#undef kal_critical_brief_trace_8
515#define kal_critical_trace_8 kal_critical_trace
516#define kal_critical_brief_trace_8 kal_critical_brief_trace
517#endif
518
519#if __TST_CRITICAL_TRACE_LEVEL__ > 9
520//#define TRACE_GROUP_5 9
521#undef kal_critical_trace_9
522#undef kal_critical_brief_trace_9
523#define kal_critical_trace_9 kal_critical_trace
524#define kal_critical_brief_trace_9 kal_critical_brief_trace
525#endif
526
527#if __TST_CRITICAL_TRACE_LEVEL__ > 10
528//#define TRACE_GROUP_6 10
529#undef kal_critical_trace_10
530#undef kal_critical_brief_trace_10
531#define kal_critical_trace_10 kal_critical_trace
532#define kal_critical_brief_trace_10 kal_critical_brief_trace
533#endif
534
535#if __TST_CRITICAL_TRACE_LEVEL__ > 11
536//#define TRACE_GROUP_7 11
537#undef kal_critical_trace_11
538#undef kal_critical_brief_trace_11
539#define kal_critical_trace_11 kal_critical_trace
540#define kal_critical_brief_trace_11 kal_critical_brief_trace
541#endif
542
543#if __TST_CRITICAL_TRACE_LEVEL__ > 12
544//#define TRACE_GROUP_8 12
545#undef kal_critical_trace_12
546#undef kal_critical_brief_trace_12
547#define kal_critical_trace_12 kal_critical_trace
548#define kal_critical_brief_trace_12 kal_critical_brief_trace
549#endif
550
551#if __TST_CRITICAL_TRACE_LEVEL__ > 13
552//#define TRACE_GROUP_9 13
553#undef kal_critical_trace_13
554#undef kal_critical_brief_trace_13
555#define kal_critical_trace_13 kal_critical_trace
556#define kal_critical_brief_trace_13 kal_critical_brief_trace
557#endif
558
559#if __TST_CRITICAL_TRACE_LEVEL__ > 14
560//#define TRACE_GROUP_10 14
561#undef kal_critical_trace_14
562#undef kal_critical_brief_trace_14
563#define kal_critical_trace_14 kal_critical_trace
564#define kal_critical_brief_trace_14 kal_critical_brief_trace
565#endif
566
567#if __TST_CRITICAL_TRACE_LEVEL__ > 15
568//#define TRACE_FUNC 0
569#undef kal_critical_trace_0
570#undef kal_critical_brief_trace_0
571#define kal_critical_trace_0 kal_critical_trace
572#define kal_critical_brief_trace_0 kal_critical_brief_trace
573#endif
574
575#else // #if defined(__TST_TRACE_EMPTY_FUNCTION__)
576//Define empty functions for Target SW
577#define kal_trace(...)
578#define kal_brief_trace(...)
579#define kal_trace_for_3rd_party(...)
580#define kal_lib_trace(...)
581#define kal_assert_trace(...)
582#define kal_wap_trace(...)
583#define kal_print_string_trace(...)
584#define kal_buffer_trace(...)
585#define kal_dev_trace(...)
586#define kal_bootup_trace(...)
587#define kal_critical_trace(...)
588#define kal_critical_brief_trace(...)
589#define kal_critical_assert_trace(...)
590#define kal_brief_trace_macro(...)
591#endif // #if defined(__TST_TRACE_EMPTY_FUNCTION__)
592#endif //__TST_TRACE_ENABLED__
593
594#define kal_sys_trace tst_sys_trace
595#define kal_sys_init_trace tst_sys_init_trace
596#define kal_sys_fatal_trace tst_sysfatal_trace
597
598#ifdef __TST_MODULE__
599/*******************************************************************************
600* <GROUP Functions>
601*
602* FUNCTION
603* kal_prompt_trace
604* DESCRIPTION
605* It's a printf-like function which outputs log to Catcher Tool.
606* Property:
607* The message is sent in plaintext
608*�� Cannot be invoked in LISR context.
609*�� Can send up to 128 bytes logs
610*�� This API can only be used in customer side to reduce the impact of ROM size increase.
611*�� Heavy resource consumption.
612*�� a.Caller��s RO-DATA
613*�� b. Logging Bandwidth
614*
615* PARAMETERS
616* mod_id: [IN] Module id
617* fmt: [IN] The format string. Please refer to print function of C standard library.
618* RETURNS
619* NONE
620* NOTE
621*
622******************************************************************************/
623extern void kal_prompt_trace(module_type mod_id, const kal_char *fmt, ...);
624extern void tst_sys_init_trace(const kal_char *info);
625extern void tst_sys_trace(kal_char *info);
626extern void tst_sysfatal_trace(kal_char *info);
627extern kal_int32 tst_trace_check_ps_filter_off(trace_class_enum trc_class, kal_uint32 *module_id, kal_uint32 supportOption);
628
629#define kal_bootup_print tst_sys_init_trace
630#else
631#ifdef __TST_TRACE_EMPTY_FUNCTION__
632static __inline void kal_prompt_trace(module_type mod_id, const kal_char *fmt, ...)
633{
634 return ;
635}
636static __inline void tst_sys_init_trace(const kal_char *info)
637{
638 return ;
639}
640static __inline void tst_sys_trace(kal_char *info)
641{
642 return ;
643}
644static __inline void tst_sysfatal_trace(kal_char *info)
645{
646 return ;
647}
648static __inline kal_int32 tst_trace_check_ps_filter_off(trace_class_enum trc_class, kal_uint32 *module_id, kal_uint32 supportOption)
649{
650 return 0;
651}
652#else
653#define kal_prompt_trace(...)
654#define tst_sys_init_trace(...)
655#define tst_sys_trace(...)
656#define tst_sysfatal_trace(...)
657#define tst_trace_check_ps_filter_off(...)
658#endif
659#endif //#ifdef __TST_MODULE__
660
661typedef void (*TST_VC_CallBack)(const kal_uint8 *pData, kal_uint32 nLen);
662typedef void (*TST_String_Inject_CB)(kal_uint32 index, kal_uint8 *pData);
663
664/*
665* tst_virtual_channel_id:
666* regiester new virtual channel here and remake tst
667*/
668typedef enum
669{
670 TVCI_GPS_LOGGING,
671 TVCI_DNT_L2COPRO_LOGGING,
672 TVCI_CATCHER_POLLING,
673 TVCI_GDB_COMM,
674 TVCI_AST_LOGGING,
675 TVCI_MINI_LOG,
676 TVCI_VM_LOGGING,
677 TVCI_BTT,
678 TVCI_LAST_ID
679}
680tst_virtual_channel_id;
681
682#define MAX_VC_RESPONSE_LEN (1023)
683
684kal_bool tst_vc_register_channel(tst_virtual_channel_id channel_id, TST_VC_CallBack fnCmd);
685kal_bool tst_vc_response(tst_virtual_channel_id channel_id, const kal_uint8 *pData, kal_uint16 len);
686
687#define TVCI_CREATE_FILE 0x24540001
688#define TVCI_CLOSE_FILE 0x24540002
689
690kal_bool tst_save_assert_bypass_trace(kal_char *info);
691
692#ifdef __cplusplus
693}
694#endif
695
696#endif /* __LTE_RAT__ */
697
698#endif /* _KAL_TRACE_H */
699