2020-09-30 17:12:29 +02:00

148 lines
6.6 KiB
C

/*
* DISP.H - debug display macro's under NDIS
*/
#ifndef _DISP_
#define _DISP_
#if !BINARY_COMPATIBLE
#include "digifile.h"
#include "memprint.h"
#else
#define DbgBreakPoint() {__asm { int 3 };}
#endif
extern ULONG DigiDebugLevel;
#define DIGIINIT ((ULONG)0x00000001)
#define DIGISETINFO ((ULONG)0x00000002)
#define DIGIGETINFO ((ULONG)0x00000004)
#define DIGIWANINFO ((ULONG)0x00000008)
#define DIGISXBINFO ((ULONG)0x00000010)
#define DIGITAPIINFO ((ULONG)0x00000020)
#define DIGIRECVDATA ((ULONG)0x00000040)
#define DIGITXDATA ((ULONG)0x00000080)
#define DIGIRARE ((ULONG)0x00000100)
#define DIGIWANERR ((ULONG)0x00000200)
#define DIGIWANERRDATA ((ULONG)0x00000400)
#define DIGIRXDATA ((ULONG)0x00000800)
#define DIGIWANOID ((ULONG)0x00010000)
#define DIGIQ931 ((ULONG)0x00020000)
#define DIGIIRP ((ULONG)0x00040000)
#define DIGIWAIT ((ULONG)0x00080000)
#define DIGITXFRAGDATA ((ULONG)0x00100000)
#define DIGIRXFRAGDATA ((ULONG)0x00200000)
#define DIGIIDD ((ULONG)0x00400000)
#define DIGINEVER ((ULONG)0x00800000)
#define DIGIATLASFLOW ((ULONG)0x01000000)
#define DIGIWINISDN ((ULONG)0x02000000)
#define DIGICALLSTATES ((ULONG)0x04000000)
#define DIGIMTL ((ULONG)0x08000000)
#define DIGIFLOW ((ULONG)0x10000000)
#define DIGIERRORS ((ULONG)0x20000000)
#define DIGINOTIMPLEMENTED ((ULONG)0x40000000)
#define DIGIBUGCHECK ((ULONG)0x80000000)
#define DIGIINFO (DIGIGETINFO | DIGISETINFO)
#if DBG
#define DigiAssert 1
#if DigiAssert
#undef ASSERT
#define ASSERT( STRING ) \
if( !(STRING) ) \
{ \
DbgPrint( "ASSERT failed: " #STRING "\nfile: %s, line %d\n", __FILE__, __LINE__ ); \
DbgBreakPoint(); \
}
#endif
#define DigiDump(LEVEL,STRING) \
do { \
ULONG _level = (LEVEL); \
if ((DigiDebugLevel & _level) || (_level & DIGINOTIMPLEMENTED)) \
{ \
DbgPrint STRING; \
} \
if (_level & DIGIBUGCHECK) \
{ \
ASSERT(FALSE); \
} \
} while (0)
#define DigiDumpData(LEVEL, DATA, LEN) \
do \
{ \
ULONG _DataLevel = (LEVEL); \
ULONG _i, _k; \
ULONG _len = (LEN); \
PCHAR _data = (DATA); \
\
_k = 0; \
while( _k <= _len ) \
{ \
if( (_len - _k) > 16 ) \
{ \
for( _i = 0; _i < 16; _i++ ) \
{ \
DigiDump( _DataLevel, ( "%02x ", (_data[_i] & 0xFF)) ); \
_k++; \
} \
\
DigiDump( _DataLevel, ( " ") ); \
\
for( _i = 0; _i < 16; _i++ ) \
{ \
if( _data[_i] >= 0x20 && _data[_i] <= 0x7E ) \
DigiDump( _DataLevel, ( "%c",_data[_i]) ); \
else \
DigiDump( _DataLevel, ( ".") ); \
} \
DigiDump( _DataLevel, ( "\n") ); \
_data += _i; \
} \
else \
{ \
for( _i = 0; _i < (_len - _k); _i++ ) \
{ \
DigiDump( _DataLevel, ( "%02x ",(_data[_i] & 0xFF)) ); \
} \
\
for( _i = 0; _i < (16 - (_len - _k)); _i++ ) \
DigiDump( _DataLevel, ( " ") ); \
\
DigiDump( _DataLevel, ( " ") ); \
\
for( _i = 0; _i < (_len - _k); _i++ ) \
{ \
if(_data[_i] >= 0x20 && _data[_i] <= 0x7E) \
DigiDump( _DataLevel, ( "%c",_data[_i]) ); \
else \
DigiDump( _DataLevel, ( ".") ); \
} \
DigiDump( _DataLevel, ( "\n") ); \
break; \
} \
} \
} while ( 0 );
#else
#define DigiDump(LEVEL,STRING) do {NOTHING;} while (0)
#define DigiDumpData(LEVEL,DATA,LEN) do {NOTHING;} while (0)
#endif
/* main macro to be used for logging */
#define D_LOG(level, args) DigiDump( level, args )
/* log levels */
#define D_ALWAYS DIGIFLOW
#define D_ENTRY DIGIFLOW
#define D_EXIT DIGIFLOW
#define D_RARE DIGIRARE
#define D_NEVER DIGINEVER
#endif /* _DISP_ */