/*
* 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 <e32base.h>
#include <hwrmlogicalactuators.h>
#include <hwrmhapticspluginservice.h>
#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