os/persistentdata/traceservices/commsdebugutility/INC/commsdebugutility.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// Comms Debug Utility (File and Serial logger) Client side header
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
/**
sl@0
    19
@file
sl@0
    20
@publishedAll
sl@0
    21
@deprecated Migrate to Open System Trace Instrumentation API instead
sl@0
    22
*/
sl@0
    23
sl@0
    24
#ifndef __COMMSDEBUGUTILITY_H__
sl@0
    25
#define __COMMSDEBUGUTILITY_H__
sl@0
    26
sl@0
    27
#ifndef __FLOG_NO_UDEB
sl@0
    28
	#ifdef _DEBUG
sl@0
    29
		#ifndef __FLOG_ACTIVE
sl@0
    30
			#define __FLOG_ACTIVE
sl@0
    31
		#endif
sl@0
    32
	#endif // _DEBUG
sl@0
    33
#endif //__FLOG_NO_UDEB
sl@0
    34
sl@0
    35
#ifdef __FLOG_UREL
sl@0
    36
	#ifndef _DEBUG
sl@0
    37
		#ifndef __FLOG_ACTIVE
sl@0
    38
			#define __FLOG_ACTIVE
sl@0
    39
		#endif //__FLOG_ACTIVE
sl@0
    40
	#endif //_DEBUG
sl@0
    41
#endif //__FLOG_UREL
sl@0
    42
sl@0
    43
sl@0
    44
#define __FLOG_DECLARATION_MEMBER_SIZE   TInt32
sl@0
    45
sl@0
    46
sl@0
    47
// constants available to clients in either build so they can be used in classes
sl@0
    48
#include <e32base.h>
sl@0
    49
sl@0
    50
const TInt KLogBufferSize=200;		///< Any attempt to write logs longer than KLogBufferSize and the client string will be truncated.
sl@0
    51
const TInt KMaxHexDumpWidth = 150;	///< If the client asks to hexdump a string longer than this, the string will be truncated
sl@0
    52
const TInt KMaxTagLength = 16;		///< Maximum length of the client tag strings. Exceeding this causes the tag to be truncated.
sl@0
    53
sl@0
    54
sl@0
    55
#if defined __FLOG_ACTIVE
sl@0
    56
sl@0
    57
// make sure clients using this in release mode get a warning.
sl@0
    58
#if (!defined __FLOG_SUPPRESS_REL_WARNING) && (!defined _DEBUG)
sl@0
    59
#pragma message ("WARNING: Use of comms-infras/CommsDebugUtility.h in active mode in a release build")
sl@0
    60
#endif
sl@0
    61
sl@0
    62
sl@0
    63
const TInt KMaxMediaSettingLength = 0x20; ///< Maximum expected length for media setting tag
sl@0
    64
sl@0
    65
sl@0
    66
_LIT(KFloggerPanic, "Comsdbgutil.dll");		///< The text which defines any flogger panic. Sent to User::Panic.
sl@0
    67
sl@0
    68
/**
sl@0
    69
 * Panic codes
sl@0
    70
 *
sl@0
    71
 * @publishedAll
sl@0
    72
 * @deprecated Migrate to Open System Trace Instrumentation API instead
sl@0
    73
 * @note The order of the panic numbers should not be changed.
sl@0
    74
 *       New panic codes must be added at the end of this enum.
sl@0
    75
 *       All panic codes are assigned to values to ease debugging.
sl@0
    76
 */
sl@0
    77
enum TFloggerPanics
sl@0
    78
	{
sl@0
    79
	ESetLogTagsNotCalled = 0,   ///< Attempt by client to write without first setting the ID tags
sl@0
    80
	EInternalConsistencyFault = 1   ///< A situation has arisen which indicates a programming fault in flogger since the situation should not be caused by any external inputs
sl@0
    81
	};
sl@0
    82
sl@0
    83
/**
sl@0
    84
 * Logging Mode codes
sl@0
    85
 *
sl@0
    86
 * @publishedAll
sl@0
    87
 * @deprecated As of version 8.0 the logging modes are deprecated due to the introduction
sl@0
    88
 *             of a single log file. Appent mode is the default for all write operations,
sl@0
    89
 *             while Overwrite can be achieved using new __FLOG_CLEAR macro, or ClearLog API.
sl@0
    90
 */
