00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00029 #ifndef _RTXDIAGBITTRACE_H_
00030 #define _RTXDIAGBITTRACE_H_
00031
00032 #include <stdarg.h>
00033 #include "rtxsrc/rtxMemBuf.h"
00034 #include "rtxsrc/rtxSList.h"
00035 #include "rtxsrc/rtxPrintToStream.h"
00036
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040
00044 typedef struct {
00045 const char* elemName;
00046 const char* nameSuffix;
00047 size_t bitOffset;
00048 size_t numbits;
00049 } OSRTDiagBitField;
00050
00051 typedef struct {
00052 OSUINT8 lb, lbm;
00053 char fmtBitBuffer[40], fmtHexBuffer[10], fmtAscBuffer[10];
00054 int fmtBitCharIdx, fmtHexCharIdx, fmtAscCharIdx;
00055 } OSRTDiagBinDumpBuffer;
00056
00057 typedef struct OSRTDiagBitFieldList {
00058 OSUINT16 disabledCount;
00059 OSRTSList fieldList;
00060 OSRTMEMBUF* pCaptureBuf;
00061 OSRTDiagBinDumpBuffer printBuffer;
00062 OSRTSListNode* pLastPrinted;
00063 } OSRTDiagBitFieldList;
00064
00065
00066
00067 #ifdef _TRACE
00068 #define RTDIAG_INSBITFLDLEN(pctxt) \
00069 rtxDiagInsBitFieldLen(pctxt->pBitFldList)
00070
00071 #define RTDIAG_NEWBITFIELD(pctxt,suffix) \
00072 rtxDiagNewBitField(pctxt->pBitFldList,suffix)
00073
00074 #define RTDIAG_SETBITFLDOFFSET(pctxt) \
00075 rtxDiagSetBitFldOffset(pctxt->pBitFldList)
00076
00077 #define RTDIAG_SETBITFLDCOUNT(pctxt) \
00078 rtxDiagSetBitFldCount(pctxt->pBitFldList)
00079 #else
00080 #define RTDIAG_INSBITFLDLEN(pctxt)
00081 #define RTDIAG_NEWBITFIELD(pctxt,suffix)
00082 #define RTDIAG_SETBITFLDOFFSET(pctxt)
00083 #define RTDIAG_SETBITFLDCOUNT(pctxt)
00084 #endif
00085
00090 #define RTDIAG_GETCTXTBITOFFSET(pctxt) \
00091 (((pctxt)->buffer.byteIndex * 8) + (8 - (pctxt)->buffer.bitOffset))
00092
00099 EXTERNRT int rtxDiagCtxtBitFieldListInit (OSCTXT* pctxt);
00100
00107 EXTERNRT void rtxDiagBitFieldListInit
00108 (OSCTXT* pctxt, OSRTDiagBitFieldList* pBFList);
00109
00116 EXTERNRT void rtxDiagInsBitFieldLen (OSRTDiagBitFieldList* pBFList);
00117
00126 EXTERNRT OSRTDiagBitField* rtxDiagNewBitField
00127 (OSRTDiagBitFieldList* pBFList, const char* nameSuffix);
00128
00135 EXTERNRT void rtxDiagSetBitFldOffset (OSRTDiagBitFieldList* pBFList);
00136
00143 EXTERNRT void rtxDiagSetBitFldCount (OSRTDiagBitFieldList* pBFList);
00144
00153 EXTERNRT void rtxDiagSetBitFldNameSuffix
00154 (OSRTDiagBitFieldList* pBFList, const char* nameSuffix);
00155
00166 EXTERNRT OSBOOL rtxDiagSetBitFldDisabled
00167 (OSRTDiagBitFieldList* pBFList, OSBOOL value);
00168
00177 EXTERNRT void rtxDiagBitTracePrint
00178 (OSRTDiagBitFieldList* pBFList, const char* varname);
00179
00187 EXTERNRT void rtxDiagBitTracePrintHTML
00188 (const char* filename, OSRTDiagBitFieldList* pBFList, const char* varname);
00189
00198 EXTERNRT void rtxDiagBitFldAppendNamePart
00199 (OSRTDiagBitFieldList* pBFList, const char* namePart);
00200
00201 #ifdef __cplusplus
00202 }
00203 #endif
00204
00205 #endif