hwrmhaptics/tsrc/hapticstestplugins/inc/plugintimer.h
changeset 76 cb32bcc88bad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hwrmhaptics/tsrc/hapticstestplugins/inc/plugintimer.h	Fri Oct 08 14:33:25 2010 +0300
@@ -0,0 +1,180 @@
+/*
+* 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 the License "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Haptics test (adaptation) plugin timer header file
+*
+*/
+
+
+
+#ifndef __HWRMHAPTICSTESTPLUGINTIMER_H_
+#define __HWRMHAPTICSTESTPLUGINTIMER_H_
+
+#include <hwrmhapticspluginservice.h>
+
+/**
+ *  An interface for handling timer expiration events.
+ *
+ * @since S60 5.1
+ */
+class MPluginTimerCallback
+    {
+public:
+    /** 
+     * Method that is called when the timer expires.
+     * Must be implemented by classes that support this interface.
+     *
+     * @param aService Pointer to an object that implements
+     *                 the MHWRMHapticsPluginCallback interface
+     *                 and thus handles the callbacks from this
+     *                 test plugin. In practice this is pointer 
+     *                 to the Haptics plugin manager object.
+     * @param aCommandId ID of the command that was being executed
+     *                   (or actually emulated as being executed) 
+     *                   at the time the timer expired.
+     * @param aTransId Transaction ID of the command that was being executed
+     *                 (or actually emulated as being executed) 
+     *                 at the time the timer expired.
+     * @param aRetVal  (Emulated) return value of the command that was
+     *                 being executed (or actually emulated as being executed)
+     *                 at the time the timer expired.
+     */
+    virtual void GenericTimerFired( MHWRMHapticsPluginCallback* aService,
+                                    TInt aCommandId,
+                                    TUint8 aTransId,
+                                    TInt aRetVal ) = 0;
+    };
+
+
+/**
+ * Timer class that triggers command execution emulation. (This test
+ * stub emulates the real adaptation layer haptics command execution
+ * and the emulation "round" is triggered from this class).
+ *
+ * @since S60 5.1
+ */
+class CPluginTimer : public CTimer
+    {
+public:
+    /**
+     * Static method for instantiation.
+     * The instantiation also adds the instance to active scheduler and
+     * triggers start of the (embedded CTimer) timer.
+     *
+     * @param aInterval  Timeout value for command execution emulation.
+     * @param aService   Pointer to the object that handles the responses
+     *                   from command execution emulation. I.e., pointer
+     *                   to an object outside the test stub plugin that
+     *                   handles responses from all kinds of haptics plugins.
+     *                   In practice this is the Haptics plugin manager.
+     * @param aCommandId Id of the command whose execution is emulated.
+     * @param aTransId   Id of the transaction to which the emulated command
+     *                   belongs to. 
+     * @param aRetVal    Return value of the emulated command.
+     * @param aCallback  Pointer to the object that further handles the
+     *                   command emulation (i.e., pointer to the actual test
+     *                   stub plugin object). 
+     */
+    static CPluginTimer* NewL(
+            const TTimeIntervalMicroSeconds32& aInterval, 
+            MHWRMHapticsPluginCallback* aService,
+            TInt aCommandId,
+            TUint8 aTransId,
+            TInt aRetVal,
+            MPluginTimerCallback* aCallback);
+
+    /**
+     * Destructor
+     */        
+    ~CPluginTimer();
+        
+    /**
+     * RunL handles (embedded CTimer) timer expirations.
+     *
+     * @see CActive
+     * @see CTimer
+     */
+    void RunL();
+        
+    /**
+     * Getter for transaction Id
+     */
+    TUint8 TransId() const;
+
+private:
+    /**
+     * Constructor
+     * 
+     * @param aPriority
+     * @param aService   Pointer to an object that implements
+     *                   the MHWRMHapticsPluginCallback interface
+     *                   and thus handles the callbacks from this 
+     *                   whole test plugin.
+     * @param aCommandId Id of the command for which the timer-based
+     *                   command execution emulation is started.
+     * @param aTransId   Transaction Id 
+     * @param aRetVal
+     * @param aCallback  Pointer to an object that implements the above 
+     *                   declared MPluginTimerCallback interface. In 
+     *                   practice this is the CHWRMHapticsTestPlugin
+     *                   object.
+     */
+    CPluginTimer( TInt aPriority, 
+                  MHWRMHapticsPluginCallback* aService,
+                  TInt aCommandId,
+                  TUint8 aTransId,
+                  TInt aRetVal,
+                  MPluginTimerCallback* aCallback );
+                  
+    /**
+     * Two-phase construction. ConstructL is needed because parent
+     * class (CTimer) requires two-phase construction.
+     */
+    void ConstructL();
+          
+private: // data
+    
+    /**
+     * Pointer to an object that handles responses from this 
+     * test plugin (i.e., in practice the Haptics plugin manager).
+     */ 
+    MHWRMHapticsPluginCallback* iService;  // Not owned
+        
+    /**
+     * Id of the command whose execution is being emulated by
+     * the test plugin
+     */     
+    TInt iCommandId;
+ 
+    /**
+     * Id of the transaction to which the command, whose execution
+     * is being emulated by the test plugin, belongs to
+     */
+    TUint8 iTransId;
+
+    /**
+     * Return value that the emulated command execution is to return.
+     */
+    TInt iRetVal;
+       
+    /**
+     * Pointer to an object that further handles the timer expiries
+     * from this CPluginTimer object.
+     * I.e, pointer to the actual test plugin object
+     */   
+    MPluginTimerCallback* iCallback;  // Not owned
+    
+    };
+
+
+#endif // __HWRMHAPTICSTESTPLUGINTIMER_H_
\ No newline at end of file