connectivitylayer/isce/isaaccessextension_dll/inc/iadtrace.h
author mikaruus <mika.a.ruuskanen@nokia.com>
Wed, 21 Apr 2010 14:29:55 +0300
changeset 8 6295dc2169f3
parent 0 63b37f68c1ce
child 9 8486d82aef45
permissions -rw-r--r--
New release based on our 2010wk15 release

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "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: 
*
*/



#ifndef IADTRACE_H
#define IADTRACE_H

// INCLUDES
#include <kernel.h>

// CONSTANTS

const TUint8 KFaultIdentifierShift = 8;
const TUint8 KChannelNumberShift = 16;
const TUint8 KExtraInfoShift = 24;

enum TIADFaultCategories
    {
    EIADMemoryAllocationFailure = 1,            // 0x01  Ident 23
    EIADNullParameter,                          // 0x02  Ident 30
    EIADWrongParameter,                         // 0x03  Ident 19
    EIADQueueOutOfSync,                         // 0x04  ident 15
    EIADWrongRequest,                           // 0x05  ident 14
    EIADSameRequestTwice,                       // 0x06  ident 0
    EIADChannelNumberNotSpecifiedInInfo,        // 0x07  ident 1
    EIADWrongDFCQueueUsed,                      // 0x08  ident 4
    EIADDoNotCallInISRContext,                  // 0x09  ident 0
    EIADDFCAlreadyQueued,                       // 0x0a  ident 2
    EIADWrongKernelResponse,                    // 0x0b  ident 0
    EIADDesReadFailed,                          // 0x0c  ident 9
    EIADConfigurationInvalid,                   // 0x0d  ident 0
    EIADInvalidCtrlMessage,                     // 0x0e  ident 4
    EIADCmtConnectionNotInit,                   // 0x0f  ident 0
    EIADCmtConnectionLost,                      // 0x10  ident 4
    EIADTooManyBytesToPresent,                  // 0x11  ident 0
    EIADChannelOpenedBeforePhysicalLayerInit,   // 0x12  ident 0
    EIADWrongTypeOfOpenPending,                 // 0x13  ident 2
    EIADBufferNotReleased,                      // 0x14  ident 0
    EIADUnknownPipeFCType,                      // 0x15  ident 2
    EIADWrongPipeHandle,                        // 0x16  ident 10
    EIADUnknownPipeOrPepMsg,                    // 0x17  ident 2
    EIADUnkownMedia,                            // 0x18  ident 0
    EIADIndicationOrderFailed,                  // 0x19  ident 0
    EIADNotSupported,                           // 0x1a  ident 5
    EIADCommon,                                 // 0x1b  ident 0
    EIADOverTheLimits,                          // 0x1c  ident 43
    EIADDesWriteFailed,                         // 0x1d  ident 4
    };
// Used to identify code line where reset happens
enum TIADFaultIdentifier
    {
    EIADFaultIdentifier1 = 1,                   // 0x01
    EIADFaultIdentifier2,                       // 0x02
    EIADFaultIdentifier3,                       // 0x03
    EIADFaultIdentifier4,                       // 0x04
    EIADFaultIdentifier5,                       // 0x05
    EIADFaultIdentifier6,                       // 0x06
    EIADFaultIdentifier7,                       // 0x07
    EIADFaultIdentifier8,                       // 0x08
    EIADFaultIdentifier9,                       // 0x09
    EIADFaultIdentifier10,                      // 0x0a
    EIADFaultIdentifier11,                      // 0x0b
    EIADFaultIdentifier12,                      // 0x0c
    EIADFaultIdentifier13,                      // 0x0d
    EIADFaultIdentifier14,                      // 0x0e
    EIADFaultIdentifier15,                      // 0x0f
    EIADFaultIdentifier16,                      // 0x10
    EIADFaultIdentifier17,                      // 0x11
    EIADFaultIdentifier18,                      // 0x12
    EIADFaultIdentifier19,                      // 0x13
    EIADFaultIdentifier20,                      // 0x14
    EIADFaultIdentifier21,                       // 0x15
    EIADFaultIdentifier22,                       // 0x16
    EIADFaultIdentifier23,                       // 0x17
    EIADFaultIdentifier24,                       // 0x18
    EIADFaultIdentifier25,                       // 0x19
    EIADFaultIdentifier26,                       // 0x1a
    EIADFaultIdentifier27,                       // 0x1b
    EIADFaultIdentifier28,                       // 0x1c    
    EIADFaultIdentifier29,                       // 0x1d    
    EIADFaultIdentifier30,                       // 0x1e    
    EIADFaultIdentifier31,                       // 0x1f    
    EIADFaultIdentifier32,                       // 0x20    
    EIADFaultIdentifier33,                       // 0x21    
    EIADFaultIdentifier34,                       // 0x22    
    EIADFaultIdentifier35,                       // 0x23    
    EIADFaultIdentifier36,                       // 0x24    
    EIADFaultIdentifier37,                       // 0x25    
    EIADFaultIdentifier38,                       // 0x26    
    EIADFaultIdentifier39,                       // 0x27    
    EIADFaultIdentifier40,                       // 0x28    
    EIADFaultIdentifier41,                       // 0x29    
    EIADFaultIdentifier42,                       // 0x2a    
    EIADFaultIdentifier43,                       // 0x2b    
    };
    
