common/trace.h

00001 /*
00002  * Copyright Ian Burnett 2005, 2006.
00003  *
00004  * This file is part of Ian's Interactive LCD controller (IILC).
00005  * 
00006  * IILC is free software; you can redistribute it and/or modify it under
00007  * the terms of the GNU General Public License as published by the Free
00008  * Software Foundation; either version 2 of the License, or (at your
00009  * option) any later version.
00010  *
00011  * IILC is distributed in the hope that it will be useful, but WITHOUT
00012  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00013  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00014  * for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License along
00017  * with IILC; if not, write to the Free Software Foundation, Inc.,
00018  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
00019  */
00020 
00021 #if !defined(__TRACE_H__)
00022 #define __TRACE_H__
00023 
00024 #include "lcd.h"
00025 
00026 typedef struct _tag_trace_context_data
00027 {
00028     int module;
00029 
00030     int function;
00031 
00032     char * pszFunction;
00033 
00034 } traceContextData;
00035 
00036 /*
00037  * Entry and exit macros. Arranged like this because macros with var-length args
00038  * are not portable.
00039  */
00040 
00041 extern unsigned char g_bSev0Enabled;
00042 extern unsigned char g_bSev1Enabled;
00043 extern unsigned char g_bSev2Enabled;
00044 extern unsigned char g_bSev3Enabled;
00045 extern unsigned char g_bSev4Enabled;
00046 extern unsigned char g_bSev5Enabled;
00047 
00048 
00049 #define IILC_TRACE_CONTEXT  &tData
00050 
00051 #define IILC_TRACE_ENTRY(mod,func)      \
00052     traceContextData tData;             \
00053     tData.module = (mod);               \
00054     tData.function = (func);            \
00055     tData.pszFunction = #func;          \
00056     traceEntry(&tData);
00057 
00058 #define IILC_TRACE_EXIT                 \
00059     traceExit(IILC_TRACE_CONTEXT)
00060 
00061 /* Exit with a return code */
00062 #define IILC_TRACE_EXIT_RC(r)  \
00063     traceDebug(IILC_TRACE_CONTEXT, "rc %d (0x%02X)", r, r); \
00064     IILC_TRACE_EXIT
00065 
00066 
00067 #define IILC_TRACE_DEBUG(x)             traceDebug x
00068 #define IILC_TRACE_INFO(x)              traceInfo x
00069 #define IILC_TRACE_WARNING(x)           traceWarning x
00070 #define IILC_TRACE_ERROR(x)             traceError x
00071 
00072 
00073 LCD_API void traceDebug(traceContextData * pContext,
00074                         char * fmt,
00075                         ...);
00076 
00077 LCD_API void traceInfo(traceContextData * pContext,
00078                        char * fmt,
00079                        ...);
00080 
00081 LCD_API void traceWarning(traceContextData * pContext,
00082                           char * fmt, 
00083                           ...);
00084 
00085 LCD_API void traceError(traceContextData * pContext,
00086                         char * fmt, 
00087                         ...);
00088 
00089 LCD_API void traceEntry(traceContextData * pContext);
00090 
00091 LCD_API void traceExit(traceContextData * pContext);
00092 
00093 
00094 /*
00095  * Defines to handle 
00096  */
00097 
00098 
00099 #define T_dispatchReportPacket          0x01
00100 #define T_displaySetLED                 0x02
00101 #define T_displaySetLEDController       0x03
00102 #define T_TxThread                      0x04
00103 #define T_displayReceiveFanSpeedReport  0x05
00104 #define T_displayReceiveKeyPressReport  0x06
00105 #define T_processConfigDevice           0x07
00106 #define T_processConfigDisplay          0x08
00107 #define T_configGetDeviceCount          0x09
00108 #define T_configGetModuleCount          0x0A
00109 #define T_configGetDeviceClass          0x0B
00110 #define T_processConfigFile             0x0C
00111 #define T_configGetDevicePort           0x0D
00112 #define T_deviceCreate                  0x0E
00113 #define T_parserBeginDisplay            0x0F
00114 #define T_configGetDisplayCount         0x10
00115 #define T_deviceStart                   0x11
00116 #define T_displayStart                  0x12
00117 #define T_deviceWritePacket             0x13
00118 #define T_displayCallbackFan            0x14
00119 #define T_configGetModuleName           0x15
00120 #define T_parserBeginModule             0x16
00121 #define T_parserEndModule               0x17
00122 #define T_parserEndDisplay              0x18
00123 #define T_parserEndDevice               0x19
00124 #define T_parserSetModuleLibrary        0x1A
00125 #define T_moduleInit                    0x1B
00126 #define T_parserBeginDevice             0x1C
00127 #define T_parserParse                   0x1D
00128 #define T_vectorCreate                  0x1E
00129 #define T_vectorAdd                     0x1F
00130 #define T_parserGetCurrentFile        0x20
00131 #define T_parserModuleControlObject     0x21
00132 #define T_main                          0x22
00133 #define T_packetCreate                  0x23
00134 #define T_parserDeviceUseFan            0x24
00135 #define T_parserDeviceFindObject        0x25
00136 #define T_parserDeviceCreateObject      0x26
00137 #define T_parserModuleReportObject      0x27
00138 #define T_parserModuleVirtualObject     0x28
00139 #define T_displayCreate                 0x29
00140 #define T_driver_Create                 0x2A
00141 #define T_cfontz_InitDevice             0x2B
00142 #define T_cfontz_InitDevice_unix        0x2C
00143 #define T_cfontz_InitDevice_w32         0x2D
00144 #define T_parserDeviceUseLED            0x2E
00145 #define T_cfontz_InitDeviceType         0x2F
00146 #define T_cfontz_UpdateTempReport       0x30
00147 #define T_parserBeginScreen             0x31
00148 #define T_parserEndScreen               0x32
00149 #define T_fanSpeedReport                0x33
00150 #define T_driver_SetFanPower            0x34
00151 #define T_displayCallbackTemp           0x35
00152 #define T_parserDeviceUseTemp           0x36
00153 #define T_cfontz_ReceiveTempReport      0x37
00154 #define T_temperatureReport             0x38
00155 #define T_vectorSetElementAt            0x39
00156 #define T_parserDeviceObjectUse         0x3A
00157 #define T_parserGetContext              0x3B
00158 #define T_parserDeviceSetPort           0x3C
00159 #define T_parserGetCurrentConfig        0x3D
00160 
00161 
00162 /*
00163  * Useful defines to allow consistent formatting of values.
00164  */
00165 
00166 #define T_FMT_PTR           "%p"
00167 #define T_FMT_UINT          "%u"
00168 #define T_FMT_INT           "%d"
00169 #define T_FMT_SIZET         "%u"
00170 #define T_FMT_DOUBLE        "%f"
00171 
00172 
00173 /*
00174  * Display module defines
00175  */
00176 
00177 typedef enum _tag_enum_module {
00178 
00179     MODULE_TYPE_DISPLAY   = 0,
00180     MODULE_TYPE_PACKET    = 1,
00181     MODULE_TYPE_APP       = 2
00182 
00183 } MODULE_TYPE;
00184 
00185 
00186 #endif /* __TRACE_H__ */
00187 
00188 
00189 

Generated on Mon Jul 17 01:36:11 2006 for IILC by  doxygen 1.4.6