omads/omadsextensions/adapters/mediads/inc/logger.h
author hgs
Tue, 13 Jul 2010 03:39:25 +0530
changeset 40 b63e67867dcd
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
40
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Logging macros used by Media DS Plugin
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef __LOGGER_H__
hgs
parents:
diff changeset
    20
#define __LOGGER_H__
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#ifdef _DEBUG
hgs
parents:
diff changeset
    23
    #ifdef __WINS__
hgs
parents:
diff changeset
    24
        // File logging for WINS
hgs
parents:
diff changeset
    25
        #define __FLOGGING__
hgs
parents:
diff changeset
    26
    #else
hgs
parents:
diff changeset
    27
        #define __FLOGGING__ // enable to log file on target HW
hgs
parents:
diff changeset
    28
    #endif //__WINS__
hgs
parents:
diff changeset
    29
    
hgs
parents:
diff changeset
    30
    #include <e32svr.h>
hgs
parents:
diff changeset
    31
    #ifdef __FLOGGING__
hgs
parents:
diff changeset
    32
        #include <f32file.h>
hgs
parents:
diff changeset
    33
        #include <flogger.h>
hgs
parents:
diff changeset
    34
    #endif
hgs
parents:
diff changeset
    35
    
hgs
parents:
diff changeset
    36
    NONSHARABLE_CLASS(TOverflowTruncate16) : public TDes16Overflow
hgs
parents:
diff changeset
    37
        {
hgs
parents:
diff changeset
    38
    public:
hgs
parents:
diff changeset
    39
        void Overflow(TDes16& /*aDes*/) {}
hgs
parents:
diff changeset
    40
        };
hgs
parents:
diff changeset
    41
    
hgs
parents:
diff changeset
    42
    NONSHARABLE_CLASS(TOverflowTruncate8) : public TDes8Overflow
hgs
parents:
diff changeset
    43
        {
hgs
parents:
diff changeset
    44
    public:
hgs
parents:
diff changeset
    45
        void Overflow(TDes8& /*aDes*/) {}
hgs
parents:
diff changeset
    46
        };
hgs
parents:
diff changeset
    47
    
hgs
parents:
diff changeset
    48
    _LIT( KLogDir, "MediaDS" );
hgs
parents:
diff changeset
    49
    _LIT( KLogFile, "MediaDS.txt" );
hgs
parents:
diff changeset
    50
    
hgs
parents:
diff changeset
    51
    _LIT(KTracePrefix16, "[MediaDs] ");
hgs
parents:
diff changeset
    52
    _LIT8(KTracePrefix8, "[MediaDs] ");
hgs
parents:
diff changeset
    53
    _LIT8(KFuncEntryFormat8, "%S : Begin");
hgs
parents:
diff changeset
    54
    _LIT8(KFuncExitFormat8, "%S : End");
hgs
parents:
diff changeset
    55
    _LIT8(KFuncReturnFormat8, "%S : End, return: %d");
hgs
parents:
diff changeset
    56
    _LIT8(KFuncFormat8, "><%S");
hgs
parents:
diff changeset
    57
    
hgs
parents:
diff changeset
    58
    const TInt KMaxLogLineLength = 512;
hgs
parents:
diff changeset
    59
    
hgs
parents:
diff changeset
    60
    /**
hgs
parents:
diff changeset
    61
    * logging macros, for public use
hgs
parents:
diff changeset
    62
    */
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
    #define LOGGER_WRITE( text )                    {_LIT( KTemp, text ); FPrint( KTemp );}
hgs
parents:
diff changeset
    65
    #define LOGGER_WRITE_1( text,par1 )             {_LIT( KTemp, text ); FPrint( KTemp, par1 );}
hgs
parents:
diff changeset
    66
    #define LOGGER_WRITE8_1( text,par1 )            {_LIT8( KTemp, text ); FPrint( KTemp, par1 );}
hgs
parents:
diff changeset
    67
    #define LOGGER_WRITE_2( text,par1,par2 )        {_LIT( KTemp, text ); FPrint( KTemp, par1, par2 );}
hgs
parents:
diff changeset
    68
    #define LOGGER_WRITE_3( text,par1,par2,par3 )   {_LIT( KTemp, text ); FPrint( KTemp, par1, par2, par3 );}
hgs
parents:
diff changeset
    69
    
hgs
parents:
diff changeset
    70
    // New function logging macros
hgs
parents:
diff changeset
    71
    #define TRACE_FUNC_ENTRY {TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); FPrint(KFuncEntryFormat8, &ptr8);}