//ISCE
enum TClassIdentifier
    {
    EDISILinkTraceId = 0x00,
    };
const TUint8 KClassIdentifierShift( 8 );

//ISCE

// MACROS
#define _T( a ) a
#define __TRACE_PRINTF(a) Kern::Printf a

#ifdef _DEBUG //UNCOMMENT THESE SOON TO ABLE TRACES ONLY IN UDEB

    void BuildTraceFunc( const TDesC& aPrefix );
    void DataDumpTraceFunc( const TDesC8& aPtr, TBool aSend );

    #define BUILD_TRACE( a ) BuildTraceFunc( a )
#if defined FULL_DATA_DUMP
    #define FULL_DATA_TRACE_DUMP
#endif
#if defined DATA_DUMP
    #define DATA_DUMP_TRACE( a, b ) DataDumpTraceFunc( a, b )
#else
    #define DATA_DUMP_TRACE( a, b )
#endif
    #if defined COMPONENT_TRACE_FLAG
        #define C_TRACE(a) __TRACE_PRINTF(a)
    #else
        #define C_TRACE(a) 
    #endif // COMPONENT_TRACE_FLAG

    #if defined API_TRACE_FLAG
        #define A_TRACE(a) __TRACE_PRINTF(a)
    #else
        #define A_TRACE(a)
    #endif // API_TRACE_FLAG

    #if defined EXTENDED_TRACE_FLAG
        #define E_TRACE(a) __TRACE_PRINTF(a)
    #else
        #define E_TRACE(a)
    #endif // EXTENDED_TRACE_FLAG
#else
    #define C_TRACE(a)
    #define A_TRACE(a)
    #define E_TRACE(a)
    #define BUILD_TRACE(a)
    #define DATA_DUMP_TRACE(a, b)
#endif // _DEBUG
//
// Resets are made both in UDEB and UREL (traces only in udeb)
#define ASSERT_RESET_ALWAYS(a,b) if(!(a)) { __TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, compiled="__DATE__" "__TIME__, __LINE__)); Kern::Fault( "IAD Fault:", b ); }
#define TRACE_ASSERT_ALWAYS __TRACE_PRINTF( ("Assertion failed: file=" __FILE__ ", line=%d, compiled="__DATE__" "__TIME__, __LINE__) )
#define TRACE_ASSERT(a) if (!(a)) __TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, compiled=" __DATE__" "__TIME__, __LINE__ ))
#define TRACE_ASSERT_WITH_MSG(a, b) if (!(a)) __TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, compiled=" __DATE__" "__TIME__, __LINE__ ));__TRACE_PRINTF((b));
#define TRACE_ASSERT_INFO(a, b) if (!(a)) __TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, extra info 0x%08x, compiled=" __DATE__" "__TIME__, __LINE__, b ));
#define TRACE_WARNING(a, b) if (!(a)) __TRACE_PRINTF(("Warning: file=" __FILE__ ", line=%d, extra info 0x%x, compiled=" __DATE__" "__TIME__, __LINE__, b ));

// Give appropriate context as param, fault if current context different.
#define ASSERT_CONTEXT_ALWAYS( a, b )NKern::TContext current_context=(NKern::TContext)NKern::CurrentContext();ASSERT_RESET_ALWAYS( current_context == a, EIADDoNotCallInISRContext | b<<KChannelNumberShift);
#define ASSERT_PANIC_USER_THREAD_ALWAYS( a, b, c ) if(!(a)){__TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, compiled="__DATE__" "__TIME__, __LINE__));Kern::ThreadKill( b, EExitPanic, c, _L8("IAD Fault") );}

//MIST2IADAPI asserts
#define IAD_ASSERT_RESET_ALWAYS( a, b, c ) if(!(a)) { __TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, compiled="__DATE__" "__TIME__, __LINE__)); Kern::Fault( c, b ); }
#define IAD_ASSERT_THREAD_CONTEXT_ALWAYS( a, b )IAD_ASSERT_RESET_ALWAYS( NKern::CurrentContext() == NKern::EThread, a, b );


// DATA TYPES

// FUNCTION PROTOTYPES

// FORWARD DECLARATIONS

#endif // IADTRACE_H

//  End of File