--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/usbtestconsole/usbtestconsole.h Tue Feb 02 02:02:59 2010 +0200
@@ -0,0 +1,499 @@
+/*
+* Copyright (c) 2007-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 USBTESTCONSOLE_H
+#define USBTESTCONSOLE_H
+
+#include <e32cmn.h>
+#include <e32base.h>
+#include <usbman.h>
+#include <e32property.h>
+
+class CConsoleBase;
+
+class CUsbTestConsoleKeys;
+
+class CServiceStateWatcher;
+class CDeviceStateWatcher;
+class CConnectionIdleWatcher;
+class CIdPinWatcher;
+class CVBusWatcher;
+class CHostEventWatcher;
+class CMessageWatcher;
+class COtgStateWatcher;
+
+class CUsbManStarter;
+class CUsbManStoper;
+class CUsbManTryStarter;
+class CUsbManTryStoper;
+class CUsbTestTimer;
+
+_LIT(KUsbTestConsoleTitle, "USB Test Console");
+
+
+NONSHARABLE_STRUCT(XUsbTestConsoleEvent)
+ {
+ ~XUsbTestConsoleEvent();
+ TDblQueLink iLink;
+ RBuf iEvent;
+ };
+
+
+NONSHARABLE_CLASS(CUsbTestConsole) : public CActive
+ {
+friend class CUsbTestConsoleKeys;
+
+public:
+ static CUsbTestConsole* NewLC();
+ ~CUsbTestConsole();
+
+public:
+ void StartL();
+ void Stop() const;
+
+ RUsb& Usb();
+ CUsbTestTimer* Timer() const;
+
+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 SetConnectionIdle(TInt aConnectionIdle);
+ void SetVBus(TInt aVBus);
+ void SetOtgState(TInt aOtgState);
+ void SetDriverLoading(TFdfDriverLoadingState aDriverLoading);
+ void SetAttachedDevices(TUint aAttachedDevices);
+ void SetControlSession(TBool aControl);
+ void SetDeviceType(TDeviceType aDeviceType);
+
+ void NotifyEvent(XUsbTestConsoleEvent* aEvent);
+
+ TBool GetAutoSrpResponseState();
+ void SetAutoSrpResponseState(TBool aAutoSrpResponse);
+
+private:
+ CUsbTestConsole();
+ void ConstructL();
+ void Draw();
+
+ void DoCancel();
+ void RunL();
+ void ScheduleDraw(TUint aKey);
+
+ TBool iHelp;
+ TBool iAutoSrpResponse;
+ TDeviceType iDeviceType;
+
+private:
+ CConsoleBase* iConsole;
+ RUsb iUsb;
+
+ CUsbTestConsoleKeys* iKeys;
+
+private:
+ CServiceStateWatcher* iServiceStateWatcher;
+ CDeviceStateWatcher* iDeviceStateWatcher;
+ CIdPinWatcher* iIdPinWatcher;
+ CConnectionIdleWatcher* iConnectionIdleWatcher;
+ CVBusWatcher* iVBusWatcher;
+ COtgStateWatcher* iOtgStateWatcher;
+ CHostEventWatcher* iHostEventWatcher;
+ CMessageWatcher* iMessageWatcher;
+ CUsbTestTimer* iTimer;
+
+private: // Display variables
+ TVersion iVersion;
+ TBuf<9> iControlSession;
+ TBuf<11> iServStatus; // Needs Trailing Space
+ TBuf<11> iDevStatus; // Needs Trailing Space
+ TBuf<5> iIdPin; // Needs Trailing Space
+ TBuf<5> iConnectionIdle; // Needs Trailing Space
+ TBuf<5> iVBus; // Needs Trailing Space
+ TBuf<3> iDriverLoading;
+ TBuf<3> iAttachedDevices;
+ TBuf<14> iOtgState; // Needs Trailing Space
+ TBuf<5> iAttachedDevice;
+ TBuf<5> iSrpState;
+
+public:
+ // H4 screen can have 22 lines of text on it at once
+ // H4 screen can have 53 characters per line.
+ static const TInt KNumCharactersOnLine = 53;
+
+private:
+ static const TInt KNumEventsOnScreen = 15;
+
+private: // Event list
+ TDblQue<XUsbTestConsoleEvent> iEventList;
+ };
+
+
+NONSHARABLE_CLASS(CUsbTestConsoleTextEntryBase) : public CActive
+ {
+public:
+ ~CUsbTestConsoleTextEntryBase();
+
+protected:
+ CUsbTestConsoleTextEntryBase();
+ void ConstructL(const TDesC& aEntryField);
+
+private:
+ void DoCancel();
+ void RunL();
+
+ virtual void ConvertAndSetL() = 0;
+
+private:
+ static const TInt KMaxNumOfChars = 255;
+ CConsoleBase* iEntryConsole;
+protected:
+ RBuf iChars;
+public:
+ TDblQueLink iLink;
+ };
+
+NONSHARABLE_CLASS(CUsbTestConsoleKeys) : public CActive
+ {
+public:
+ static CUsbTestConsoleKeys* NewL(CUsbTestConsole& aUsb);
+ ~CUsbTestConsoleKeys();
+
+private:
+ CUsbTestConsoleKeys(CUsbTestConsole& aUsb);
+ void ConstructL();
+ void DoCancel();
+ void RunL();
+ XUsbTestConsoleEvent* NewConsoleEventL();
+
+private:
+ CUsbTestConsole& iTestConsole;
+
+private: // Async Utilities
+ CUsbManStarter* iUsbManStarter;
+ CUsbManStoper* iUsbManStoper;
+ CUsbManTryStarter* iUsbManTryStarter;
+ CUsbManTryStoper* iUsbManTryStoper;
+
+private:
+ TDblQue<CUsbTestConsoleTextEntryBase> iEntryConsoles;
+
+private: // configured variables
+ TInt iPersonalityId;
+ TBool iControlSession;
+ TBool iFunctionDriverLoading;
+ };
+
+
+template<typename T>
+NONSHARABLE_CLASS(CUsbTestConsoleTextEntry) : public CUsbTestConsoleTextEntryBase
+ {
+public:
+ static CUsbTestConsoleTextEntry* NewL(T& aValue, const TDesC& aEntryField);
+ ~CUsbTestConsoleTextEntry();
+
+private:
+ CUsbTestConsoleTextEntry(T& aValue);
+ void ConvertAndSetL();
+
+private:
+ T& iValue;
+ };
+
+
+
+NONSHARABLE_CLASS(CEventNotifier) : public CActive
+ {
+protected:
+ CEventNotifier(TInt aPriority);
+ XUsbTestConsoleEvent* NewConsoleEventL();
+ virtual void DoRunL(XUsbTestConsoleEvent* aEvent) = 0;
+private:
+ void RunL();
+ };
+
+
+
+NONSHARABLE_CLASS(CServiceStateWatcher) : public CEventNotifier
+ {
+public:
+ static CServiceStateWatcher* NewL(CUsbTestConsole& aUsb);
+ ~CServiceStateWatcher();
+
+private:
+ CServiceStateWatcher(CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbTestConsole& iTestConsole;
+ TUsbServiceState iServiceState;
+ };
+
+
+NONSHARABLE_CLASS(CDeviceStateWatcher) : public CEventNotifier
+ {
+public:
+ static CDeviceStateWatcher* NewL(CUsbTestConsole& aUsb);
+ ~CDeviceStateWatcher();
+
+private:
+ CDeviceStateWatcher(CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbTestConsole& iTestConsole;
+ TUsbDeviceState iDeviceState;
+ };
+
+
+NONSHARABLE_CLASS(CIdPinWatcher) : public CEventNotifier
+ {
+public:
+ static CIdPinWatcher* NewL(CUsbTestConsole& aUsb);
+ ~CIdPinWatcher();
+
+private:
+ CIdPinWatcher(CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbTestConsole& iTestConsole;
+ RProperty iIdPinProp;
+ };
+
+NONSHARABLE_CLASS(CConnectionIdleWatcher) : public CEventNotifier
+ {
+public:
+ static CConnectionIdleWatcher* NewL(CUsbTestConsole& aUsb);
+ ~CConnectionIdleWatcher();
+
+private:
+ CConnectionIdleWatcher(CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbTestConsole& iTestConsole;
+ RProperty iConnectionIdleProp;
+ };
+
+
+NONSHARABLE_CLASS(CVBusWatcher) : public CEventNotifier
+ {
+public:
+ static CVBusWatcher* NewL(CUsbTestConsole& aUsb);
+ ~CVBusWatcher();
+
+private:
+ CVBusWatcher(CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbTestConsole& iTestConsole;
+ RProperty iVBusProp;
+ };
+
+NONSHARABLE_CLASS(COtgStateWatcher) : public CEventNotifier
+ {
+public:
+ static COtgStateWatcher* NewL(CUsbTestConsole& aUsb);
+ ~COtgStateWatcher();
+
+private:
+ COtgStateWatcher(CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbTestConsole& iTestConsole;
+ RProperty iOtgStateProp;
+ };
+
+
+NONSHARABLE_CLASS(CHostEventWatcher) : public CEventNotifier
+ {
+public:
+ static CHostEventWatcher* NewL(CUsbTestConsole& aUsb);
+ ~CHostEventWatcher();
+
+private:
+ CHostEventWatcher(CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbTestConsole& iTestConsole;
+ TDeviceEventInformation iDeviceInfo;
+ RArray<TUint> iAttachedDevices;
+ };
+
+
+NONSHARABLE_CLASS(CMessageWatcher) : public CEventNotifier
+ {
+public:
+ static CMessageWatcher* NewL(CUsbTestConsole& aUsb);
+ ~CMessageWatcher();
+
+private:
+ CMessageWatcher(CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbTestConsole& iTestConsole;
+ TInt iMessage;
+ };
+
+
+
+
+
+
+
+NONSHARABLE_CLASS(CUsbManStarter) : public CEventNotifier
+ {
+public:
+ static void NewL(CUsbManStarter*& aSelf, CUsbTestConsole& aUsb);
+ void DestroyL();
+ ~CUsbManStarter();
+
+private:
+ CUsbManStarter(CUsbManStarter*& aSelf, CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbManStarter*& iSelf;
+ CUsbTestConsole& iTestConsole;
+ };
+
+
+NONSHARABLE_CLASS(CUsbManStoper) : public CEventNotifier
+ {
+public:
+ static void NewL(CUsbManStoper*& aSelf, CUsbTestConsole& aUsb);
+ void DestroyL();
+ ~CUsbManStoper();
+
+private:
+ CUsbManStoper(CUsbManStoper*& aSelf, CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbManStoper*& iSelf;
+ CUsbTestConsole& iTestConsole;
+ };
+
+
+
+NONSHARABLE_CLASS(CUsbManTryStarter) : public CEventNotifier
+ {
+public:
+ static void NewL(CUsbManTryStarter*& aSelf, CUsbTestConsole& aUsb, TInt aPersonalityId);
+ void DestroyL();
+ ~CUsbManTryStarter();
+
+private:
+ CUsbManTryStarter(CUsbManTryStarter*& aSelf, CUsbTestConsole& aUsb, TInt aPersonalityId);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbManTryStarter*& iSelf;
+ CUsbTestConsole& iTestConsole;
+ TInt iPersonalityId;
+ };
+
+
+NONSHARABLE_CLASS(CUsbManTryStoper) : public CEventNotifier
+ {
+public:
+ static void NewL(CUsbManTryStoper*& aSelf, CUsbTestConsole& aUsb);
+ void DestroyL();
+ ~CUsbManTryStoper();
+
+private:
+ CUsbManTryStoper(CUsbManTryStoper*& aSelf, CUsbTestConsole& aUsb);
+ void ConstructL();
+
+ void DoCancel();
+ void DoRunL(XUsbTestConsoleEvent* aEvent);
+
+private:
+ CUsbManTryStoper*& iSelf;
+ CUsbTestConsole& iTestConsole;
+ };
+
+NONSHARABLE_CLASS(CUsbTestTimer) : public CTimer
+ {
+public:
+ static CUsbTestTimer* NewL(CUsbTestConsole& aUsb);
+ ~CUsbTestTimer();
+ void Start(TTimeIntervalMicroSeconds32 aTime);
+
+private:
+ CUsbTestTimer(CUsbTestConsole& aUsb);
+ void ConstructL();
+ void DoCancel();
+ void RunL();
+
+private:
+ TTimeIntervalMicroSeconds32 iTime;
+ CUsbTestConsole& iTestConsole;
+ };
+#endif // USBTESTCONSOLE_H