hgs
parents:
diff changeset
    72
    #define TRACE_FUNC_EXIT {TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); FPrint(KFuncExitFormat8, &ptr8);}
hgs
parents:
diff changeset
    73
    #define TRACE_FUNC {TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); FPrint(KFuncFormat8, &ptr8);}
hgs
parents:
diff changeset
    74
    
hgs
parents:
diff changeset
    75
    #define TRACE_FUNC_RET( number )  {TPtrC8 ptr8((TUint8*)__PRETTY_FUNCTION__); FPrint(KFuncReturnFormat8, &ptr8, number);}
hgs
parents:
diff changeset
    76
    // Declare the FPrint function
hgs
parents:
diff changeset
    77
    inline void FPrint( TRefByValue<const TDesC16> aFmt, ...)
hgs
parents:
diff changeset
    78
        {
hgs
parents:
diff changeset
    79
        VA_LIST list;
hgs
parents:
diff changeset
    80
        VA_START(list,aFmt);
hgs
parents:
diff changeset
    81
    #ifdef __FLOGGING__
hgs
parents:
diff changeset
    82
        RFileLogger::WriteFormat( KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list );
hgs
parents:
diff changeset
    83
    #endif
hgs
parents:
diff changeset
    84
        TBuf16<KMaxLogLineLength> theFinalString;
hgs
parents:
diff changeset
    85
        theFinalString.Append(KTracePrefix16);
hgs
parents:
diff changeset
    86
        TOverflowTruncate16 overflow;
hgs
parents:
diff changeset
    87
        theFinalString.AppendFormatList(aFmt,list,&overflow);
hgs
parents:
diff changeset
    88
        RDebug::Print(theFinalString);
hgs
parents:
diff changeset
    89
        }
hgs
parents:
diff changeset
    90
    
hgs
parents:
diff changeset
    91
    // Declare the FPrint function
hgs
parents:
diff changeset
    92
    inline void FPrint(TRefByValue<const TDesC8> aFmt, ...)
hgs
parents:
diff changeset
    93
        {
hgs
parents:
diff changeset
    94
        VA_LIST list;
hgs
parents:
diff changeset
    95
        VA_START(list, aFmt);
hgs
parents:
diff changeset
    96
    #ifdef __FLOGGING__
hgs
parents:
diff changeset
    97
        RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list);
hgs
parents:
diff changeset
    98
    #endif
hgs
parents:
diff changeset
    99
        TOverflowTruncate8 overflow;
hgs
parents:
diff changeset
   100
        TBuf8<KMaxLogLineLength> buf8;
hgs
parents:
diff changeset
   101
        buf8.Append(KTracePrefix8);
hgs
parents:
diff changeset
   102
        buf8.AppendFormatList(aFmt, list, &overflow);
hgs
parents:
diff changeset
   103
        TBuf16<KMaxLogLineLength> buf16(buf8.Length());
hgs
parents:
diff changeset
   104
        buf16.Copy(buf8);
hgs
parents:
diff changeset
   105
        TRefByValue<const TDesC> tmpFmt(_L("%S"));
hgs
parents:
diff changeset
   106
        RDebug::Print(tmpFmt, &buf16);
hgs
parents:
diff changeset
   107
        }
hgs
parents:
diff changeset
   108
#else // no _DEBUG defined
hgs
parents:
diff changeset
   109
    
hgs
parents:
diff changeset
   110
    // No loggings --> reduced code size
hgs
parents:
diff changeset
   111
    #define LOGGER_WRITE( text )
hgs
parents:
diff changeset
   112
    #define LOGGER_WRITE_1( text, par1 )
hgs
parents:
diff changeset
   113
    #define LOGGER_WRITE8_1( text, par1 )
hgs
parents:
diff changeset
   114
    #define LOGGER_WRITE_2( text, par1, par2 )
hgs
parents:
diff changeset
   115
    #define LOGGER_WRITE_3( text, par1, par2, par3 )
hgs
parents:
diff changeset
   116
    #define TRACE_FUNC_ENTRY
hgs
parents:
diff changeset
   117
    #define TRACE_FUNC_EXIT
hgs
parents:
diff changeset
   118
    #define TRACE_FUNC
hgs
parents:
diff changeset
   119
    #define TRACE_FUNC_RET( number )
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
#endif // _DEBUG
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
#endif // __LOGGER_H__
hgs
parents:
diff changeset
   124