--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tracesrv/tracecompiler/test/SourceEngineTest/foo.h Tue Oct 26 16:20:32 2010 +0300
@@ -0,0 +1,216 @@
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Trace Core
+//
+
+#ifndef TRACECOREMEDIASWRITER_H_
+#define TRACECOREMEDIASWRITER_H_
+
+
+// Include files
+#include "TraceCoreWriter.h"
+
+
+// Forward declarations
+class DTraceCoreMediaIf;
+class TMediaSWriterStatistics;
+
+/**
+ * Properties of a single trace
+ */
+class TTraceBuffer
+ {
+public:
+ TTraceBuffer* iNext;
+ TUint8* iBuffer;
+ TUint16 iLength;
+ TUint16 iMissedBefore;
+ TUint8 iType;
+ };
+
+
+/**
+ * Writer implementation, which uses the media interface to write data
+ */
+class DTraceCoreMediaSWriter : public DTraceCoreWriter
+ {
+public:
+
+ /**
+ * Constructor
+ */
+ IMPORT_C DTraceCoreMediaSWriter();
+
+ /**
+ * Destructor
+ */
+ IMPORT_C ~DTraceCoreMediaSWriter();
+
+ /**
+ * Registers this writer to TraceCore
+ */
+ IMPORT_C TInt Register();
+
+ /**
+ * Gets the number of traces allowed per second
+ */
+ virtual TInt GetTraceFrequency() = 0;
+
+ /**
+ * Initializes a trace buffer
+ *
+ * @param aType the entry type
+ * @param aBuffer the buffer
+ */
+ virtual void StartBuffer( TWriterEntryType aType, TTraceBuffer& aBuffer ) = 0;
+
+ /**
+ * Finishes a trace buffer
+ *
+ * @param aBuffer the buffer
+ * @return ETrue if trace can be 'dropped'
+ */
+ virtual TBool EndBuffer( TTraceBuffer& aBuffer ) = 0;
+
+private:
+
+ /**
+ * Starts an entry
+ *
+ * @return the entry ID that is passed to other Write-functions
+ */
+ IMPORT_C TUint32 WriteStart( TWriterEntryType aType );
+
+ /**
+ * Ends an entry
+ *
+ * @param aEntryId the entry ID returned by WriteStart
+ */
+ IMPORT_C void WriteEnd( TUint32 aEntryId );
+
+ /**
+ * Writes 8-bit data to given entry
+ *
+ * @param aEntryId the entry ID returned by WriteStart
+ * @param aData the trace data
+ */
+ IMPORT_C void WriteData( TUint32 aEntryId, TUint8 aData );
+
+ /**
+ * Writes 16-bit data to given entry
+ *
+ * @param aEntryId the entry ID returned by WriteStart
+ * @param aData the trace data
+ */
+ IMPORT_C void WriteData( TUint32 aEntryId, TUint16 aData );
+
+ /**
+ * Writes 32-bit data to given entry
+ *
+ * @param aEntryId the entry ID returned by WriteStart
+ * @param aData the trace data
+ */
+ IMPORT_C void WriteData( TUint32 aEntryId, TUint32 aData );
+
+ /**
+ * DFC for sending data
+ *
+ * @param aMediaWriter the media writer
+ */
+ static void SendDfc( TAny* aMediaWriter );
+
+ /**
+ * Called from the static function to send data
+ */
+ void SendDfc();
+
+ /**
+ * Initializes the statistics
+ */
+ TBool InitStatistics();
+
+
+private:
+
+ /**
+ * Media interface for sending data
+ */
+ DTraceCoreMediaIf* iMediaIf;
+
+ /**
+ * DFC for sending data
+ */
+ TDfc iSendDfc;
+
+ /**
+ * Timer which is used to send traces
+ */
+ TTickLink iSendTimer;
+
+ /**
+ * Flags which tells if the timer is active or not
+ */
+ TBool iSendTimerActive;
+
+ /**
+ * Pointer to the list of free trace buffers
+ */
+ TTraceBuffer* iFirstFreeBuffer;
+
+ /**
+ * Pointer to the next trace to be sent
+ */
+ TTraceBuffer* iFirstReadyBuffer;
+
+ /**
+ * Pointer to the end of list where new traces are added
+ */
+ TTraceBuffer* iLastReadyBuffer;
+
+ /**
+ * All trace buffers
+ */
+ TTraceBuffer* iTraceBuffers;
+
+ /**
+ * Number of free buffers
+ */
+ TUint32 iFreeBuffers;
+
+ /**
+ * Thread which sends data
+ */
+ NThread* iSenderThread;
+
+ /**
+ * Timestamp of the last trace sent
+ */
+ TUint32 iLastTraceSent;
+
+ /**
+ * Media writer statistics
+ */
+ TMediaSWriterStatistics* iStatistics;
+
+ /**
+ * Number of FastCounter ticks between traces
+ */
+ TInt iFastCounterBetweenTraces;
+
+ };
+
+
+#endif /*TRACECOREMEDIASWRITER_H_*/
+
+// End of file