tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbacksrv.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:23:25 +0100
branchRCL_3
changeset 37 09b094b73eb8
parent 36 39d4c97df8cb
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* 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:  Header of tactile feedback server.
* Part of:      Tactile Feedback.
*
*/


#ifndef C_TACTILEFEEDBACKSRV_H
#define C_TACTILEFEEDBACKSRV_H

#include <e32base.h>
#include <f32file.h>

#include "tactilefeedbackresolver.h"
#include "tactilefeedbackdefs.h"

// Total number of ranges
const TUint KTactileFeedbackRangeCount = 1;

// Definition of the ranges of IPC numbers
const TInt KTactileFeedbackRanges[KTactileFeedbackRangeCount] = 
    {
    0,
    }; 

// Policy to implement for each of the above ranges        
const TUint8 KTactileFeedbackElementsIndex[KTactileFeedbackRangeCount] = 
    {
    0,
    };

const CPolicyServer::TPolicyElement KTactileFeedbackPolicyElements[] = 
    {
    { _INIT_SECURITY_POLICY_C2(ECapability_None,
                               ECapability_None),
                               CPolicyServer::EFailClient }
    };

// Package all the above together into a policy
const CPolicyServer::TPolicy KTactileFeedbackPolicy =
    {
    CPolicyServer::EAlwaysPass,     // all attempts should pass
    KTactileFeedbackRangeCount,     // number of ranges
    KTactileFeedbackRanges,         // ranges array
    KTactileFeedbackElementsIndex,  // elements<->ranges index
    KTactileFeedbackPolicyElements, // array of elements
    };

/**
 *  Tactile feedback server.
 *
 *  @since S60 5.2
 */
class CTactileFeedbackSrv : public CPolicyServer
    {
public:
    /**
    * 2-phased constructor.
    *
    * @since S60 5.2
    * @return Instance of CTactileFeedbackSrv.
    */
    static CTactileFeedbackSrv* NewL();
    
    /**
    * C++ destructor.
    */ 
    virtual ~CTactileFeedbackSrv();
  
public:
// from base class CServer2.
    /**
    * From CServer2, creates a new session.
    */
    CSession2* NewSessionL( const TVersion& aVersion, 
                            const RMessage2& aMessage ) const;

    /**
     * Increase session count.
     *
     * @since S60 5.2
     */
    void AddSession();
    
    /**
     * Decrease session count, close server if count is zero.
     *
     * @since S60 5.2
     */
    void RemoveSession();
    
public:    
    /**
     * Play feedback.
     *
     * @since S60 5.2
     * @param aFeedback    - Logical feedback type.
     * @param aPlayHaptics - Boolean value, which indicates if haptics 
     *                       feedback is played.
     * @param aPlayAudio   - Boolean value, which indicates if audio 
     *                       feedback is played.
     */
    void PlayFeedback( TTouchLogicalFeedback aFeedback,
                       TBool aPlayHaptics,
                       TBool aPlayAudio );
    
    /**
     * Start continuous feedback.
     *
     * @since S60 5.2
     * @param aType        - Type of continuous feedback.
     * @param aIntensity   - Intensity of continuous feedback.
     */
    void StartFeedback( TTouchContinuousFeedback aType,
                        TInt aIntensity );

    /**
     * Modify continuous feedback.
     *
     * @since S60 5.2     
     * @param aIntensity   - Intensity of continuous feedback.
     */                        
    void ModifyFeedback( TInt aIntensity );
    
    /**
     * Stop feedback.
     */    
    void StopFeedback();
    
    /**
     * Set feedback enabled/disabled for the device.
     *
     * @since S60 5.2     
     * @param aFeedbackType - Bitmask, which tells which feedback types
     *                        are enabled/disabled. 
     */    
    void EnableFeedbackForDevice(  TTouchFeedbackType aFeedbackType  );
    
    /**
     * Get a bitmask of feedback type, which indicates what feedback types 
     * are enabled/disabled in the device.
     *
     * @since S60 5.2
     * @return Bitmask, which contains currently enabled feedback types.
     */    
    TTouchFeedbackType FeedbackEnabledForDevice();
    
    /**
     * Play preview feedback.
     *
     * @since S60 5.2
     * @param aLevel    - Level value defines the strength of playing 
     *                    effect. Maximum level value is player dependent.
     * @param aFeedback - Logical feedback type.
     * @param aType     - Type of feedback to be previewed. 
     */    
    void PlayPreviewFeedback( TInt aLevel,
                               TTouchLogicalFeedback aFeedback,
                               TTouchFeedbackType aType );

    /**
     * Start preview of continuous feedback.
     *
     * @since S60 5.2
     * @param aLevel        - Level value defines the strength of playing 
     *                        effect. Maximum level value is player dependent.     
     * @param aFeedback     - Type of continuous feedback to be played.
     * @param aIntensity    - Intensity of continuous feedback. Value
     *                        range for intensity is 0-100% from basic
     *                        strength (aLevel).
     * @param aType         - Type of feedback to be previewed. 
     */    
    void StartPreviewFeedback( TInt aLevel,
                                TTouchContinuousFeedback aFeedback,
                                TInt aIntensity,
                                TTouchFeedbackType aType );
                                
    /**
     * Stop preview of continuous feedback.
     *
     * @since S60 5.2
     */
    void StopPreviewFeedback();

private:    
    /**
    * C++ constructor.
    */
    CTactileFeedbackSrv();
    
    /**
    * 2nd phase constructor.
    */
    void ConstructL();

private: // data
    /**
     * Instance of tactile feedback resolver.
     * Own.
     */
    CTactileFeedbackResolver* iResolver;
    
    /**
     * Count of open sessions.
     */     
    TInt iSessionCount;
    
    /**
     * A bitmap, which contains information of currently enabled/disabled
     * feedback types.
     */
    TInt iDeviceFeedbackEnabled;
    };


#endif // C_TACTILEFEEDBACKSRV_H

// End of file.