sl@0
    91
enum TFileLoggingMode 
sl@0
    92
	{
sl@0
    93
	EFileLoggingModeUnknown =0,  ///< Deprecated - has no effect
sl@0
    94
	EFileLoggingModeAppend,      ///< Deprecated - has no effect
sl@0
    95
	EFileLoggingModeOverwrite,    ///< Deprecated - has no effect
sl@0
    96
	EFileLoggingModeAppendRaw,	 ///< Deprecated - has no effect
sl@0
    97
	EFileLoggingModeOverwriteRaw ///< Deprecated - has no effect	
sl@0
    98
	};
sl@0
    99
sl@0
   100
class RFileLoggerBody;
sl@0
   101
sl@0
   102
sl@0
   103
/**
sl@0
   104
 * Flogger - File and Serial Logger client interface 
sl@0
   105
 *
sl@0
   106
 * @publishedAll
sl@0
   107
 * @deprecated Migrate to Open System Trace Instrumentation API instead
sl@0
   108
 * 
sl@0
   109
 * This class is responsible for providing all functions
sl@0
   110
 * clients require of the flogger system. It is preferred, though,
sl@0
   111
 * that clients use the provided macros which refer to these API's
sl@0
   112
 * so that all logging code is governed by the global __FLOG_ACTIVE
sl@0
   113
 * macro setting. The macro's are not currently documented using
sl@0
   114
 * doxygen - you will need to consult the flogger user guide instead.
sl@0
   115
 * RFileLogger is the only exported interface for the flogger component.
sl@0
   116
 */
sl@0
   117
