Catchup to latest Symbian^4 GCC_SURGE
authorWilliam Roberts <williamr@symbian.org>
Thu, 22 Jul 2010 16:36:02 +0100
branchGCC_SURGE
changeset 29 87195b524679
parent 20 29fd388ec5e9 (current diff)
parent 28 89310418a649 (diff)
Catchup to latest Symbian^4
tactilefeedback/tactilefeedbackresolver/data/tactilefeedbackeffects.ivt
--- a/hapticsservices_pub/tactile_feedback_client_api/inc/touchfeedback.h	Fri Jun 11 16:24:59 2010 +0100
+++ b/hapticsservices_pub/tactile_feedback_client_api/inc/touchfeedback.h	Thu Jul 22 16:36:02 2010 +0100
@@ -694,6 +694,25 @@
                                   TTouchFeedbackType aFeedbackType,
                                   const TPointerEvent& aPointerEvent ) = 0;
 
+    /**
+     * Gives direct feedback.
+     *
+     * Notice that the feedback might not be actually played, if 
+     * for example user has disabled the feedback from the settings.
+     *
+     * This function always causes a synchronous client-server transaction, 
+     * and potentially flushing of window server client-side buffer. Using this
+     * overload it is also possible to disable unwanted feedback (vibra/audio)
+     * by giving only wanted feedback type as parameter.
+     *
+     * @since S60 5.2
+     * @param aType         - The logical feedback type to play.
+     * @param aFeedbackType - Feedback types to be played as a bitmask 
+     *                        combination of enumeration items from
+     *                        TTouchFeedbackType
+     */
+    virtual void InstantFeedback( TTouchLogicalFeedback aType,
+                                  TTouchFeedbackType aFeedbackType ) = 0;
 
 
     };
--- a/hapticsservices_pub/tactile_feedback_client_api/inc/touchlogicalfeedback.h	Fri Jun 11 16:24:59 2010 +0100
+++ b/hapticsservices_pub/tactile_feedback_client_api/inc/touchlogicalfeedback.h	Thu Jul 22 16:36:02 2010 +0100
@@ -97,7 +97,8 @@
     ETouchFeedbackRotateStep,
     ETouchFeedbackSensitiveSlider,
     ETouchFeedbackStopFlick,
-    ETouchFeedbackLongPress
+    ETouchFeedbackLongPress,
+	ETouchFeedbackLongTap
     };
     
 /**  
--- a/tactilefeedback/tactilearearegistry/inc/tactileinternaldatatypes.h	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilearearegistry/inc/tactileinternaldatatypes.h	Thu Jul 22 16:36:02 2010 +0100
@@ -24,6 +24,7 @@
 
 
 #include <e32std.h>
+#include <e32svr.h>
 #include <touchlogicalfeedback.h>
 
 
--- a/tactilefeedback/tactilearearegistry/src/tactilearearegistry.cpp	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilearearegistry/src/tactilearearegistry.cpp	Thu Jul 22 16:36:02 2010 +0100
@@ -158,6 +158,8 @@
     const TTactileFeedbackDisconnectData& aData )
     {
     // #1
+    iTactileSemaphore.Wait();
+    
     for ( TInt i=0; i < iChunkArray.Count(); i++ )
         {
         if ( iChunkArray[i].iWindowGroupId == aData.iWindowGroupId )
@@ -170,6 +172,8 @@
             break;
             }
         }  
+    
+    iTactileSemaphore.Signal();
     }
     
 
Binary file tactilefeedback/tactilefeedbackclient/cenrep/2000B494.txt has changed
Binary file tactilefeedback/tactilefeedbackclient/conf/tactilefeedback.confml has changed
Binary file tactilefeedback/tactilefeedbackclient/conf/tactilefeedback_2000B494.crml has changed
--- a/tactilefeedback/tactilefeedbackclient/inc/touchfeedbackimpl.h	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackclient/inc/touchfeedbackimpl.h	Thu Jul 22 16:36:02 2010 +0100
@@ -305,6 +305,12 @@
                           TTouchFeedbackType aFeedbackType,
                           const TPointerEvent& aPointerEvent );
       
+    /**
+     * @see MTouchFeedback.
+     */
+    void InstantFeedback( TTouchLogicalFeedback aType,
+                          TTouchFeedbackType aFeedbackType );
+
 private:
     /**
      * Constructor.
--- a/tactilefeedback/tactilefeedbackclient/src/touchfeedbackimpl.cpp	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackclient/src/touchfeedbackimpl.cpp	Thu Jul 22 16:36:02 2010 +0100
@@ -1146,6 +1146,35 @@
     }
         
 // ---------------------------------------------------------------------------
+// CTouchFeedbackImpl::InstantFeedback
+// ---------------------------------------------------------------------------
+//    
+void CTouchFeedbackImpl::InstantFeedback( TTouchLogicalFeedback aType,
+                                          TTouchFeedbackType aFeedbackType )
+    {
+    if ( iClient && ( iAudioEnabledForThisApp || iVibraEnabledForThisApp ) )
+        {
+        // Initialize vibra and audio enablers as given in param.
+        TBool vibraEnabled = aFeedbackType & ETouchFeedbackVibra;
+        TBool audioEnabled = aFeedbackType & ETouchFeedbackAudio;
+
+        // Check application level vibra and audio enablers
+        if ( !iVibraEnabledForThisApp )
+            {
+            vibraEnabled = EFalse;
+            }
+        if ( !iAudioEnabledForThisApp )
+            {
+            audioEnabled = EFalse;
+            }
+
+        TRACE4( "CTouchFeedbackImpl::InstantFeedback, type:=%d Vibra:%d Audio:%d",
+                aType, vibraEnabled, audioEnabled );
+        iClient->ImmediateFeedback( aType, vibraEnabled, audioEnabled );
+        }
+    }
+
+// ---------------------------------------------------------------------------
 // Here we do the actual work for adding new area to the registry
 // (or updating an existing one).
 //
@@ -1730,9 +1759,8 @@
     item.iEventType = aEventType;        
     
 	// range check. update when logical feedback types are changed.
-    if (! ( aFeedback >= ETouchFeedbackNone || aFeedback <= ETouchFeedbackSensitive) 
-     || ! ( aFeedback >= ETouchFeedbackBasicButton || 
-            aFeedback <= ETouchFeedbackLongPress ) )
+    if ( !(aFeedback >= ETouchFeedbackNone && aFeedback <= ETouchFeedbackSensitive) 
+            && !(aFeedback >= ETouchFeedbackBasicButton && aFeedback <= ETouchFeedbackLongPress) )
         {
         return KErrArgument;
         }
Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel1_A.ivt has changed
Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel2_A.ivt has changed
Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel3_A.ivt has changed
Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel4_A.ivt has changed
Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel5_A.ivt has changed
Binary file tactilefeedback/tactilefeedbackresolver/data/tactilefeedbackeffects.ivt has changed
--- a/tactilefeedback/tactilefeedbackresolver/group/bld.inf	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/group/bld.inf	Thu Jul 22 16:36:02 2010 +0100
@@ -24,8 +24,17 @@
 DEFAULT
 
 PRJ_EXPORTS
-../data/tactilefeedbackeffects.ivt         /epoc32/data/z/private/10003B20/TactileFeedbackEffects.ivt
-../data/tactilefeedbackeffects.ivt         /epoc32/release/winscw/udeb/Z/private/10003B20/TactileFeedbackEffects.ivt
+// Tactile feedback effects files
+../data/10.1_TactileFeedbackLevel1_A.ivt    /epoc32/data/z/private/10003B20/10.1_TactileFeedbackLevel1_A.ivt
+../data/10.1_TactileFeedbackLevel1_A.ivt    /epoc32/release/winscw/udeb/Z/private/10003B20/10.1_TactileFeedbackLevel1_A.ivt
+../data/10.1_TactileFeedbackLevel2_A.ivt    /epoc32/data/z/private/10003B20/10.1_TactileFeedbackLevel2_A.ivt
+../data/10.1_TactileFeedbackLevel2_A.ivt    /epoc32/release/winscw/udeb/Z/private/10003B20/10.1_TactileFeedbackLevel2_A.ivt
+../data/10.1_TactileFeedbackLevel3_A.ivt    /epoc32/data/z/private/10003B20/10.1_TactileFeedbackLevel3_A.ivt
+../data/10.1_TactileFeedbackLevel3_A.ivt    /epoc32/release/winscw/udeb/Z/private/10003B20/10.1_TactileFeedbackLevel3_A.ivt
+../data/10.1_TactileFeedbackLevel4_A.ivt    /epoc32/data/z/private/10003B20/10.1_TactileFeedbackLevel4_A.ivt
+../data/10.1_TactileFeedbackLevel4_A.ivt    /epoc32/release/winscw/udeb/Z/private/10003B20/10.1_TactileFeedbackLevel4_A.ivt
+../data/10.1_TactileFeedbackLevel5_A.ivt    /epoc32/data/z/private/10003B20/10.1_TactileFeedbackLevel5_A.ivt
+../data/10.1_TactileFeedbackLevel5_A.ivt    /epoc32/release/winscw/udeb/Z/private/10003B20/10.1_TactileFeedbackLevel5_A.ivt
 
 // IBY file
 ../rom/tactilefeedbackresolver.iby  CORE_IBY_EXPORT_PATH(mw, tactilefeedbackresolver.iby)
--- a/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackdomaincrkeys.h	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackdomaincrkeys.h	Thu Jul 22 16:36:02 2010 +0100
@@ -58,9 +58,13 @@
 * Possible values are:
 * Valid path to IVT file. 
 *
-* Default value: "z:\\private\\10003B20\\tactilefeedbackeffects.ivt"
+* Default value: "z:\\private\\10003B20\\10.1_TactileFeedbackLevel*_A.ivt"
 **/
