| /***************************************************************************** |
| * 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) 2012 |
| * |
| * 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: |
| * --------- |
| * @file dhl_trace.h |
| * |
| * Description: |
| * ------------ |
| * @brief Public interface of PS trace logging API. |
| * |
| * ========================================================================== |
| * $Log$ |
| * |
| * 01 14 2020 yh.sung |
| * [MOLY00470593] [MP0.7 excluded][MT6885][Petrus][Alpha phone][MP1][SQC][SH][USIR][module_MM]Found user data in ELT Log |
| * |
| * . |
| * |
| * 12 06 2019 wen-ting.cheah |
| * [MOLY00454404] [VMOLY] Remove legacy task |
| * Remove unused task |
| * 09 24 2019 yancy.chien |
| * [MOLY00442628] [MT6885][Petrus][NR][MP1][ML1S][MT8000A]Assert fail: dhl_list.h 305 0x235381fc 0x27f89db0 0x0 - 6IDLE |
| * Remove NRRC EBS solution. |
| * |
| * 09 18 2019 victoria.wang |
| * [MOLY00416922] DHL Legacy Wrapper migration and phase-out |
| * [Remove][DHL] phase out legacy wrapper API |
| * |
| * 06 13 2019 victoria.wang |
| * [MOLY00408490] USIR Feature |
| * [New][USIR][DHL] Add usir customsize masking function and enable USIR with modis |
| * |
| * 06 11 2019 sunwhy.kuo |
| * [MOLY00412952] patch empty flush MDM buffer API to VMOLY for further ESP key delay issue |
| * |
| * patch empty mon buffer flush API for ESP Key delay (need implement when MDM channel done) |
| * |
| * 05 16 2019 yancy.chien |
| * [MOLY00345863] [Gen97] RRC signal logging & inject |
| * |
| * Export MAX_TRACE_DATA_SEGMENT_CNT & MAX_ILM_TRACE_BYTES |
| * |
| * 05 16 2019 victoria.wang |
| * [MOLY00354132] [Gen 95][ERRC][SYS] Stored SIB C-struct debug trace |
| * [Add][DHL] print c structure logging API |
| * |
| * 05 02 2019 yancy.chien |
| * [MOLY00345863] [Gen97] RRC signal logging & inject |
| * interface part. |
| * |
| * 04 25 2019 yancy.chien |
| * [MOLY00401562] Decouple ICD from DHL on VMOLY trunk |
| * |
| * 1. Dynamic CCB. |
| * 2. Src Plug-in phase-in. |
| * 3. Fix build error on Gen95 |
| * |
| * 04 21 2019 yh.sung |
| * [MOLY00392990] [VMOLY][UTF] Phase 2 Landing |
| * [UTF][DHL] UTF Trace API - trace interface |
| * |
| * 01 30 2019 yu-hsiang.peng |
| * [MOLY00370849] [MT6297][Apollo][Sanity Fail][VMOLY][20181205][0200] 2G_Attach assert fail m12180.c 532 |
| * [SEPT.DEV] support custom read done |
| * |
| * 01 25 2019 yu-hsiang.peng |
| * [MOLY00381457] [DHL 2.0] Common Feature Development |
| * [SEPT.DEV] support mipi custom read |
| * |
| * 12 04 2018 yancy.chien |
| * [MOLY00370246] [GEN97][DHL] META disconnect flow enhancement |
| * |
| * . |
| * |
| * 10 30 2018 yu-hsiang.peng |
| * [MOLY00347960] [MT6297] DHL Feature Enhance |
| * [Change Feature] Support AST logging - interface |
| * |
| * 09 28 2018 yancy.chien |
| * [MOLY00345863] [Gen97] RRC signal logging & inject |
| * UPS mux header support over 64K |
| * UPS protocol phase-in |
| * EBS add NRRC_LOG type |
| * Custom ILM option remove no_log & wo_peer_buff |
| * |
| ****************************************************************************/ |
| |
| #ifndef _DHL_TRACE_H |
| #define _DHL_TRACE_H |
| |
| #if !defined(__DHL_MODULE__) |
| #include "kal_trace.h" |
| |
| #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(...) |
| #define dhl_log_primitive6(...) |
| |
| #define dhl_print_meta_string(...) |
| |
| #define DHL_MAC_LOG_L2_PDU(pointer, length) do {\ |
| } while(0) |
| #define DHL_RLC_LOG_L2_PDU(pointer, length) do {\ |
| } while(0) |
| #define DHL_PDCP_LOG_L2_PDU(pointer, length) do {\ |
| }while(0) |
| |
| #define DHL_MAC_CHECK_L2_PDU() do {\ |
| }while(0) |
| #define DHL_RLC_CHECK_L2_PDU() do {\ |
| }while(0) |
| #define DHL_PDCP_CHECK_L2_PDU() do {\ |
| }while(0) |
| #define dhl_get_md_time_info (0) |
| #else |
| |
| #ifndef GEN_FOR_PC |
| #include <stdio.h> |
| #include <stdarg.h> |
| #else |
| typedef char *va_list; |
| #endif |
| #include "kal_general_types.h" |
| #include "kal_public_defs.h" |
| |
| #if defined(__RVCT__) |
| #pragma diag_suppress 870 |
| #endif /* __RVCT_ */ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #if defined(__DHL_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); |
| extern void dhl_EM_logger(struct ilm_struct *ilm_ptr); |
| #endif |
| #endif //#if defined(__DHL_MODULE__) && defined(__EM_MODE__) |
| |
| #define MAX_MSG_NBR_IN_MODULE 20 |
| |
| //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 |
| |
| |
| #if defined(__DHL_MODULE__) && !defined(__DHL_BRINUP_DUMMY_BUILD__) |
| #define __DHL_TRACE_ENABLED__ |
| #endif //#ifdef __DHL_MODULE__ |
| |
| #ifndef __DHL_TRACE_ENABLED__ |
| #if defined(L1_SIM) && !defined (__UE_SIMULATOR__) |
| #define __DHL_TRACE_ENABLED__ |
| #elif defined(KAL_ON_OSCAR) || defined(MCD_DLL_EXPORT) |
| #define __DHL_TRACE_EMPTY_FUNCTION__ |
| #endif //#if defined(KAL_ON_OSCAR) || defined(MCD_DLL_EXPORT) |
| #endif |
| |
| 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_ILM_HEADER_ONLY, |
| DHL_CUSTOM_ILM_CPHY_MSG_CONTAINER, |
| } e_custom_ilm_trace_option; |
| |
| typedef struct |
| { |
| void* data; |
| kal_uint32 len; |
| } trace_data_segment_desc; |
| |
| |
| #if defined (__DHL_TRACE_ENABLED__) |
| |
| #define DHL_USER_FLAG_NONE (0x0) |
| #define DHL_FLAG_EM (0x1) |
| |
| /* User API for querying trace started to output or not, contact: Shengfu Tsai */ |
| extern kal_bool dhl_is_trace_started(); |
| |
| /* User API for querying USIR on to mask sensitive data or not */ |
| kal_bool dhl_mask_sensitive_trace_on(); |
| |
| /* trace */ |
| #define DHL_ACCESS_LEVEL_1_ALL_USER (0x01) |
| #define DHL_ACCESS_LEVEL_4_MTK_INTERNAL (0x04) |
| #define DHL_ACCESS_LEVEL_5_MBJ_L1 (0x05) |
| #define DHL_ACCESS_LEVEL_5_MTB_L1 (0x05) |
| #define DHL_ACCESS_LEVEL_7_HQ_ONLY (0x07) |
| /* trace */ |
| extern void dhl_print(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *fmt, ...); |
| extern void dhl_print_string(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *str); |
| extern void meta_print_string(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *str); |
| #define dhl_print_system_trace(_c, _s) \ |
| dhl_print_string((_c), DHL_USER_FLAG_NONE, 0, (_s)); |
| |
| /* primitive */ |
| /** |
| * \brief output internal message communication log if module's filter on. send by KAL service. |
| * \param ilm_struct for internal message |
| */ |
| extern void dhl_log_primitive(ilm_struct *ilm); |
| extern void dhl_log_primitive_custom(ilm_struct *ilm, e_custom_ilm_trace_option option); |
| |
| #define DHL_MAX_TRACE_DATA_SEGMENT_CNT (128) |
| #define DHL_MAX_ILM_TRACE_BYTES (512 * 1024) |
| /* |
| * Pack the data_seg_array's data in ILM's peer part |
| * NOTE: |
| * 1. original peer_buf_ptr & peer_buf_len of ILM will be replaced |
| * 2. local_para_len can be controlled by partial logging, but peer_len CAN'T |
| * 3. ASSURE data_seg_cnt <= DHL_MAX_TRACE_DATA_SEGMENT_CNT |
| * 4. ASSURE total size of trace <= DHL_MAX_ILM_TRACE_SIZE |
| */ |
| extern void dhl_log_primitive_append_data_in_peer(ilm_struct *ilm, trace_data_segment_desc data_seg_array[], kal_uint32 data_seg_cnt); |
| |
| extern void dhl_FT_log_primitive(ilm_struct *ilm); |
| |
| /** |
| * \brief output primitive C structure if module's filter on. |
| * \param module's id |
| * \param sap_type if need partial logging |
| * \param msg_type for getting c structure that define in message structure definition |
| * \param buf_len the size of c structure |
| * \param buf pointer to the stucture data |
| * \par Sample code |
| * \code{.c} |
| * dhl_string_struct buf; |
| * kal_uint32 buf_len = sizeof(dhl_string_struct); |
| * dhl_log_primitive_struct(MOD_DHL, INVALID_SAP, MSG_ID_DHL_STRING, buf_len, &buf); |
| * \endcode |
| */ |
| extern void dhl_log_primitive_struct(module_type src_mod, sap_type sap_id, msg_type msg_id, kal_uint32 buf_len, void *buf); |
| // API for META |
| // Exported API for FT only, FT will call this API after send disconnect ACK to Tool, then DHL will drop all upcoming META traces to save power |
| // NOTE: Not thread-safe |
| extern void dhl_set_meta_tool_disconnected(); |
| |
| extern void meta_print_system_trace(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const kal_char *str); |
| #define dhl_print_meta_string(_c, _s) meta_print_system_trace((_c), DHL_USER_FLAG_NONE, 0, (_s)) |
| |
| |
| // Only available on MoDIS |
| #ifdef UNIT_TEST |
| #include "kal_public_defs.h" |
| extern void _dhl_print_struct(module_type src, msg_type msg_id, int buf_len, void *buf); |
| #define dhl_print_struct(_s,_m,_l,_b) _dhl_print_struct(_s,_m,_l,_b) |
| #define dhl_debug_print(_c,_m,_f, ...) dhl_print(_c, DHL_USER_FLAG_NONE, _m, _f, __VA_ARGS__); |
| #else |
| #define dhl_print_struct(_s,_m,_l,_b) |
| #define dhl_debug_print(_f, ...) |
| #endif |
| |
| #define dhl_trace_impl(_t, _u, _msg, _mod, _argv, _arg_info) \ |
| dhl_internal_trace_impl(_t, _u, DHL_ACCESS_LEVEL_1_ALL_USER, _msg, _mod, _argv, _arg_info) |
| |
| extern 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); |
| extern void dhl_print_impl(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *fmt, va_list argument_info); |
| extern 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); |
| /** |
| * @brief this is intended as internal API implementation of DHL |
| * Do not use this directly. User must declare UTMD to use OTA traces. |
| * @param trc_class trace class ID to check filter |
| * @param global_peer_msg_id OTA message identifier for given OTA message |
| * @param raw_data_len length of given OTA message |
| * @param raw_data pointer to OTA message buffer |
| * @param trace_index trace ID of this OTA message |
| * @param module_id trace module ID for filter checking |
| * @param arg_type trace argumeargument for given trace |
| * */ |
| extern void dhl_peer_trace_impl(kal_uint8 trc_class, 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); |
| |
| //typedef void (*TST_String_Inject_CB)(kal_uint32 index, kal_uint8 *pData); |
| // External buffer logging via ILM |
| typedef enum |
| { |
| DHL_EXTERNAL_BUFFER_TYPE_BEGIN = 0, |
| DHL_EXTERNAL_BUFFER_L2COPRO_IP_HEADER_LOG, |
| DHL_EXTERNAL_BUFFER_TYPE_MAX |
| } dhl_external_buffer_type; |
| |
| /* |
| * Parameter note: |
| * sent_end |
| * the end of buffer address sent |
| * may not align with the buffer end sent |
| * (fragment should be handled by user) |
| */ |
| typedef void (*buffer_tx_done_cb)(dhl_external_buffer_type type, kal_uint8 *sent_end, kal_int32 sent_len); |
| kal_bool register_buffer_tx_done_callback(dhl_external_buffer_type type, buffer_tx_done_cb cb); |
| /* |
| * Parameter usage note: |
| * msg_id |
| * MSG_ID_DHL_L2COPRO_DL_IP_HEADER_LOG |
| * MSG_ID_DHL_L2COPRO_UL_IP_HEADER_LOG |
| * local_para |
| * caller-free |
| * local_para_len |
| * <= 64 bytes |
| */ |
| typedef struct |
| { |
| kal_uint8 *buf_address; |
| kal_uint32 buf_len; |
| } S_DHL_SEND_BODY; |
| kal_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); |
| |
| //for SIM Authentication APDU flush mdm buffer use , need implement in DHL v2 |
| void dhl_mon_trigger_flush_log(); |
| |
| #ifdef TST_TRACE_COMPAT |
| #define kal_print_string_trace kal_wap_trace //alias kal_print_string_trace as kal_wap_trace |
| extern void kal_wap_trace(module_type mod_id, trace_class_enum trc_class, const char *fmt, ...); |
| extern void kal_bootup_trace(trace_class_enum, kal_uint32, const kal_char *, ...); |
| extern void kal_prompt_trace(module_type, const kal_char *fmt, ...); |
| extern void kal_trace_for_3rd_party(trace_class_enum, kal_uint32, const kal_char *, va_list); |
| #endif |
| //#define __DHL_LEGACY_TRACE_API_ENABLED__ |
| #if defined(__DHL_LEGACY_TRACE_API_ENABLED__) |
| /*index trace & raw trace & peer trace*/ |
| /*dhl*/ |
| extern void dhl_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const char *arg_type, ...); |
| extern 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, ...); |
| extern void dhl_brief_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const char *arg_type, ...); |
| extern 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); |
| extern 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, ...); |
| /*kal*/ |
| #ifdef TST_TRACE_COMPAT |
| #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 *, ...); |
| #if !defined(_MSC_VER) |
| #define kal_trace(trc_class, msg_index, ...) \ |
| dhl_trace(trc_class, DHL_USER_FLAG_NONE, msg_index, ##__VA_ARGS__) |
| #define kal_brief_trace(trc_class, msg_index, ...) \ |
| dhl_brief_trace(trc_class, DHL_USER_FLAG_NONE, msg_index, ##__VA_ARGS__) |
| //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 dhl_brief_trace_opt_helper(trace_class_enum trc_class, kal_uint32 user_flag, 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) {\ |
| dhl_brief_trace_opt_helper(trc_class, DHL_USER_FLAG_NONE, msg_index, ##__VA_ARGS__); \ |
| } \ |
| } while(0) |
| #else |
| extern void kal_trace(trace_class_enum, kal_uint32, const kal_char *, ...); |
| extern void kal_brief_trace(trace_class_enum, kal_uint32, const kal_char *, ...); |
| //PC build (MoDIS or MCDDLL) |
| extern void kal_brief_trace_macro(trace_class_enum, kal_uint32, const kal_char *, ...); |
| #endif // _MSC_VER |
| extern void _kal_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_lib_trace(trace_class_enum, kal_uint32, const kal_char *, ...); |
| //extern void kal_assert_trace(trace_class_enum, kal_uint32, const kal_char *, ...); |
| #define kal_assert_trace(trc_class, msg_index, ...) dhl_trace(trc_class, DHL_USER_FLAG_NONE, msg_index, ##__VA_ARGS__) |
| 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, ...); |
| #endif // TST_TRACE_COMPAT |
| #endif //__DHL_LEGACY_TRACE_API_ENABLED__ |
| /** |
| * @brief get MD time info |
| * @returns the current time info (32-bit) |
| */ |
| kal_uint32 dhl_get_md_time_info(void); |
| #else //__DHL_TRACE_ENABLED__ |
| #if defined(__DHL_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 dhl_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const char *arg_type, ...) |
| { |
| return; |
| } |
| |
| static __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, ...) |
| { |
| return; |
| } |
| |
| static __inline void dhl_brief_trace(trace_class_enum trc_class, kal_uint32 user_flag, kal_uint32 msg_index, const char *arg_type, ...) |
| { |
| return; |
| } |
| |
| static __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) |
| { |
| return; |
| } |
| |
| static __inline void dhl_print(trace_class_enum trc_class, kal_uint32 user_flag, module_type mod_id, const char *fmt, ...) |
| { |
| return; |
| } |
| |
| #define dhl_print_system_trace(_c, _s) |
| #define dhl_print_struct(_s,_m,_l,_b) |
| #define dhl_debug_print(_f, ...) |
| |
| static __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, ...) |
| { |
| return; |
| } |
| |
| static __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) |
| { |
| return; |
| } |
| |
| static __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) |
| { |
| return; |
| } |
| |
| 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_brief_trace_macro(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 ; |
| } |
| |
| #if !defined(__LTE_REMOVE_TEMPERAL__) |
| static __inline void kal_prompt_trace(module_type mod_id, const kal_char *fmt, ...) |
| { |
| return; |
| } |
| #endif /* end of !__LTE_REMOVE_TEMPERAL__ */ |
| #else // __DHL_TRACE_EMPTY_FUNCTION__ |
| //Define empty functions for Target SW |
| #define dhl_trace(...) |
| #define dhl_internal_trace(...) |
| #define dhl_brief_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_peer_trace(...) |
| |
| #define dhl_trace_impl(...) |
| #define dhl_print_impl(...) |
| #define dhl_internal_trace_impl(...) |
| |
| #define kal_trace(...) |
| #define kal_brief_trace(...) |
| #define _kal_trace(...) |
| #define _kal_brief_trace(...) |
| #define kal_brief_trace_macro(...) |
| #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_prompt_trace(...) |
| #define kal_critical_trace(...) |
| #define kal_critical_brief_trace(...) |
| #define kal_critical_assert_trace(...) |
| |
| #define dhl_EM_logger(...) |
| #define dhl_brief_trace_opt_helper(...) |
| #endif |
| #endif |
| |
| #define kal_sys_trace tst_sys_trace |
| #define kal_sys_init_trace tst_sys_init_trace |
| #define kal_sys_fatal_trace tst_sysfatal_trace |
| |
| #if defined(__DHL_MODULE__) |
| // TODO: liberrc_mob_com.c & kal_msg_passing.c extern tst_log_primitive, ask them to remove!! |
| extern void tst_log_primitive(ilm_struct *ilm_ptr); |
| //#define tst_log_primitive(ilm) dhl_log_primitive(ilm) |
| |
| // TODO: l1tst_fnc_l1rf.c 194 extern tst_sys_trace, ask them to remove!! |
| extern void tst_sys_trace(kal_char *info); |
| //#define tst_sys_trace(mesg) dhl_print_system_trace(TRACE_INFO,mesg) |
| |
| // these APIs can be replaced by macro directlly |
| #define tst_sysfatal_trace(mesg) dhl_print_system_trace(TRACE_ERROR, mesg) |
| #define tst_sys_init_trace tst_sys_trace |
| |
| |
| 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 __DHL_TRACE_EMPTY_FUNCTION__ |
| #if !defined(__LTE_REMOVE_TEMPERAL__) |
| 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 ; |
| } |
| #endif /* end of !__LTE_REMOVE_TEMPERAL__ */ |
| #else |
| #define tst_sys_init_trace(...) |
| #define tst_sys_trace(...) |
| #define tst_sysfatal_trace(...) |
| #define tst_trace_check_ps_filter_off(...) |
| #endif |
| #endif //#ifdef __DHL_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); |
| void dhl_vc_send_ast_log(kal_uint8 * buf, kal_uint16 data_len); |
| |
| #define TVCI_CREATE_FILE 0x24540001 |
| #define TVCI_CLOSE_FILE 0x24540002 |
| |
| kal_bool dhl_get_assert_bypass_buf(kal_char **buf, kal_uint32 *buf_size, kal_uint32 *buf_index); |
| kal_bool dhl_ack_assert_bypass_buf(kal_char *buf, kal_uint32 message_size, kal_uint32 buf_index); |
| |
| void 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); |
| |
| typedef enum |
| { |
| DHL_CUSTOM_MEM_PMIC, |
| DHL_CUSTOM_MEM_MIPI, |
| DHL_CUSTOM_MEM_MAX |
| } DHL_CUSTOM_MEM_TYPE; |
| |
| typedef void (*DHL_CUSTOM_READ_MEM_CALLBACK)(void *read_addr, kal_uint32 len, kal_uint32 option, void **read_buffer_addr, kal_uint32 *read_buffer_len); |
| typedef void (*DHL_CUSTOM_READ_MEM_DONE_CALLBACK)(void *read_addr, kal_uint32 len, kal_uint32 option); |
| typedef void (*DHL_CUSTOM_WRITE_MEM_CALLBACK)(void *write_addr, kal_uint32 len, kal_uint32 option, void *write_buffer_addr); |
| |
| kal_bool dhl_register_custom_mem_read(DHL_CUSTOM_MEM_TYPE mem_type, DHL_CUSTOM_READ_MEM_CALLBACK read_cb); |
| kal_bool dhl_register_custom_mem_read_done(DHL_CUSTOM_MEM_TYPE mem_type, DHL_CUSTOM_READ_MEM_DONE_CALLBACK read_done_cb); |
| kal_bool dhl_register_custom_mem_write(DHL_CUSTOM_MEM_TYPE mem_type, DHL_CUSTOM_WRITE_MEM_CALLBACK write_cb); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| |
| typedef enum |
| { |
| /* 0~7 reserve for L2 PDU */ |
| /* should not over DHL_L2_PDU_TYPE_NUM */ |
| DHL_L2_PDU_MAC_TYPE = 1, |
| DHL_L2_PDU_RLC_TYPE = 2, |
| DHL_L2_PDU_PDCP_TYPE = 3, |
| DHL_L2_PDU_RLC_PDU_TYPE = 4, |
| } dhl_log_pdu_type; |
| |
| void dhl_log_pdu(dhl_log_pdu_type type, kal_uint8 *data, kal_uint32 length); |
| void dhl_flush_pdu(dhl_log_pdu_type type); |
| kal_bool dhl_check_pdu_filter(dhl_log_pdu_type type); |
| |
| #define DHL_MAC_CHECK_L2_PDU() dhl_check_pdu_filter(DHL_L2_PDU_MAC_TYPE) |
| #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)) |
| #define DHL_PDCP_CHECK_L2_PDU() dhl_check_pdu_filter(DHL_L2_PDU_PDCP_TYPE) |
| |
| #define DHL_MAC_LOG_L2_PDU(pointer, length) do { \ |
| if(DHL_MAC_CHECK_L2_PDU()) { \ |
| dhl_log_pdu(DHL_L2_PDU_MAC_TYPE, pointer, length);\ |
| } \ |
| } while(0) |
| #define DHL_RLC_LOG_L2_PDU(pointer, length) do { \ |
| if(DHL_RLC_CHECK_L2_PDU()) { \ |
| dhl_log_pdu(DHL_L2_PDU_RLC_TYPE, pointer, length);\ |
| } \ |
| } while(0) |
| #define DHL_PDCP_LOG_L2_PDU(pointer, length) do { \ |
| if(DHL_PDCP_CHECK_L2_PDU()) { \ |
| dhl_log_pdu(DHL_L2_PDU_PDCP_TYPE, pointer, length);\ |
| } \ |
| }while(0) |
| |
| #endif |
| #endif /* _DHL_TRACE_H */ |
| |