class RFileLogger
sl@0
   118
	{
sl@0
   119
public:
sl@0
   120
	IMPORT_C RFileLogger();
sl@0
   121
	IMPORT_C ~RFileLogger();
sl@0
   122
	IMPORT_C TVersion Version() const;
sl@0
   123
	IMPORT_C TInt Connect();
sl@0
   124
	IMPORT_C void SetDateAndTime(TBool aUseDate,TBool aUseTime);	//Deprecated. Does nothing.
sl@0
   125
	IMPORT_C void CreateLog(const TDesC& aSubsystem, const TDesC& aComponent, TFileLoggingMode /*aMode*/);	//Deprecated. Use SetLogTags instead.
sl@0
   126
	IMPORT_C void CloseLog();	//Deprecated.
sl@0
   127
	
sl@0
   128
	IMPORT_C static void Write(const TDesC& aSubsystem, const TDesC& aComponent, TFileLoggingMode /*aMode*/, const TDesC16& aText);   // Removed
sl@0
   129
	IMPORT_C static void WriteFormat(const TDesC& aSubsystem, const TDesC& aComponent, TFileLoggingMode aMode, TRefByValue<const TDesC16> aFmt,...); // Removed
sl@0
   130
	IMPORT_C static void WriteFormat(const TDesC& aSubsystem, const TDesC& aComponent, TFileLoggingMode /*aMode*/, TRefByValue<const TDesC16> aFmt, VA_LIST& aList);  // Removed
sl@0
   131
	IMPORT_C static void Write(const TDesC& aSubsystem, const TDesC& aComponent, TFileLoggingMode /*aMode*/, const TDesC8& aText);  // Removed
sl@0
   132
	IMPORT_C static void WriteFormat(const TDesC& aSubsystem, const TDesC& aComponent, TFileLoggingMode aMode, TRefByValue<const TDesC8> aFmt,...);  // Removed
sl@0
   133
	IMPORT_C static void WriteFormat(const TDesC& aSubsystem, const TDesC& aComponent, TFileLoggingMode /*aMode*/, TRefByValue<const TDesC8> aFmt, VA_LIST& aList);  // Removed
sl@0
   134
	IMPORT_C static void HexDump(const TDesC& aSubsystem, const TDesC& aComponent, TFileLoggingMode /*aMode*/, const TText* aHeader, const TText* aMargin, const TUint8* aPtr, TInt aLen);  // Removed
sl@0
   135
sl@0
   136
	IMPORT_C static void Write(const TDesC8& aSubsystem, const TDesC8& aComponent, const TDesC16& aText);
sl@0
   137
	IMPORT_C static void WriteFormat(const TDesC8& aSubsystem, const TDesC8& aComponent, const TRefByValue<const TDesC16> aFmt,...);
sl@0
   138
	IMPORT_C static void WriteFormat(const TDesC8& aSubsystem, const TDesC8& aComponent, const TRefByValue<const TDesC16> aFmt, VA_LIST& aList);
sl@0
   139
	IMPORT_C static void Write(const TDesC8& aSubsystem, const TDesC8& aComponent, const TDesC8& aText);
sl@0
   140
	IMPORT_C static void WriteFormat(const TDesC8& aSubsystem, const TDesC8& aComponent, const TRefByValue<const TDesC8> aFmt,...);
sl@0
   141
	IMPORT_C static void WriteFormat(const TDesC8& aSubsystem, const TDesC8& aComponent, const TRefByValue<const TDesC8> aFmt, VA_LIST& aList);
sl@0
   142
	IMPORT_C static void HexDump(const TDesC8& aSubsystem, const TDesC8& aComponent, const TDesC8& aData, const TDesC8& aHeader = TPtrC8(NULL,0));
sl@0
   143
	
sl@0
   144
	IMPORT_C void Write(const TDesC16& aText);
sl@0
   145
	IMPORT_C void WriteFormat(TRefByValue<const TDesC16> aFmt,...);
sl@0
   146
	IMPORT_C void WriteFormat(TRefByValue<const TDesC16> aFmt, VA_LIST& aList);
sl@0
   147
	IMPORT_C void Write(const TDesC8& aText);
sl@0
   148
	IMPORT_C void WriteFormat(TRefByValue<const TDesC8> aFmt,...);
sl@0
   149
	IMPORT_C void WriteFormat(TRefByValue<const TDesC8> aFmt, VA_LIST& aList);
sl@0
   150
	IMPORT_C void WriteBinary(const TDesC8& aData);
sl@0
   151
	IMPORT_C void HexDump(const TText* aHeader, const TText* aMargin, const TUint8* aPtr, TInt aLen);
sl@0
   152
	IMPORT_C void HexDump(const TDesC8& aData, const TDesC8& aHeader = TPtrC8(NULL,0));
sl@0
   153
	
sl@0
   154
	IMPORT_C TInt LastError() const;	//Deprecated.
sl@0
   155
	IMPORT_C TBool LogValid() const;	//Deprecated.
sl@0
   156
	IMPORT_C void Close();
sl@0
   157
	IMPORT_C TInt ClearLog();
sl@0
   158
	IMPORT_C TInt SetLogTags(const TDesC8& aSubsystem, const TDesC8& aComponent);
sl@0
   159
	IMPORT_C TInt Handle() const;
sl@0
   160
	IMPORT_C TInt Share();
sl@0
   161
	IMPORT_C void __DbgShutDownServer();	//For testing purposes only
sl@0
   162
	IMPORT_C void __DbgSetHeapFailure(TInt aFailAfter);
sl@0
   163
private:
sl@0
   164
	TInt DoConnect();
sl@0
   165
	TInt DoSetLogTags(const TDesC8& aSubsystem, const TDesC8& aComponent);
sl@0
   166
	void DoWrite(const TDesC8& aBuf);
sl@0
   167
	void DoWriteFormat(TRefByValue<const TDesC16> aFmt, VA_LIST& aList);
sl@0
   168
	void DoWriteFormat(TRefByValue<const TDesC8> aFmt, VA_LIST& aList);
sl@0
   169
	void DoSendStaticWrite(const TDesC8& aDir, const TDesC8& aName, const TDesC8& aBuf);
sl@0
   170
	static void DoStaticWrite(const TDesC8& aDir, const TDesC8& aName, const TDesC8& aBuf);
sl@0
   171
	static void DoStaticWriteFormat(const TDesC8& aDir, const TDesC8& aName, const TRefByValue<const TDesC16> aFmt, VA_LIST& aList);
sl@0
   172
	static void DoStaticWriteFormat(const TDesC8& aDir, const TDesC8& aName, const TRefByValue<const TDesC8> aFmt, VA_LIST& aList);
sl@0
   173
	void DoHexDump(const TText* aHeader, const TText* aMargin, const TUint8* aPtr, TInt aLen);
sl@0
   174
	void DoHexDump(const TDesC8& aData, const TDesC8& aHeader, const TDesC8& aMargin);
sl@0
   175
	TBool IsLogging();
sl@0
   176
	RFileLogger& operator=(const RFileLogger& aLogger);	//Outlaw copying RFileLogger objects.
sl@0
   177
	RFileLogger(const RFileLogger& aLogger); //Outlaw copy constructor
sl@0
   178
private:
sl@0
   179
	RFileLoggerBody* iLoggerBody;   ///< Reference to all the data the client interface requires. This keeps the class size small and less likely to change in size.
sl@0
   180
	};
