diff -r 000000000000 -r 4e1aa6a622a0 hwrmhaptics/hapticspluginmanager/inc/hwrmhapticspluginmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hwrmhaptics/hapticspluginmanager/inc/hwrmhapticspluginmanager.h Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,224 @@ +/* +* Copyright (c) 2008 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: Haptics server plugin handler header file. +* +*/ + + +#ifndef C_HWRMHAPTICSPLUGINMANAGER_H +#define C_HWRMHAPTICSPLUGINMANAGER_H + +#include +#include +#include +#include "hwrmhapticscommondata.h" +#include "hwrmhapticsgenerictimer.h" + +class CHWRMHapticsService; +class CHWRMHapticsPluginTransactionList; +class CHWRMHapticsUid; +class CRepository; + +/** + * Haptics server side plugin handler implementation. + */ +class CHWRMHapticsPluginManager : public CBase, + public MHWRMHapticsPluginCallback, + public MHWRMHapticsGenericTimerCallback + { +public: + + /** + * Symbian two-phased constructor. + * + * @param Server common data object. + * @param aRequestTimeout Timeout in microseconds for requests + */ + IMPORT_C static CHWRMHapticsPluginManager* NewL( + CHWRMHapticsCommonData& aHapticsCommonData, + TInt aRequestTimeout ); + + /** + * Destructor. + */ + virtual ~CHWRMHapticsPluginManager(); + +public: + + /** + * Method to invoke a particular command in the plugin. + * Only one concurrent request is supported, will leave + * with KErrNotSupported if request is attempted while + * another is executing + * + * @param aCommandId Command ID + * @param aData Data associated with command + * @param aCompletionCallback Callback for completion. + * If NULL, no callback is attempted. + * @return Transaction ID (can be used later to cancel) + * Returns zero if transaction was already completed. + */ + TUint8 ProcessCommandL( TInt aCommandId, TDesC8& aData, + CHWRMHapticsService* aCompletionCallback ); + + /** + * Method to cancel currently executing command + * + * @param aTransID Transaction ID. + */ + void CancelCommandL( TUint8 aTransId ); + +public: + + /** + * From MHWRMHapticsPluginCallback. + * @see MHWRMHapticsPluginCallback + */ + void PluginEnabled( THWRMLogicalActuators aActuator, TBool aEnabled ); + + /** + * From MHWRMHapticsPluginCallback. + * @see MHWRMHapticsPluginCallback + */ + void ProcessResponseL( TInt aCommandId, TUint8 aTransId, const TDesC8& aData ); + +public: + + /** + * From MHWRMHapticsGenericTimerCallback. + * @see MHWRMHapticsGenericTimerCallback + */ + virtual void GenericTimerFired( TInt aTimerId, TBool aCutOff ); + +public: + + /** + * Returns the supported actuator information from plugins. + * + * @return A mask value containing the supported actuators. + */ + TUint32 GetSupportedActuatorInfo(); + + /** + * Opens the plugin appropriate for the actuator to be opened. + * + * @param aActuator Logical actuator type to be opened. + * @return Whether or not the plugin was created (ETrue = created). + * If plugin was + * not created and the method did not leave, the plugin is + * already created and therefore not created again. Basically this + * return value indicates also whether or not the plugin already + * exists (EFalse = already exists, not created). + */ + TBool OpenPluginToActuatorL( THWRMLogicalActuators aActuator ); + + /** + * Checks if automatic license setting is allowed for the sender of + * the RMessage2. + * + * @param aMessage The message from which VendorId and SID of the + * sender is read (in order to determine whether + * automatic license setting is allowed or not). + * + * @return Whether or not automatic license setting is allowed. + */ + TBool LicenseAutoSettingAllowed( const RMessage2& aMessage ); + +private: + + /** + * C++ constructor. + * + * @param aRequestTimeout Timeout in microseconds for requests + * @param Server common data object. + */ + CHWRMHapticsPluginManager( CHWRMHapticsCommonData& aHapticsCommonData, + TInt aRequestTimeout ); + + /** + * 2nd phase constructor. + */ + void ConstructL(); + + /** + * Finds the supported actuator information from plugins. + * + * @return A mask value containing the supported actuators. + */ + TUint32 FindSupportedActuatorInfoL(); + + /** + * Adds actuator type to given actuator mask, if it is + * supported in the system. + * + * @param aMatch Actuator type CR key. + * @param aMask A mask value to be added to aActuators. + * @param aActuators A value, where to add the mask value. + */ + void AddInfoIfSupportedL( TInt aMatch, + THWRMLogicalActuators aMask, + TUint32& aActuators ); + +private: + + /** + * Pointer to plugin instance. + */ + CHWRMHapticsPluginService* iPlugin; + + /** + * Pointer to haptics data object common to all sessions. Not owned. + */ + CHWRMHapticsCommonData& iHapticsCommonData; + + /** + * Counter to create aTransIds + */ + TUint8 iTransIdCounter; + + /** + * List of open transactions + */ + CHWRMHapticsPluginTransactionList* iTransactionList; + + /** + * Plugin call timeout timer. + */ + CHWRMHapticsGenericTimer* iPluginTimer; + + /** + * Maximum time request can be open. + */ + TTimeIntervalMicroSeconds32 iRequestTimeout; + + /** + * Supported actuator information. + */ + TUint32 iSupActuators; + + /** + * Reference to uid handler, owned. + */ + CHWRMHapticsUid* iHapticsUid; + + /** + * Access to settings. + * Own. + */ + CRepository* iRepository; + }; + +#endif // C_HWRMHAPTICSPLUGINMANAGER_H + +// End of File