⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trace.h

📁 GSM手机设计软件代码
💻 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 + -