sl@0
   181
sl@0
   182
sl@0
   183
// Consult the How-to/User Guide for how to use these macros
sl@0
   184
sl@0
   185
// Sundry Logging Macros
sl@0
   186
sl@0
   187
#define __FLOG_DECLARATION_MEMBER_MUTABLE  mutable RFileLogger __logger__
sl@0
   188
sl@0
   189
#define __FLOG_DECLARATION_MEMBER		   RFileLogger __logger__
sl@0
   190
sl@0
   191
#define __FLOG_DECLARATION_VARIABLE		   RFileLogger __logger__
sl@0
   192
sl@0
   193
#define __FLOG_OPEN(subsys,compnt)		__logger__.Connect();\
sl@0
   194
										__logger__.SetLogTags(subsys,compnt)
sl@0
   195
sl@0
   196
#define __FLOG_OPENC(subsys,compnt)		__logger__.Connect();\
sl@0
   197
										__logger__.SetLogTags(subsys,compnt);\
sl@0
   198
										CleanupClosePushL(__logger__)
sl@0
   199
sl@0
   200
#define __FLOG_CLOSE					__logger__.Close()
sl@0
   201
sl@0
   202
#define __FLOG_CLOSE_CLEANUP			CleanupStack::PopAndDestroy(&__logger__)
sl@0
   203
sl@0
   204
#define __FLOG_CLEAR					__logger__.ClearLog()
sl@0
   205
sl@0
   206
#define __FLOG_SET_TAGS(subsys,compnt)	__logger__.SetLogTags(subsys,compnt)
sl@0
   207
sl@0
   208
#define __FLOG_STMT(text) text
sl@0
   209
sl@0
   210
// Connected Output Logging Macros
sl@0
   211
sl@0
   212
#define __FLOG_0(text)					__logger__.Write(text)
sl@0
   213
sl@0
   214
#define __FLOG_1(text,a)				__logger__.WriteFormat(text,a)
sl@0
   215
sl@0
   216
#define __FLOG_2(text,a,b)				__logger__.WriteFormat(text,a,b)
sl@0
   217
sl@0
   218
#define __FLOG_3(text,a,b,c)			__logger__.WriteFormat(text,a,b,c)
sl@0
   219
sl@0
   220
#define __FLOG_4(text,a,b,c,d)			__logger__.WriteFormat(text,a,b,c,d)
sl@0
   221
sl@0
   222
#define __FLOG_5(text,a,b,c,d,e)		__logger__.WriteFormat(text,a,b,c,d,e)
sl@0
   223
sl@0
   224
#define __FLOG_6(text,a,b,c,d,e,f)		__logger__.WriteFormat(text,a,b,c,d,e,f)
sl@0
   225
sl@0
   226
#define __FLOG_7(text,a,b,c,d,e,f,g)	__logger__.WriteFormat(text,a,b,c,d,e,f,g)
sl@0
   227
sl@0
   228
#define __FLOG_8(text,a,b,c,d,e,f,g,h)	__logger__.WriteFormat(text,a,b,c,d,e,f,g,h)
sl@0
   229
sl@0
   230
#define __FLOG_9(text,a,b,c,d,e,f,g,h,i)	__logger__.WriteFormat(text,a,b,c,d,e,f,g,h,i)
sl@0
   231
sl@0
   232
#define __FLOG(text)						__logger__.Write(text)
sl@0
   233
sl@0
   234
#define __FLOG_VA(args)						__logger__.WriteFormat args
sl@0
   235
sl@0
   236
