localconnectivityservice/headset/inc/debug.h
author hgs
Thu, 04 Nov 2010 15:31:42 +0800
changeset 60 841f70763fbe
parent 29 3ae5cb0b4c02
permissions -rw-r--r--
201044_04
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     1
/*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     2
* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     3
* All rights reserved.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     8
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     9
* Initial Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    11
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    12
* Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    13
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    14
* Description:  Logging definition
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    15
 *
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    16
*/
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    17
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    18
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    19
#ifndef DEBUG_H
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    20
#define DEBUG_H
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    21
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    22
#include "debugconfig.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    23
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    24
#ifdef PRJ_ENABLE_TRACE
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    25
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    26
#ifdef PRJ_FILE_TRACE
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    27
#include <flogger.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    28
#else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    29
#include <e32debug.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    30
#endif
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    31
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    32
const TInt KMaxLogLineLength = 512;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    33
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    34
#define KPRINTERROR        0x00000001 // Tracing level: error
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    35
#define KPRINTINFO        0x00000002 // Tracing level: function trace
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    36
#define KPRINTSTATE        0x00000004 // Tracing level: state machine info
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    37
#define KPRINTWARNING   0x00000008 // Tracing level: warning
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    38
const TInt KTraceMask = KPRINTERROR | KPRINTINFO | KPRINTSTATE
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    39
        | KPRINTWARNING;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    40
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    41
NONSHARABLE_CLASS(TOverflowTruncate16) : public TDes16Overflow
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    42
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    43
public:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    44
    void Overflow( TDes16& /*aDes*/)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    45
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    46
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    47
    };
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    48
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    49
NONSHARABLE_CLASS(TOverflowTruncate8) : public TDes8Overflow
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    50
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    51
public:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    52
    void Overflow( TDes8& /*aDes*/)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    53
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    54
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    55
    };
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    56
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    57
inline void Trace( TRefByValue<const TDesC16> aFmt, ... )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    58
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    59
    VA_LIST list;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    60
    VA_START(list,aFmt);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    61
#ifdef PRJ_FILE_TRACE
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    62
    RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    63
#else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    64
    TBuf16<KMaxLogLineLength> theFinalString;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    65
    theFinalString.Append( KTracePrefix16 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    66
    TOverflowTruncate16 overflow;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    67
    theFinalString.AppendFormatList( aFmt, list, &overflow );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    68
    RDebug::Print( theFinalString );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    69
#endif
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    70
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    71
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    72
inline void Trace( TRefByValue<const TDesC8> aFmt, ... )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    73
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    74
    VA_LIST list;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    75
    VA_START(list, aFmt);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    76
#ifdef PRJ_FILE_TRACE
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    77
    RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    78
#else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    79
    TOverflowTruncate8 overflow;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    80
    TBuf8<KMaxLogLineLength> buf8;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    81
    buf8.Append( KTracePrefix8 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    82
    buf8.AppendFormatList( aFmt, list, &overflow );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    83
    TBuf16<KMaxLogLineLength> buf16( buf8.Length() );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    84
    buf16.Copy( buf8 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    85
    TRefByValue<const TDesC> tmpFmt( _L("%S"));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    86
    RDebug::Print( tmpFmt, &buf16 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    87
#endif
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    88
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    89
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    90
inline void TracePanic( char* aFile, TInt aLine, TInt aPanicCode,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    91
        const TDesC& aPanicCategory )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    92
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    93
    TPtrC8 fullFileName( (const TUint8*) aFile );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    94
    TPtrC8 fileName( fullFileName.Ptr() + fullFileName.LocateReverse( '\\' )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    95
            + 1 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    96
    TBuf8<KMaxLogLineLength> buf;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    97
    buf.Append( KPanicPrefix8 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    98
    buf.AppendFormat( _L8("%d at line %d in file %S"), aPanicCode, aLine, &fileName );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    99
    Trace( buf );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   100
    User::Panic( aPanicCategory, aPanicCode );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   101
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   102
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   103
inline void TraceLeave( char* aFile, TInt aLine, TInt aReason )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   104
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   105
    TPtrC8 fullFileName( (const TUint8*) aFile );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   106
    TPtrC8 fileName( fullFileName.Ptr() + fullFileName.LocateReverse( '\\' )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   107
            + 1 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   108
    TBuf8<KMaxLogLineLength> buf;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   109
    buf.Append( KLeavePrefix8 );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   110
    buf.AppendFormat( _L8("%d at line %d in file %S"), aReason, aLine, &fileName );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   111
    Trace( buf );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   112
    User::LeaveIfError( aReason );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   113
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   114
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   115
#define TRACE_INFO(p) {if(KTraceMask & KPRINTINFO) Trace p;}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   116
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   117
#define TRACE_ERROR(p) {if(KTraceMask & KPRINTERROR) Trace p;}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   118
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   119
#define TRACE_STATE(p) {if(KTraceMask & KPRINTSTATE) Trace p;}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   120
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   121
#define TRACE_WARNING(p) {if(KTraceMask & KPRINTWARNING) Trace p;}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   122
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   123
#define TRACE_INFO_SEG(p) {if(KTraceMask & KPRINTINFO) p;}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   124
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   125
#define TRACE_ASSERT(GUARD, CODE) {if (!(GUARD)) TracePanic(__FILE__, __LINE__, CODE, KPanicCategory);}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   126
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   127
#define PANIC(CODE) TracePanic(__FILE__, __LINE__, CODE, KPanicCategory)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   128
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   129
#define LEAVE_IF_ERROR(REASON) {if (REASON) TraceLeave(__FILE__, __LINE__, REASON);}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   130
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   131
#define LEAVE(REASON) {TraceLeave(__FILE__, __LINE__, REASON);}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   132
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   133
#define TRACE_FUNC_ENTRY {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncEntryFormat8, &ptr8);}}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   134
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   135
#define TRACE_FUNC_ENTRY_THIS {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncEntryThisFormat8, &ptr8, this);}}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   136
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   137
#define TRACE_FUNC_EXIT {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncExitFormat8, &ptr8);}}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   138
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   139
#define TRACE_FUNC {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncFormat8, &ptr8);}}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   140
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   141
#define TRACE_FUNC_THIS {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncThisFormat8, &ptr8, this);}}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   142
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   143
#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;}}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   144
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   145
#else // PRJ_ENABLE_TRACE not defined
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   146
#define TRACE_INFO(p)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   147
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   148
#define TRACE_ERROR(p)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   149
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   150
#define TRACE_STATE(p)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   151
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   152
#define TRACE_WARNING(p)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   153
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   154
#define TRACE_INFO_SEG(p)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   155
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   156
#define TRACE_ASSERT(GUARD, CODE)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   157
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   158
#define PANIC(CODE) {User::Panic(KPanicCategory, CODE);}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   159
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   160
#define LEAVE_IF_ERROR(REASON) {static_cast<void>(User::LeaveIfError(REASON));}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   161
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   162
#define LEAVE(REASON) {static_cast<void>(User::Leave(REASON));}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   163
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   164
#define TRACE_FUNC_ENTRY
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   165
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   166
#define TRACE_FUNC_ENTRY_THIS
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   167
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   168
#define TRACE_FUNC_EXIT
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   169
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   170
#define TRACE_FUNC
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   171
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   172
#define TRACE_FUNC_THIS
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   173
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   174
#define RETURN_IF_ERR(ERR) {if(ERR) return ERR;}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   175
#endif // PRJ_ENABLE_TRACE
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   176
#endif // PRJ_LOGGING_H