--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/piprofiler/piprofiler_plat/inc/PluginSampler.h Tue May 25 14:22:58 2010 +0300
@@ -0,0 +1,247 @@
+/*
+* 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 "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 __PLUGINSAMPLER_H__
+#define __PLUGINSAMPLER_H__
+
+/*
+ * The user-interface to the sampling device driver sued by the profiling engine
+ */
+// #include <piprofiler/ProfilerConfig.h>
+// #include <piprofiler/ProfilerVersion.h> // versions removed from ProfilerConfig.h
+
+#ifndef __KERNEL_MODE__
+#include <utf.h>
+#endif
+
+/*
+ * Forward declarations
+ */
+class TBapBuf;
+
+/**
+ * A minimal capabilities class for the Sampling device.
+ * It just returns the version number.
+ */
+class TCapsSamplerV01
+ {
+public:
+ TVersion iVersion;
+ };
+
+
+const TInt KMinDelay = 1;
+const TInt KMaxDelay = 10000;
+
+/**
+ * The user device driver class for controlling the plugin sampler.
+ */
+
+class RPluginSampler : public RBusLogicalChannel
+{
+ friend class DPluginDriver;
+ public:
+ enum TControl
+ {
+ EOutputSettingsForTrace,
+ EMarkTraceActive,
+ EMarkTraceInactive,
+ ESample,
+ EStartSampling,
+ EGetSampleTime,
+ EGetSamplerVersion,
+ EStopAndWaitForEnd,
+ ESetSamplingPeriod,
+ EAdditionalTraceSettings,
+ EAdditionalTraceSettings2,
+ EAdditionalTraceSettings3,
+ EAdditionalTraceSettings4,
+ //EPrintTraces,
+ ECancelStreamRead,
+ ERequestFillThisStreamBuffer,
+ ERequestPrintStreamBuffer,
+ ETest
+ };
+
+ public:
+ #ifndef __KERNEL_MODE__
+
+ inline ~RPluginSampler();
+
+ /**
+ *
+ * Methods for controlling the sampler device
+ *
+ **/
+ /** Open a channel to the sampling device **/
+ virtual TInt Open() = 0;
+
+ /** Set sampling period for sampler */
+ inline void SetSamplingPeriod(TInt samplerId, TInt settings);
+
+ /** Set additional trace settings **/
+ inline void AdditionalSettingsForTrace(TInt samplerId,TInt settings);
+ inline void AdditionalSettingsForTrace2(TInt samplerId,TInt settings);
+ inline void AdditionalSettingsForTrace3(TInt samplerId,TInt settings);
+ inline void AdditionalSettingsForTrace4(TInt samplerId,TInt settings);
+
+ /** Mark trace active **/
+ inline void MarkTraceActive(TUint32 id);
+
+ /** Mark trace inactive **/
+ inline void MarkTraceInactive(TUint32 id);
+
+ /** Sample command to kernel LDD**/
+ inline void Sample();
+
+ /** Start tracing **/
+ inline void StartSampling();
+
+ /** Stop tracing **/
+ inline void StopSampling();
+
+ /** Get current sampling time **/
+ inline TUint32 GetSampleTime();
+
+ /** Get sampler version as descriptor **/
+ virtual void GetSamplerVersion(TDes*);
+
+ /** Get next filled buffer in stream mode **/
+ void GetNextbuffer( );
+
+ /** Request stream read **/
+ void FillThisStreamBuffer(TBapBuf* aBuffer, TRequestStatus& aStatus);
+
+ /** Request print buffer**/
+ void PrintStreamBuffer(TDesC16* aBuffer);
+
+ /** Run test case **/
+ inline void Test(TUint32 testCase);
+
+ #endif // !__KERNEL_MODE__
+};
+
+
+#ifndef __KERNEL_MODE__
+inline RPluginSampler::~RPluginSampler()
+{
+}
+
+inline void RPluginSampler::AdditionalSettingsForTrace(TInt samplerId,TInt settings)
+ {
+ DoControl(EAdditionalTraceSettings,
+ reinterpret_cast<TAny*>(samplerId),
+ reinterpret_cast<TAny*>(settings));
+ }
+
+inline void RPluginSampler::AdditionalSettingsForTrace2(TInt samplerId,TInt settings)
+ {
+ DoControl(EAdditionalTraceSettings2,
+ reinterpret_cast<TAny*>(samplerId),
+ reinterpret_cast<TAny*>(settings));
+ }
+
+inline void RPluginSampler::AdditionalSettingsForTrace3(TInt samplerId,TInt settings)
+ {
+ DoControl(EAdditionalTraceSettings3,
+ reinterpret_cast<TAny*>(samplerId),
+ reinterpret_cast<TAny*>(settings));
+ }
+
+inline void RPluginSampler::AdditionalSettingsForTrace4(TInt samplerId,TInt settings)
+ {
+ DoControl(EAdditionalTraceSettings4,
+ reinterpret_cast<TAny*>(samplerId),
+ reinterpret_cast<TAny*>(settings));
+ }
+
+inline void RPluginSampler::SetSamplingPeriod(TInt samplerId, TInt settings)
+ {
+ DoControl(ESetSamplingPeriod,
+ reinterpret_cast<TAny*>(samplerId),
+ reinterpret_cast<TAny*>(settings));
+ }
+
+
+inline void RPluginSampler::MarkTraceActive(TUint32 id)
+{
+ DoControl(EMarkTraceActive, reinterpret_cast<TAny*>(id));
+}
+
+inline void RPluginSampler::MarkTraceInactive(TUint32 id)
+{
+ DoControl(EMarkTraceInactive, reinterpret_cast<TAny*>(id));
+}
+
+inline void RPluginSampler::Sample()
+ {
+ DoControl(ESample);
+ }
+
+inline void RPluginSampler::StartSampling()
+{
+ // at first, start the kernel side samplers
+ DoControl(EStartSampling);
+}
+
+inline void RPluginSampler::StopSampling()
+{
+ // stop the device driver and the kernel mode samplers
+ TRequestStatus status;
+ status = KRequestPending;
+ DoRequest(EStopAndWaitForEnd,status);
+ User::WaitForRequest(status);
+}
+
+inline TUint32 RPluginSampler::GetSampleTime()
+{
+ TUint32* sampleTime = new TUint32;
+
+ DoControl(EGetSampleTime,reinterpret_cast<TAny*>(sampleTime));
+ TUint32 value = *sampleTime;
+ delete sampleTime;
+
+ return value;
+}
+
+inline void RPluginSampler::GetSamplerVersion(TDes* aDes)
+{
+ TBuf8<16> buf;
+ DoControl(EGetSamplerVersion,(TAny*)&buf);
+ CnvUtfConverter::ConvertToUnicodeFromUtf8(*aDes,buf);
+}
+
+inline void RPluginSampler::PrintStreamBuffer(TDesC16* aDes)
+{
+ DoControl(ERequestPrintStreamBuffer,reinterpret_cast<TAny*>(aDes));
+}
+
+inline void RPluginSampler::FillThisStreamBuffer(TBapBuf* aBuffer, TRequestStatus& aStatus)
+{
+ aStatus = KRequestPending;
+ DoRequest(ERequestFillThisStreamBuffer,aStatus,(TAny*)aBuffer);
+
+}
+
+inline void RPluginSampler::Test(TUint32 testCase)
+{
+ DoControl(ETest,reinterpret_cast<TAny*>(testCase));
+}
+
+#endif
+#endif