#define __FLOG_HEXDUMP(args)				__logger__.HexDump args
sl@0
   237
sl@0
   238
#define __FLOG_BINARY(data)					__logger__.WriteBinary(data)
sl@0
   239
sl@0
   240
// Static Output Logging Macros
sl@0
   241
#define __FLOG_STATIC0(subsys,compnt,text)						RFileLogger::Write(subsys,compnt, text)
sl@0
   242
sl@0
   243
#define __FLOG_STATIC1(subsys,compnt,text,a)					RFileLogger::WriteFormat(subsys,compnt, text,a)
sl@0
   244
sl@0
   245
#define __FLOG_STATIC2(subsys,compnt,text,a,b)					RFileLogger::WriteFormat(subsys,compnt, text,a,b)
sl@0
   246
sl@0
   247
#define __FLOG_STATIC3(subsys,compnt,text,a,b,c)				RFileLogger::WriteFormat(subsys,compnt, text,a,b,c)
sl@0
   248
sl@0
   249
#define __FLOG_STATIC4(subsys,compnt,text,a,b,c,d)				RFileLogger::WriteFormat(subsys,compnt, text,a,b,c,d)
sl@0
   250
sl@0
   251
#define __FLOG_STATIC5(subsys,compnt,text,a,b,c,d,e)			RFileLogger::WriteFormat(subsys,compnt, text,a,b,c,d,e)
sl@0
   252
sl@0
   253
#define __FLOG_STATIC6(subsys,compnt,text,a,b,c,d,e,f)			RFileLogger::WriteFormat(subsys,compnt, text,a,b,c,d,e,f)
sl@0
   254
sl@0
   255
#define __FLOG_STATIC7(subsys,compnt,text,a,b,c,d,e,f,g)		RFileLogger::WriteFormat(subsys,compnt, text,a,b,c,d,e,f,g)
sl@0
   256
sl@0
   257
#define __FLOG_STATIC8(subsys,compnt,text,a,b,c,d,e,f,g,h)		RFileLogger::WriteFormat(subsys,compnt, text,a,b,c,d,e,f,g,h)
sl@0
   258
sl@0
   259
#define __FLOG_STATIC9(subsys,compnt,text,a,b,c,d,e,f,g,h,i)	RFileLogger::WriteFormat(subsys,compnt, text,a,b,c,d,e,f,g,h,i)
sl@0
   260
sl@0
   261
#define __FLOG_STATIC(subsys,compnt,text)						RFileLogger::WriteFormat(subsys,compnt, text)
sl@0
   262
sl@0
   263
#define __FLOG_STATIC_VA(args)									RFileLogger::WriteFormat args
sl@0
   264
sl@0
   265
#define __FLOG_STATIC_HEXDUMP(args)								RFileLogger::HexDump args
sl@0
   266
sl@0
   267
sl@0
   268
sl@0
   269
// Line below is used to check that RFileLogger stays the same size as
sl@0
   270
// __FLOG_DECLARATION_MEMBER_SIZE. If the RFileLogger object ever changes size,
sl@0
   271
// the line below will cause the compiler to throw an error. __FLOG_DECLARATION_MEMBER_SIZE
sl@0
   272
// should then be changed accordingly.
sl@0
   273
const TInt KCheckRFileLoggerIsCorrectSize = 1/(sizeof(RFileLogger)==sizeof(__FLOG_DECLARATION_MEMBER_SIZE));
sl@0
   274
sl@0
   275
sl@0
   276
sl@0
   277
#else
sl@0
   278
// Begin declarations for when Flogger is NOT to be used.
sl@0
   279
// This declares all macros to be void and the class to be replaced with a stub.
sl@0
   280
// This will result in Flogger only requiring 32 bits for each component which uses it.
sl@0
   281
sl@0
   282
// Consult the How-to/User Guide for how to use these macros
sl@0
   283
sl@0
   284
// Sundry Logging Macros
sl@0
   285
sl@0
   286
#define __FLOG_DECLARATION_MEMBER_MUTABLE	__FLOG_DECLARATION_MEMBER_SIZE __noLogger__; \
sl@0
   287
											inline void useNoLogger() { __noLogger__ = 0; }
sl@0
   288
sl@0
   289