-const TUint32 KTactileHapticsIVTFile                = 0x00000015;
+const TUint32 KTactileHapticsLevel1IVTFile          = 0x00000015;
+const TUint32 KTactileHapticsLevel2IVTFile          = 0x00000016;
+const TUint32 KTactileHapticsLevel3IVTFile          = 0x00000017;
+const TUint32 KTactileHapticsLevel4IVTFile          = 0x00000018;
+const TUint32 KTactileHapticsLevel5IVTFile          = 0x00000019;
 
 /**
 * Number of steps used to adjust vibra feedback strength
@@ -70,7 +74,7 @@
 *
 * Default value: 10
 **/
-const TUint32 KTactileFeedbackVibraLevels           = 0x00000016;
+const TUint32 KTactileFeedbackVibraLevels           = 0x0000001a;
 
 /**
 * Number of steps used to adjust audio feedback volume
@@ -80,7 +84,7 @@
 *
 * Default value: 3
 **/
-const TUint32 KTactileFeedbackAudioLevels           = 0x00000017;
+const TUint32 KTactileFeedbackAudioLevels           = 0x0000001b;
 
 #endif  // TACTILEFEEDBACKDOMAINCRKEYS_H
 
--- a/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackprivatecrkeys.h	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackprivatecrkeys.h	Thu Jul 22 16:36:02 2010 +0100
@@ -90,6 +90,30 @@
 const TUint32 KTactileVibraIntensityBasicLevel3      = 0x00000022;
 
 /**
+* Vibra intensity setting for logical feedback type ETouchFeedbackBasic
+* and vibra effect level ETactileFeedbackVibraLevel4.
+*
+* Possible values are:
+* Integers from 0 to 100. See HWRMVibra.h for more information.
+* Zero intensity will disable this logical feedback type.
+*
+* Default value: 60
+**/
+const TUint32 KTactileVibraIntensityBasicLevel4      = 0x00000023;
+
+/**
+* Vibra intensity setting for logical feedback type ETouchFeedbackBasic
+* and vibra effect level ETactileFeedbackVibraLevel5.
+*
+* Possible values are:
+* Integers from 0 to 100. See HWRMVibra.h for more information.
+* Zero intensity will disable this logical feedback type.
+*
+* Default value: 80
+**/
+const TUint32 KTactileVibraIntensityBasicLevel5      = 0x00000024;
+
+/**
 * Vibra duration setting for logical feedback type ETouchFeedbackBasic
 * and vibra effect level ETactileFeedbackVibraLevel1.
 *
@@ -101,7 +125,7 @@
 *
 * Default value: 15
 **/
-const TUint32 KTactileVibraDurationBasicLevel1       = 0x00000023;
+const TUint32 KTactileVibraDurationBasicLevel1       = 0x00000025;
 
 /**
 * Vibra duration setting for logical feedback type ETouchFeedbackBasic
@@ -115,7 +139,7 @@
 *
 * Default value: 20
 **/
-const TUint32 KTactileVibraDurationBasicLevel2       = 0x00000024;
+const TUint32 KTactileVibraDurationBasicLevel2       = 0x00000026;
 
 /**
 * Vibra duration setting for logical feedback type ETouchFeedbackBasic
@@ -129,7 +153,35 @@
 *
 * Default value: 30
 **/
-const TUint32 KTactileVibraDurationBasicLevel3       = 0x00000025;
+const TUint32 KTactileVibraDurationBasicLevel3       = 0x00000027;
+
+/**
+* Vibra duration setting for logical feedback type ETouchFeedbackBasic
+* and vibra effect level ETactileFeedbackVibraLevel4.
+*
+* Duration is given in milliseconds, and zero value will disable this
+* logical feedback type. 
+*
+* Possible values are:
+* Integer values from zero upwards.
+*
+* Default value: 40
+**/
+const TUint32 KTactileVibraDurationBasicLevel4       = 0x00000028;
+
+/**
+* Vibra duration setting for logical feedback type ETouchFeedbackBasic
+* and vibra effect level ETactileFeedbackVibraLevel5.
+*
+* Duration is given in milliseconds, and zero value will disable this
+* logical feedback type. 
+*
+* Possible values are:
+* Integer values from zero upwards.
+*
+* Default value: 50
+**/
+const TUint32 KTactileVibraDurationBasicLevel5       = 0x00000029;
 
 
 /**
@@ -142,7 +194,7 @@
 *
 * Default value: 50
 **/
-const TUint32 KTactileVibraIntensitySensitiveLevel1  = 0x00000026;
+const TUint32 KTactileVibraIntensitySensitiveLevel1  = 0x0000002a;
 
 /**
 * Vibra intensity setting for logical feedback type ETouchFeedbackSensitive
@@ -154,7 +206,7 @@
 *
 * Default value: 100
 **/
-const TUint32 KTactileVibraIntensitySensitiveLevel2  = 0x00000027;
+const TUint32 KTactileVibraIntensitySensitiveLevel2  = 0x0000002b;
 
 /**
 * Vibra intensity setting for logical feedback type ETouchFeedbackSensitive
@@ -166,7 +218,31 @@
 *
 * Default value: 10
 **/
