tracesrv/tracecore/btrace_handler/inc/TraceCorePrintfTraceHandler.h
author hgs
Fri, 08 Oct 2010 14:56:39 +0300
changeset 56 aa2539c91954
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
hgs
parents:
diff changeset
     1
// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     2
// All rights reserved.
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     7
//
hgs
parents:
diff changeset
     8
// Initial Contributors:
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    10
//
hgs
parents:
diff changeset
    11
// Contributors:
hgs
parents:
diff changeset
    12
//
hgs
parents:
diff changeset
    13
// Description:
hgs
parents:
diff changeset
    14
// Handler implementation for ascii printf
hgs
parents:
diff changeset
    15
//
hgs
parents:
diff changeset
    16
hgs
parents:
diff changeset
    17
#ifndef __TRACECOREPRINTFTRACEHANDLER_H__
hgs
parents:
diff changeset
    18
#define __TRACECOREPRINTFTRACEHANDLER_H__
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
// Include files
hgs
parents:
diff changeset
    22
#include <kernel/kernel.h>
hgs
parents:
diff changeset
    23
#include <TraceCoreNotificationReceiver.h>
hgs
parents:
diff changeset
    24
#include "TraceCoreHandler.h"
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// Forward declarations
hgs
parents:
diff changeset
    28
class DTraceCoreWriter;
hgs
parents:
diff changeset
    29
class DTraceCoreSettings;
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
/**
hgs
parents:
diff changeset
    33
 * Handler implementation for ascii printf
hgs
parents:
diff changeset
    34
 */
hgs
parents:
diff changeset
    35
NONSHARABLE_CLASS( DTraceCorePrintfTraceHandler ) : public MTraceCoreNotificationReceiver, 
hgs
parents:
diff changeset
    36
													public DTraceCoreHandler
hgs
parents:
diff changeset
    37
		                                                   
hgs
parents:
diff changeset
    38
    {
hgs
parents:
diff changeset
    39
public:
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
	/**
hgs
parents:
diff changeset
    42
     * Constructor
hgs
parents:
diff changeset
    43
     */
hgs
parents:
diff changeset
    44
    DTraceCorePrintfTraceHandler();
hgs
parents:
diff changeset
    45
    
hgs
parents:
diff changeset
    46
    /**
hgs
parents:
diff changeset
    47
     * Destructor
hgs
parents:
diff changeset
    48
     */
hgs
parents:
diff changeset
    49
    ~DTraceCorePrintfTraceHandler();
hgs
parents:
diff changeset
    50
    
hgs
parents:
diff changeset
    51
    /**
hgs
parents:
diff changeset
    52
     * Initializes this handler
hgs
parents:
diff changeset
    53
     */
hgs
parents:
diff changeset
    54
    TInt Init();
hgs
parents:
diff changeset
    55
    
hgs
parents:
diff changeset
    56
    /**
hgs
parents:
diff changeset
    57
     * Prepares the change in writer
hgs
parents:
diff changeset
    58
     * 
hgs
parents:
diff changeset
    59
     * @param aWriter the new writer
hgs
parents:
diff changeset
    60
     */
hgs
parents:
diff changeset
    61
    void PrepareSetWriter( DTraceCoreWriter* aWriter );
hgs
parents:
diff changeset
    62
  
hgs
parents:
diff changeset
    63
    /**
hgs
parents:
diff changeset
    64
     * Kern/RDebug::Printf handler function
hgs
parents:
diff changeset
    65
     */
hgs
parents:
diff changeset
    66
    static TBool PrintfHandler( const TDesC8& aText, TTraceSource aTraceSource );
hgs
parents:
diff changeset
    67
    
hgs
parents:
diff changeset
    68
    /**
hgs
parents:
diff changeset
    69
     * Callback function for Trace Activation
hgs
parents:
diff changeset
    70
     * from MTraceCoreNotificationReceiver
hgs
parents:
diff changeset
    71
     * 
hgs
parents:
diff changeset
    72
     * @param aComponentId
hgs
parents:
diff changeset
    73
     * @param aGroupId
hgs
parents:
diff changeset
    74
     * @return None          
hgs
parents:
diff changeset
    75
     */
hgs
parents:
diff changeset
    76
    void TraceActivated( TUint32 aComponentId, TUint16 aGroupId  );
hgs
parents:
diff changeset
    77
    
hgs
parents:
diff changeset
    78
    /**
hgs
parents:
diff changeset
    79
     * Callback function for Trace Deactivation
hgs
parents:
diff changeset
    80
     * from MTraceCoreNotificationReceiver
hgs
parents:
diff changeset
    81
     * 
hgs
parents:
diff changeset
    82
     * @param aComponentId
hgs
parents:
diff changeset
    83
     * @param aGroupId
hgs
parents:
diff changeset
    84
     * @return None     
hgs
parents:
diff changeset
    85
     */
hgs
parents:
diff changeset
    86
    void TraceDeactivated( TUint32 aComponentId, TUint16 aGroupId  );
hgs
parents:
diff changeset
    87
    
hgs
parents:
diff changeset
    88
private:
hgs
parents:
diff changeset
    89
    
hgs
parents:
diff changeset
    90
    /**
hgs
parents:
diff changeset
    91
     * Checks if there is a dropped trace and sends dropped trace message and
hgs
parents:
diff changeset
    92
     * normal trace as well if writer is ready to write that data.
hgs
parents:
diff changeset
    93
     *
hgs
parents:
diff changeset
    94
     * @param aHandler Printf trace handler
hgs
parents:
diff changeset
    95
     */
hgs
parents:
diff changeset
    96
    inline static void HandleTrace(const TDesC8& aText);    
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
    /**
hgs
parents:
diff changeset
    99
     * Trace output function
hgs
parents:
diff changeset
   100
     */
hgs
parents:
diff changeset
   101
	void DebugPrint( const TDesC8& aDes );
hgs
parents:
diff changeset
   102
    
hgs
parents:
diff changeset
   103
    /**
hgs
parents:
diff changeset
   104
     * Static instance, accessed from the printf trace handler callback
hgs
parents:
diff changeset
   105
     */
hgs
parents:
diff changeset
   106
    static DTraceCorePrintfTraceHandler* iInstance;
hgs
parents:
diff changeset
   107
    
hgs
parents:
diff changeset
   108
    /**
hgs
parents:
diff changeset
   109
     * Printf trace handler
hgs
parents:
diff changeset
   110
     */
hgs
parents:
diff changeset
   111
    TBool ( *iPrintfHandler )( const TDesC8&, TTraceSource );
hgs
parents:
diff changeset
   112
    
hgs
parents:
diff changeset
   113
    /**
hgs
parents:
diff changeset
   114
	 * State of the Printf activations
hgs
parents:
diff changeset
   115
 	 */
hgs
parents:
diff changeset
   116
	static TBool iKernPrintfActive;
hgs
parents:
diff changeset
   117
	static TBool iRDebugPrintfActive;
hgs
parents:
diff changeset
   118
	static TBool iPlatSecPrintfActive;
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
    };
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
#endif
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
// End of File