diff -r f0f2b8682603 -r 3ff3fecb12fe sysanadatacapture/piprofiler/piprofiler_api/inc/SamplerPluginInterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysanadatacapture/piprofiler/piprofiler_api/inc/SamplerPluginInterface.h Thu Feb 11 15:52:57 2010 +0200 @@ -0,0 +1,265 @@ +/* +* 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 __SAMPLER_PLUGIN_INTERFACE__ +#define __SAMPLER_PLUGIN_INTERFACE__ + +#include +#include +#include +#include // internal settings format presentations + + +// Constant for indexing (iOrder): +const TInt KSamplerPluginNotIndexed = -1; + +/** + * Constant: KSamplerPluginInterfaceUid + * + * Description: UID of this ECOM interface. It should be unique in the system. + * It is used to identify this specific custom interface. + * Implementations of this interface will use this ID, when they + * publish the implementation. Clients use this UID to search for + * implementations for this interface (the + * EcomInterfaceDefinition.inl does this). + */ +const TUid KSamplerPluginInterfaceUid = {0x2001E5BC}; + +/** + * + * Description: UID of this ECOM interface. It should be unique in the system. + * + */ +enum TGenericSettingTypes +{ + EEnablePlugin, + EOutputSettings, + ESaveDrive, + EFilePrefix, + ETracingMode +}; + + +enum TSamplerCaptionTypes + { + ECaptionLengthShort, + ECaptionLengthMedium, + ECaptionLengthLong, + ESettingsCaption + }; + + +/** +* Used by GetValue(). These are the keys for retrieving a specific +* value. This enum can be extended to provide other values as well as +* long as the original keys are not changed. +*/ +enum TSamplerPluginValueKeys + { + + ESamplerPluginKeySettingsItemValueString = 1, + ESamplerPluginSettings, + ESamplerPluginEnabled, + ESamplerPluginDisabled, + ESamplerPluginType, + ESamplerPluginVersion + }; + + +/** + * Class: CSamplerInterfaceDefinition + * + * Description: Custom ECOM interface definition. This interface is used by + * clients to find specific instance and do corresponding + * calculation operation for given too numbers. Plugin + * implementations implement the Calculate function. + */ +class TBapBuf; +class CProfilerSampleStream; + +class CSamplerPluginInterface : public CBase +{ + + // CSamplerPluginLoader accesses iOrder which should not be accessed outside. + friend class CSamplerPluginLoader; + +public: + // Wrapper functions to handle ECOM "connectivity". + // These are implemented in EComInterfaceDefinition.inl. + // These functions are used only by the client. + + /** + * Function: NewL + * + * Description: Wraps ECom object instantitation. Will search for + * interface implementation, which matches to given + * aOperationName. + * + * Param: aOperationName name of requested implementation. + * Implementations advertise their "name" as specified + * in their resource file field + * IMPLEMENTATION_INFO::default_data. + * For details, see EcomInterfaceDefinition.inl comments. + * In this example, the allowed values are "sum" and + * "multiply". + * + * Note: This is not a "normal" NewL method, since normally NewL + * methods are only defined for concrete classes. + * Note that also implementations of this interface provide + * NewL methods. They are the familiar NewL's, which create + * instance of classes. + */ + static CSamplerPluginInterface* NewL(const TUid aImplementationUid, TAny* aInitParams); + + /** + * Function: ~CSamplerPluginInterface + * + * Description: Wraps ECom object destruction. Notifies the ECOM + * framework that specific instance is being destroyed. + * See EcomInterfaceDefinition.inl for details. + */ + virtual ~CSamplerPluginInterface(); +protected: // New + + /** + * C++ constructor. + */ + CSamplerPluginInterface(); + +public: + // Public pure virtual functions, which are implemented by + // interface implementations (See ..\plugin) + + /** + * Method for initializing and starting of profiling in single plugin implementation + * @param aStream is a data stream to store the gathered data, provided by engine + * @return TInt if no error KErrNone, else any of system-wide errors + */ + virtual TInt ResetAndActivateL(CProfilerSampleStream& aStream) = 0; + + /** + * Method for stopping of profiling in single plugin implementation + * @return TInt if no error KErrNone, else any of system-wide errors + */ + virtual TInt StopSampling() = 0; + /** + * Method for checking if plugin is enabled + * @return TBool if enabled return ETrue else EFalse + */ + virtual TBool Enabled() = 0; + + /** + * Method for getting an array of sampler attributes, size of an array: 1...n + * @return array of settings of one or several sampler plugins + */ + virtual void GetAttributesL(CArrayFixFlat* aAttributeArray) = 0; + + /** + * Method for setting configurations of single sampler attributes + * @param aAttributes contains settings of a single sampler plugin + */ + virtual TInt SetAttributesL(TSamplerAttributes aAttributes) = 0; + + /** + * Method for parsing text formatted settings block and converting + * it to TSamplerAttributes data structure + * @param aSingleSettingArray containing setting lines of a single sampler + * @return status of conversion, if success KErrNone, else KErrGeneral + */ + virtual TInt ConvertRawSettingsToAttributes(CDesC8ArrayFlat* aSingleSettingArray) = 0; + + /** + * Method for getting caption of this plugin. This should be the + * localized name of the settings view to be shown in parent view. + * @param aCaption pointer to Caption variable + * @param aType caption type; ECaptionLengthShort, ECaptionLengthMedium or ECaptionLengthLong + * @param aSubId sub sampler id, if -1 returning main plugin's caption + */ + virtual void GetCaption( TDes& aCaption, TInt aType, TInt aSubId) const = 0; + + /** + * Method for getting UID of this plugin. + * @param aSubId the implementation id of sub sampler + * @returns uid of sampler or sub sampler, if aSubId -1 uid of sampler, else uid of sub sampler + */ + virtual TUid Id(TInt aSubId) const = 0; + + /** + * Method for getting locally defined sub ID value inside a specific plug-in. + * @param aUid of a specific sampler + * @returns local ID of sampler or sub sampler + */ + virtual TInt SubId(TUid aUid) const = 0; + + // subsampler settings, i.e. samplers implemented within a plugin + virtual TInt GetSamplerUidByName(TDesC8& name) = 0; + + // sampler type + virtual TInt GetSamplerType() = 0; + + + // some internal inline methods, used by engine + inline TInt Flush(); + inline TInt AddSample(TUint8* sample, TUint32 length, TInt limitSize); + inline void SetOrder( TInt aOrder ); + inline static void ListAllImplementationsL(RImplInfoPtrArray& aImplInfoArray); + + /** + * Static methods for getting setting value out of descriptor + * + * @param aBuf buffer where to convert the value + * @param aValue parameter where to store the requested type of value + */ + inline static void Str2Bool(const TDesC8& aBuf, TBool& aValue); + inline static void Str2Int(const TDesC8& aBuf, TInt& aValue); + inline static void Str2Int(const TDesC8& aBuf, TUint32& aValue); + + /** iDtor_ID_Key Instance identifier key. When instance of an + * implementation is created by ECOM framework, the + * framework will assign UID for it. The UID is used in + * destructor to notify framework that this instance is + * being destroyed and resources can be released. + */ + TUid iDtor_ID_Key; + + /** + * Index of the plugin in listbox. Used for CSamplerPluginLoader. Default + * value is KSamplerPluginNotIndexed which means not ordered. This value is + * read, if defined, from the opaque_data field of the plugin's resource + * definition. Index starts from 0. + */ + TInt iOrder; + +public: + TInt iSamplerType; + + // this variable must be defined by the extending classes!! + TInt iSamplerId; + + CProfilerSampleStream* iStream; + TBool iEnabled; + +private: + TBapBuf* iBuffer; +}; + +#include +#include + + +#endif // __SAMPLER_PLUGIN_INTERFACE__