Update contrib.
2 * Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
16 * Part of : LIBC/logger
17 * Contained MRT library code tracing macros and class definition.
32 /* Log message type (Info/Minor/Major/Critical) */
33 typedef enum TLibTraceMessageType
35 ELibTraceTypeInfo = 1,
36 ELibTraceTypeMinor = 2,
37 ELibTraceTypeMajor = 4,
38 ELibTraceTypeCritical = 8
39 }TLibTraceMessageType;
43 // only logging for critical/major
44 //#define LOG_BITS ( ELibTraceTypeCritical | ELibTraceTypeMajor | ELibTraceTypeInfo )
45 #define LOG_BITS ( ELibTraceTypeCritical | ELibTraceTypeMajor )
47 /* this macro will be used for file and line no.
49 #define LOG_FILE_NAME_LINE __FILE__, __LINE__
55 * Message logging interface
57 IMPORT_C int LibTracer(TLibTraceMessageType aLogMessageType,
64 * Message logging interface
66 IMPORT_C int LibTracerMarkerList(TLibTraceMessageType aLogMessageType,
70 VA_LIST* aMarkerList);
73 * dumping the message in hex format of specific length
75 IMPORT_C int LibTracerPartialHexDump(TLibTraceMessageType aLogMessageType,
83 * dumping the message in hex format
85 IMPORT_C int LibTracerHexDump(TLibTraceMessageType aLogMessageType,
93 * dumping the message in hex format
95 IMPORT_C int LibTracerHexDumpMarkerList(TLibTraceMessageType aLogMessageType,
100 VA_LIST* aMarkerList);
103 * Only logs filename and line no with timestamp
105 IMPORT_C int LibLineExecTracer(char *aFileName, int aLine);
108 * Only logging/trace message without timestamp
110 IMPORT_C int LibMessageTracer(TLibTraceMessageType aLogMessageType,
112 VA_LIST* aMarkerList);
115 * Only logging/trace message without timestamp
117 IMPORT_C int LibHexDumpMessagePartTracer(TLibTraceMessageType aLogMessageType,
120 VA_LIST* aMarkerList);
127 // We are unable to compile the component using non-variadic macros from command line.
128 // throwing error "badly punctuated parameter list in `#define'"
132 //#pragma message("LibC Trace - ENABLE.")
136 class CLogger // codescanner::missingcclass
139 CLogger(char* aFileName, int aLine) : iFileName ( aFileName ), iLine ( aLine) {}
140 inline int Tracer(TLibTraceMessageType aLogMessageType, char* aFormat, ...)
143 if ( LOG_BITS & aLogMessageType )
146 VA_START(marker, aFormat);
147 len = LibTracerMarkerList(aLogMessageType, iFileName, iLine, aFormat, &marker);
152 inline int Dump(TLibTraceMessageType aLogMessageType, char* aMessage, char* aFormat, ...)
155 if ( LOG_BITS & aLogMessageType )
158 VA_START(marker, aFormat);
159 len = LibTracerHexDumpMarkerList(aLogMessageType, iFileName, iLine, aMessage, aFormat, &marker);
172 static int LibcTracer(TLibTraceMessageType aLogMessageType, char* aFormat, ...)
175 if ( LOG_BITS & aLogMessageType )
178 VA_START(marker, aFormat);
179 len = LibMessageTracer(aLogMessageType, aFormat, &marker);
185 static int LibHexTracer(TLibTraceMessageType aLogMessageType, char* aMessage, char* aFormat, ...)
188 if ( LOG_BITS & aLogMessageType )
191 VA_START(marker, aFormat);
192 len = LibHexDumpMessagePartTracer(aLogMessageType, aMessage, aFormat, &marker);
197 #endif // __cplusplus
201 * <messagetype>{ELibTraceTypeInfo|ELibTraceTypeMinor|ELibTraceTypeMajor|ELibTraceTypeCritical},
204 * Remark : Similar to printf except the first additional parameter for message type.
208 #define LIB_TRACE CLogger(LOG_FILE_NAME_LINE).Tracer
210 #define LIB_TRACE LibLineExecTracer(LOG_FILE_NAME_LINE); \
216 * usage : LIB_TRACE_DUMP(
217 * <messagetype>{ELibTraceTypeInfo|ELibTraceTypeMinor|ELibTraceTypeMajor|ELibTraceTypeCritical},
218 * message, // user wants to add any message before dump, (i.e. TCP message)
224 #define LIB_TRACE_DUMP CLogger(LOG_FILE_NAME_LINE).Dump
226 #define LIB_TRACE_DUMP LibLineExecTracer(LOG_FILE_NAME_LINE); \
232 * usage : LIB_TRACE_DUMP_LEN(
233 * <messagetype>{ELibTraceTypeInfo|ELibTraceTypeMinor|ELibTraceTypeMajor|ELibTraceTypeCritical},
234 * message, // user wants to add any message before dump, (i.e. TCP message)
240 #define LIB_TRACE_DUMP_LEN(messageType, message, dumpString, dumpStringLen) \
242 if ( LOG_BITS & messageType ) \
244 LibTracerPartialHexDump(messageType, \
245 LOG_FILE_NAME_LINE, \
253 // compilation message
254 //#pragma message("LibC Trace - DISABLE.")
255 // Release mode, nothing.
260 inline TInt LibTracerDummy(...)
265 static TInt LibTracerDummy(TLibTraceMessageType aLogMessageType, ...)
271 #define LIB_TRACE 0 & LibTracerDummy
273 #define LIB_TRACE_DUMP 0 & LibTracerDummy
275 #define LIB_TRACE_DUMP_LEN 0 & LibTracerDummy
280 #endif //LIB_LOGGER_H