--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/headsetsimulator/core/inc/debug.h Wed Sep 15 15:59:44 2010 +0200
@@ -0,0 +1,187 @@
+/*
+ * Component Name: Headset Simulator
+ * Author: Comarch S.A.
+ * Version: 1.0
+ * Copyright (c) 2010 Comarch S.A.
+ *
+ * This Software is submitted by Comarch S.A. to Symbian Foundation Limited on
+ * the basis of the Member Contribution Agreement entered between Comarch S.A.
+ * and Symbian Foundation Limited on 5th June 2009 (“Agreement”) and may be
+ * used only in accordance with the terms and conditions of the Agreement.
+ * Any other usage, duplication or redistribution of this Software is not
+ * allowed without written permission of Comarch S.A.
+ *
+ */
+
+#ifndef HS_LOGGING_H
+#define HS_LOGGING_H
+
+#include <e32base.h>
+#include "debugconfig.h"
+
+enum TPanic
+{
+ EInvalidNullState = 1,
+};
+
+#ifdef PRJ_ENABLE_TRACE
+
+#ifdef PRJ_FILE_TRACE
+#include <flogger.h>
+#else
+#include <e32debug.h>
+#endif
+
+NONSHARABLE_CLASS(TOverflowTruncate16) : public TDes16Overflow
+{
+public:
+ void Overflow( TDes16& /*aDes*/)
+ {
+ }
+};
+
+NONSHARABLE_CLASS(TOverflowTruncate8) : public TDes8Overflow
+{
+public:
+ void Overflow( TDes8& /*aDes*/)
+ {
+ }
+};
+
+inline void Trace( TRefByValue <const TDesC16> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START(list,aFmt);
+#ifdef PRJ_FILE_TRACE
+ RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list);
+#else
+ RBuf16 theFinalString;
+ theFinalString.Create( KMaxLogLineLength );
+ theFinalString.Append( KTracePrefix16 );
+ TOverflowTruncate16 overflow;
+ theFinalString.AppendFormatList( aFmt, list, &overflow );
+ RDebug::Print( theFinalString );
+ theFinalString.Close();
+#endif
+ }
+
+inline void Trace( TRefByValue <const TDesC8> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START(list, aFmt);
+#ifdef PRJ_FILE_TRACE
+ RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list);
+#else
+ TOverflowTruncate8 overflow;
+ RBuf8 buf8;
+ buf8.Create( KMaxLogLineLength );
+ buf8.Append( KTracePrefix8 );
+ buf8.AppendFormatList( aFmt, list, &overflow );
+
+ RBuf16 buf16;
+ buf16.Create( KMaxLogLineLength );
+ buf16.Copy( buf8 );
+ TRefByValue <const TDesC> tmpFmt( _L("%S") );
+ RDebug::Print( tmpFmt, &buf16 );
+ buf8.Close();
+ buf16.Close();
+#endif
+ }
+
+inline void TracePanic( char* aFile, TInt aLine, TInt aPanicCode,
+ const TDesC& aPanicCategory )
+ {
+ TPtrC8 fullFileName( (const TUint8*) aFile );
+ TPtrC8 fileName( fullFileName.Ptr() + fullFileName.LocateReverse( '\\' )
+ + 1 );
+ RBuf8 buf;
+ buf.Create( KMaxLogLineLength );
+ buf.Append( KPanicPrefix8 );
+ buf.AppendFormat( _L8("%d at line %d in file %S"), aPanicCode, aLine,
+ &fileName );
+ Trace( buf );
+ buf.Close();
+ User::Panic( aPanicCategory, aPanicCode );
+ }
+
+inline void TraceLeave( char* aFile, TInt aLine, TInt aReason )
+ {
+ TPtrC8 fullFileName( (const TUint8*) aFile );
+ TPtrC8 fileName( fullFileName.Ptr() + fullFileName.LocateReverse( '\\' )
+ + 1 );
+ RBuf8 buf;
+ buf.Create( KMaxLogLineLength );
+ buf.Append( KLeavePrefix8 );
+ buf.AppendFormat( _L8("%d at line %d in file %S"), aReason, aLine,
+ &fileName );
+ Trace( buf );
+ buf.Close();
+ User::Leave( aReason );
+ }
+
+#define TRACE_INFO(p) {if(KTraceMask & KPRINTINFO) Trace p;}
+
+#define TRACE_ERROR(p) {if(KTraceMask & KPRINTERROR) Trace p;}
+
+#define TRACE_STATE(p) {if(KTraceMask & KPRINTSTATE) Trace p;}
+
+#define TRACE_WARNING(p) {if(KTraceMask & KPRINTWARNING) Trace p;}
+
+#define TRACE_INFO_SEG(p) {if(KTraceMask & KPRINTINFO) p;}
+
+#define TRACE_ASSERT(GUARD, CODE) {if (!(GUARD)) TracePanic(__FILE__, __LINE__, CODE, KPanicCategory);}
+
+#define PANIC(CODE) TracePanic(__FILE__, __LINE__, CODE, KPanicCategory)
+
+#define LEAVE_IF_ERROR(REASON) {if (REASON) TraceLeave(__FILE__, __LINE__, REASON);}
+
+#define LEAVE_IF_NULL(PTR) {if (!PTR) TraceLeave(__FILE__, __LINE__, KErrGeneral);}
+
+#define LEAVE(REASON) {TraceLeave(__FILE__, __LINE__, REASON);}
+
+#define TRACE_STATIC_FUNC_ENTRY {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncEntryFormat8, &ptr8);}}
+
+#define TRACE_FUNC_ENTRY {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncEntryThisFormat8, &ptr8, this);}}
+
+#define TRACE_FUNC_EXIT {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncExitFormat8, &ptr8);}}
+
+#define TRACE_STATIC_FUNC {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncFormat8, &ptr8);}}
+
+#define TRACE_FUNC {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncThisFormat8, &ptr8, this);}}
+
+#define RETURN_IF_ERR(ERR) {if(ERR) {TPtrC8 ptr8((TUint8*)__FILE__); Trace(_L8(" RETURN %d at file %S line %d"), ERR, &ptr8, __LINE__); return ERR;}}
+
+#else // PRJ_ENABLE_TRACE not defined
+#define TRACE_INFO(p)
+
+#define TRACE_ERROR(p)
+
+#define TRACE_STATE(p)
+
+#define TRACE_WARNING(p)
+
+#define TRACE_INFO_SEG(p)
+
+#define TRACE_ASSERT(GUARD, CODE)
+
+#define PANIC(CODE) {User::Panic(KPanicCategory, CODE);}
+
+#define LEAVE_IF_ERROR(REASON) {static_cast<void>(User::LeaveIfError(REASON));}
+
+#define LEAVE_IF_NULL(PTR) {static_cast<void>(User::LeaveIfNull(PTR));}
+
+#define LEAVE(REASON) {static_cast<void>(User::Leave(REASON));}
+
+#define TRACE_STATIC_FUNC_ENTRY
+
+#define TRACE_FUNC_ENTRY
+
+#define TRACE_FUNC_EXIT
+
+#define TRACE_STATIC_FUNC
+
+#define TRACE_FUNC
+
+#define RETURN_IF_ERR(ERR) {if(ERR) return ERR;}
+#endif // PRJ_ENABLE_TRACE
+#endif // HS_LOGGING_H