-const TUint32 KTactileVibraIntensitySensitiveLevel3  = 0x00000028;
+const TUint32 KTactileVibraIntensitySensitiveLevel3  = 0x0000002c;
+
+/**
+* Vibra intensity setting for logical feedback type ETouchFeedbackSensitive
+* and vibra effect level ETactileFeedbackVibraLevel4.
+*
+* Possible values are:
+* Integers from 0 to 100. See HWRMVibra.h for more information.
+* Zero intensity will disable this logical feedback type.
+*
+* Default value: 10
+**/
+const TUint32 KTactileVibraIntensitySensitiveLevel4  = 0x0000002d;
+
+/**
+* Vibra intensity setting for logical feedback type ETouchFeedbackSensitive
+* and vibra effect level ETactileFeedbackVibraLevel5.
+*
+* Possible values are:
+* Integers from 0 to 100. See HWRMVibra.h for more information.
+* Zero intensity will disable this logical feedback type.
+*
+* Default value: 10
+**/
+const TUint32 KTactileVibraIntensitySensitiveLevel5  = 0x0000002e;
 
 
 /**
@@ -181,7 +257,7 @@
 *
 * Default value: 5
 **/
-const TUint32 KTactileVibraDurationSensitiveLevel1  = 0x00000029;
+const TUint32 KTactileVibraDurationSensitiveLevel1  = 0x0000002f;
 
 /**
 * Vibra duration setting for logical feedback type ETouchFeedbackSensitive
@@ -195,7 +271,7 @@
 *
 * Default value: 10
 **/
-const TUint32 KTactileVibraDurationSensitiveLevel2  = 0x0000002a;
+const TUint32 KTactileVibraDurationSensitiveLevel2  = 0x00000030;
 
 /**
 * Vibra duration setting for logical feedback type ETouchFeedbackSensitive
@@ -209,7 +285,35 @@
 *
 * Default value: 15
 **/
-const TUint32 KTactileVibraDurationSensitiveLevel3  = 0x0000002b;
+const TUint32 KTactileVibraDurationSensitiveLevel3  = 0x00000031;
+
+/**
+* Vibra duration setting for logical feedback type ETouchFeedbackSensitive
+* and vibra effect level ETactileFeedbackVibraLevel4.
+*
+* Duration is given in milliseconds, and zero value will disable this
+* logical feedback type. 
+*
+* Possible values are:
+* Integer values from zero upwards.
+*
+* Default value: 20
+**/
+const TUint32 KTactileVibraDurationSensitiveLevel4  = 0x00000032;
+
+/**
+* Vibra duration setting for logical feedback type ETouchFeedbackSensitive
+* and vibra effect level ETactileFeedbackVibraLevel5.
+*
+* Duration is given in milliseconds, and zero value will disable this
+* logical feedback type. 
+*
+* Possible values are:
+* Integer values from zero upwards.
+*
+* Default value: 25
+**/
+const TUint32 KTactileVibraDurationSensitiveLevel5  = 0x00000033;
 
 
 
@@ -259,6 +363,32 @@
 const TUint32 KTactileAudioToneFreqBasicLevel3      = 0x00000042;
 
 /**
+* Audio frequency setting for logical feedback type ETouchFeedbackBasic
+* and audio effect level ETactileFeedbackAudioLevel4.
+*
+* Frequency is given in Hz.
+*
+* Possible values are:
+* Positive integer values.
+*
+* Default value: 1100
+**/
+const TUint32 KTactileAudioToneFreqBasicLevel4      = 0x00000043;
+
+/**
+* Audio frequency setting for logical feedback type ETouchFeedbackBasic
+* and audio effect level ETactileFeedbackAudioLevel5.
+*
+* Frequency is given in Hz.
+*
+* Possible values are:
+* Positive integer values.
+*
+* Default value: 1100
+**/
+const TUint32 KTactileAudioToneFreqBasicLevel5      = 0x00000044;
+
+/**
 * Audio duration setting for logical feedback type ETouchFeedbackBasic
 * and audio effect level ETactileFeedbackAudioLevel1.
 *
@@ -269,7 +399,7 @@
 *
 * Default value: 10
 **/
-const TUint32 KTactileAudioToneDurationBasicLevel1  = 0x00000043;
+const TUint32 KTactileAudioToneDurationBasicLevel1  = 0x00000045;
 
 /**
 * Audio duration setting for logical feedback type ETouchFeedbackBasic
@@ -282,7 +412,7 @@
 *
 * Default value: 10
 **/
-const TUint32 KTactileAudioToneDurationBasicLevel2  = 0x00000044;
+const TUint32 KTactileAudioToneDurationBasicLevel2  = 0x00000046;
 
 /**
 * Audio duration setting for logical feedback type ETouchFeedbackBasic
@@ -295,7 +425,33 @@
 *
 * Default value: 10
 **/
-const TUint32 KTactileAudioToneDurationBasicLevel3  = 0x00000045;
+const TUint32 KTactileAudioToneDurationBasicLevel3  = 0x00000047;
+
+/**
+* Audio duration setting for logical feedback type ETouchFeedbackBasic
+* and audio effect level ETactileFeedbackAudioLevel4.
+*
+* Duration is given in milliseconds.
+*
+* Possible values are:
+* Zero (disables this feedback type) or positive integers
+*
+* Default value: 10
+**/
+const TUint32 KTactileAudioToneDurationBasicLevel4  = 0x00000048;
+
+/**
+* Audio duration setting for logical feedback type ETouchFeedbackBasic
+* and audio effect level ETactileFeedbackAudioLevel5.
+*
+* Duration is given in milliseconds.
+*
+* Possible values are:
+* Zero (disables this feedback type) or positive integers
+*
+* Default value: 10
+**/
+const TUint32 KTactileAudioToneDurationBasicLevel5  = 0x00000049;
 
 /**
 * Audio volume setting for logical feedback type ETouchFeedbackBasic
@@ -309,7 +465,7 @@
 *
 * Default value: 20
 **/
-const TUint32 KTactileAudioToneVolumeBasicLevel1    = 0x00000046;
+const TUint32 KTactileAudioToneVolumeBasicLevel1    = 0x0000004a;
 
 /**
 * Audio volume setting for logical feedback type ETouchFeedbackBasic
@@ -323,7 +479,7 @@
 *
 * Default value: 40
 **/
-const TUint32 KTactileAudioToneVolumeBasicLevel2    = 0x00000047;
+const TUint32 KTactileAudioToneVolumeBasicLevel2    = 0x0000004b;
 
 /**
 * Audio volume setting for logical feedback type ETouchFeedbackBasic
@@ -337,7 +493,35 @@
 *
 * Default value: 60
 **/
-const TUint32 KTactileAudioToneVolumeBasicLevel3    = 0x00000048;
+const TUint32 KTactileAudioToneVolumeBasicLevel3    = 0x0000004c;
+
+/**
+* Audio volume setting for logical feedback type ETouchFeedbackBasic
+* and audio effect level ETactileFeedbackAudioLevel4.
+*
+* Volume level is given in percentages. 100% equals to 
+* CMdaAudioToneUtility::MaxVolume, and 0% will disable this feedback type.
+*
+* Possible values are:
+* 0 - 100 
+*
+* Default value: 80
+**/
+const TUint32 KTactileAudioToneVolumeBasicLevel4    = 0x0000004d;
+
+/**
+* Audio volume setting for logical feedback type ETouchFeedbackBasic
+* and audio effect level ETactileFeedbackAudioLevel5.
+*
+* Volume level is given in percentages. 100% equals to 
+* CMdaAudioToneUtility::MaxVolume, and 0% will disable this feedback type.
+*
+* Possible values are:
+* 0 - 100 
+*
+* Default value: 100
+**/
+const TUint32 KTactileAudioToneVolumeBasicLevel5    = 0x0000004e;
 
 
 /**
@@ -351,7 +535,7 @@
 *
 * Default value: 1100
 **/
