bluetoothengine/headsetsimulator/remotecontroller/inc/debug.h
author michal.sulewski
Wed, 15 Sep 2010 15:59:44 +0200
branchheadsetsimulator
changeset 60 90dbfc0435e3
permissions -rw-r--r--
source code commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
60
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     1
/*
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     2
 * Component Name: Headset Simulator
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     3
 * Author: Comarch S.A.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     4
 * Version: 1.0
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     5
 * Copyright (c) 2010 Comarch S.A.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     6
 *  
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     7
 * This Software is submitted by Comarch S.A. to Symbian Foundation Limited on 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     8
 * the basis of the Member Contribution Agreement entered between Comarch S.A. 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     9
 * and Symbian Foundation Limited on 5th June 2009 (“Agreement”) and may be 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    10
 * used only in accordance with the terms and conditions of the Agreement. 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    11
 * Any other usage, duplication or redistribution of this Software is not 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    12
 * allowed without written permission of Comarch S.A.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    13
 * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    14
 */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    15
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    16
#ifndef PRJ_LOGGING_H
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    17
#define PRJ_LOGGING_H
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    18
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    19
#include <e32base.h>
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    20
#include "debugconfig.h"
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    21
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    22
enum TPanic
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    23
{
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    24
    EInvalidNullState = 1,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    25
};
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    26
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    27
#ifdef PRJ_ENABLE_TRACE
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    28
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    29
#ifdef PRJ_FILE_TRACE
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    30
#include <flogger.h>
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    31
#else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    32
#include <e32debug.h>
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    33
#endif
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    34
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    35
NONSHARABLE_CLASS(TOverflowTruncate16) : public TDes16Overflow
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    36
{
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    37
public:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    38
    void Overflow( TDes16& /*aDes*/)
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    39
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    40
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    41
};
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    42
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    43
NONSHARABLE_CLASS(TOverflowTruncate8) : public TDes8Overflow
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    44
{
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    45
public:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    46
    void Overflow( TDes8& /*aDes*/)
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    47
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    48
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    49
};
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    50
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    51
inline void Trace( TRefByValue <const TDesC16> aFmt, ... )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    52
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    53
    VA_LIST list;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    54
    VA_START(list,aFmt);
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    55
#ifdef PRJ_FILE_TRACE
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    56
    RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list);
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    57
#else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    58
    RBuf16 theFinalString;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    59
    theFinalString.Create( KMaxLogLineLength );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    60
    theFinalString.Append( KTracePrefix16 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    61
    TOverflowTruncate16 overflow;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    62
    theFinalString.AppendFormatList( aFmt, list, &overflow );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    63
    RDebug::Print( theFinalString );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    64
    theFinalString.Close();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    65
#endif
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    66
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    67
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    68
inline void Trace( TRefByValue <const TDesC8> aFmt, ... )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    69
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    70
    VA_LIST list;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    71
    VA_START(list, aFmt);
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    72
#ifdef PRJ_FILE_TRACE
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    73
    RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list);
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    74
#else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    75
    TOverflowTruncate8 overflow;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    76
    RBuf8 buf8;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    77
    buf8.Create( KMaxLogLineLength );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    78
    buf8.Append( KTracePrefix8 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    79
    buf8.AppendFormatList( aFmt, list, &overflow );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    80
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    81
    RBuf16 buf16;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    82
    buf16.Create( KMaxLogLineLength );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    83
    buf16.Copy( buf8 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    84
    TRefByValue <const TDesC> tmpFmt( _L("%S") );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    85
    RDebug::Print( tmpFmt, &buf16 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    86
    buf8.Close();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    87
    buf16.Close();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    88
#endif
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    89
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    90
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    91
inline void TracePanic( char* aFile, TInt aLine, TInt aPanicCode,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    92
        const TDesC& aPanicCategory )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    93
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    94
    TPtrC8 fullFileName( (const TUint8*) aFile );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    95
    TPtrC8 fileName( fullFileName.Ptr() + fullFileName.LocateReverse( '\\' )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    96
            + 1 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    97
    RBuf8 buf;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    98
    buf.Create( KMaxLogLineLength );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    99
    buf.Append( KPanicPrefix8 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   100
    buf.AppendFormat( _L8("%d at line %d in file %S"), aPanicCode, aLine,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   101
            &fileName );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   102
    Trace( buf );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   103
    buf.Close();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   104
    User::Panic( aPanicCategory, aPanicCode );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   105
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   106
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   107
inline void TraceLeave( char* aFile, TInt aLine, TInt aReason )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   108
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   109
    TPtrC8 fullFileName( (const TUint8*) aFile );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   110
    TPtrC8 fileName( fullFileName.Ptr() + fullFileName.LocateReverse( '\\' )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   111
            + 1 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   112
    RBuf8 buf;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   113
    buf.Create( KMaxLogLineLength );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   114
    buf.Append( KLeavePrefix8 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   115
    buf.AppendFormat( _L8("%d at line %d in file %S"), aReason, aLine,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   116
            &fileName );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   117
    Trace( buf );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   118
    buf.Close();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   119
    User::Leave( aReason );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   120
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   121
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   122
#define TRACE_INFO(p) {if(KTraceMask & KPRINTINFO) Trace p;}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   123
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   124
#define TRACE_ERROR(p) {if(KTraceMask & KPRINTERROR) Trace p;}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   125
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   126
#define TRACE_STATE(p) {if(KTraceMask & KPRINTSTATE) Trace p;}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   127
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   128
#define TRACE_WARNING(p) {if(KTraceMask & KPRINTWARNING) Trace p;}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   129
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   130
#define TRACE_INFO_SEG(p) {if(KTraceMask & KPRINTINFO) p;}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   131
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   132
#define TRACE_ASSERT(GUARD, CODE) {if (!(GUARD)) TracePanic(__FILE__, __LINE__, CODE, KPanicCategory);}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   133
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   134
#define PANIC(CODE) TracePanic(__FILE__, __LINE__, CODE, KPanicCategory)
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   135
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   136
#define LEAVE_IF_ERROR(REASON) {if (REASON) TraceLeave(__FILE__, __LINE__, REASON);}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   137
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   138
#define LEAVE_IF_NULL(PTR) {if (!PTR) TraceLeave(__FILE__, __LINE__, KErrGeneral);}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   139
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   140
#define LEAVE(REASON) {TraceLeave(__FILE__, __LINE__, REASON);}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   141
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   142
#define TRACE_STATIC_FUNC_ENTRY {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncEntryFormat8, &ptr8);}}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   143
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   144
#define TRACE_FUNC_ENTRY {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncEntryThisFormat8, &ptr8, this);}}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   145
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   146
#define TRACE_FUNC_EXIT {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncExitFormat8, &ptr8);}}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   147
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   148
#define TRACE_STATIC_FUNC {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncFormat8, &ptr8);}}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   149
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   150
#define TRACE_FUNC {if(KTraceMask & KPRINTINFO) { TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); Trace(KFuncThisFormat8, &ptr8, this);}}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   151
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   152
#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;}}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   153
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   154
#else // PRJ_ENABLE_TRACE not defined
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   155
#define TRACE_INFO(p)
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   156
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   157
#define TRACE_ERROR(p)
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   158
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   159
#define TRACE_STATE(p)
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   160
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   161
#define TRACE_WARNING(p)
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   162
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   163
#define TRACE_INFO_SEG(p)
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   164
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   165
#define TRACE_ASSERT(GUARD, CODE)
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   166
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   167
#define PANIC(CODE) {User::Panic(KPanicCategory, CODE);}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   168
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   169
#define LEAVE_IF_ERROR(REASON) {static_cast<void>(User::LeaveIfError(REASON));}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   170
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   171
#define LEAVE_IF_NULL(PTR) {static_cast<void>(User::LeaveIfNull(PTR));}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   172
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   173
#define LEAVE(REASON) {static_cast<void>(User::Leave(REASON));}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   174
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   175
#define TRACE_STATIC_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   176
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   177
#define TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   178
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   179
#define TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   180
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   181
#define TRACE_STATIC_FUNC
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   182
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   183
#define TRACE_FUNC
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   184
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   185
#define RETURN_IF_ERR(ERR) {if(ERR) return ERR;}
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   186
#endif // PRJ_ENABLE_TRACE
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   187
#endif // PRJ_LOGGING_H