diff -r f0f2b8682603 -r 3ff3fecb12fe sysanadatacapture/piprofiler/piprofiler_api/inc/PluginSampler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysanadatacapture/piprofiler/piprofiler_api/inc/PluginSampler.h Thu Feb 11 15:52:57 2010 +0200 @@ -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 +// #include // versions removed from ProfilerConfig.h + +#ifndef __KERNEL_MODE__ +#include +#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 // public RPluginSampler +{ + 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(samplerId), + reinterpret_cast(settings)); + } + +inline void RPluginSampler::AdditionalSettingsForTrace2(TInt samplerId,TInt settings) + { + DoControl(EAdditionalTraceSettings2, + reinterpret_cast(samplerId), + reinterpret_cast(settings)); + } + +inline void RPluginSampler::AdditionalSettingsForTrace3(TInt samplerId,TInt settings) + { + DoControl(EAdditionalTraceSettings3, + reinterpret_cast(samplerId), + reinterpret_cast(settings)); + } + +inline void RPluginSampler::AdditionalSettingsForTrace4(TInt samplerId,TInt settings) + { + DoControl(EAdditionalTraceSettings4, + reinterpret_cast(samplerId), + reinterpret_cast(settings)); + } + +inline void RPluginSampler::SetSamplingPeriod(TInt samplerId, TInt settings) + { + DoControl(ESetSamplingPeriod, + reinterpret_cast(samplerId), + reinterpret_cast(settings)); + } + + +inline void RPluginSampler::MarkTraceActive(TUint32 id) +{ + DoControl(EMarkTraceActive, reinterpret_cast(id)); +} + +inline void RPluginSampler::MarkTraceInactive(TUint32 id) +{ + DoControl(EMarkTraceInactive, reinterpret_cast(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(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(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(testCase)); +} + +#endif +#endif