-const TUint32 KTactileAudioToneFreqSensitiveLevel1  = 0x00000049;
+const TUint32 KTactileAudioToneFreqSensitiveLevel1  = 0x0000004f;
 
 /**
 * Audio frequency setting for logical feedback type ETouchFeedbackSensitive
@@ -364,7 +548,7 @@
 *
 * Default value: 1100
 **/
-const TUint32 KTactileAudioToneFreqSensitiveLevel2  = 0x0000004a;
+const TUint32 KTactileAudioToneFreqSensitiveLevel2  = 0x00000050;
 
 /**
 * Audio frequency setting for logical feedback type ETouchFeedbackSensitive
@@ -377,7 +561,33 @@
 *
 * Default value: 1100
 **/
-const TUint32 KTactileAudioToneFreqSensitiveLevel3  = 0x0000004b;
+const TUint32 KTactileAudioToneFreqSensitiveLevel3  = 0x00000051;
+
+/**
+* Audio frequency setting for logical feedback type ETouchFeedbackSensitive
+* and audio effect level ETactileFeedbackAudioLevel4.
+*
+* Frequency is given in Hz.
+*
+* Possible values are:
+* Positive integer values.
+*
+* Default value: 1100
+**/
+const TUint32 KTactileAudioToneFreqSensitiveLevel4  = 0x00000052;
+
+/**
+* Audio frequency setting for logical feedback type ETouchFeedbackSensitive
+* and audio effect level ETactileFeedbackAudioLevel5.
+*
+* Frequency is given in Hz.
+*
+* Possible values are:
+* Positive integer values.
+*
+* Default value: 1100
+**/
+const TUint32 KTactileAudioToneFreqSensitiveLevel5  = 0x00000053;
 
 
 /**
@@ -391,7 +601,7 @@
 *
 * Default value: 10
 **/
-const TUint32 KTactileAudioToneDurationSensitiveLevel1 = 0x0000004c;
+const TUint32 KTactileAudioToneDurationSensitiveLevel1 = 0x00000054;
 
 /**
 * Audio duration setting for logical feedback type ETouchFeedbackSensitive
@@ -404,7 +614,7 @@
 *
 * Default value: 10
 **/
-const TUint32 KTactileAudioToneDurationSensitiveLevel2 = 0x0000004d;
+const TUint32 KTactileAudioToneDurationSensitiveLevel2 = 0x00000055;
 
 /**
 * Audio duration setting for logical feedback type ETouchFeedbackSensitive
@@ -417,7 +627,33 @@
 *
 * Default value: 10
 **/
-const TUint32 KTactileAudioToneDurationSensitiveLevel3 = 0x0000004e;
+const TUint32 KTactileAudioToneDurationSensitiveLevel3 = 0x00000056;
+
+/**
+* Audio duration setting for logical feedback type ETouchFeedbackSensitive
+* and audio effect level ETactileFeedbackAudioLevel4.
+*
+* Duration is given in milliseconds.
+*
+* Possible values are:
+* Zero (disables this feedback type) or positive integers
+*
+* Default value: 10
+**/
+const TUint32 KTactileAudioToneDurationSensitiveLevel4 = 0x00000057;
+
+/**
+* Audio duration setting for logical feedback type ETouchFeedbackSensitive
+* and audio effect level ETactileFeedbackAudioLevel5.
+*
+* Duration is given in milliseconds.
+*
+* Possible values are:
+* Zero (disables this feedback type) or positive integers
+*
+* Default value: 10
+**/
+const TUint32 KTactileAudioToneDurationSensitiveLevel5 = 0x00000058;
 
 /**
 * Audio volume setting for logical feedback type ETouchFeedbackSensitive
@@ -431,7 +667,7 @@
 *
 * Default value: 10
 **/
-const TUint32 KTactileAudioToneVolumeSensitiveLevel1   = 0x0000004f;
+const TUint32 KTactileAudioToneVolumeSensitiveLevel1   = 0x00000059;
 
 /**
 * Audio volume setting for logical feedback type ETouchFeedbackSensitive
@@ -445,7 +681,7 @@
 *
 * Default value: 25
 **/
-const TUint32 KTactileAudioToneVolumeSensitiveLevel2   = 0x00000050;
+const TUint32 KTactileAudioToneVolumeSensitiveLevel2   = 0x0000005a;
 
 /**
 * Audio volume setting for logical feedback type ETouchFeedbackSensitive
@@ -459,7 +695,35 @@
 *
 * Default value: 40
 **/
-const TUint32 KTactileAudioToneVolumeSensitiveLevel3   = 0x00000051;
+const TUint32 KTactileAudioToneVolumeSensitiveLevel3   = 0x0000005b;
+
+/**
+* Audio volume setting for logical feedback type ETouchFeedbackSensitive
+* and audio effect level ETactileFeedbackAudioLevel4.
+*
+* Volume level is given in percentages. 100% equals to 
+* CMdaAudioToneUtility::MaxVolume, and 0% will disable this feedback type.
+*
+* Possible values are:
+* 0 - 100
+*
+* Default value: 55
+**/
+const TUint32 KTactileAudioToneVolumeSensitiveLevel4   = 0x0000005c;
+
+/**
+* Audio volume setting for logical feedback type ETouchFeedbackSensitive
+* and audio effect level ETactileFeedbackAudioLevel5.
+*
+* Volume level is given in percentages. 100% equals to 
+* CMdaAudioToneUtility::MaxVolume, and 0% will disable this feedback type.
+*
+* Possible values are:
+* 0 - 100
+*
+* Default value: 70
+**/
+const TUint32 KTactileAudioToneVolumeSensitiveLevel5   = 0x0000005d;
 
 // =============================================================================
 // Configuration options related to audio .wav feedback
--- a/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackresolver.h	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackresolver.h	Thu Jul 22 16:36:02 2010 +0100
@@ -206,7 +206,16 @@
      * the player plugin.
      */    
     void CreateAudioPlayerL( TUid aAudioUid );
-     
+
+    /**
+     * Return ETrue if aFeedback's priority is higher than current playing
+     * feedback, namely iLastFeedback.
+     *
+     * TODO: Currently, we only take Popup and Button effects into
+     * account. Ultimately, a complete priority queue should be set up.
+     */
+    TBool IsHigherThanPlaying ( TTouchLogicalFeedback aFeedback ) const;
+    
 private: // data
 
     /**
@@ -235,6 +244,12 @@
     CRepository*          iRepository;
     
     /**
+     * Central repository for reading profile settings.
+     * Own.
+     */
+    CRepository*          iProfileRepository;
+    
+    /**
      * Central repository notifier, which sends notification when tactile 
      * feedback settings has been changed.
      * Own.
@@ -279,6 +294,12 @@
      * EFalse - audio feedback is played first.
      */
     TBool iVibraFirst;
+
+    /**
+     * Name of the last played feedback.
+     * 
+     */
+    TTouchLogicalFeedback iLastFeedback;
     };
 
 
