resourcemgmt/hwresourcesmgr/server/inc/HWRMPluginHandler.h
changeset 0 4e1aa6a622a0
child 52 d6b9e89d80a3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/resourcemgmt/hwresourcesmgr/server/inc/HWRMPluginHandler.h	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,214 @@
+/*
+* 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:
+*
+*/
+
+
+
+
+#ifndef HWRMPLUGINHANDLER_H
+#define HWRMPLUGINHANDLER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include "HWRMPluginService.h"
+#include "HWRMPluginTransactionList.h"
+#include "HWRMGenericTimer.h"
+
+// CONSTANTS
+// None
+
+// MACROS
+// None
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+// None
+
+// FORWARD DECLARATIONS
+class CHWRMService;
+
+// CLASS DECLARATIONS
+
+/**
+ *  Callback interface for the server side plugin handler
+ */
+ class MHWRMIndicationHandler
+     {
+     public:
+
+         /**
+         * Method to return events from plugin handler
+         *
+         * @param aId  The indication ID
+         * @param aData  Data associated with the indication 
+         *
+         */
+         virtual void ProcessIndicationL( const TUint32 aId, TDesC8& aData ) = 0;
+     };
+
+/**
+* This class contains ongoing plugin operation data.
+* It is used as a struct.
+*/
+class THWRMTransactionData : public THWRMPluginTransactionListItem
+    {
+    public:
+    
+	    CHWRMService*     iCompletionCallback; // Pointer to currently using service. Not owned.
+	    TTime             iObsoletionTime;     // Time after which the transaction is obsolete
+
+        /**
+	    * Convenience constructor
+	    */
+	    THWRMTransactionData(CHWRMService* aCompletionCallback, 
+	                         TUint8 aTransId, 
+	                         TInt aCommandId,
+	                         const TTime& aObsoletionTime)
+	        : THWRMPluginTransactionListItem(aTransId, aCommandId),
+	        iCompletionCallback(aCompletionCallback),
+	        iObsoletionTime(aObsoletionTime)
+	            {
+	            };
+	            
+	    /**
+	    * Virtual destructor.
+	    */
+	    virtual ~THWRMTransactionData()
+	        {
+	        // iCompletionCallback not owned so not cleaned. Just NULL it to make pc-lint happy.
+	        iCompletionCallback = NULL;
+	        };
+    };
+    
+/**
+*  Hardware Resource Manager server side plugin
+*  handler implementation.
+*
+*/
+class CHWRMPluginHandler : public CBase,
+                           public MHWRMPluginCallback,
+                           public MHWRMGenericTimerCallback
+                                 
+    {
+    public: // Constructors and Destructor
+    
+        /**
+        * Constructor method for instance.
+        *
+        * @param aMatch Determines the API that the loaded plugin implements.
+        * @param aRequestTimeout Timeout in microseconds for requests
+        */
+        static CHWRMPluginHandler* NewL(const TDesC8& aMatch, TInt aRequestTimeout);
+
+        /**
+        * Destructor.
+        */
+        virtual ~CHWRMPluginHandler();
+    
+    public: // New functions
+
+        /**
+        * 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,
+                              CHWRMService* aCompletionCallback);
+
+        /**
+        * Method to cancel currently executing command
+        */
+        void CancelCommandL( TUint8 aTransId );
+
+		/**
+		* Registers a handler for receiving HWRM plug-in indications
+		*
+		* @param aCallback  The indication handler to be registered
+		*/
+        void RegisterForIndications(MHWRMIndicationHandler* aCallback);
+        
+        /**
+		* Deregisters handlers for receiving HWRM plug-in indications
+		*
+		* @param aCallback  The indication handler to be deregistered		
+		*/
+		void DeregisterForIndications(MHWRMIndicationHandler* aCallback);	
+        
+    	// MHWRMPluginCallback callback methods
+    	
+        /**
+        * Method to return data in response to a message from a HWRM plugin.
+        *
+        * @param aCommandId Command identifier
+        * @param aTransId   Unique transcation identifier
+        * @param aData      Data returned from call
+        *                   Since none of the commands require return value,
+        *                   this package contains standard TInt error code.
+        */
+        void ProcessResponseL( TInt aCommandId,
+                               TUint8 aTransId, 
+                               TDesC8& aData ); 
+        /**
+         * Method to return indications from HWRM plugin.
+         *
+         * @param aIndId An indication ID
+         * @param aData  Data associated with the event ID. 
+         */
+ 		void EventL( const TUint32 aIndId, TDesC8& aData );
+                               
+    	// From MHWRMGenericTimerCallback    	
+    	virtual void GenericTimerFired(TInt aTimerId, TBool aCutOff);
+
+    private: 
+    
+        /**
+        * C++ default constructor.
+        * @param aRequestTimeout Timeout in microseconds for requests
+        */
+        CHWRMPluginHandler(TInt aRequestTimeout);
+        
+        /**
+        * This 2nd phase constructor.
+        *
+        * @param aMatch Matching parameter used to determine correct 
+        *               ECom implemetation
+        */
+        void ConstructL( const TDesC8& aMatch );
+        
+	private:   // data
+	
+	    CHWRMPluginService*         iPlugin;           // Reference to plugin
+	    TUint8                      iTransIdCounter;   // Counter to create aTransIds
+        CHWRMPluginTransactionList*	iTransactionList;  // List of open transactions       
+        CHWRMGenericTimer*          iPluginTimer;      // Plugin call timeout timer.
+        TTimeIntervalMicroSeconds32 iRequestTimeout;   // Maximum time request can be open.
+
+        RPointerArray<MHWRMIndicationHandler> iIndicationCallbacks; // elements not owned
+    };
+
+#endif  // HWRMPLUGINHANDLER_H
+            
+// End of File