diff -r 000000000000 -r c9bc50fca66e usbmgmt/usbmgrtest/usbtestconsole/usbtestconsole.h --- /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 +#include +#include +#include + +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 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 iEntryConsoles; + +private: // configured variables + TInt iPersonalityId; + TBool iControlSession; + TBool iFunctionDriverLoading; + }; + + +template +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 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