--- a/tactilefeedback/tactilefeedbackresolver/plugins/tactileaudioplugin/src/tactileaudioplayer.cpp	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/plugins/tactileaudioplugin/src/tactileaudioplayer.cpp	Thu Jul 22 16:36:02 2010 +0100
@@ -138,7 +138,6 @@
         case ETouchFeedbackBounceEffect:        // flow through
         case ETouchFeedbackBasicSlider:         // flow through
         case ETouchFeedbackEditor:              // flow through
-        case ETouchFeedbackSensitiveKeypad:
         case ETouchFeedbackLineSelection:       // flow through
         case ETouchFeedbackBlankSelection:      // flow through
         case ETouchFeedbackTextSelection:       // flow through
@@ -149,11 +148,22 @@
         case ETouchFeedbackItemScroll:          // flow through
         case ETouchFeedbackCheckbox:            // flow through
         case ETouchFeedbackMultitouchActivate:
+        case ETouchFeedbackBasicKeypad:
+        case ETouchFeedbackFlick:
+        case ETouchFeedbackItemDrop:
+        case ETouchFeedbackItemMoveOver:
+        case ETouchFeedbackItemPick:
+        case ETouchFeedbackMultipleCheckbox:
+        case ETouchFeedbackRotateStep:
+        case ETouchFeedbackStopFlick:
+        case ETouchFeedbackLongPress:
             volumeIndex = 0;
             break;
         case ETouchFeedbackSensitive:           // flow through
         case ETouchFeedbackSensitiveButton:     // flow through
         case ETouchFeedbackSensitiveItem:      
+        case ETouchFeedbackSensitiveKeypad:
+        case ETouchFeedbackSensitiveSlider:
             volumeIndex = 1;
             break;
         default:
--- a/tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/inc/tactilehapticsplayer.h	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/inc/tactilehapticsplayer.h	Thu Jul 22 16:36:02 2010 +0100
@@ -118,6 +118,11 @@
     void DoPlayFeedbackL( TTouchLogicalFeedback aFeedback );
     
     /**
+     * Get IVT file Id via vibra level.
+     */
+    TUint32 IVTFileId();
+    
+    /**
      * Reads IVT data from file to buffer. 
      *
      */    
@@ -204,6 +209,11 @@
      * Own.  
      */
     CProfileChangeNotifyHandler* iProfileHandler;
+    
+    /**
+     * Current vibra level.
+     */
+    TInt iVibraLevel;
     };
 
 
--- a/tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/src/tactilehapticsplayer.cpp	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/src/tactilehapticsplayer.cpp	Thu Jul 22 16:36:02 2010 +0100
@@ -46,39 +46,39 @@
 _LIT8( KTFSensitive,            "TFSensitive");
 _LIT8( KTFBasicButton,          "TFBasicButton");
 _LIT8( KTFSensitiveButton,      "TFSensitiveButton");
-_LIT8( KTFBasicItem,            "TFList");                  // Mapped to IVT file version 9.2
-_LIT8( KTFSensitiveItem,        "TFSensitiveList");         // Mapped to IVT file version 9.2
-_LIT8( KTFBounceEffect,         "TFBoundaryList");          // Mapped to IVT file version 9.2
-_LIT8( KTFBasicSlider,          "TFSlider");                // Mapped to IVT file version 9.2
-_LIT8( KTFEditor,               "TFEdit");                  // Mapped to IVT file version 9.2
+_LIT8( KTFBasicItem,            "TFBasicItem");             // Mapped to IVT file version 9.2
+_LIT8( KTFSensitiveItem,        "TFSensitiveItem");         // Mapped to IVT file version 9.2
+_LIT8( KTFBounceEffect,         "TFBounceEffect");          // Mapped to IVT file version 9.2
+_LIT8( KTFBasicSlider,          "TFBasicSlider");           // Mapped to IVT file version 9.2
+_LIT8( KTFEditor,               "TFEditor");                // Mapped to IVT file version 9.2
 _LIT8( KTFLineSelection,        "TFLineSelection");
 _LIT8( KTFBlankSelection,       "TFBlankSelection");
 _LIT8( KTFTextSelection,        "TFTextSelection");
 _LIT8( KTFEmptyLineSelection,   "TFEmptyLineSelection");
 _LIT8( KTFPopUp,                "TFPopUp");
-_LIT8( KTFPopupOpen,            "TFIncreasingPopUp");       // Mapped to IVT file version 9.2
-_LIT8( KTFPopupClose,           "TFDecreasingPopUp");       // Mapped to IVT file version 9.2
-_LIT8( KTFItemScroll,           "TFFlick");                 // Mapped to IVT file version 9.2
+_LIT8( KTFPopupOpen,            "TFPopupOpen");             // Mapped to IVT file version 9.2
+_LIT8( KTFPopupClose,           "TFPopupClose");            // Mapped to IVT file version 9.2
+_LIT8( KTFItemScroll,           "TFItemScroll");            // Mapped to IVT file version 9.2
 _LIT8( KTFCheckbox,             "TFCheckbox");
-_LIT8( KTFBasicKeypad,          "TFBasic");                 // To be released in IVT file version 10.1
-_LIT8( KTFSensitiveKeypad,      "TFSensitiveInput");        // Mapped to IVT file version 9.2
-_LIT8( KTFMultitouchActivate,   "TFMultiTouchRecognized");  // Mapped to IVT file version 9.2
-_LIT8( KTFFlick,                "TFBasic");                 // To be released in IVT file version 10.1
-_LIT8( KTFItemDrop,             "TFBasic");                 // To be released in IVT file version 10.1
-_LIT8( KTFItemMoveOver,         "TFBasic");                 // To be released in IVT file version 10.1
-_LIT8( KTFItemPick,             "TFBasic");                 // To be released in IVT file version 10.1
-_LIT8( KTFMultipleCheckbox,     "TFBasic");                 // To be released in IVT file version 10.1      
-_LIT8( KTFRotateStep,           "TFBasic");                 // To be released in IVT file version 10.1
-_LIT8( KTFSensitiveSlider,      "TFBasic");                 // To be released in IVT file version 10.1       
-_LIT8( KTFStopFlick,            "TFBasic");                 // To be released in IVT file version 10.1
-_LIT8( KTFLongPress,            "TFBasic");                 // To be released in IVT file version 10.1
+_LIT8( KTFBasicKeypad,          "TFBasicKeypad");           // Mapped to IVT file version 10.1
+_LIT8( KTFSensitiveKeypad,      "TFSensitiveKeypad");       // Mapped to IVT file version 9.2
+_LIT8( KTFMultitouchActivate,   "TFMultitouchActivate");    // Mapped to IVT file version 9.2
+_LIT8( KTFFlick,                "TFFlick");                 // Mapped to IVT file version 10.1
+_LIT8( KTFItemDrop,             "TFItemDrop");              // Mapped to IVT file version 10.1
+_LIT8( KTFItemMoveOver,         "TFItemMoveOver");          // Mapped to IVT file version 10.1
+_LIT8( KTFItemPick,             "TFItemPick");              // Mapped to IVT file version 10.1
+_LIT8( KTFMultipleCheckbox,     "TFMultipleCheckbox");      // Mapped to IVT file version 10.1
+_LIT8( KTFRotateStep,           "TFRotateStep");            // Mapped to IVT file version 10.1
+_LIT8( KTFSensitiveSlider,      "TFSensitiveSlider");       // Mapped to IVT file version 10.1
+_LIT8( KTFStopFlick,            "TFStopFlick");             // Mapped to IVT file version 10.1
+_LIT8( KTFLongPress,              "TFLongPress");               // Mapped to IVT file version 10.1
 
 // Continuous feedback's names
 _LIT8( KTFContinuousSmooth,     "TFContinuousSmooth");
 _LIT8( KTFContinuousSlider,     "TFContinuousSlider");
 _LIT8( KTFContinuousInput,      "TFContinuousInput");
