/** Copyright (c) 2006-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:**//** @file @internalTechnology */#ifndef HWRMVIBRACOMMONDATA_H#define HWRMVIBRACOMMONDATA_H// INCLUDES#include <e32base.h>#include "HWRMVibraProfileObserver.h"#include "HWRMVibra.h"#include <e32property.h>#include "HWRMPSChangeObserver.h"#include "HWRMVibraCommonService.h"// CONSTANTS// None// MACROS// None// DATA TYPES// None// FUNCTION PROTOTYPES// None// FORWARD DECLARATIONSclass CHWRMPluginHandler;class CHWRMReservationHandler;class CHWRMVibraService;// CLASS DECLARATION/*** Container for vibra data that is common for all sessions.* Also handles vibra related cenrep and PS data.* HWRM server upkeeps the instance.**/class CHWRMVibraCommonData : public CBase, public MHWRMVibraProfileObserver, public MHWRMPSChangeObserver { public: // Constructors and Destructor /** * Two-phased constructor. * * @param aPluginHandler Pointer to plugin handler for vibra * @param aReservationHandler Pointer to reservation handler for vibra * @param aCommonService Common vibra service instance for all sessions */ static CHWRMVibraCommonData* NewL(CHWRMPluginHandler* aPluginHandler, CHWRMReservationHandler* aReservationHandler, CHWRMVibraCommonService& aCommonService); /** * Destructor. */ virtual ~CHWRMVibraCommonData(); public: // New functions /** * Getter for maximum time of vibra can be on in one go * before it is automatically turned off. * * @return Maximum on time for vibra */ inline TTimeIntervalMicroSeconds32 MaximumOnTime() const; /** * Getter for feedback default intensity. * * @return Feedback default intensity */ inline TInt FeedbackDefaultIntensity() const; /** * Getter for feedback default duration. * * @return Feedback default duration */ inline TInt FeedbackDefaultDuration() const; /** * Getter for pulse feedback support. * * @return Feedback default duration */ inline TInt FeedbackPulseSupported() const; /** * Getter for vibra setting flag from profile settings. * * @return Vibra profile setting state */ CHWRMVibra::TVibraModeState VibraState(); /** * Getter for vibra feedback setting flag from profile settings. * * @return Vibra feedback profile setting state */ CHWRMVibra::TVibraFeedbackModeState VibraFeedbackState(); /** * Checks if vibra is blocked from being used or if it is * having a cool-out period. * * @return EFalse if vibra is available, ETrue if vibra * is cooling or blocked. */ TBool VibraLocked() const; /** * Checks if vibra is blocked for some reason. * * @return EFalse if vibra has no blocks, otherwise * p&s mask of vibra blocking source. */ TInt VibraBlocked( ) const; /** * Checks if vibra is blocked from specified reason. * * @param aMask Block mask to be checked. * @return EFalse if vibra has no blocks for specified * reason, otherwise mask of vibra blocking source. */ TBool VibraBlocked( TInt aMask ) const; /** * Locks vibra for minimum lock period. */ void LockVibra(); /** * Publish Vibra status * * @param aStatus New Vibra status to be published. * @param aPrivilegedClient Indicates if client is privileged */ void PublishVibraStatus(CHWRMVibra::TVibraStatus aStatus, TBool aPrivilegedClient = EFalse); /** * Checks if supplied SID matches privileged SID * * @param aClientSid SID to check against privileged SID */ TBool IsPrivilegedSid(const TSecureId& aClientSid); public: // Functions from base classes // From MHWRMVibraProfileObserver void VibraModeChange(CHWRMVibra::TVibraModeState newState); void VibraFeedbackModeChange(CHWRMVibra::TVibraFeedbackModeState newState); // From MHWRMPSChangeObserver void PSValueChanged(const TUid& aUid, TUint32 aKey, TInt aValue); private: /** * C++ default constructor. */ CHWRMVibraCommonData(CHWRMVibraCommonService& aCommonService); /** * By default Symbian 2nd phase constructor is private. * * @param aPluginHandler Pointer to plugin handler for vibra * @param aReservationHandler Pointer to reservation handler for vibra */ void ConstructL(CHWRMPluginHandler* aPluginHandler, CHWRMReservationHandler* aReservationHandler); private: TTimeIntervalMicroSeconds32 iMinimumOffTime; // Minimum offtime after maximum ontime TTimeIntervalMicroSeconds32 iMaximumOnTime; // Maximum continuous ontime for vibra CHWRMVibra::TVibraModeState iVibraSetting; // Flag to see if vibra is enabled in profile CHWRMVibra::TVibraFeedbackModeState iVibraFeedbackSetting; // Flag to see if feedback vibration is enabled in profile TInt iFeedbackIntensity; // Feedback vibration default intensity TInt iFeedbackDuration; // Feedback vibration default duration CHWRMVibraProfileObserver* iProfileObserver; // Vibra profile observer pointer. Owned. TTime iVibraLockedUntil; // Vibra cannot be set on before this time. RProperty iProperty; // P&S property for publishing vibra status CHWRMVibraService* iVibraService; // Vibra service used to stop vibra when // someone blocks it via HW Resource Blocking API CHWRMPSChangeObserver* iAccessoryBlockObserver; // Observes accessory blocking of vibra CHWRMPSChangeObserver* iInternalBlockObserver; // Observes HWRM internal blocking of vibra TUint32 iVibraBlockMask; // Blocking of vibra is indicated by this bitmask TUint32 iConfVibraBlockMask; // Cenrep configured vibra blocking bitmask TSecureId* iPrivilegedSid; // Privileged secure id (client with this SID ignores profile checks) TBool iPrivilegedVibraOn; // If privileged client has turned vibra on, this bool is set TBool iPulseSupported; // Indication whether tactile feedback pulse command handling supported. CHWRMVibra::TVibraStatus iLastPublishedStatus; // Last successfully published vibra status CHWRMVibraCommonService& iCommonService; // Vibra common service };#include "HWRMVibraCommonData.inl"#endif // HWRMVIBRACOMMONDATA_H// End of File