--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tracesrv/tracecore/btrace_handler/inc/TraceCore.h Fri Oct 08 14:56:39 2010 +0300
@@ -0,0 +1,346 @@
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+// Trace Core
+//
+
+#ifndef __TRACECORE_H__
+#define __TRACECORE_H__
+
+
+// Include files
+#include <kernel/kernel.h>
+#include "TraceCoreWriter.h"
+
+
+// Forward declarations
+class DTraceCoreSendReceive;
+class DTraceCoreNotifier;
+class DTraceCoreConfiguration;
+class DTraceCoreInternalMessageHandler;
+class DTraceCoreRouter;
+class DTraceCoreHandler;
+class DTraceCoreBTraceHandler;
+class DTraceCorePrintfTraceHandler;
+class DTraceCoreSettings;
+class MTraceCoreActivation;
+
+
+/**
+ * TraceCore main class
+ */
+NONSHARABLE_CLASS( DTraceCore ) : public DBase
+ {
+public:
+
+ /**
+ * Gets the TraceCore instance.
+ * NULL is returned when no instance is created.
+ */
+ IMPORT_C static DTraceCore* GetInstance();
+
+ /**
+ * Returns ETrue if tracecore is loaded already EFalse otherwies
+ */
+ IMPORT_C static TBool IsLoaded();
+
+ /*
+ * Destroy the static instance of tracecore and sets the instance to null
+ */
+ IMPORT_C static void DestroyTraceCore();
+ /**
+ * Gets the BTrace handler
+ */
+ static DTraceCoreBTraceHandler* GetBTraceHandler();
+
+ /**
+ * Gets the router
+ */
+ inline DTraceCoreRouter& GetRouter();
+
+ /**
+ * Gets the send-receive interface
+ */
+ inline DTraceCoreSendReceive& GetSendReceive();
+
+ /**
+ * Gets the trace core notifier
+ */
+ inline DTraceCoreNotifier& GetNotifier();
+
+ /**
+ * Registers a handler to TraceCore.
+ *
+ * @param aHandler The handler to be registered
+ */
+ TInt RegisterHandler( DTraceCoreHandler& aHandler );
+
+ /**
+ * Unregisters a handler from TraceCore.
+ *
+ * @param aHandler The handler to be unregistered
+ */
+ void UnregisterHandler( DTraceCoreHandler& aHandler );
+
+ /**
+ * Registers a writer to TraceCore.
+ *
+ * @param aWriter The writer to be registered
+ */
+ TInt RegisterWriter( DTraceCoreWriter& aWriter );
+
+ /**
+ * Unregisters a writer from TraceCore.
+ *
+ * @param aWriter The writer to be unregistered
+ */
+ void UnregisterWriter( DTraceCoreWriter& aWriter );
+
+ /**
+ * Registers a settings saver to TraceCore.
+ *
+ * @param aSettings The settings (saver) to be registered
+ */
+ TInt RegisterSettings( DTraceCoreSettings& aSettings );
+
+ /**
+ * Unregisters a settings saver from TraceCore.
+ *
+ * @param aSettings The Settings to be unregistered
+ */
+ void UnregisterSettings( DTraceCoreSettings& aSettings );
+
+ /**
+ * Registers an activation interface
+ *
+ * @param aActivation The activation interface
+ */
+ TInt RegisterActivation( MTraceCoreActivation& aActivation );
+
+ /**
+ * Gets an activation interface for a specific component ID
+ *
+ * @param aComponentID The component ID
+ * @return The activation interface or NULL if none exist
+ */
+ MTraceCoreActivation* GetActivation( TUint32 aComponentID );
+
+ /**
+ * Starts to use the specific writer
+ *
+ * @return KErrNone if successful, KErrNotSupported if type is not valid
+ */
+ IMPORT_C TInt SwitchToWriter( TWriterType aWriterType );
+
+ /**
+ * Get current writer type
+ *
+ * @return Current writer type
+ */
+ IMPORT_C TInt GetCurrentWriterType();
+
+
+ /**
+ * Returns pointer to TraceCore owned activation / deactivation TDfcQue object.
+ */
+ inline TDynamicDfcQue* ActivationQ() {
+ return iActivationQ;
+ }
+
+ /**
+ * Static method that returns pointer to TraceCore activation / deactivation dfc queue.
+ */
+ static TDynamicDfcQue* GetActivationQ() {
+ DTraceCore* tCore = DTraceCore::GetInstance();
+ if(tCore)
+ return tCore->ActivationQ();
+ else
+ return NULL;
+ }
+
+
+
+ /**
+ * @internalTechnology
+ * Sets the "Trace Dropped" flag
+ * @param aTraceDropped ETrue if Trace Dropped, EFalse Otherwise
+ */
+ IMPORT_C void SetPreviousTraceDropped(TBool aTraceDropped);
+
+ /**
+ * @internalTechnology
+ * returns the state of the "Trace Dropped" flag
+ * @param none
+ */
+ IMPORT_C TBool PreviousTraceDropped() const;
+
+ /**
+ * @internalTechnology
+ * @return DTraceCore instance or NULL if creation failed.
+ */
+ IMPORT_C static DTraceCore* CreateInstance();
+
+ /**
+ * Reactivate all currently activated traces
+ * @param none
+ * @return KErrNone if refresh successful
+ */
+ TInt RefreshActivations();
+
+ /**
+ * Returns whether or not tracing is certified.
+ * The certification status is checked when TraceCore is initialised and then stored for later use.
+ * This stored value is used throughout the session, even if the status of the certificate changes.
+ * This is done to avoid performance issues when performing the check with every trace outputted.
+ * @param none
+ * @return ETrue if tracing is certified, EFalse otherwise
+ */
+ inline TBool IsTraceCertified() { return iTraceCertified; };
+
+ /**
+ * Get the active writer
+ * @param none
+ * @return a pointer to the current
+ */
+ IMPORT_C DTraceCoreWriter* GetActiveWriter();
+
+private:
+
+ /**
+ * Constructor
+ */
+ DTraceCore();
+
+ /**
+ * Destructor
+ */
+ ~DTraceCore();
+
+ /**
+ * Initializes trace core
+ */
+ TInt Init();
+
+ /**
+ * Starts the BTrace handler
+ */
+ TInt StartBTrace();
+
+ /**
+ * Starts the Printf trace handler
+ */
+ TInt StartPrintfTraceHandler();
+
+ /**
+ * Starts to use the first writer from the writers list
+ */
+ void SwitchToFirstWriter();
+
+ /**
+ * Forwards the active writer to handlers
+ */
+ void SetWriterToHandlers();
+
+private:
+
+ /**
+ * TraceCore instance
+ */
+ static DTraceCore* iInstance;
+
+ /**
+ * List of writers
+ */
+ RPointerArray< DTraceCoreWriter > iWriters;
+
+ /**
+ * List of handlers
+ */
+ RPointerArray< DTraceCoreHandler > iHandlers;
+
+ /**
+ * List of activation interfaces
+ */
+ RPointerArray< MTraceCoreActivation > iActivations;
+
+ /**
+ * Message router
+ */
+ DTraceCoreRouter* iRouter;
+
+ /**
+ * Message sender / receiver
+ */
+ DTraceCoreSendReceive* iSendReceive;
+
+ /**
+ * Activation notifier
+ */
+ DTraceCoreNotifier* iNotifier;
+
+ /**
+ * Configuration
+ */
+ DTraceCoreConfiguration* iConfiguration;
+
+ /**
+ * Internal message handler
+ */
+ DTraceCoreInternalMessageHandler* iInternalMessageHandler;
+
+
+ /**
+ * BTrace handler
+ */
+ DTraceCoreBTraceHandler* iBTrace;
+
+ /**
+ * Printf trace handler
+ */
+ DTraceCorePrintfTraceHandler* iPrintf;
+
+ /**
+ * TraceCore settings
+ */
+ DTraceCoreSettings* iTraceCoreSettings;
+
+ /**
+ * Writer that is currently active
+ */
+ DTraceCoreWriter* iActiveWriter;
+
+ /**
+ * Activation / Deactivation DFC queue.
+ */
+ TDynamicDfcQue* iActivationQ;
+
+ /**
+ * Previous missing trace flag
+ */
+ TBool iPreviousTraceDropped;
+
+ /**
+ * Trace certified flag.
+ * The certification status is checked when TraceCore is initialised and then stored in this variable.
+ * This stored value is used throughout the session, even if the status of the certificate changes.
+ * This is done to avoid performance issues when performing the check with every trace outputted.
+ */
+ TBool iTraceCertified;
+
+ };
+
+#endif
+
+#include "TraceCore.inl"
+
+// End of File