usbmgmt/usbmgrtest/usbcontrolapp/usbviewer/usbviewer.h
changeset 0 c9bc50fca66e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/usbcontrolapp/usbviewer/usbviewer.h	Tue Feb 02 02:02:59 2010 +0200
@@ -0,0 +1,355 @@
+/*
+* 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:
+*
+*/
+
+#ifndef USBVIEWER_H
+#define USBVIEWER_H
+
+#include <e32cmn.h>
+#include <e32base.h>
+#include <usbman.h>
+#include <e32property.h>
+#include "e32msgqueue.h"
+
+#include "usbcontrolappshared.h"
+
+class CConsoleBase;
+
+class CUserMsgQWatcher;
+class CServiceStateWatcher;
+class CDeviceStateWatcher;
+class CIdPinWatcher;
+class CVBusWatcher;
+class CConnectionIdleWatcher;
+class CHostEventWatcher;
+class CMessageWatcher;
+class COtgStateWatcher;
+
+class CShutdownMonitor;
+
+_LIT(KUsbViewerTitle, "USB Viewer");
+
+
+NONSHARABLE_STRUCT(XUsbViewerEvent)
+	{
+	~XUsbViewerEvent();
+	TDblQueLink	iLink;
+	RBuf		iEvent;
+	};
+
+
+NONSHARABLE_CLASS(MShutdownInterface)
+	{
+public:
+	virtual void Stop() const = 0;
+	};
+
+
+NONSHARABLE_CLASS(CUsbViewer) : public CActive, public MShutdownInterface
+	{
+public:
+	static CUsbViewer* NewLC();
+	~CUsbViewer();
+
+public:
+	void Start();
+	void Stop() const;
+	
+	RUsb& Usb();
+	RMsgQueue<TBuf<KViewerNumCharactersOnLine> >& UserMsgQ();	
+
+public:
+	enum TFdfDriverLoadingState
+		{
+		EUnknown,
+		EDisabled,
+		EEnabled
+		};
+	
+	enum TDeviceType
+		{
+		ENoDevice,
+		EGenericDevice,
+		ELogitechHeadset
+		};
+
+public: // Callbacks
+	void SetServiceState(TUsbServiceState aServiceState);
+	void SetDeviceState(TUsbDeviceState aDeviceState);
+	void SetIdPin(TInt aIdPin);
+	void SetVBus(TInt aVBus);
+	void SetConnectionIdle(TInt aConnIdle);
+	void SetOtgState(TInt aOtgState);
+	void SetDriverLoading(TFdfDriverLoadingState aDriverLoading);
+	void SetAttachedDevices(TUint aAttachedDevices);
+	void SetDeviceType(TDeviceType aDeviceType);
+
+	void NotifyEvent(XUsbViewerEvent* aEvent);
+
+private:
+	CUsbViewer();
+	void ConstructL();
+	void Move(TInt aX, TInt aY);
+	void Draw();
+
+	void DoCancel();
+	void RunL();
+	void ScheduleDraw();
+	
+	TBool		iAutoSrpResponse;
+	TDeviceType iDeviceType;
+	
+private:
+	CConsoleBase*		iConsole;
+	RUsb				iUsb;
+	CShutdownMonitor*	iShutdownMonitor;
+	
+private:
+	CUserMsgQWatcher*		iUserMsgQWatcher;
+	CServiceStateWatcher*	iServiceStateWatcher;
+	CDeviceStateWatcher*	iDeviceStateWatcher;
+	CIdPinWatcher*			iIdPinWatcher;
+	CVBusWatcher*			iVBusWatcher;
+	CConnectionIdleWatcher*	iConnIdleWatcher;
+	COtgStateWatcher*		iOtgStateWatcher;
+	CHostEventWatcher*		iHostEventWatcher;
+	CMessageWatcher*		iMessageWatcher;
+
+private: // Display variables
+	TVersion	iVersion;
+	TBuf<11>	iServStatus; // Needs Trailing Space
+	TBuf<11>	iDevStatus; // Needs Trailing Space
+	TBuf<5>		iIdPin; // Needs Trailing Space
+	TBuf<5>		iVBus;  // Needs Trailing Space
+	TBuf<5>		iConnIdle; // Needs Trailing Space
+	TBuf<3>		iDriverLoading;
+	TBuf<3>		iAttachedDevices;
+	TBuf<14>	iOtgState;  // Needs Trailing Space
+	TBuf<5>		iAttachedDevice;
+
+private:
+	static const TInt KNumEventsInWindow = 7;
+	// H4 screen can have 22 lines of text on it at once
+	static const TInt KNumLinesInWindow = 14;
+	
+private: // Event list
+	TDblQue<XUsbViewerEvent>						iEventList;
+	// RMsgQueue between exampleusbcontrolapp.exe & usbviewer.exe for displaying user messages
+	RMsgQueue<TBuf<KViewerNumCharactersOnLine> >	iUserMsgQ;
+	};
+	
+
+NONSHARABLE_CLASS(CShutdownMonitor) : public CActive
+	{
+public:
+	static CShutdownMonitor* NewL(MShutdownInterface& aParentUsbViewer);
+	~CShutdownMonitor();
+private:
+	CShutdownMonitor(MShutdownInterface& aParentUsbViewer);
+	void ConstructL();
+	// From CActive
+	void DoCancel();
+	void RunL();
+private:
+	RProperty				iShutdownProp;
+	MShutdownInterface&		iParentUsbViewer;
+	};
+
+	
+NONSHARABLE_CLASS(CEventNotifier) : public CActive
+	{
+protected:
+	CEventNotifier(TInt aPriority);
+	XUsbViewerEvent* NewViewerEventL();
+	virtual void DoRunL(XUsbViewerEvent* aEvent) = 0;
+private:
+	void RunL();
+	};
+	
+	
+NONSHARABLE_CLASS(CServiceStateWatcher) : public CEventNotifier
+	{
+public:
+	static CServiceStateWatcher* NewL(CUsbViewer& aUsb);
+	~CServiceStateWatcher();
+
+private:
+	CServiceStateWatcher(CUsbViewer& aUsb);
+	void ConstructL();
+
+	void DoCancel();
+	void DoRunL(XUsbViewerEvent* aEvent);
+
+private:
+	CUsbViewer&	iUsbViewer;
+	TUsbServiceState	iServiceState;
+	};
+
+
+NONSHARABLE_CLASS(CDeviceStateWatcher) : public CEventNotifier
+	{
+public:
+	static CDeviceStateWatcher* NewL(CUsbViewer& aUsb);
+	~CDeviceStateWatcher();
+
+private:
+	CDeviceStateWatcher(CUsbViewer& aUsb);
+	void ConstructL();
+	
+	void DoCancel();
+	void DoRunL(XUsbViewerEvent* aEvent);
+
+private:
+	CUsbViewer&	iUsbViewer;
+	TUsbDeviceState		iDeviceState;
+	};
+
+
+NONSHARABLE_CLASS(CIdPinWatcher) : public CEventNotifier
+	{
+public:
+	static CIdPinWatcher* NewL(CUsbViewer& aUsb);
+	~CIdPinWatcher();
+
+private:
+	CIdPinWatcher(CUsbViewer& aUsb);
+	void ConstructL();
+	
+	void DoCancel();
+	void DoRunL(XUsbViewerEvent* aEvent);
+
+private:
+	CUsbViewer&	iUsbViewer;
+	RProperty			iIdPinProp;
+	};
+
+
+NONSHARABLE_CLASS(CVBusWatcher) : public CEventNotifier
+	{
+public:
+	static CVBusWatcher* NewL(CUsbViewer& aUsb);
+	~CVBusWatcher();
+
+private:
+	CVBusWatcher(CUsbViewer& aUsb);
+	void ConstructL();
+	
+	void DoCancel();
+	void DoRunL(XUsbViewerEvent* aEvent);
+
+private:
+	CUsbViewer&		iUsbViewer;
+	RProperty		iVBusProp;
+	};
+
+
+NONSHARABLE_CLASS(CConnectionIdleWatcher) : public CEventNotifier
+	{
+public:
+	static CConnectionIdleWatcher* NewL(CUsbViewer& aUsb);
+	~CConnectionIdleWatcher();
+
+private:
+	CConnectionIdleWatcher(CUsbViewer& aUsb);
+	void ConstructL();
+	
+	void DoCancel();
+	void DoRunL(XUsbViewerEvent* aEvent);
+
+private:
+	CUsbViewer&		iUsbViewer;
+	RProperty		iConnIdleProp;
+	};
+
+	
+NONSHARABLE_CLASS(COtgStateWatcher) : public CEventNotifier
+	{
+public:
+	static COtgStateWatcher* NewL(CUsbViewer& aUsb);
+	~COtgStateWatcher();
+
+private:
+	COtgStateWatcher(CUsbViewer& aUsb);
+	void ConstructL();
+	
+	void DoCancel();
+	void DoRunL(XUsbViewerEvent* aEvent);
+
+private:
+	CUsbViewer&		iUsbViewer;
+	RProperty		iOtgStateProp;
+	};
+	
+	
+NONSHARABLE_CLASS(CHostEventWatcher) : public CEventNotifier
+	{
+public:
+	static CHostEventWatcher* NewL(CUsbViewer& aUsb);
+	~CHostEventWatcher();
+
+private:
+	CHostEventWatcher(CUsbViewer& aUsb);
+	void ConstructL();
+	
+	void DoCancel();
+	void DoRunL(XUsbViewerEvent* aEvent);
+
+private:
+	CUsbViewer&				iUsbViewer;
+	TDeviceEventInformation	iDeviceInfo;
+	RArray<TUint>			iAttachedDevices;
+	};
+	
+
+NONSHARABLE_CLASS(CMessageWatcher) : public CEventNotifier
+	{
+public:
+	static CMessageWatcher* NewL(CUsbViewer& aUsb);
+	~CMessageWatcher();
+
+private:
+	CMessageWatcher(CUsbViewer& aUsb);
+	void ConstructL();
+
+	void DoCancel();
+	void DoRunL(XUsbViewerEvent* aEvent);
+
+private:
+	CUsbViewer&	iUsbViewer;
+	TInt		iMessage;
+	};
+
+
+NONSHARABLE_CLASS(CUserMsgQWatcher) : public CEventNotifier
+	{
+public:
+	static CUserMsgQWatcher* NewL(CUsbViewer& aUsb);
+	~CUserMsgQWatcher();
+
+private:
+	CUserMsgQWatcher(CUsbViewer& aUsb);
+	void ConstructL();
+	
+	void DoCancel();
+	void DoRunL(XUsbViewerEvent* aEvent);
+
+private:
+	CUsbViewer&							iUsbViewer;
+	TBuf<KViewerNumCharactersOnLine>	iUserMsgLine;
+	};
+	
+
+#endif // USBVIEWER_H