[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/service/dhl/v1/kal_trace.h b/mcu/interface/service/dhl/v1/kal_trace.h
new file mode 100644
index 0000000..c5d0318
--- /dev/null
+++ b/mcu/interface/service/dhl/v1/kal_trace.h
@@ -0,0 +1,1039 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   kal_trace.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file provides typedefs and definiton for PS index trace.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _KAL_TRACE_H
+#define _KAL_TRACE_H
+
+#include "dhl_unified_trace.h"
+#if defined(__DHL_MODULE__)
+#else
+
+#include <stdarg.h>
+#ifndef GEN_FOR_PC
+#include <stdio.h>
+#endif
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+#if defined(__MTK_TARGET__) && !defined(__GNUC__)
+#pragma diag_suppress 870
+#endif  //#ifdef __MTK_TARGET__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(__TST_MODULE__) && defined(__EM_MODE__) /* for ilm_struct type definition */
+#ifndef GEN_FOR_PC
+struct ilm_struct;
+extern void tst_EM_logger(struct ilm_struct *ilm_ptr);
+#if defined(__DHL_MODULE__)
+extern void dhl_EM_logger(struct ilm_struct *ilm_ptr);
+#endif
+#endif
+#endif  //#if defined(__TST_MODULE__) && defined(__EM_MODE__)
+
+#if !defined(__DHL_MODULE__)
+#define dhl_trace(...)
+#define dhl_internal_trace(...)
+#define dhl_brief_trace(...)
+#define dhl_peer_trace(...)
+#define dhl_raw_trace(...)
+#define dhl_print(...)
+#define dhl_print_string(...)
+#define dhl_print_system_trace(...)
+
+#define dhl_print_struct(...)
+#define dhl_debug_print(...)
+
+#define dhl_trace_impl(...)
+#define dhl_internal_trace_impl(...)
+#define dhl_print_impl(...)
+#define dhl_EM_logger(...)
+#endif //#if !defined(__DHL_MODULE__)
+
+#define MAX_MSG_NBR_IN_MODULE       20
+#define ADDITIONAL_BUFFER_FOR_MUX   45
+#define DEFAULT_RS232_FRAME_SIZE    5                 /* STX, LenHi, LenLo, Type, Checksum*/
+#define SAP_LOCAL_PARA_FILTER       0x02
+#define SAP_PEER_BUFF_FILTER        0x04
+
+#define STX_OCTET                   0x55
+#define LOGGED_PRIMITIVE_TYPE       0x60
+#define PS_TRACE_INDEX_TRACE_TYPE   0x61
+#define PS_PROMPT_TRACE_TYPE        0x62
+#define CONTROL_COMMAND_TYPE        0x63
+#define INJECT_PRIMITIVE_TYPE       0x64
+#define SYS_TRACE_TYPE              0x65
+
+//Define Trace Macro for PS trace
+#if defined(GEN_FOR_PC) && !defined(GEN_FOR_CPARSER)
+#define BEGIN_TRACE_MAP(MOD)     START_MODULE_MSG MOD MAX_MSG_NBR_IN_MODULE
+#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
+#define TRC_MSG(MSG,STR)         MSG STR
+#define TRC_MSG_NEWLINE(MSG,STR,NUM)         MSG STR NUM
+#define END_TRACE_MAP(MOD)       END_MODULE_MSG
+#define END_TRACE_MAP_WITH_RANGE(MOD, MIN_VAL, MAX_VAL)   MOD MIN_VAL MAX_VAL END_RANGE_MODULE_MSG
+#else //Define Trace Macro for PS trace
+#define BEGIN_TRACE_MAP(MOD)     enum MOD##_MSG_ENUM{\
+    MOD##_empty_string=MOD<<MAX_MSG_NBR_IN_MODULE,
+#define BEGIN_TRACE_MAP_WITH_RANGE(MOD, MIN_VAL, MAX_VAL) enum MOD##_##MIN_VAL##_MSG_ENUM{\
+    MOD##_##MIN_VAL##_empty_string = (MOD<<MAX_MSG_NBR_IN_MODULE) + MIN_VAL - 1,
+#define TRC_MSG(MSG,STR)         MSG##__enum,
+#define TRC_MSG_NEWLINE(MSG,STR,NUM)         MSG##__enum, MSG##_NEWLINE_EXPAND__enum = MSG##__enum+NUM,
+#define  END_TRACE_MAP(MOD)      MOD##__end};
+#define  END_TRACE_MAP_WITH_RANGE(MOD, MIN_VAL, MAX_VAL)  MOD##_##MIN_VAL##__end};
+#endif //Define Trace Macro for PS trace
+
+
+//Decide which path should enter
+#ifdef __TST_MODULE__
+#if !defined(__FUE__) && !defined(__UBL__)
+#if !defined(MODULE_TRACE_OFF)
+#define __TST_TRACE_ENABLED__
+#elif defined(__TST_CRITICAL_TRACE_LEVEL__) //__PRIORITY_TRACING_ENABLED__ should be disabled in MoDIS      
+#define __TST_CRITICAL_TRACE_ENABLED__
+#endif  //!defined(MODULE_TRACE_OFF) && 
+#endif
+#endif  //#ifdef __TST_MODULE__
+
+#ifndef __TST_TRACE_ENABLED__
+#if defined(KAL_ON_OSCAR) || defined(MCD_DLL_EXPORT) || defined(L1_SIM)
+#define __TST_TRACE_EMPTY_FUNCTION__
+
+#if defined(__TST_CRITICAL_TRACE_ENABLED__)
+#undef __TST_CRITICAL_TRACE_ENABLED__
+#endif  //__TST_CRITICAL_TRACE_ENABLED__
+#endif  //#if defined(KAL_ON_OSCAR) || defined(MCD_DLL_EXPORT) || defined(L1_SIM)
+#endif
+
+
+#if !defined(__TST_CRITICAL_TRACE_ENABLED__) || defined(GEN_FOR_PC)
+typedef enum
+{
+    TRACE_FUNC,
+    TRACE_STATE,
+    TRACE_INFO,
+    TRACE_WARNING,
+    TRACE_ERROR,
+    TRACE_GROUP_1,
+    TRACE_GROUP_2,
+    TRACE_GROUP_3,
+    TRACE_GROUP_4,
+    TRACE_GROUP_5,
+    TRACE_GROUP_6,
+    TRACE_GROUP_7,
+    TRACE_GROUP_8,
+    TRACE_GROUP_9,
+    TRACE_GROUP_10,
+    TRACE_PEER
+} trace_class_enum;
+
+
+typedef enum
+{
+    DHL_CUSTOM_MEM_PMIC,
+    DHL_CUSTOM_MEM_MAX
+} DHL_CUSTOM_MEM_TYPE;
+
+#else   //__TST_CRITICAL_TRACE_ENABLED__
+typedef unsigned char trace_class_enum;
+#endif  //__TST_CRITICAL_TRACE_ENABLED__
+
+
+#if defined(__TST_TRACE_ENABLED__)
+#define kal_print_string_trace kal_wap_trace  //alias kal_print_string_trace as kal_wap_trace
+//#define kal_critical_trace kal_trace
+//#define kal_critical_brief_trace kal_brief_trace
+//#define kal_critical_assert_trace kal_assert_trace
+extern void kal_critical_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+extern void kal_critical_brief_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+extern void kal_critical_assert_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+
+/*******************************************************************************
+* <GROUP Functions>
+*
+* FUNCTION
+*  kal_trace
+* DESCRIPTION
+*  This function is used to output the pre-defined trace to PC.
+*  The engineers SHOULD define their own traces before using this function.
+*  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.
+*  That will reduce the communication traffic. In the chapter 2, we will introduce how to ass a new trace.
+*
+*
+* Property:
+*��    ��Message Compression�� type API
+*��    Cannot be invoked in LISR/HISR context.
+*��    Can send up to 128 bytes parameters
+*��    Suggested to use this API for most of the scenario.
+*
+* PARAMETERS
+*  trc_class: [IN] The trace class of this trace. Each module has 15 classes to category.
+*  msg_index: [IN] Message index. This part will be handled by tool.
+*  arg_type:  [IN] This part will be handled by tool.
+*  ...: [IN] Parameters to log
+* RETURNS
+*  NONE
+* NOTE
+*
+******************************************************************************/
+extern void kal_trace_for_3rd_party(trace_class_enum, kal_uint32, const kal_char *, va_list);
+extern void kal_lib_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+extern void kal_assert_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+extern void kal_wap_trace(module_type mod_id, trace_class_enum trc_class, const char *fmt, ...);
+extern 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);
+extern void kal_dev_trace(trace_class_enum trc_class, kal_uint32 msg_index, const char *arg_type, ...);
+extern void kal_bootup_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+extern void kal_brief_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+extern void kal_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+
+#define __TST_OPTIMIZATION_FOR_SPEED__ //Default enable in MOLY 
+
+#ifdef __TST_OPTIMIZATION_FOR_SPEED__  //Optimization, kal_brief_trace_macro definition
+
+#if !defined(_MSC_VER)
+
+//Target build
+extern kal_bool tst_is_PsTrc_open_and_pstrace_flag;  //For optimization, the AND flag of tst_is_PsTrc_open and tst_pstrace_flag
+extern void kal_brief_trace_opt_helper(trace_class_enum trc_class, kal_uint32 msg_index, const char *arg_type, ...);
+
+#define kal_brief_trace_macro(trc_class, msg_index,...) do{\
+    if(tst_is_PsTrc_open_and_pstrace_flag){\
+        kal_brief_trace_opt_helper(trc_class, msg_index, ##__VA_ARGS__);\
+    }\
+    }while(0)
+
+#else
+
+//PC build (MoDIS or MCDDLL)
+extern void kal_trace_macro(trace_class_enum, kal_uint32, const kal_char *, ...);
+
+#endif
+
+#else //__TST_OPTIMIZATION_FOR_SPEED__
+
+#if !defined(_MSC_VER)
+
+//Target build
+#define kal_brief_trace_macro(...)     kal_brief_trace(__VA_ARGS__)
+
+#else
+
+//PC build (MoDIS or MCDDLL)
+extern void kal_trace_macro(trace_class_enum, kal_uint32, const kal_char *, ...);
+
+#endif
+
+#endif //__TST_OPTIMIZATION_FOR_SPEED__
+
+
+#else //__TST_TRACE_ENABLED__
+#if defined(__TST_TRACE_EMPTY_FUNCTION__)
+/*
+* For non-target platform (PC simulator or MNT),
+* we define trace-related functions as inline function to avoid compile error
+* in VC++.
+*/
+
+static __inline void kal_critical_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
+{
+    return ;
+}
+
+static __inline void kal_critical_brief_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
+{
+    return ;
+}
+static __inline void kal_critical_assert_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
+{
+    return ;
+}
+
+static __inline void kal_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
+{
+    return ;
+}
+
+static __inline void kal_brief_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
+{
+    return ;
+}
+
+static __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)
+{
+    return ;
+}
+
+static __inline void kal_lib_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
+{
+    return ;
+}
+static __inline void kal_assert_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
+{
+    return ;
+}
+static __inline void kal_wap_trace(module_type mod_id, trace_class_enum trc_class, const char *fmt, ...)
+{
+    return ;
+}
+static __inline void kal_print_string_trace(module_type mod_id, trace_class_enum trc_class, const char *fmt, ...)
+{
+    return ;
+}
+
+static __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)
+{
+    return;
+}
+
+static __inline void kal_dev_trace(trace_class_enum trc_class, kal_uint32 msg_index, const char *arg_type, ...)
+{
+    return;
+}
+
+static __inline void kal_bootup_trace(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
+{
+    return ;
+}
+
+static __inline void kal_brief_trace_macro(trace_class_enum trc_class, kal_uint32 msg_index, const kal_char *arg_type, ...)
+{
+    return ;
+}
+
+#elif defined(__TST_CRITICAL_TRACE_ENABLED__)
+//Support partial tracing API enable
+extern void kal_critical_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+extern void kal_critical_brief_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+extern void kal_critical_assert_trace(trace_class_enum, kal_uint32, const kal_char *, ...);
+
+#define kal_trace(...)
+#define kal_brief_trace(...)
+#define kal_trace_for_3rd_party(...)
+#define kal_lib_trace(...)
+#define kal_assert_trace(...)
+#define kal_wap_trace(...)
+#define kal_print_string_trace(...)
+#define kal_buffer_trace(...)
+#define kal_dev_trace(...)
+#define kal_bootup_trace(...)
+#define kal_brief_trace_macro(...)
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 0
+
+#define TRACE_FUNC 0
+#define TRACE_STATE 1
+#define TRACE_INFO 2
+#define TRACE_WARNING 3
+#define TRACE_ERROR 4
+#define TRACE_GROUP_1 5
+#define TRACE_GROUP_2 6
+#define TRACE_GROUP_3 7
+#define TRACE_GROUP_4 8
+#define TRACE_GROUP_5 9
+#define TRACE_GROUP_6 10
+#define TRACE_GROUP_7 11
+#define TRACE_GROUP_8 12
+#define TRACE_GROUP_9 13
+#define TRACE_GROUP_10 14
+#define TRACE_PEER 15
+
+#undef kal_trace
+#undef kal_brief_trace
+
+#define _kal_trace(trace_class_enum, ...) kal_critical_trace_##trace_class_enum(trace_class_enum, __VA_ARGS__)
+#define _kal_brief_trace(trace_class_enum, ...) kal_critical_brief_trace_##trace_class_enum(trace_class_enum, __VA_ARGS__)
+
+#define kal_trace(trace_class_enum, ...) _kal_trace(trace_class_enum, __VA_ARGS__)
+#define kal_brief_trace(trace_class_enum, ...) _kal_brief_trace(trace_class_enum, __VA_ARGS__)
+#define kal_brief_trace_macro(trace_class_enum, ...) _kal_brief_trace(trace_class_enum, __VA_ARGS__)
+
+//#define kal_assert_trace_(trace_class_enum, ...) kal_critical_assert_trace_##trace_class_enum(__VA_ARGS__)
+
+//declare the empty defined
+#define kal_critical_trace_0(...)
+#define kal_critical_trace_1(...)
+#define kal_critical_trace_2(...)
+#define kal_critical_trace_3(...)
+#define kal_critical_trace_5(...)
+#define kal_critical_trace_6(...)
+#define kal_critical_trace_7(...)
+#define kal_critical_trace_8(...)
+#define kal_critical_trace_9(...)
+#define kal_critical_trace_10(...)
+#define kal_critical_trace_11(...)
+#define kal_critical_trace_12(...)
+#define kal_critical_trace_13(...)
+#define kal_critical_trace_14(...)
+#define kal_critical_trace_15(...)
+
+#define kal_critical_brief_trace_0(...)
+#define kal_critical_brief_trace_1(...)
+#define kal_critical_brief_trace_2(...)
+#define kal_critical_brief_trace_3(...)
+#define kal_critical_brief_trace_5(...)
+#define kal_critical_brief_trace_6(...)
+#define kal_critical_brief_trace_7(...)
+#define kal_critical_brief_trace_8(...)
+#define kal_critical_brief_trace_9(...)
+#define kal_critical_brief_trace_10(...)
+#define kal_critical_brief_trace_11(...)
+#define kal_critical_brief_trace_12(...)
+#define kal_critical_brief_trace_13(...)
+#define kal_critical_brief_trace_14(...)
+#define kal_critical_brief_trace_15(...)
+
+//ignore the known issues, wrap logging APIs in other APIs
+#define kal_critical_trace_trc_class(...)
+#define kal_critical_brief_trace_trc_class(...)
+
+//define ERROR --> 4
+#define kal_critical_trace_4 kal_critical_trace
+#define kal_critical_brief_trace_4 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 1
+//define WARNING 3
+#undef kal_critical_trace_3
+#undef kal_critical_brief_trace_3
+#define kal_critical_trace_3 kal_critical_trace
+#define kal_critical_brief_trace_3 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 2
+//define TRACE_STATE 1
+#undef kal_critical_trace_1
+#undef kal_critical_brief_trace_1
+#define kal_critical_trace_1 kal_critical_trace
+#define kal_critical_brief_trace_1 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 3
+//define TRACE_INFO 2
+#undef kal_critical_trace_2
+#undef kal_critical_brief_trace_2
+#define kal_critical_trace_2 kal_critical_trace
+#define kal_critical_brief_trace_2 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 4
+//#define TRACE_PEER 15
+#undef kal_critical_trace_15
+#undef kal_critical_brief_trace_15
+#define kal_critical_trace_15 kal_critical_trace
+#define kal_critical_brief_trace_15 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 5
+//#define TRACE_GROUP_1 5
+#undef kal_critical_trace_5
+#undef kal_critical_brief_trace_5
+#define kal_critical_trace_5 kal_critical_trace
+#define kal_critical_brief_trace_5 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 6
+//#define TRACE_GROUP_2 6
+#undef kal_critical_trace_6
+#undef kal_critical_brief_trace_6
+#define kal_critical_trace_6 kal_critical_trace
+#define kal_critical_brief_trace_6 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 7
+//#define TRACE_GROUP_3 7
+#undef kal_critical_trace_7
+#undef kal_critical_brief_trace_7
+#define kal_critical_trace_7 kal_critical_trace
+#define kal_critical_brief_trace_7 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 8
+//#define TRACE_GROUP_4 8
+#undef kal_critical_trace_8
+#undef kal_critical_brief_trace_8
+#define kal_critical_trace_8 kal_critical_trace
+#define kal_critical_brief_trace_8 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 9
+//#define TRACE_GROUP_5 9
+#undef kal_critical_trace_9
+#undef kal_critical_brief_trace_9
+#define kal_critical_trace_9 kal_critical_trace
+#define kal_critical_brief_trace_9 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 10
+//#define TRACE_GROUP_6 10
+#undef kal_critical_trace_10
+#undef kal_critical_brief_trace_10
+#define kal_critical_trace_10 kal_critical_trace
+#define kal_critical_brief_trace_10 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 11
+//#define TRACE_GROUP_7 11
+#undef kal_critical_trace_11
+#undef kal_critical_brief_trace_11
+#define kal_critical_trace_11 kal_critical_trace
+#define kal_critical_brief_trace_11 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 12
+//#define TRACE_GROUP_8 12
+#undef kal_critical_trace_12
+#undef kal_critical_brief_trace_12
+#define kal_critical_trace_12 kal_critical_trace
+#define kal_critical_brief_trace_12 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 13
+//#define TRACE_GROUP_9 13
+#undef kal_critical_trace_13
+#undef kal_critical_brief_trace_13
+#define kal_critical_trace_13 kal_critical_trace
+#define kal_critical_brief_trace_13 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 14
+//#define TRACE_GROUP_10 14
+#undef kal_critical_trace_14
+#undef kal_critical_brief_trace_14
+#define kal_critical_trace_14 kal_critical_trace
+#define kal_critical_brief_trace_14 kal_critical_brief_trace
+#endif
+
+#if __TST_CRITICAL_TRACE_LEVEL__ > 15
+//#define TRACE_FUNC 0
+#undef kal_critical_trace_0
+#undef kal_critical_brief_trace_0
+#define kal_critical_trace_0 kal_critical_trace
+#define kal_critical_brief_trace_0 kal_critical_brief_trace
+#endif
+
+#else  // #if defined(__TST_TRACE_EMPTY_FUNCTION__)
+//Define empty functions for Target SW
+#define kal_trace(...)
+#define kal_brief_trace(...)
+#define kal_trace_for_3rd_party(...)
+#define kal_lib_trace(...)
+#define kal_assert_trace(...)
+#define kal_wap_trace(...)
+#define kal_print_string_trace(...)
+#define kal_buffer_trace(...)
+#define kal_dev_trace(...)
+#define kal_bootup_trace(...)
+#define kal_critical_trace(...)
+#define kal_critical_brief_trace(...)
+#define kal_critical_assert_trace(...)
+#define kal_brief_trace_macro(...)
+#endif   // #if defined(__TST_TRACE_EMPTY_FUNCTION__)
+#endif  //__TST_TRACE_ENABLED__
+
+#define kal_sys_trace        tst_sys_trace
+#define kal_sys_init_trace   tst_sys_init_trace
+#define kal_sys_fatal_trace  tst_sysfatal_trace
+
+#ifdef __TST_MODULE__
+/*******************************************************************************
+* <GROUP Functions>
+*
+* FUNCTION
+*  kal_prompt_trace
+* DESCRIPTION
+*  It's a printf-like function which outputs log to Catcher Tool.
+*  Property:
+*  The message is sent in plaintext
+*��    Cannot be invoked in LISR context.
+*��    Can send up to 128 bytes logs
+*��    This API can only be used in customer side to reduce the impact of ROM size increase.
+*��    Heavy resource consumption.
+*��      a.Caller��s RO-DATA
+*��        b. Logging Bandwidth
+*
+* PARAMETERS
+*  mod_id: [IN] Module id
+*  fmt: [IN] The format string. Please refer to print function of C standard library.
+* RETURNS
+*  NONE
+* NOTE
+*
+******************************************************************************/
+extern void kal_prompt_trace(module_type mod_id, const kal_char *fmt, ...);
+extern void tst_sys_init_trace(const kal_char *info);
+extern void tst_sys_trace(kal_char *info);
+extern void tst_sysfatal_trace(kal_char *info);
+extern kal_int32 tst_trace_check_ps_filter_off(trace_class_enum trc_class, kal_uint32 *module_id, kal_uint32 supportOption);
+
+#define kal_bootup_print tst_sys_init_trace
+#else
+#ifdef __TST_TRACE_EMPTY_FUNCTION__
+static __inline void kal_prompt_trace(module_type mod_id, const kal_char *fmt, ...)
+{
+    return ;
+}
+static __inline void tst_sys_init_trace(const kal_char *info)
+{
+    return ;
+}
+static __inline void tst_sys_trace(kal_char *info)
+{
+    return ;
+}
+static __inline void tst_sysfatal_trace(kal_char *info)
+{
+    return ;
+}
+static __inline kal_int32 tst_trace_check_ps_filter_off(trace_class_enum trc_class, kal_uint32 *module_id, kal_uint32 supportOption)
+{
+    return 0;
+}
+#else
+#define kal_prompt_trace(...)
+#define tst_sys_init_trace(...)
+#define tst_sys_trace(...)
+#define tst_sysfatal_trace(...)
+#define tst_trace_check_ps_filter_off(...)
+#endif
+#endif  //#ifdef __TST_MODULE__
+
+typedef void (*TST_VC_CallBack)(const kal_uint8 *pData, kal_uint32 nLen);
+typedef void (*TST_String_Inject_CB)(kal_uint32 index, kal_uint8 *pData);
+
+/*
+* tst_virtual_channel_id:
+* regiester new virtual channel here and remake tst
+*/
+typedef enum
+{
+    TVCI_GPS_LOGGING,
+    TVCI_DNT_L2COPRO_LOGGING,
+    TVCI_CATCHER_POLLING,
+    TVCI_GDB_COMM,
+    TVCI_AST_LOGGING,
+    TVCI_MINI_LOG,
+    TVCI_VM_LOGGING,
+    TVCI_BTT,
+    TVCI_LAST_ID
+}
+tst_virtual_channel_id;
+
+#define MAX_VC_RESPONSE_LEN (1023)
+
+kal_bool tst_vc_register_channel(tst_virtual_channel_id channel_id, TST_VC_CallBack fnCmd);
+kal_bool tst_vc_response(tst_virtual_channel_id channel_id, const kal_uint8 *pData, kal_uint16 len);
+
+#define TVCI_CREATE_FILE 0x24540001
+#define TVCI_CLOSE_FILE 0x24540002
+
+void 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);
+
+kal_bool tst_save_assert_bypass_trace(kal_char *info);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LTE_RAT__ */
+
+#endif /* _KAL_TRACE_H */
+