#define __FLOG_DECLARATION_MEMBER			__FLOG_DECLARATION_MEMBER_SIZE __noLogger__; \
sl@0
   290
											inline void useNoLogger() { __noLogger__ = 0; }
sl@0
   291
sl@0
   292
#define __FLOG_DECLARATION_VARIABLE
sl@0
   293
sl@0
   294
#define __FLOG_OPEN(subsys,compnt)
sl@0
   295
sl@0
   296
#define __FLOG_OPENC(subsys,compnt)
sl@0
   297
sl@0
   298
#define __FLOG_CLOSE
sl@0
   299
sl@0
   300
#define __FLOG_CLOSE_CLEANUP
sl@0
   301
sl@0
   302
#define __FLOG_HEXDUMP(args)
sl@0
   303
sl@0
   304
#define __FLOG_CLEAR					
sl@0
   305
sl@0
   306
#define __FLOG_SET_TAGS(subsys,compnt)		
sl@0
   307
sl@0
   308
sl@0
   309
#define __FLOG_STMT(text)
sl@0
   310
sl@0
   311
sl@0
   312
// Connected Output Logging Macros
sl@0
   313
sl@0
   314
#define __FLOG_0(text)
sl@0
   315
sl@0
   316
#define __FLOG_1(text,a)
sl@0
   317
sl@0
   318
#define __FLOG_2(text,a,b)
sl@0
   319
sl@0
   320
#define __FLOG_3(text,a,b,c)
sl@0
   321
sl@0
   322
#define __FLOG_4(text,a,b,c,d)
sl@0
   323
sl@0
   324
#define __FLOG_5(text,a,b,c,d,e)
sl@0
   325
sl@0
   326
#define __FLOG_6(text,a,b,c,d,e,f)
sl@0
   327
sl@0
   328
#define __FLOG_7(text,a,b,c,d,e,f,g)
sl@0
   329
sl@0
   330
#define __FLOG_8(text,a,b,c,d,e,f,g,h)
sl@0
   331
sl@0
   332
#define __FLOG_9(text,a,b,c,d,e,f,g,h,i)
sl@0
   333
sl@0
   334
#define __FLOG(text)
sl@0
   335
sl@0
   336
#define __FLOG_VA(args)
sl@0
   337
sl@0
   338
#define __FLOG_BINARY(data)	
sl@0
   339
sl@0
   340
// Static Output Logging Macros
sl@0
   341
#define __FLOG_STATIC0(subsys,compnt,text)		
sl@0
   342
sl@0
   343
#define __FLOG_STATIC1(subsys,compnt,text,a)		
sl@0
   344
sl@0
   345
#define __FLOG_STATIC2(subsys,compnt,text,a,b)		
sl@0
   346
sl@0
   347
#define __FLOG_STATIC3(subsys,compnt,text,a,b,c)	
sl@0
   348
sl@0
   349
#define __FLOG_STATIC4(subsys,compnt,text,a,b,c,d)		
sl@0
   350
sl@0
   351
#define __FLOG_STATIC5(subsys,compnt,text,a,b,c,d,e)	
sl@0
   352
sl@0
   353
#define __FLOG_STATIC6(subsys,compnt,text,a,b,c,d,e,f)		
sl@0
   354
sl@0
   355
#define __FLOG_STATIC7(subsys,compnt,text,a,b,c,d,e,f,g)	
sl@0
   356
sl@0
   357
#define __FLOG_STATIC8(subsys,compnt,text,a,b,c,d,e,f,g,h)	
sl@0
   358
sl@0
   359
#define __FLOG_STATIC9(subsys,compnt,text,a,b,c,d,e,f,g,h,i)	
sl@0
   360
sl@0
   361
#define __FLOG_STATIC(subsys,compnt,text)
sl@0
   362
sl@0
   363
#define __FLOG_STATIC_VA(args)
sl@0
   364
sl@0
   365
#define __FLOG_STATIC_HEXDUMP(args)		
sl@0
   366
sl@0
   367
sl@0
   368
#endif
sl@0
   369
sl@0
   370
sl@0
   371
sl@0
   372
sl@0
   373
sl@0
   374
sl@0
   375
#endif // __COMMSDEBUGUTILITY_H__