usbmgmt/usbmgr/usbman/server/INC/cusbotgwatcher.h
changeset 0 c9bc50fca66e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/usbman/server/INC/cusbotgwatcher.h	Tue Feb 02 02:02:59 2010 +0200
@@ -0,0 +1,247 @@
+/**
+* Copyright (c) 2008-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
+ @internalComponent
+ @released
+*/
+
+#ifndef __CUSBOTGWATCHER_H__
+#define __CUSBOTGWATCHER_H__
+
+#include <e32def.h>
+#include <d32otgdi.h>
+#include <e32property.h> //Publish & Subscribe header
+
+class MUsbOtgObserver;
+class RUsbOtgDriver;
+class CUsbOtg;
+
+/**
+ * The CUsbOtgIdPinWatcher class
+ *
+ * Talks directly to the USB OTG Logical Device Driver (LDD) and 
+ * watches ID-Pin changes.
+ * Publishes TInt property as ID-Pin status
+ */
+class CUsbOtgBaseWatcher : public CActive
+	{
+public:
+	CUsbOtgBaseWatcher(RUsbOtgDriver& aLdd);
+	virtual ~CUsbOtgBaseWatcher();
+
+	// From CActive
+	virtual void RunL() = 0;
+	virtual void DoCancel() = 0;
+	
+	virtual void Start();
+
+protected:
+	virtual void Post() = 0;
+
+protected:
+	RUsbOtgDriver& iLdd;
+	};
+
+/**
+ * The CUsbOtgIdPinWatcher class
+ *
+ * Talks directly to the USB OTG Logical Device Driver (LDD) and 
+ * watches ID-Pin changes.
+ * Publishes TInt property as ID-Pin status
+ */
+NONSHARABLE_CLASS(CUsbOtgIdPinWatcher) : public CUsbOtgBaseWatcher
+	{
+public:
+	static CUsbOtgIdPinWatcher* NewL(RUsbOtgDriver& aLdd);
+	virtual ~CUsbOtgIdPinWatcher();
+
+	// From CActive
+	virtual void RunL();
+	virtual void DoCancel();
+	
+protected:
+	CUsbOtgIdPinWatcher(RUsbOtgDriver& aLdd);
+	void ConstructL();
+	virtual void Post();
+
+private:
+	RUsbOtgDriver::TOtgIdPin iOtgIdPin;
+	};
+
+/**
+ * The CUsbOtgVBusWatcher class
+ *
+ * Talks directly to the USB OTG Logical Device Driver (LDD) and 
+ * watches ID-Pin changes.
+ * Publishes TInt property as ID-Pin status
+ */
+NONSHARABLE_CLASS(CUsbOtgVbusWatcher) : public CUsbOtgBaseWatcher
+	{
+public:
+	static CUsbOtgVbusWatcher* NewL(RUsbOtgDriver& aLdd);
+	virtual ~CUsbOtgVbusWatcher();
+
+	// From CActive
+	virtual void RunL();
+	virtual void DoCancel();
+	
+protected:
+	CUsbOtgVbusWatcher(RUsbOtgDriver& aLdd);
+	void ConstructL();
+	virtual void Post();
+
+private:
+	RUsbOtgDriver::TOtgVbus iOtgVbus;
+	};	
+
+/**
+ * The CUsbOtgVBusWatcher class
+ *
+ * Talks directly to the USB OTG Logical Device Driver (LDD) and 
+ * watches ID-Pin changes.
+ * Publishes TInt property as ID-Pin status
+ */
+NONSHARABLE_CLASS(CUsbOtgStateWatcher) : public CUsbOtgBaseWatcher
+	{
+	public:
+		static CUsbOtgStateWatcher* NewL(RUsbOtgDriver& aLdd);
+		virtual ~CUsbOtgStateWatcher();
+
+		// From CActive
+		virtual void RunL();
+		virtual void DoCancel();
+		
+	protected:
+		CUsbOtgStateWatcher(RUsbOtgDriver& aLdd);
+		void ConstructL();
+		virtual void Post();
+
+	private:
+		RUsbOtgDriver::TOtgState iOtgState;
+	};
+
+/**
+ * The CUsbOtgEventWatcher class
+ *
+ * Talks directly to the USB OTG Logical Device Driver (LDD) and 
+ * watches ID-Pin changes.
+ * Publishes TInt property as ID-Pin status
+ */
+NONSHARABLE_CLASS(CUsbOtgEventWatcher) : public CUsbOtgBaseWatcher
+	{
+	public:
+		static CUsbOtgEventWatcher* NewL(CUsbOtg& aOwner, RUsbOtgDriver& aLdd, 
+										 RUsbOtgDriver::TOtgEvent& aOtgEvent);
+		virtual ~CUsbOtgEventWatcher();
+
+		// From CActive
+		virtual void RunL();
+		virtual void DoCancel();
+		
+	protected:
+		CUsbOtgEventWatcher(CUsbOtg& aOwner, RUsbOtgDriver& aLdd, RUsbOtgDriver::TOtgEvent& aOtgEvent);
+		void ConstructL();
+		virtual void Post();
+		
+	private:
+		void LogEventText(RUsbOtgDriver::TOtgEvent /*aState*/);
+
+	private:
+		CUsbOtg& iOwner;
+		RUsbOtgDriver::TOtgEvent& iOtgEvent;
+	};	
+	
+/**
+ * The CUsbOtgConnectionIdleWatcher class
+ *
+ * Talks directly to the USB OTG Logical Device Driver (LDD) and 
+ * watches Connection Idle changes.
+ * Publishes TInt property as Connection Idle status
+ */
+NONSHARABLE_CLASS(CUsbOtgConnectionIdleWatcher) : public CUsbOtgBaseWatcher
+	{
+public:
+	static CUsbOtgConnectionIdleWatcher* NewL(RUsbOtgDriver& aLdd);
+	virtual ~CUsbOtgConnectionIdleWatcher();
+
+	// From CActive
+	virtual void RunL();
+	virtual void DoCancel();
+	
+protected:
+	CUsbOtgConnectionIdleWatcher(RUsbOtgDriver& aLdd);
+	void ConstructL();
+	virtual void Post();
+
+private:
+	RUsbOtgDriver::TOtgConnection iConnectionIdle;
+	};
+
+
+/**
+ * The CUsbOtgWatcher class
+ *
+ * Talks directly to the USB OTG Logical Device Driver (LDD) and 
+ * watches any messages/errors which occur
+ */
+NONSHARABLE_CLASS(CUsbOtgWatcher) : public CActive
+	{
+public:
+	static CUsbOtgWatcher* NewL(MUsbOtgObserver& aOwner, RUsbOtgDriver& aLdd, TUint& aOtgMessage);
+	virtual ~CUsbOtgWatcher();
+
+	// From CActive
+	virtual void RunL();
+	virtual void DoCancel();
+
+	virtual void Start();
+
+protected:
+	CUsbOtgWatcher(MUsbOtgObserver& aOwner, RUsbOtgDriver& aLdd, TUint& aOtgMessage);
+	void Post();
+
+private:
+	MUsbOtgObserver& iOwner;
+	RUsbOtgDriver& iLdd;
+	TUint& iOtgMessage;
+	};
+
+NONSHARABLE_CLASS(CRequestSessionWatcher) : public CActive
+	{
+public:
+	static CRequestSessionWatcher* NewL(MUsbOtgObserver& aOwner);
+	~CRequestSessionWatcher();
+
+private:
+	CRequestSessionWatcher(MUsbOtgObserver& aOwner);
+	void ConstructL();
+	
+	// From CActive
+	virtual void RunL();
+	virtual void DoCancel();
+
+private:
+	RProperty iProp;
+	MUsbOtgObserver& iOwner;
+	};
+
+#endif
+