-_LIT8( KTFContinuousPopup,      "TFBasic");                 // To be released in IVT file version 10.1
-_LIT8( KTFContinuousPinch,      "TFBasic");                 // To be released in IVT file version 10.1
+_LIT8( KTFContinuousPopup,      "TFContinuousPopup");       // Mapped to IVT file version 10.1
+_LIT8( KTFContinuousPinch,      "TFContinuousPinch");       // Mapped to IVT file version 10.1
 // ---------------------------------------------------------------------------
 // Constructor.
 // ---------------------------------------------------------------------------
@@ -123,12 +123,26 @@
     // As a temporary fix to EAKH-7LKANT, the strength is (over)read from
     // profiles engine
     InitializeProfilesEngineL();
+    
+    if ( iVibraLevel > EProfileTactileFeedbackLevel5 )
+        {
+        User::Leave( KErrGeneral );
+        }
 
     User::LeaveIfError( iHaptics->SetDeviceProperty( 
                                         CHWRMHaptics::EHWRMHapticsStrength, 
                                         iStrength ) );
     TFileName ivtFile;
-    iRepository.Get( KTactileHapticsIVTFile, ivtFile );
+    if ( iVibraLevel != EProfileTactileFeedbackOff )
+        {
+        iRepository.Get( IVTFileId(), ivtFile );
+        }
+    else
+        {
+        // Load KTactileHapticsLevel1IVTFile as default IVT file
+        // to start up if vibra level is EProfileTactileFeedbackOff.
+        iRepository.Get( KTactileHapticsLevel1IVTFile, ivtFile );
+        }
     HBufC8* ivtBuf = IVTBufAllocL( ivtFile );
 
     CleanupStack::PushL( ivtBuf );
@@ -198,8 +212,9 @@
 //
 void CTactileHapticsPlayer::DoPlayFeedbackL( TTouchLogicalFeedback aFeedback )
     {
-    // Check if hapticts strength is set to zero.
-    if ( !iStrength )
+    // Check if hapticts strength is set to zero or
+    // vibra level is EProfileTactileFeedbackOff.
+    if ( !iStrength || iVibraLevel == EProfileTactileFeedbackOff)
         {
         User::Leave(KErrNotReady);
         }
@@ -315,6 +330,34 @@
     }
 
 // ---------------------------------------------------------------------------
+// Get IVT file Id via vibra level.
+// ---------------------------------------------------------------------------
+//
+TUint32 CTactileHapticsPlayer::IVTFileId()
+    {
+    TUint32 fileId = 0;
+    switch ( iVibraLevel )
+        {
+        case EProfileTactileFeedbackLevel1:
+            fileId = KTactileHapticsLevel1IVTFile;
+            break;
+        case EProfileTactileFeedbackLevel2:
+            fileId = KTactileHapticsLevel2IVTFile;
+            break;
+        case EProfileTactileFeedbackLevel3:
+            fileId = KTactileHapticsLevel3IVTFile;
+            break;
+        case EProfileTactileFeedbackLevel4:
+            fileId = KTactileHapticsLevel4IVTFile;
+            break;
+        case EProfileTactileFeedbackLevel5:
+            fileId = KTactileHapticsLevel5IVTFile;
+            break;
+        }
+    return fileId;
+    }
+
+// ---------------------------------------------------------------------------
 // Load IVT file.
 // ---------------------------------------------------------------------------
 //
@@ -412,9 +455,9 @@
                                                              periodicDef );
 
                 // Effect's magnitude value in IVT file is used as max value for 
-                // continuous effects.                                        
-                iMultiplier = periodicDef.iMagnitude / 100;                   
-                periodicDef.iMagnitude = aIntensity * iMultiplier;
+                // continuous effects and Attack level is used as minimum value
+                iMultiplier = ( periodicDef.iMagnitude - periodicDef.iAttackLevel ) / 100;
+                periodicDef.iMagnitude = aIntensity * iMultiplier + periodicDef.iAttackLevel;
 
                 if ( ret == KErrNone )
                     {
@@ -431,10 +474,10 @@
                                                             iEffectIndex,
                                                             magSweepDef );
                  
-                // Effect's magnitude value in IVT file is used as max value for 
-                // continuous effects.                                        
-                iMultiplier = magSweepDef.iMagnitude / 100;                   
-                magSweepDef.iMagnitude = aIntensity * iMultiplier;
+                // Effect's magnitude value in IVT file is used as max value for
+                // continuous effects and Attack level is used as minimum value
+                iMultiplier = ( magSweepDef.iMagnitude - magSweepDef.iAttackLevel ) / 100;
+                magSweepDef.iMagnitude = aIntensity * iMultiplier + magSweepDef.iAttackLevel;
                 
                 if ( ret == KErrNone )
                     {
@@ -488,7 +531,7 @@
                                                            iEffectIndex,
                                                            periodicDef );
                                                               
-                    periodicDef.iMagnitude = intensity;
+                    periodicDef.iMagnitude = intensity + periodicDef.iAttackLevel;
                     
                     iHaptics->ModifyPlayingPeriodicEffect( iEffectHandle, 
                                                            periodicDef );            
@@ -502,7 +545,7 @@
                                                            iEffectIndex,
                                                            magSweepDef );
                                                               
-                    magSweepDef.iMagnitude = intensity;
+                    magSweepDef.iMagnitude = intensity + magSweepDef.iAttackLevel;
                     
                     iHaptics->ModifyPlayingMagSweepEffect( iEffectHandle, 
                                                            magSweepDef );
@@ -553,10 +596,14 @@
                                          iStrength );        
             }
             break;
