📄 trace.h
字号:
/*
+-----------------------------------------------------------------------------
| Project : GSM-F&D (8411)
| Modul : TRACE
+-----------------------------------------------------------------------------
| Copyright 2002 Texas Instruments Berlin, AG
| All rights reserved.
|
| This file is confidential and a trade secret of Texas
| Instruments Berlin, AG
| The receipt of or possession of this file does not convey
| any rights to reproduce or disclose its contents or to
| manufacture, use, or sell anything it may describe, in
| whole, or in part, without the specific written consent of
| Texas Instruments Berlin, AG.
+-----------------------------------------------------------------------------
| Purpose :
+-----------------------------------------------------------------------------
*/
#ifndef TRACE_H
#define TRACE_H
#ifdef FAST_TRACE
#define TRC_BUF_LEN 7000
#define TRC_SPECIAL 0xFF
#define TRC_DATA 0
#define TRC_RLP_FRAME 1
typedef struct
{
UBYTE entity;
UBYTE file;
USHORT line;
USHORT ticks;
USHORT hwtimer;
} T_TRC_BUF_ENTRY;
#ifdef TRACE_C
GLOBAL T_TRC_BUF_ENTRY trc_buffer[TRC_BUF_LEN];
GLOBAL T_TRC_BUF_ENTRY *trc_p_buffer;
GLOBAL T_TRC_BUF_ENTRY *trc_p_buffer_end;
GLOBAL BOOL trc_enabled = TRUE;
GLOBAL BOOL trc_wrap_around = FALSE;
GLOBAL BOOL trc_wrap_around_enable = FALSE;
#if defined (NEW_FRAME)
GLOBAL T_HANDLE semTRC;
#else
GLOBAL T_VSI_SHANDLE semTRC;
#endif /* NEW_FRAME */
#else
EXTERN T_TRC_BUF_ENTRY trc_buffer[];
EXTERN T_TRC_BUF_ENTRY *trc_p_buffer;
EXTERN T_TRC_BUF_ENTRY *trc_p_buffer_end;
EXTERN BOOL trc_enabled;
EXTERN BOOL trc_wrap_around;
EXTERN BOOL trc_wrap_around_enable;
#if defined (NEW_FRAME)
EXTERN T_HANDLE semTRC;
#else
EXTERN T_VSI_SHANDLE semTRC;
#endif /* NEW_FRAME */
#endif /* TRACE_C */
#endif /* FAST_TRACE */
#if defined(TRC_HW_TIMER)
#ifndef HW_TIMER
#define HW_TIMER
#define TIMER_RESET_VALUE 0xFFFF
EXTERN void TM_ResetTimer (USHORT timerNum, USHORT countValue,
USHORT autoReload, USHORT clockScale);
EXTERN void TM_StopTimer (int timerNum);
EXTERN void TM_StartTimer (int timerNum);
EXTERN USHORT TM_ReadTimer (int timerNum);
#endif /* HW_TIMER */
#define TRC_HW_TIME ((USHORT)(TIMER_RESET_VALUE - TM_ReadTimer(2)))
#else
#define TRC_HW_TIME 0xFFFF
#endif /* TRC_HW_TIMER */
#if defined(TRC_TIMESTAMP)
#define TRC_GET_TICKS(var) \
{ \
ULONG tmp; \
vsi_t_time(VSI_CALLER &tmp); \
var = (USHORT)tmp; \
}
#else
#define TRC_GET_TICKS(var) (var = 0xFFFF)
#endif /* TRC_TIMESTAMP */
#ifdef FAST_TRACE
#define FAST_TRACE_BODY(TC_TYPE, a) \
if (trc_enabled) \
{ \
register ULONG val; \
register ULONG* p = (ULONG*)trc_p_buffer; \
*p++ = (__LINE__<<16) + (TRC_FILE<<8) + TRC_ENTITY; \
TRC_GET_TICKS(val); \
val += TRC_HW_TIME<<16; \
*p++ = val; \
\
if ((T_TRC_BUF_ENTRY*)p < trc_p_buffer_end) \
{ \
trc_p_buffer = (T_TRC_BUF_ENTRY*)p; \
} \
else \
{ \
if (trc_wrap_around_enable) \
{ \
trc_p_buffer = trc_buffer; \
trc_wrap_around = TRUE; \
} \
} \
}
#else
#define FAST_TRACE_BODY(TC_TYPE, a)
#endif /* FAST_TRACE */
#ifdef NORMAL_TRACE
#define NORMAL_TRACE_BODY(TC_TYPE, a) vsi_o_trace(VSI_CALLER TC_TYPE,a)
#else
#define NORMAL_TRACE_BODY(TC_TYPE, a)
#endif /* NORMAL_TRACE */
#define TRACE_BODY(TC_TYPE, a) \
FAST_TRACE_BODY(TC_TYPE, a); \
NORMAL_TRACE_BODY(TC_TYPE, a)
#if 0
#ifdef FAST_TRACE
#define TRACE_DATA_UL(data) \
if (trc_enabled) \
{ \
trc_p_buffer->entity = TRC_SPECIAL; \
trc_p_buffer->file = TRC_DATA; \
trc_p_buffer->line = 0; \
*((ULONG*)(&(trc_p_buffer->ticks))) = (data); \
if (trc_p_buffer >= trc_p_buffer_end) \
{ \
if (trc_wrap_around_enable) \
{ \
trc_p_buffer = trc_buffer; \
trc_wrap_around = TRUE; \
} \
} \
else \
{ \
trc_p_buffer++; \
} \
}
#else
#define TRACE_DATA_UL(data)
#endif /* FAST_TRACE */
#endif /* 0 */
#ifdef FAST_TRACE
#define TRACE_DATA_BODY(CAST, data, tag) \
if (trc_enabled) \
{ \
trc_p_buffer->entity = TRC_SPECIAL; \
trc_p_buffer->file = tag; \
trc_p_buffer->line = 0; \
*((ULONG*)(&(trc_p_buffer->ticks))) = CAST(data); \
if (trc_p_buffer >= trc_p_buffer_end) \
{ \
if (trc_wrap_around_enable) \
{ \
trc_p_buffer = trc_buffer; \
trc_wrap_around = TRUE; \
} \
} \
else \
{ \
trc_p_buffer++; \
} \
}
#else
#define TRACE_DATA_BODY(CAST, data, tag)
#endif /* FAST_TRACE */
#define TRACE_DATA_UL(data) TRACE_DATA_BODY((ULONG), data, TRC_DATA)
#define TRACE_DATA_RLP_FRAME(frameptr) TRACE_DATA_BODY((ULONG), (((*(UBYTE*)frameptr))+((*((UBYTE*)frameptr+1))<<8)+((*((UBYTE*)frameptr+2))<<16)+((*((UBYTE*)frameptr+3))<<24)), TRC_RLP_FRAME)
#ifdef FAST_TRACE
#undef TRACE_EVENT
#ifdef TRACE_EVE
#define TRACE_EVENT(a) \
FAST_TRACE_BODY(TC_EVENT, a); \
NORMAL_TRACE_BODY(TC_EVENT, a);
#else
#define TRACE_EVENT(a) \
FAST_TRACE_BODY(TC_EVENT, a);
#endif /* TRACE_EVE */
#undef TRACE_FUNCTION
#ifdef TRACE_FKT
#define TRACE_FUNCTION(a) \
FAST_TRACE_BODY(TC_FUNC, a); \
NORMAL_TRACE_BODY(TC_FUNC, a);
#else
#define TRACE_FUNCTION(a) \
FAST_TRACE_BODY(TC_FUNC, a);
#endif /* TRACE_FKT */
#undef TRACE_PRIMITIVE
#ifdef TRACE_PRIM
#define TRACE_PRIMITIVE(a) \
FAST_TRACE_BODY(TC_PRIM, a); \
NORMAL_TRACE_BODY(TC_PRIM, a);
#else
#define TRACE_PRIMITIVE(a) \
FAST_TRACE_BODY(TC_PRIM, a);
#endif /* TRACE_PRIM */
#undef TRACE_ERROR
#ifdef TRACE_ERR
#define TRACE_ERROR(a) \
FAST_TRACE_BODY(TC_ERROR, a); \
NORMAL_TRACE_BODY(TC_ERROR, a);
#else
#define TRACE_ERROR(a) \
FAST_TRACE_BODY(TC_ERROR, a);
#endif /* TRACE_ERR */
#endif /* FAST_TRACE */
EXTERN void trc_init (void);
EXTERN void trc_enable_wrap_around (void);
EXTERN void trc_disable_wrap_around (void);
EXTERN void trc_dump (void);
EXTERN void trc_enable (void);
EXTERN void trc_disable (void);
EXTERN void trc_dump_data_UL (USHORT j, UBYTE *p);
#endif /* TRACE_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -