|
|
/**************************************************************************************************************************
* DEBUG.C SigmaTel STIR4200 debug module ************************************************************************************************************************** * (C) Unpublished Copyright of Sigmatel, Inc. All Rights Reserved. * * * Created: 04/06/2000 * Version 0.9 * * **************************************************************************************************************************/
#if DBG
#include "ndis.h"
#include "stdarg.h"
#include "stdio.h"
#include "usbdi.h"
#include "usbdlib.h"
#include "debug.h"
//
// begin, data/code used only in DBG build
//
IRUSB_DBGDATA gDbgBuf = { 0, 0, 0 };
//
// ptr to global debug data struct; txt buffer is only allocated in DBG builds
//
PIRUSB_DBGDATA gpDbg = &gDbgBuf;
#ifdef DEBUG
int DbgSettings = //DBG_PNP |
//DBG_TIME |
//DBG_DBG |
//DBG_STAT |
//DBG_FUNCTION |
DBG_ERROR | //DBG_WARN |
//DBG_BUFS |
//DBG_OUT |
0; #endif
/*****************************************************************************
* * Function: DBG_PrintBuf * * Synopsis: Prints a message to the debugger. * * Arguments: bufptr - pointer to the data to print * buflen - length of data * * Returns: None * * Notes: * *****************************************************************************/ VOID DBG_PrintBuf( IN PUCHAR bufptr, int buflen ) { int i, linei;
#define ISPRINT(ch) (((ch) >= ' ') && ((ch) <= '~'))
#define PRINTCHAR(ch) (UCHAR)(ISPRINT(ch) ? (ch) : '.')
DbgPrint("\r\n %d bytes @%x:", buflen, bufptr);
//
// Print whole lines of 8 characters with HEX and ASCII
//
for (i = 0; i+8 <= buflen; i += 8) { UCHAR ch0 = bufptr[i+0], ch1 = bufptr[i+1], ch2 = bufptr[i+2], ch3 = bufptr[i+3], ch4 = bufptr[i+4], ch5 = bufptr[i+5], ch6 = bufptr[i+6], ch7 = bufptr[i+7];
DbgPrint("\r\n %02x %02x %02x %02x %02x %02x %02x %02x" " %c %c %c %c %c %c %c %c", ch0, ch1, ch2, ch3, ch4, ch5, ch6, ch7, PRINTCHAR(ch0), PRINTCHAR(ch1), PRINTCHAR(ch2), PRINTCHAR(ch3), PRINTCHAR(ch4), PRINTCHAR(ch5), PRINTCHAR(ch6), PRINTCHAR(ch7)); }
//
// Print final incomplete line
//
DbgPrint("\r\n "); for (linei = 0; (linei < 8) && (i < buflen); i++, linei++) { DbgPrint(" %02x", (int)(bufptr[i])); }
DbgPrint(" "); i -= linei; while (linei++ < 8) DbgPrint(" ");
for (linei = 0; (linei < 8) && (i < buflen); i++, linei++){ UCHAR ch = bufptr[i]; DbgPrint(" %c", PRINTCHAR(ch)); }
DbgPrint("\t\t<>\r\n"); }
#endif // end , if DBG
|