-        case KTactileHapticsIVTFile:
+        case KTactileHapticsLevel1IVTFile:
+        case KTactileHapticsLevel2IVTFile:
+        case KTactileHapticsLevel3IVTFile:
+        case KTactileHapticsLevel4IVTFile:
+        case KTactileHapticsLevel5IVTFile:
             {
             TFileName ivtFile;
-            iRepository.Get( KTactileHapticsIVTFile, ivtFile );
+            iRepository.Get( aId, ivtFile );
             
             HBufC8* ivtBuf = IVTBufAllocL( ivtFile );
             if ( ivtBuf )
@@ -652,8 +699,14 @@
     TProfileEvent /*aProfileEvent*/, 
     TInt /*aProfileId*/ )
     {
+    TInt oldVibraLevel = iVibraLevel;
     InitializeProfilesEngineL();
-    iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsStrength, iStrength ); 
+    iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsStrength, iStrength );
+    if ( iVibraLevel != oldVibraLevel &&
+         iVibraLevel != EProfileTactileFeedbackOff )
+        {
+        HandleNotifyGeneric( IVTFileId() );
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -676,10 +729,8 @@
     const MProfileFeedbackSettings& feedbackSettings = 
      extraSettings.ProfileFeedbackSettings();
  
-    TProfileTactileFeedback strength = feedbackSettings.TactileFeedback();
-    iStrength = 100 * ( EProfileTactileFeedbackLevel3 == strength ? 100 :
-                        EProfileTactileFeedbackLevel2 == strength ? 60 :
-                        EProfileTactileFeedbackLevel1 == strength ? 30 : 0 );
+    iVibraLevel = feedbackSettings.TactileFeedback();
+    iStrength = 100 * ( EProfileTactileFeedbackOff != iVibraLevel ? 100 : 0 );
  
     activeProfile->Release();
     
--- a/tactilefeedback/tactilefeedbackresolver/plugins/tactiletoneplugin/src/tactiletoneplayer.cpp	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/plugins/tactiletoneplugin/src/tactiletoneplayer.cpp	Thu Jul 22 16:36:02 2010 +0100
@@ -67,7 +67,7 @@
     // settings from profiles engine
     InitializeProfilesEngineL();
                                          
-    if ( iAudioLevel > EProfileAudioFeedbackLevel3 )
+    if ( iAudioLevel > EProfileAudioFeedbackLevel5 )
         {
         User::Leave( KErrGeneral );
         }
@@ -143,7 +143,6 @@
             case ETouchFeedbackBounceEffect:        // flow through
             case ETouchFeedbackBasicSlider:         // flow through
             case ETouchFeedbackEditor:              // flow through
-            case ETouchFeedbackSensitiveKeypad:
             case ETouchFeedbackLineSelection:       // flow through
             case ETouchFeedbackBlankSelection:      // flow through
             case ETouchFeedbackTextSelection:       // flow through
@@ -154,11 +153,22 @@
             case ETouchFeedbackItemScroll:          // flow through
             case ETouchFeedbackCheckbox:            // flow through
             case ETouchFeedbackMultitouchActivate:
+            case ETouchFeedbackBasicKeypad:
+            case ETouchFeedbackFlick:
+            case ETouchFeedbackItemDrop:
+            case ETouchFeedbackItemMoveOver:
+            case ETouchFeedbackItemPick:
+            case ETouchFeedbackMultipleCheckbox:
+            case ETouchFeedbackRotateStep:
+            case ETouchFeedbackStopFlick:
+            case ETouchFeedbackLongPress:
                 effectIndex = 0;
                 break;
             case ETouchFeedbackSensitive:           // flow through
             case ETouchFeedbackSensitiveButton:     // flow through
             case ETouchFeedbackSensitiveItem:      
+            case ETouchFeedbackSensitiveKeypad:
+            case ETouchFeedbackSensitiveSlider:
                 effectIndex = 1;                    
                 break;                              
             default:                                
@@ -210,7 +220,7 @@
     TInt ret( KErrArgument );
     
     if ( aLevel > EProfileAudioFeedbackOff  &&
-         aLevel <= EProfileAudioFeedbackLevel3 )
+         aLevel <= EProfileAudioFeedbackLevel5 )
         {
         iOriginalLevel = iAudioLevel;
         iAudioLevel = aLevel;
@@ -355,6 +365,42 @@
         iRepository.Get( KTactileAudioToneVolumeSensitiveLevel3,  
                          sensitiveParams.iVolume );        
         }
+    else if ( iAudioLevel == EProfileAudioFeedbackLevel4  )
+        {
+        // Read settings for ETouchFeedbackBasic, level 4
+        iRepository.Get( KTactileAudioToneFreqBasicLevel4,     
+                         basicParams.iFrequency );
+        iRepository.Get( KTactileAudioToneDurationBasicLevel4, 
+                         basicDuration );
+        iRepository.Get( KTactileAudioToneVolumeBasicLevel4,   
+                         basicParams.iVolume );
+        
+        // Read settings for ETouchFeedbackSensitive, level 4
+        iRepository.Get( KTactileAudioToneFreqSensitiveLevel4, 
+                         sensitiveParams.iFrequency );
+        iRepository.Get( KTactileAudioToneDurationSensitiveLevel4,  
+                         sensitiveDuration );
+        iRepository.Get( KTactileAudioToneVolumeSensitiveLevel4,  
+                         sensitiveParams.iVolume );
+        }
+    else if ( iAudioLevel == EProfileAudioFeedbackLevel5  )
+        {
+        // Read settings for ETouchFeedbackBasic, level 5
+        iRepository.Get( KTactileAudioToneFreqBasicLevel5,     
+                         basicParams.iFrequency );
+        iRepository.Get( KTactileAudioToneDurationBasicLevel5, 
+                         basicDuration );
+        iRepository.Get( KTactileAudioToneVolumeBasicLevel5,   
+                         basicParams.iVolume );
+        
+        // Read settings for ETouchFeedbackSensitive, level 5
+        iRepository.Get( KTactileAudioToneFreqSensitiveLevel5, 
+                         sensitiveParams.iFrequency );
+        iRepository.Get( KTactileAudioToneDurationSensitiveLevel5,  
+                         sensitiveDuration );
+        iRepository.Get( KTactileAudioToneVolumeSensitiveLevel5,  
+                         sensitiveParams.iVolume );
+        }
      
     // Clear old parameters. Only do it at end, so that we still have the
     // old settings in case something fails when reading these from 
--- a/tactilefeedback/tactilefeedbackresolver/plugins/tactilevibraplugin/src/tactilevibraplayer.cpp	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/plugins/tactilevibraplugin/src/tactilevibraplayer.cpp	Thu Jul 22 16:36:02 2010 +0100
@@ -52,7 +52,7 @@
     User::LeaveIfError( iRepository.Get( KTactileFeedbackHapticsStrength, 
                                          iVibraLevel ) );
                                          
-    if ( iVibraLevel > EProfileTactileFeedbackLevel3 )
+    if ( iVibraLevel > EProfileTactileFeedbackLevel5 )
         {
         User::Leave( KErrGeneral );
         }
@@ -118,7 +118,6 @@
             case ETouchFeedbackBounceEffect:        // flow through
             case ETouchFeedbackBasicSlider:         // flow through
             case ETouchFeedbackEditor:              // flow through
-            case ETouchFeedbackSensitiveKeypad:
             case ETouchFeedbackLineSelection:       // flow through
             case ETouchFeedbackBlankSelection:      // flow through
             case ETouchFeedbackTextSelection:       // flow through
@@ -129,11 +128,22 @@
             case ETouchFeedbackItemScroll:          // flow through
             case ETouchFeedbackCheckbox:            // flow through
             case ETouchFeedbackMultitouchActivate:
+            case ETouchFeedbackBasicKeypad:
+            case ETouchFeedbackFlick:
+            case ETouchFeedbackItemDrop:
+            case ETouchFeedbackItemMoveOver:
+            case ETouchFeedbackItemPick:
+            case ETouchFeedbackMultipleCheckbox:
+            case ETouchFeedbackRotateStep:
+            case ETouchFeedbackStopFlick:
+            case ETouchFeedbackLongPress:
                 effectIndex = 0;
                 break;
             case ETouchFeedbackSensitive:           // flow through
             case ETouchFeedbackSensitiveButton:     // flow through
             case ETouchFeedbackSensitiveItem:      
+            case ETouchFeedbackSensitiveKeypad:
+            case ETouchFeedbackSensitiveSlider:
                 effectIndex = 1;                    
                 break;                              
             default:                                
@@ -206,7 +216,7 @@
     TInt ret( KErrArgument );
     
     if ( aLevel > EProfileTactileFeedbackOff  &&
-         aLevel <= EProfileTactileFeedbackLevel3 )
+         aLevel <= EProfileTactileFeedbackLevel5 )
         {
         iOriginalLevel = iVibraLevel;
         iVibraLevel = aLevel;
@@ -276,6 +286,34 @@
         iRepository.Get( KTactileVibraDurationSensitiveLevel3,  
                           sensitiveParams.iTime );
         }
