convergedconnectionhandler/inc/cchlogger.h
branchRCL_3
changeset 22 d38647835c2e
parent 0 a4daefaec16c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/convergedconnectionhandler/inc/cchlogger.h	Wed Sep 01 12:29:57 2010 +0100
@@ -0,0 +1,176 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Provides macros for logging
+*
+*/
+
+
+
+#ifndef __CCHLOGGER_H__
+#define __CCHLOGGER_H__
+
+// INCLUDES
+#include <e32def.h>
+#include <e32svr.h>
+#include <e32base.h>
+#include <e32std.h>
+
+// CONSTS
+const TInt KMaxLogLineLength = 512;
+_LIT8( KModuleName8, "CCH" );
+
+//----------------------------------------------------------------------------
+//  USER LOGGING SETTINGS
+//----------------------------------------------------------------------------
+
+#ifndef _DEBUG
+
+/***************************
+ * Logging method variants:
+ *   0 = No logging
+ *   1 = Flogger
+ *   2 = RDebug
+ ***************************/ 
+
+#define CCH_LOGGING_METHOD      0   // UREL BUILD
+
+#else
+
+#ifdef __WINS__
+#define CCH_LOGGING_METHOD      2   // UDEB BUILD, WINS
+#else
+#define CCH_LOGGING_METHOD      2   // UDEB BUILD, HW
+#endif // __WINS__
+
+#ifdef TRACE_ENTRY_EXIT_POINT // MACRO IN MMP FILE
+    #define TRACE_ENTRY_POINT TRACE_FUNC_ENTRY_DEBUG_PRINT
+    #define TRACE_EXIT_POINT TRACE_FUNC_EXIT_DEBUG_PRINT    
+#endif
+
+#endif // _DEBUG
+
+// [module_name]_ENTRY_POINT;[thread_id];[function_name];[filename]:[line_number];
+_LIT8( KFuncEntryFormat8, "%S_ENTRY;%d;%S;%S:%d;");
+// [module_name]_EXIT_POINT;[thread_id];[function_name];[filename]:[line_number];
+_LIT8( KFuncExitFormat8,  "%S_EXIT_;%d;%S;%S:%d;");
+//-----------------------------------------------------------------------------
+//  LOGGING SETTINGS (DO NOT EDIT)
+//-----------------------------------------------------------------------------
+
+#if CCH_LOGGING_METHOD == 1      // Flogger
+
+#include <flogger.h>
+_LIT(KCCHLogFolder,"CCH");
+_LIT(KCCHLogFile,"CCHLOG.TXT");
+
+#elif CCH_LOGGING_METHOD == 2    // RDebug
+//Check if entry exit trace should be activated 
+
+
+
+
+#endif
+
+
+NONSHARABLE_CLASS( TOverflowTruncate8 ) : public TDes8Overflow
+    {
+
+public:
+    void Overflow( TDes8& /*aDes*/ ) {}
+    };
+
+//Trace macro 8bit
+inline void TraceDebugPrint( TRefByValue<const TDesC8> aFmt, ...)
+    {
+    VA_LIST list;
+    VA_START( list, aFmt );
+        
+    TOverflowTruncate8 overflow;
+    TBuf8<KMaxLogLineLength> buf8;
+    buf8.AppendFormatList( aFmt, list, &overflow );
+    TBuf16<KMaxLogLineLength> buf16( buf8.Length() );
+    buf16.Copy( buf8 );
+    TRefByValue<const TDesC> tmpFmt( _L("%S") );
+    RDebug::Print( tmpFmt, &buf16 );
+    }
+
+//-----------------------------------------------------------------------------
+//  LOGGING MACROs (DO NOT EDIT)
+//
+//  USE THESE MACROS IN YOUR CODE !
+//-----------------------------------------------------------------------------
+
+#if CCH_LOGGING_METHOD == 1      // Flogger
+
+#define CCHLOGSTRING(AA)           { RFileLogger::Write(KCCHLogFolder(),KCCHLogFile(),EFileLoggingModeAppend, _L(AA) ); }
+#define CCHLOGSTRING2(AA,BB)       { RFileLogger::WriteFormat(KCCHLogFolder(),KCCHLogFile(),EFileLoggingModeAppend,TRefByValue<const TDesC>(_L(AA)),BB); }
+#define CCHLOGSTRING3(AA,BB,CC)    { RFileLogger::WriteFormat(KCCHLogFolder(),KCCHLogFile(),EFileLoggingModeAppend,TRefByValue<const TDesC>(_L(AA)),BB,CC); }
+#define CCHLOGSTRING4(AA,BB,CC,DD) { RFileLogger::WriteFormat(KCCHLogFolder(),KCCHLogFile(),EFileLoggingModeAppend,TRefByValue<const TDesC>(_L(AA)),BB,CC,DD); }
+
+#elif CCH_LOGGING_METHOD == 2    // RDebug
+
+#define CCHLOGSTRING(AA)           { RDebug::Print(_L(AA)); }
+#define CCHLOGSTRING2(AA,BB)       { RDebug::Print(_L(AA),BB); }
+#define CCHLOGSTRING3(AA,BB,CC)    { RDebug::Print(_L(AA),BB,CC); }
+#define CCHLOGSTRING4(AA,BB,CC,DD) { RDebug::Print(_L(AA),BB,CC,DD); }
+
+
+
+#else   // CCH_LOGGING_METHOD == 0 or invalid -> Disable loggings
+
+#define CCHLOGSTRING(AA)           // Example: CCHLOGSTRING("Test");
+#define CCHLOGSTRING2(AA,BB)       // Example: CCHLOGSTRING("Test %d", aValue);
+#define CCHLOGSTRING3(AA,BB,CC)    // Example: CCHLOGSTRING("Test %d %d", aValue1, aValue2);
+#define CCHLOGSTRING4(AA,BB,CC,DD) // Example: CCHLOGSTRING("Test %d %d %d", aValue1, aValue2, aValue3);
+
+#define TRACE_ENTRY_POINT
+#define TRACE_EXIT_POINT
+    
+#endif  // CCH_LOGGING_METHOD
+
+#ifdef TRACE_ENTRY_EXIT_POINT // MACRO IN MMP FILE
+    #ifdef __ARMCC__
+        #define TRACE_FUNC_ENTRY_DEBUG_PRINT                                                                \
+        {                                                                                                   \
+            const TUint threadId( RThread().Id() );                                                         \
+            TPtrC8 ptr8File( (TUint8*)__MODULE__ );                                                         \
+            TPtrC8 ptr8PF( (TUint8*)__PRETTY_FUNCTION__ );                                                  \
+            TraceDebugPrint( KFuncEntryFormat8, &KModuleName8, threadId, &ptr8PF, &ptr8File, __LINE__ );    \
+        }
+        #define TRACE_FUNC_EXIT_DEBUG_PRINT                                                                 \
+        {                                                                                                   \
+            const TUint threadId( RThread().Id() );                                                         \
+            TPtrC8 ptr8File( (TUint8*)__MODULE__ );                                                         \
+            TPtrC8 ptr8PF( (TUint8*)__PRETTY_FUNCTION__ );                                                  \
+            TraceDebugPrint( KFuncExitFormat8, &KModuleName8, threadId, &ptr8PF, &ptr8File, __LINE__ );     \
+        }
+    #else // __WINS__
+        #define TRACE_FUNC_ENTRY_DEBUG_PRINT                                                                \
+        {                                                                                                   \
+            const TUint threadId( RThread().Id() );                                                         \
+            TPtrC8 ptr8File( (TUint8*)__FILE__ );                                                           \
+            TPtrC8 ptr8PF( (TUint8*)__PRETTY_FUNCTION__ );                                                  \
+            TraceDebugPrint( KFuncEntryFormat8, &KModuleName8, threadId, &ptr8PF, &ptr8File, __LINE__ );    \
+        }
+        #define TRACE_FUNC_EXIT_DEBUG_PRINT                                                                 \
+        {                                                                                                   \
+            const TUint threadId( RThread().Id() );                                                         \
+            TPtrC8 ptr8File( (TUint8*)__FILE__ );                                                           \
+            TPtrC8 ptr8PF( (TUint8*)__PRETTY_FUNCTION__ );                                                  \
+            TraceDebugPrint( KFuncExitFormat8, &KModuleName8, threadId, &ptr8PF, &ptr8File, __LINE__ );     \
+        }           
+    #endif
+#endif
+
+#endif  // CCHLOGGER_H