+    else if ( iVibraLevel == EProfileTactileFeedbackLevel4 )
+        {
+        // Read settings for ETouchFeedbackBasic
+        iRepository.Get( KTactileVibraIntensityBasicLevel4, 
+                          basicParams.iIntensity );
+        iRepository.Get( KTactileVibraDurationBasicLevel4,  
+                          basicParams.iTime );
+        
+        // Read settings for ETouchFeedbackSensitive
+        iRepository.Get( KTactileVibraIntensitySensitiveLevel4, 
+                          sensitiveParams.iIntensity );
+        iRepository.Get( KTactileVibraDurationSensitiveLevel4,  
+                          sensitiveParams.iTime );
+        }
+    else if ( iVibraLevel == EProfileTactileFeedbackLevel5 )
+        {
+        // Read settings for ETouchFeedbackBasic
+        iRepository.Get( KTactileVibraIntensityBasicLevel5, 
+                          basicParams.iIntensity );
+        iRepository.Get( KTactileVibraDurationBasicLevel5,  
+                          basicParams.iTime );
+        
+        // Read settings for ETouchFeedbackSensitive
+        iRepository.Get( KTactileVibraIntensitySensitiveLevel5, 
+                          sensitiveParams.iIntensity );
+        iRepository.Get( KTactileVibraDurationSensitiveLevel5,  
+                          sensitiveParams.iTime );
+        }
     
     iVibraParams.Reset();
 
--- a/tactilefeedback/tactilefeedbackresolver/rom/tactilefeedbackresolver.iby	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/rom/tactilefeedbackresolver.iby	Thu Jul 22 16:36:02 2010 +0100
@@ -27,6 +27,10 @@
 file=ABI_DIR\BUILD_DIR\tactilefeedbackresolver.dll SHARED_LIB_DIR\tactilefeedbackresolver.dll
 
 // audio file(s) used for wav feed back    
-data=ZPRIVATE\10003B20\TactileFeedbackEffects.ivt  private\10003B20\TactileFeedbackEffects.ivt
+data=ZPRIVATE\10003B20\10.1_TactileFeedbackLevel1_A.ivt  private\10003B20\10.1_TactileFeedbackLevel1_A.ivt
+data=ZPRIVATE\10003B20\10.1_TactileFeedbackLevel2_A.ivt  private\10003B20\10.1_TactileFeedbackLevel2_A.ivt
+data=ZPRIVATE\10003B20\10.1_TactileFeedbackLevel3_A.ivt  private\10003B20\10.1_TactileFeedbackLevel3_A.ivt
+data=ZPRIVATE\10003B20\10.1_TactileFeedbackLevel4_A.ivt  private\10003B20\10.1_TactileFeedbackLevel4_A.ivt
+data=ZPRIVATE\10003B20\10.1_TactileFeedbackLevel5_A.ivt  private\10003B20\10.1_TactileFeedbackLevel5_A.ivt
 
 #endif // TACTILEFEEDBACKRESOLVER_IBY
--- a/tactilefeedback/tactilefeedbackresolver/src/tactilefeedbackresolver.cpp	Fri Jun 11 16:24:59 2010 +0100
+++ b/tactilefeedback/tactilefeedbackresolver/src/tactilefeedbackresolver.cpp	Thu Jul 22 16:36:02 2010 +0100
@@ -23,6 +23,7 @@
 
 #include <centralrepository.h>
 #include <ecom/implementationinformation.h>
+#include <ProfileEngineInternalCRKeys.h>
 
 #include "tactilefeedbackprivatecrkeys.h"
 #include "tactilefeedbackinternalpskeys.h"
@@ -47,7 +48,8 @@
 // ---------------------------------------------------------------------------
 //
 CTactileFeedbackResolver::CTactileFeedbackResolver() : 
-    iFeedbackStarted( EFalse )
+    iFeedbackStarted( EFalse ), 
+    iLastFeedback( ETouchFeedbackNone ) 
     {
     }
 
@@ -102,12 +104,33 @@
     {
     delete iCenRepNotifier;
     delete iRepository;
+    delete iProfileRepository;
     delete iPropertyWatcher;
     delete iHapticsPlayer;
     delete iAudioPlayer;
     REComSession::FinalClose();
     }
+
+TBool CTactileFeedbackResolver::IsHigherThanPlaying(
+    TTouchLogicalFeedback aFeedback ) const
+    {
+    if( aFeedback == ETouchFeedbackBasicItem &&
+        iLastFeedback == ETouchFeedbackSensitiveItem )
+        {
+        return ETrue;
+        }
     
+    return ( aFeedback == ETouchFeedbackPopUp || 
+            aFeedback == ETouchFeedbackPopupOpen || 
+            aFeedback == ETouchFeedbackPopupClose ||
+            aFeedback == ETouchFeedbackBounceEffect ) &&
+            ( iLastFeedback == ETouchFeedbackBasicButton ||
+            iLastFeedback == ETouchFeedbackSensitiveButton ||
+            iLastFeedback == ETouchFeedbackSensitiveItem ||
+            iLastFeedback == ETouchFeedbackBasicItem ||
+            iLastFeedback == ETouchFeedbackCheckbox );
+    }
+
 // ---------------------------------------------------------------------------
 // We play feedback in case all three conditions are met:
 // 
@@ -129,17 +152,30 @@
     
     TTimeIntervalMicroSeconds interval = 
         now.MicroSecondsFrom( iLastFeedbackTimeStamp );
+
+    TBool willPlay = EFalse;
     
-     if ( iMinimumInterval == TTimeIntervalMicroSeconds( 0 ) || 
-          now < iLastFeedbackTimeStamp ||                       
-          iMinimumInterval <= interval )                        
+    if ( iMinimumInterval == TTimeIntervalMicroSeconds( 0 ) || 
+         now < iLastFeedbackTimeStamp ||                       
+         iMinimumInterval <= interval )
+        {
+        willPlay = ETrue;
+        }
+    else if ( IsHigherThanPlaying( aFeedback ) )
+        {
+        willPlay = ETrue;
+        StopFeedback();
+        }
+
+    if ( willPlay )
         {
         // First store the timestamp of this feedback playing moment.
         // This really needs to be done when 
         // actually playing feedback (not when feedback was requested
         // but filtered out).
         iLastFeedbackTimeStamp = now;      
-    
+
+        iLastFeedback = aFeedback;
     
         // Force vibra- and audio feedback off if those are globally disabled
         if ( !iVibraEnabled )
@@ -152,6 +188,16 @@
             aPlayAudio = EFalse;
             }
         
+        // check silent mode, if device is in silent mode, 
+        // audio feedback is not allowed.
+        TInt err;
+        TInt isAudioSupported;
+        err = iProfileRepository->Get( KProEngSilenceMode, isAudioSupported );
+        if ( KErrNone == err && 1 == isAudioSupported )
+            {
+            aPlayAudio = EFalse;
+            }
+
         if ( ( aPlayVibra || aPlayAudio ) &&        // #1
                aFeedback != ETouchFeedbackNone )    // #2
             {
@@ -196,7 +242,12 @@
     if ( !iRepository )
         {
         iRepository = CRepository::NewL( KCRUidTactileFeedback );    
-        }    
+        }
+
+    if ( !iProfileRepository )
+        {
+        iProfileRepository = CRepository::NewL( KCRUidProfileEngine );
+        }
     
     TInt minInterval(0);
     // Read and store minimun feedback interfal