--- a/tsrc/group/bld.inf Thu Jul 15 19:48:29 2010 +0300
+++ b/tsrc/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -19,16 +19,30 @@
PRJ_PLATFORMS
DEFAULT
+//build files for Stub Framework
+
+
//build files for shortlinkconn
#include "../../../shortlinkconn/localconnectivityservice/lcstylustap/tsrc/LcStylusTapTest/group/bld.inf"
#include "../../../shortlinkconn/localconnectivityservice/generichid/tsrc/GenericHidTest/group/bld.inf"
//build files for usb
-#include "../../usbclasses/msmmplugin/tsrc/MsmmPluginTest/group/bld.inf"
#include "../../usbuis/usbui/tsrc/USBUiApiTest/group/bld.inf"
#include "../../usbuis/usbuinotif/tsrc/USBUiNotifApiTest/group/bld.inf"
+
#include "../../usbclasses/usbhidclassdriver/tsrc/UsbHidClassDriverTest/group/bld.inf"
+#include "../../usbclasses/msmmplugin/tsrc/MsmmPluginTest/group/bld.inf"
+#include "../../usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/group/bld.inf"
+//#include "../../usbclasses/usbosdescriptorhandler/tsrc/UsbOsDescriptorHandlerTest/group/bld.inf"
+//#include "../../usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/group/bld.inf"
+#include "../../usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/group/bld.inf"
+//#include "../../usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/group/bld.inf"
+#include "../../usbengines/usblocodplugin/tsrc/USBLocodPluginTest/group/bld.inf"
+#include "../../usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/group/bld.inf"
+//#include "../../usbengines/usbwatcher/tsrc/UsbWatcherTest/group/bld.inf"
+
+#include "../../usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/group/bld.inf"
PRJ_EXPORTS
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/bwins/apibehavioru.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,9 @@
+EXPORTS
+ ??0TApiBehavior@@QAE@II@Z @ 1 NONAME ; TApiBehavior::TApiBehavior(unsigned int, unsigned int)
+ ?MatchId@TApiBehavior@@QBEHII@Z @ 2 NONAME ; int TApiBehavior::MatchId(unsigned int, unsigned int) const
+ ?MatchId@TApiBehavior@@QBEHABV1@@Z @ 3 NONAME ; int TApiBehavior::MatchId(class TApiBehavior const &) const
+ ??0TApiBehavior@@QAE@IIHHABVTDesC8@@@Z @ 4 NONAME ; TApiBehavior::TApiBehavior(unsigned int, unsigned int, int, int, class TDesC8 const &)
+ ??8TApiBehavior@@QBEHABV0@@Z @ 5 NONAME ; int TApiBehavior::operator==(class TApiBehavior const &) const
+ ??9TApiBehavior@@QBEHABV0@@Z @ 6 NONAME ; int TApiBehavior::operator!=(class TApiBehavior const &) const
+ ??0TApiBehavior@@QAE@XZ @ 7 NONAME ; TApiBehavior::TApiBehavior(void)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/bwins/stubberu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,9 @@
+EXPORTS
+ ?InvokeApiCancel@CStubber@@QAEXXZ @ 1 NONAME ; void CStubber::InvokeApiCancel(void)
+ ?DeleteBehaviors@CStubber@@QAEXII@Z @ 2 NONAME ; void CStubber::DeleteBehaviors(unsigned int, unsigned int)
+ ?NewL@CStubber@@SAPAV1@XZ @ 3 NONAME ; class CStubber * CStubber::NewL(void)
+ ?InvokeApi@CStubber@@QAEXAAVTApiBehavior@@W4TApiInvokeMode@@@Z @ 4 NONAME ; void CStubber::InvokeApi(class TApiBehavior &, enum TApiInvokeMode)
+ ??1CStubber@@UAE@XZ @ 5 NONAME ; CStubber::~CStubber(void)
+ ?InvokeApiL@CStubber@@QAEXAAVMApiInvoker@@IIW4TApiInvokeMode@@@Z @ 6 NONAME ; void CStubber::InvokeApiL(class MApiInvoker &, unsigned int, unsigned int, enum TApiInvokeMode)
+ ?EnqueBehavior@CStubber@@QAEXABVTApiBehavior@@H@Z @ 7 NONAME ; void CStubber::EnqueBehavior(class TApiBehavior const &, int)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/eabi/apibehavioru.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,12 @@
+EXPORTS
+ _ZN12TApiBehaviorC1Ejj @ 1 NONAME
+ _ZN12TApiBehaviorC1EjjiiRK6TDesC8 @ 2 NONAME
+ _ZN12TApiBehaviorC1Ev @ 3 NONAME
+ _ZN12TApiBehaviorC2Ejj @ 4 NONAME
+ _ZN12TApiBehaviorC2EjjiiRK6TDesC8 @ 5 NONAME
+ _ZN12TApiBehaviorC2Ev @ 6 NONAME
+ _ZNK12TApiBehavior7MatchIdERKS_ @ 7 NONAME
+ _ZNK12TApiBehavior7MatchIdEjj @ 8 NONAME
+ _ZNK12TApiBehavioreqERKS_ @ 9 NONAME
+ _ZNK12TApiBehaviorneERKS_ @ 10 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/eabi/stubberu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,11 @@
+EXPORTS
+ _ZN8CStubber10InvokeApiLER11MApiInvokerjj14TApiInvokeMode @ 1 NONAME
+ _ZN8CStubber13EnqueBehaviorERK12TApiBehaviori @ 2 NONAME
+ _ZN8CStubber15DeleteBehaviorsEjj @ 3 NONAME
+ _ZN8CStubber15InvokeApiCancelEv @ 4 NONAME
+ _ZN8CStubber4NewLEv @ 5 NONAME
+ _ZN8CStubber9InvokeApiER12TApiBehavior14TApiInvokeMode @ 6 NONAME
+ _ZN8CStubberD0Ev @ 7 NONAME
+ _ZN8CStubberD1Ev @ 8 NONAME
+ _ZN8CStubberD2Ev @ 9 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/group/apibehavior.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+CAPABILITY All -Tcb
+
+TARGET apibehavior.dll
+TARGETTYPE dll
+
+UID 0x1000008d 0xE0000092
+
+SOURCEPATH ../src
+SOURCE apibehavior.cpp
+
+USERINCLUDE ../inc
+SYSTEMINCLUDE /epoc32/include
+
+LIBRARY euser.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+PRJ_TESTEXPORTS
+../inc/apibehavior.h /epoc32/include/mw/stubsrv/apibehavior.h
+../inc/stubber.h /epoc32/include/mw/stubsrv/stubber.h
+../inc/stubsrvconst.h /epoc32/include/mw/stubsrv/stubsrvconst.h
+../rom/stubsrv.iby /epoc32/rom/include/core/mw/stubsrv.iby
+
+PRJ_MMPFILES
+
+PRJ_TESTMMPFILES
+apibehavior.mmp
+stubber.mmp
+stubsrv.mmp
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/group/stubber.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+CAPABILITY All -Tcb
+
+TARGET stubber.dll
+TARGETTYPE dll
+
+UID 0x1000008d 0xE0000091
+
+SOURCEPATH ../src
+SOURCE stubclient.cpp
+SOURCE stubber.cpp
+
+USERINCLUDE ../inc
+SYSTEMINCLUDE /epoc32/include /epoc32/include/stubsrv
+
+LIBRARY euser.lib
+LIBRARY apibehavior.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/group/stubsrv.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+CAPABILITY All -Tcb
+
+TARGET stubsrv.exe
+TARGETTYPE exe
+
+UID 0x1000008d 0xE0000090
+
+// EPOCHEAPSIZE 0x500 0x400000
+
+SOURCEPATH ../src
+SOURCE stubsrv.cpp
+SOURCE stubsrvsession.cpp
+SOURCE stubsrvapiexecutor.cpp
+
+USERINCLUDE ../inc
+SYSTEMINCLUDE /epoc32/include /epoc32/include/platform/ /epoc32/include/stubsrv
+
+LIBRARY euser.lib
+LIBRARY apibehavior.lib
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/inc/apibehavior.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2010 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 APIBEHAVIOR_H
+#define APIBEHAVIOR_H
+
+#include <e32base.h>
+
+const TInt KApiOutputSize = 512;
+
+/**
+ * The specification of the behavior of an API.
+ */
+NONSHARABLE_CLASS(TApiBehavior)
+{
+public:
+
+ /**
+ * Constructs by default.
+ * Members are initialized to:
+ * iLib: 0
+ * iApi: 0
+ * iCompleteCode: 0.
+ * iAsyncCompleteCode: 0.
+ * iOutput: KNullDes8.
+ */
+ IMPORT_C TApiBehavior();
+
+ /**
+ * Constructs by specified.
+ * @param aLib the library identifier
+ * @param aApi the API identifier
+ *
+ * Other members are initialized to:
+ * iCompleteCode: 0.
+ * iAsyncCompleteCode: 0.
+ * iOutput: KNullDes8.
+ */
+ IMPORT_C TApiBehavior(TUint aLib, TUint aApi);
+
+ /**
+ * Construct by specified.
+ *
+ * @param aLib the library identifier
+ * @param aApi the API identifier
+ * @param aCompleteCode the expected completion code of the API call
+ * @param aAsyncCompleteCode the expected asynchronous completion code of the API call
+ * @param aOutput the expected output
+ */
+ IMPORT_C TApiBehavior(TUint aLib, TUint aApi,
+ TInt aCompleteCode, TInt aAsyncCompleteCode,
+ const TDesC8& aOutput);
+
+ /**
+ * Compares if the identifiers of this API match with the specified.
+ * @param aLib the library identifier
+ * @param aApi the APi identifier
+ *
+ * @return ETrue if the ids match; EFalse otherwise.
+ */
+ IMPORT_C TBool MatchId(TUint aLib, TUint aApi) const;
+
+ /**
+ * Compares if the identifiers of this API match with the identifiers of the specified.
+ * @param aLib the library identifier
+ * @param aApi the APi identifier
+ *
+ * @return ETrue if the ids match; EFalse otherwise.
+ */
+ IMPORT_C TBool MatchId(const TApiBehavior& aBeh) const;
+
+ /**
+ * Operator ==
+ *
+ * @return ETrue if if the content of this is identical with the specified; EFalse otherwise.
+ */
+ IMPORT_C TBool operator==(const TApiBehavior& aBeh) const;
+
+ /**
+ * Operator !=
+ *
+ * @return ETrue if if the content of this is different with the specified; EFalse otherwise.
+ */
+ IMPORT_C TBool operator!=(const TApiBehavior& aBeh) const;
+
+public:
+
+ /**
+ * The identifier of the library that provides this API
+ */
+ TUint iLib;
+
+ /**
+ * The identifier of this API in the library.
+ *
+ * iLib and iApi identify a unique API in the scope of testing framework.
+ */
+ TUint iApi;
+
+ /**
+ * The completion code of the API call, either the return error code if
+ * the function returns one or the leave code if the function is leavable.
+ * This should be ignored by void type APIs.
+ */
+ TInt iCompleteCode;
+
+ /**
+ * The completion code of asynchronous service provided by this API.
+ * This should be ignored by synchronous API.
+ */
+ TInt iAsyncCompleteCode;
+
+ /**
+ * The expected output of this API.
+ */
+ TBuf8<KApiOutputSize> iOutput;
+ };
+
+typedef TPckgBuf<TApiBehavior> TApiBehaviorPckgBuf;
+typedef TPckg<TApiBehavior> TApiBehaviorPckg;
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/inc/stubber.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,124 @@
+/*
+* Copyright (c) 2010 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 STUBBER_H
+#define STUBBER_H
+
+#include <e32base.h>
+#include <apibehavior.h>
+#include <stubsrvconst.h>
+
+class RStubClient;
+
+class MApiInvoker
+{
+public:
+ virtual void InvokeApiComplete(const TApiBehavior& aBeh) = 0;
+};
+
+NONSHARABLE_CLASS(CStubber) : public CActive
+ {
+public:
+
+ IMPORT_C static CStubber* NewL();
+
+ IMPORT_C ~CStubber();
+
+ /**
+ * Queues an API behavior specification to Stub server.
+ *
+ * This method is called by API behavior controllers, e.g. a module test, to specify the next expected
+ * behavior of an API. When InvokeApi() is called, the first queued behavior matching
+ * the lib identifier and API identifier will be extracted and returned.
+ *
+ * @param aApi an API behavior.
+ * @param aExeDuration, specifies the execution time of InvokeApi() in microseconds.
+ * value less than 0 means never completing InvokeApi();
+ * value 0 means completing InvokeApi() asap;
+ * value 1000000 means InvokeApi() takes 1 sec execution time;
+ * and so on.
+ */
+ IMPORT_C void EnqueBehavior(const TApiBehavior& aBeh, TInt aExeDuration = 0);
+
+ /**
+ * Deletes all queued behaviors of the specified API.
+ *
+ * @param aLib the identifier of a stub
+ * @param aApi the identifier of the API
+ */
+ IMPORT_C void DeleteBehaviors(TUint aLib, TUint aApi);
+
+ /**
+ * Invokes an API.
+ *
+ * If there is a queued behavior for this API, Stub server will perform according to the execution setting;
+ * otherwise stub server will act according to the specified mode.
+ *
+ * @param aBeh contains the lib and API identifiers when passed in;
+ * will contain the behavior at complete.
+ * @param aMode the mode to be used if no queued behavior is found for the specified API;
+ * In case of ECompleteIfNoBehaviorSet mode, stub server will complete this function
+ * immediately and return a default TApiBehavior(TUint, TUint);
+ * stub server will keep this function call pending until a behavior is queued if the mode
+ * is ESuspendIfBehaviorSet.
+ */
+ IMPORT_C void InvokeApi(TApiBehavior& aBeh, TApiInvokeMode aMode = ECompleteIfNoBehaviorSet);
+
+ /**
+ * asynchronous version of InvokeAPI(), MApiInvoker::InvokeApiComplete will be called when
+ * this opeation is completed by stub server
+ *
+ * Only one InvokeApiL is allowed at a time.
+ *
+ * Leaves if the completion code in the behavior to be extracted is not KErrNone.
+ *
+ * @param aLib the identifier of a stub
+ * @param aApi the identifier of the API
+ * @param aMode the mode to be used if no queued behavior is found for the specified API;
+ * In case of ECompleteIfNoBehaviorSet mode, stub server will complete this function
+ * immediately and return a default TApiBehavior(TUint, TUint);
+ * stub server will keep this function call pending until a behavior is queued if the mode
+ * is ESuspendIfBehaviorSet.
+ */
+ IMPORT_C void InvokeApiL(MApiInvoker& aInvoker, TUint aLib, TUint aApi, TApiInvokeMode aMode = ECompleteIfNoBehaviorSet);
+
+ /**
+ * Cancels InvokeApi()
+ */
+ IMPORT_C void InvokeApiCancel();
+
+protected:
+ void RunL();
+ void DoCancel();
+ TInt RunError(TInt aReason);
+
+protected:
+ CStubber();
+
+ void ConstructL();
+
+protected:
+ MApiInvoker* iInvoker;
+
+ TApiBehavior iBeh;
+ TApiBehaviorPckg iBehPckg;
+
+ RStubClient* iClient;
+ };
+
+#endif // STUBBER_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/inc/stubclient.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2010 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 STUBCLIENT_H
+#define STUBCLIENT_H
+
+#include <e32std.h>
+#include <stubsrvconst.h>
+#include <apibehavior.h>
+
+class RStubClient : public RSessionBase
+ {
+
+public:
+
+ /**
+ * Queues an API behavior specification to Stub server.
+ *
+ * This method is called by API behavior controllers, e.g. a module test, to specify the next expected
+ * behavior of an API. When InvokeApi() is called, the first queued behavior matching
+ * the lib identifier and API identifier will be extracted and returned.
+ *
+ * @param aApi an API behavior.
+ * @param aExeDuration, specifies the execution time of InvokeApi() in microseconds.
+ * value less than 0 means never completing InvokeApi();
+ * value 0 means completing InvokeApi() asap;
+ * value 1000000 means InvokeApi() takes 1 sec execution time;
+ * and so on.
+ */
+ void EnqueBehavior(const TApiBehavior& aBeh, TInt aExeDuration = 0);
+
+ /**
+ * Deletes all queued behaviors of the specified API.
+ *
+ * @param aLib the identifier of a stub
+ * @param aApi the identifier of the API
+ */
+ void DeleteBehaviors(TUint aLib, TUint aApi);
+
+ /**
+ * Invokes an API.
+ *
+ * If there is a queued behavior for this API, stub server will perform according to the execution setting;
+ * otherwise stub server will act according to the specified mode.
+ *
+ * @param aBehPckg contains the lib and API identifiers when passed in;
+ * will contain the behavior at complete.
+ * @param aMode the mode to be used if no queued behavior is found for the specified API;
+ * In case of ECompleteIfNoBehaviorSet mode, stub server will complete this function
+ * immediately and return a default TApiBehavior(TUint, TUint);
+ * stub server will keep this function call pending until a behavior is queued if the mode
+ * is ESuspendIfBehaviorSet.
+ */
+ void InvokeApi(TApiBehaviorPckg& aBehPckg, TApiInvokeMode aMode);
+
+ /**
+ * asynchronous version of InvokeAPI().
+ *
+ * Leaves if the completion code in the behavior is not KErrNone
+ */
+ void InvokeApiL(TApiBehaviorPckg& aBehPckg, TRequestStatus& aStatus, TApiInvokeMode aMode);
+
+ /**
+ * Cancels InvokeApi()
+ * @param aLib the identifier of library which provides the API
+ * @param aApi the identifier of the API
+ */
+ void InvokeApiCancel(TUint aLib, TUint aApi);
+
+public:
+
+ /**
+ * @return Version information about the server
+ */
+ TVersion Version() const;
+
+ /**
+ * Establishes a session with stub server.
+ * @return error code
+ */
+ TInt Connect();
+
+private:
+
+ void CheckSession();
+
+ };
+
+#endif // STUBCLIENT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/inc/stubclientsrv.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2010 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 CLIENTSERVER_H
+#define CLIENTSERVER_H
+
+_LIT(KStubSrvName, "stubsrv");
+
+const TUid KStubSrvUid3 = {0xE0000090};
+
+const TInt KStubSrvMajorVersionNumber = 1;
+const TInt KStubSrvMinorVersionNumber = 1;
+const TInt KStubSrvBuildNumber = 0;
+
+enum TIpcConstant
+ {
+ EStubSrvEnqueApiBehavior,
+ EStubSrvDeleteApiBehaviors,
+ EStubSrvInvokeApi,
+ EStubSrvInvokeApiCancel,
+ EStubSrvGetApiCompletionCode,
+ EStubSrvInvalidIpc,
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/inc/stubsrv.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* Copyright (c) 2010 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 STUBSRV_H
+#define STUBSRV_H
+
+#include <e32svr.h>
+#include <e32base.h>
+#include <apibehavior.h>
+#include "stubclientsrv.h"
+
+enum TStubfPanic
+ {
+ EStubfBadRequest = 100000,
+ EStubfBadDescriptor,
+ EStubfNotCompletedApis,
+ EStubfBadMessage,
+ EStubfNoLimitedMessage,
+ EStubfClassMemberVariableIsNull,
+ EStubfClassMemberVariableIsNotNull,
+ EMainSchedulerError,
+ EStubfApiAlreadyStarted,
+ EStubfApiNotStarted,
+ };
+
+class CStubSrvSess;
+
+NONSHARABLE_CLASS(CStubSrv) : public CPolicyServer
+ {
+
+public:
+
+ static CStubSrv* NewLC();
+
+ ~CStubSrv();
+
+public:
+
+ void StartShutdownTimerIfNoSessions();
+
+ TInt ClientOpened(CStubSrvSess& aSession);
+
+ void ClientClosed(CStubSrvSess& aSession);
+
+ void EnqueueL(const RMessage2& aMessage);
+
+ void DeleteQueues(const RMessage2& aMessage);
+
+ TInt Dequeue(TApiBehavior& aBeh, TInt& aExeDuration, TInt aTransactionId);
+
+ void GetApiCompleteCodeL(const RMessage2& aMessage);
+
+private:
+
+ CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const;
+
+private:
+
+ CStubSrv(TInt aPriority);
+
+ void ConstructL();
+
+ void CancelShutdownTimer();
+
+ static TInt TimerFired(TAny* aThis);
+
+private:
+ class TApiQueueItem
+ {
+ public:
+ TApiBehavior iBeh;
+ TInt iExeDuration;
+ TInt iTransactionId;
+ };
+
+private:
+
+ CPeriodic* iTimer;
+
+ RPointerArray<CStubSrvSess> iSessions;
+
+ RPointerArray<TApiQueueItem> iBehQueue;
+ TInt iTransctionUnique;
+ };
+
+#endif
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/inc/stubsrvapiexecutor.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2010 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 C_STUBFAPISPEC_H
+#define C_STUBFAPISPEC_H
+
+#include <e32base.h>
+#include <apibehavior.h>
+#include "stubsrvconst.h"
+
+class CStubSrvSess;
+
+class CApiExecutor : public CActive
+ {
+
+public:
+
+ static CApiExecutor* NewL();
+
+ virtual ~CApiExecutor();
+
+ const TApiBehavior& ApiBehavior() const;
+
+ TApiInvokeMode Mode() const;
+
+ void ExecuteL(const RMessage2& aMessage, CStubSrvSess& aSession, TUint aLib, TUint aApi);
+
+ void ExecuteL(const RMessage2& aMessage, CStubSrvSess& aSession, const TApiBehavior& aBeh, TInt aExeDuration);
+
+ void Resume(const TApiBehavior& aBeh, TInt aExeDuration);
+
+private:
+
+ void RunL();
+
+ TInt RunError(TInt aReason);
+
+ void DoCancel();
+
+private:
+
+ CApiExecutor();
+
+ void ConstructL();
+
+private:
+
+ CStubSrvSess* iSess; // The associated client who started this API.
+ TApiBehavior iBeh;
+
+ TApiInvokeMode iMode;
+
+ TInt iTimeout;
+
+ RTimer iTimer;
+
+ RMessage2 iMessage;
+ };
+
+#endif // C_STUBFAPISPEC_H
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/inc/stubsrvconst.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2010 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 STUBCONSTANTS_H
+#define STUBCONSTANTS_H
+
+enum TApiInvokeMode
+ {
+ ECompleteIfNoBehaviorSet,
+ ESuspendIfNoBehaviorSet,
+ };
+
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/inc/stubsrvsecuritypolicy.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2010 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 SERVER_SECURITYPOLICY_H
+#define SERVER_SECURITYPOLICY_H
+
+#include "stubclientsrv.h"
+
+const TInt KStubSrvIpcRanges[] =
+ {
+ 0,
+ EStubSrvInvalidIpc,
+ };
+
+const TInt KStubSrvIpcRangeCount = sizeof(KStubSrvIpcRanges) / sizeof(TInt);
+
+const TUint8 KStubSrvElementsIndex[KStubSrvIpcRangeCount] =
+ {
+ 0,
+ CPolicyServer::ENotSupported
+ };
+
+const CPolicyServer::TPolicyElement KStubSrvElements[] =
+ {
+ {TSecurityPolicy::EAlwaysPass, CPolicyServer::EFailClient},
+ };
+
+const CPolicyServer::TPolicy KStubSrvPolicy =
+ {
+ CPolicyServer::EAlwaysPass,
+ KStubSrvIpcRangeCount,
+ KStubSrvIpcRanges,
+ KStubSrvElementsIndex,
+ KStubSrvElements
+ };
+
+#endif
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/inc/stubsrvsession.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2010 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 SESSION_H
+#define SESSION_H
+
+#include <e32base.h>
+#include <apibehavior.h>
+
+class CStubSrv;
+class CApiExecutor;
+
+/**
+* CStubSrvSess class represent session on server side
+*
+*/
+NONSHARABLE_CLASS(CStubSrvSess) : public CSession2
+ {
+public:
+
+ static CStubSrvSess* NewL(CStubSrv& aServer);
+
+ ~CStubSrvSess();
+
+ void InvokeApiComplete();
+
+ TInt ConsumeApiBehavior(const TApiBehavior& aBeh, TInt aExeDuration);
+
+private:
+
+ void ServiceL(const RMessage2& aMessage);
+
+ void DispatchMessageL(const RMessage2& aMessage);
+
+
+private:
+
+ CStubSrvSess(CStubSrv& aServer);
+
+ void ConstructL();
+
+private:
+ CStubSrv& iServer;
+
+ CApiExecutor* iExecutor;
+ };
+
+#endif // SESSION_H
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/rom/stubsrv.iby Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2010 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 STUBSRV_IBY
+#define STUBSRV_IBY
+
+file=ABI_DIR\BUILD_DIR\apibehavior.dll SHARED_LIB_DIR\apibehavior.dll
+file=ABI_DIR\BUILD_DIR\stubber.dll SHARED_LIB_DIR\stubber.dll
+file=ABI_DIR\BUILD_DIR\stubsrv.exe PROGRAMS_DIR\stubsrv.exe
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/src/apibehavior.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include "apibehavior.h"
+
+EXPORT_C TApiBehavior::TApiBehavior()
+ : iLib(0), iApi(0), iCompleteCode(0), iAsyncCompleteCode(0), iOutput(KNullDesC8)
+ {
+ }
+
+EXPORT_C TApiBehavior::TApiBehavior(TUint aLib, TUint aApi)
+ : iLib(aLib), iApi(aApi), iCompleteCode(0), iAsyncCompleteCode(0), iOutput(KNullDesC8)
+ {
+ }
+
+EXPORT_C TApiBehavior::TApiBehavior(TUint aLib, TUint aApi,
+ TInt aCompleteCode, TInt aAsyncCompleteCode, const TDesC8& aOutput)
+ : iLib(aLib), iApi(aApi), iCompleteCode(aCompleteCode),
+ iAsyncCompleteCode(aAsyncCompleteCode), iOutput(aOutput)
+ {
+ }
+
+EXPORT_C TBool TApiBehavior::MatchId(TUint aLib, TUint aApi) const
+ {
+ return iLib == aLib && iApi == aApi;
+ }
+
+EXPORT_C TBool TApiBehavior::MatchId(const TApiBehavior& aBeh) const
+ {
+ return MatchId(aBeh.iLib, aBeh.iApi);
+ }
+
+EXPORT_C TBool TApiBehavior::operator==(const TApiBehavior& aBeh) const
+ {
+ return
+ (iLib == aBeh.iLib &&
+ iApi == aBeh.iApi &&
+ iCompleteCode == aBeh.iCompleteCode &&
+ iAsyncCompleteCode == aBeh.iAsyncCompleteCode &&
+ iOutput == aBeh.iOutput);
+ }
+
+EXPORT_C TBool TApiBehavior::operator!=(const TApiBehavior& aBeh) const
+ {
+ return !(*this == aBeh);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/src/stubber.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include "stubber.h"
+#include "stubclient.h"
+
+
+EXPORT_C CStubber* CStubber::NewL()
+ {
+ CStubber* self = new (ELeave) CStubber();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CStubber::~CStubber()
+ {
+ Cancel();
+ if (iClient)
+ iClient->Close();
+ delete iClient;
+ }
+
+EXPORT_C void CStubber::EnqueBehavior(const TApiBehavior& aBeh, TInt aExeDuration)
+ {
+ iClient->EnqueBehavior(aBeh, aExeDuration);
+ }
+
+EXPORT_C void CStubber::DeleteBehaviors(TUint aLib, TUint aApi)
+ {
+ iClient->DeleteBehaviors(aLib, aApi);
+ }
+
+EXPORT_C void CStubber::InvokeApi(TApiBehavior& aBeh, TApiInvokeMode aMode)
+ {
+ aBeh = TApiBehavior(aBeh.iLib, aBeh.iApi);
+ TApiBehaviorPckg pckg(aBeh);
+ iClient->InvokeApi(pckg, aMode);
+ }
+
+EXPORT_C void CStubber::InvokeApiL(MApiInvoker& aInvoker, TUint aLib, TUint aApi, TApiInvokeMode aMode)
+ {
+ if (IsActive())
+ {
+ User::Panic(_L("Stubber"), KErrInUse);
+ }
+ iInvoker = &aInvoker;
+ iBeh = TApiBehavior(aLib, aApi);
+ iClient->InvokeApiL(iBehPckg, iStatus, aMode);
+ SetActive();
+ }
+
+EXPORT_C void CStubber::InvokeApiCancel()
+ {
+ Cancel();
+ }
+
+void CStubber::RunL()
+ {
+ if (iStatus != KErrNone)
+ {
+ iBeh.iAsyncCompleteCode = iStatus.Int();
+ }
+ iInvoker->InvokeApiComplete(iBeh);
+ }
+
+void CStubber::DoCancel()
+ {
+ iClient->InvokeApiCancel(iBeh.iLib, iBeh.iApi);
+ }
+
+TInt CStubber::RunError(TInt /*aReason*/)
+ {
+ return KErrNone;
+ }
+
+CStubber::CStubber() :
+ CActive(EPriorityStandard), iBehPckg(iBeh)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+void CStubber::ConstructL()
+ {
+ iClient = new (ELeave) RStubClient();
+ User::LeaveIfError(iClient->Connect());
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/src/stubclient.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32cmn.h>
+#include "stubclient.h"
+#include "stubclientsrv.h"
+
+_LIT(KStubSrvExe, "stubsrv.exe");
+static TInt ClientStart()
+ {
+ RProcess server;
+ TInt r = server.Create(KStubSrvExe, KNullDesC, TUidType(KNullUid, KNullUid, KStubSrvUid3));
+ if (r!=KErrNone)
+ return r;
+ TRequestStatus stat;
+ server.Rendezvous(stat);
+ if (stat != KRequestPending)
+ server.Kill(0);
+ else
+ server.Resume();
+ User::WaitForRequest(stat);
+ r = (server.ExitType() == EExitPanic) ? KErrGeneral : stat.Int();
+ server.Close();
+ return r;
+ }
+
+void RStubClient::EnqueBehavior(const TApiBehavior& aBeh, TInt aExeDuration)
+ {
+ CheckSession();
+ TApiBehaviorPckgBuf buf(aBeh);
+ (void) SendReceive(EStubSrvEnqueApiBehavior, TIpcArgs(&buf, aExeDuration));
+ }
+
+void RStubClient::DeleteBehaviors(TUint aLib, TUint aApi)
+ {
+ CheckSession();
+ (void) SendReceive(EStubSrvDeleteApiBehaviors, TIpcArgs(aLib, aApi));
+ }
+
+void RStubClient::InvokeApi(TApiBehaviorPckg& aBehPckg, TApiInvokeMode aMode)
+ {
+ CheckSession();
+ (void) SendReceive(EStubSrvInvokeApi, TIpcArgs(&aBehPckg, aMode, 0));
+ }
+
+void RStubClient::InvokeApiL(TApiBehaviorPckg& aBehPckg, TRequestStatus& aStatus, TApiInvokeMode aMode)
+ {
+ CheckSession();
+ TInt transctionId = 0;
+ TPckg<TInt> transpckg(transctionId);
+ TInt err = SendReceive(EStubSrvGetApiCompletionCode, TIpcArgs(aBehPckg().iLib, aBehPckg().iApi, &transpckg));
+ if (err)
+ {
+ User::Leave(err);
+ }
+ SendReceive(EStubSrvInvokeApi, TIpcArgs(&aBehPckg, aMode, transctionId), aStatus);
+ }
+
+void RStubClient::InvokeApiCancel(TUint aLib, TUint aApi)
+ {
+ CheckSession();
+ (void) SendReceive(EStubSrvInvokeApiCancel, TIpcArgs(aLib, aApi));
+ }
+
+TInt RStubClient::Connect()
+ {
+ TInt retVal = CreateSession(KStubSrvName, Version());
+ if (retVal)
+ {
+ retVal = ClientStart();
+ if (!retVal)
+ retVal = CreateSession(KStubSrvName, Version());
+ }
+ return retVal;
+ }
+
+TVersion RStubClient::Version() const
+ {
+ return(TVersion(KStubSrvMajorVersionNumber, KStubSrvMinorVersionNumber, KStubSrvBuildNumber));
+ }
+
+_LIT(KPanicCat, "!Stubsrv");
+
+void RStubClient::CheckSession()
+ {
+ if (!Handle())
+ User::Panic(KPanicCat, KErrBadHandle);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/src/stubsrv.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,201 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include "stubsrv.h"
+#include "stubsrvsession.h"
+#include "stubsrvapiexecutor.h"
+#include "apibehavior.h"
+#include "stubsrvsecuritypolicy.h"
+
+CStubSrv::CStubSrv(TInt aPriority)
+ :CPolicyServer(aPriority, KStubSrvPolicy)
+ {
+ }
+
+CStubSrv* CStubSrv::NewLC()
+ {
+ CStubSrv* self = new (ELeave) CStubSrv(EPriorityNormal);
+ CleanupStack::PushL(self);
+ self->StartL(KStubSrvName);
+ self->ConstructL();
+ return self;
+ }
+
+CStubSrv::~CStubSrv()
+ {
+ iBehQueue.ResetAndDestroy();
+ iBehQueue.Close();
+ iSessions.Close();
+ delete iTimer;
+ }
+
+const TInt KShutdownDelay = 1000000;
+
+void CStubSrv::StartShutdownTimerIfNoSessions()
+ {
+ if (iSessions.Count() == 0 && !iTimer->IsActive())
+ {
+ iTimer->Start(KShutdownDelay, 0, TCallBack(CStubSrv::TimerFired, this));
+ }
+ }
+
+TInt CStubSrv::ClientOpened(CStubSrvSess& aSession)
+ {
+ return iSessions.Append(&aSession);
+ }
+
+void CStubSrv::ClientClosed(CStubSrvSess& aSession)
+ {
+ const TUint sessCount = iSessions.Count();
+ for ( TUint ii = 0 ; ii < sessCount ; ++ii )
+ {
+ if ( iSessions[ii] == &aSession )
+ {
+ iSessions.Remove(ii);
+ break;
+ }
+ }
+ StartShutdownTimerIfNoSessions();
+ }
+
+void CStubSrv::EnqueueL(const RMessage2& aMessage)
+ {
+ TApiBehaviorPckgBuf buf;
+ aMessage.ReadL(0, buf);
+ TInt duration = aMessage.Int1();
+
+ TInt sesss = iSessions.Count();
+ for (TInt i = 0; i < sesss; i++)
+ {
+ TInt err = iSessions[i]->ConsumeApiBehavior(buf(), duration);
+ if (err == KErrNone)
+ {
+ return;
+ }
+ }
+ TApiQueueItem* item = new (ELeave) TApiQueueItem();
+ item->iBeh = buf();
+ item->iExeDuration = duration;
+ item->iTransactionId = 0;
+ CleanupStack::PushL(item);
+ iBehQueue.AppendL(item);
+ CleanupStack::Pop(item);
+ }
+
+void CStubSrv::DeleteQueues(const RMessage2& aMessage)
+ {
+ TUint lib = aMessage.Int0();
+ TUint api = aMessage.Int1();
+ TInt count = iBehQueue.Count();
+ for (TInt i = count - 1; i >= 0; i--)
+ {
+ if (iBehQueue[i]->iBeh.MatchId(lib, api))
+ {
+ delete iBehQueue[i];
+ iBehQueue.Remove(i);
+ }
+ }
+ }
+
+TInt CStubSrv::Dequeue(TApiBehavior& aBeh, TInt& aExeDuration, TInt aTransactionId)
+ {
+ TInt count = iBehQueue.Count();
+ for (TInt i = 0; i < count; i++)
+ {
+ if (iBehQueue[i]->iBeh.MatchId(aBeh.iLib, aBeh.iApi) &&
+ aTransactionId == iBehQueue[i]->iTransactionId)
+ {
+ aBeh = iBehQueue[i]->iBeh;
+ aExeDuration = iBehQueue[i]->iExeDuration;
+ delete iBehQueue[i];
+ iBehQueue.Remove(i);
+ return KErrNone;
+ }
+ }
+ return KErrNotFound;
+ }
+
+void CStubSrv::GetApiCompleteCodeL(const RMessage2& aMessage)
+ {
+ TUint lib = aMessage.Int0();
+ TUint api = aMessage.Int1();
+ TInt count = iBehQueue.Count();
+ for (TInt i = 0; i < count; i++)
+ {
+ if (iBehQueue[i]->iBeh.MatchId(lib, api))
+ {
+ iBehQueue[i]->iTransactionId = iTransctionUnique++;
+ TPckgBuf<TInt> buf(iBehQueue[i]->iTransactionId);
+ aMessage.WriteL(2, buf);
+ aMessage.Complete(iBehQueue[i]->iBeh.iCompleteCode);
+ return;
+ }
+ }
+ aMessage.Complete(0);
+ }
+
+void CStubSrv::ConstructL()
+ {
+ iTimer = CPeriodic::NewL(CActive::EPriorityStandard);
+ }
+
+CSession2* CStubSrv::NewSessionL(const TVersion& aVersion, const RMessage2& /*aMessage*/) const
+ {
+ TVersion v(KStubSrvMajorVersionNumber, KStubSrvMinorVersionNumber, KStubSrvBuildNumber);
+ if ( !User::QueryVersionSupported(v, aVersion) )
+ User::Leave(KErrNotSupported);
+ CStubSrvSess* session = CStubSrvSess::NewL(const_cast<CStubSrv&>(*this));
+ const_cast<CStubSrv*>(this)->CancelShutdownTimer();
+ return session;
+ }
+
+void CStubSrv::CancelShutdownTimer()
+ {
+ iTimer->Cancel();
+ }
+
+TInt CStubSrv::TimerFired(TAny* /*aThis*/)
+ {
+ CActiveScheduler::Stop();
+ return KErrNone;
+ }
+
+static void RunServerL()
+ {
+ static_cast<void>(User::LeaveIfError(User::RenameThread(KStubSrvName)));
+ CActiveScheduler* scheduler = new(ELeave) CActiveScheduler;
+ CleanupStack::PushL(scheduler);
+ CActiveScheduler::Install(scheduler);
+ CStubSrv::NewLC();
+ RProcess::Rendezvous(KErrNone);
+ CActiveScheduler::Start();
+ CleanupStack::PopAndDestroy(2, scheduler);
+ }
+
+GLDEF_C TInt E32Main()
+ {
+ TInt ret = KErrNoMemory;
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ if (cleanup)
+ {
+ TRAP(ret, RunServerL());
+ delete cleanup;
+ }
+ __UHEAP_MARKEND;
+ return ret;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/src/stubsrvapiexecutor.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,138 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+// INCLUDE FILES
+
+#include "stubsrvapiexecutor.h"
+#include "stubsrvsession.h"
+
+CApiExecutor* CApiExecutor::NewL()
+ {
+ CApiExecutor* self = new (ELeave) CApiExecutor();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CApiExecutor::~CApiExecutor()
+ {
+ Cancel();
+ iTimer.Close();
+ if (iMessage.Handle())
+ {
+ iMessage.Complete(KErrCancel);
+ }
+ }
+
+const TApiBehavior& CApiExecutor::ApiBehavior() const
+ {
+ return iBeh;
+ }
+
+TApiInvokeMode CApiExecutor::Mode() const
+ {
+ return iMode;
+ }
+
+void CApiExecutor::ExecuteL(const RMessage2& aMessage, CStubSrvSess& aSession, TUint aLib, TUint aApi)
+ {
+ iMessage = aMessage;
+ iSess = &aSession;
+ iBeh = TApiBehavior(aLib, aApi);
+ iMode = (TApiInvokeMode) iMessage.Int1();
+ if (iMode == ECompleteIfNoBehaviorSet)
+ {
+ TRequestStatus* status = &iStatus;
+ User::RequestComplete(status, KErrNone);
+ SetActive();
+ }
+ }
+
+void CApiExecutor::ExecuteL(const RMessage2& aMessage, CStubSrvSess& aSession, const TApiBehavior& aBeh, TInt aExeDuration)
+ {
+ iMessage = aMessage;
+ iSess = &aSession;
+ iMode = ECompleteIfNoBehaviorSet;
+ iBeh = aBeh;
+ iTimeout = aExeDuration;
+ if (iTimeout == 0)
+ {
+ TRequestStatus* status = &iStatus;
+ User::RequestComplete(status, KErrNone);
+ SetActive();
+ }
+ else if (iTimeout > 0)
+ {
+ iTimer.After(iStatus, iTimeout);
+ SetActive();
+ }
+ }
+
+void CApiExecutor::Resume(const TApiBehavior& aBeh, TInt aExeDuration)
+ {
+ iBeh = aBeh;
+ iTimeout = aExeDuration;
+ iMode = ECompleteIfNoBehaviorSet;
+ if (iTimeout == 0)
+ {
+ TRequestStatus* status = &iStatus;
+ User::RequestComplete(status, KErrNone);
+ SetActive();
+ }
+ else if (iTimeout > 0)
+ {
+ iTimer.After(iStatus, iTimeout);
+ SetActive();
+ }
+ }
+
+void CApiExecutor::RunL()
+ {
+ TInt err = KErrNone;
+ TApiBehaviorPckgBuf pckg(iBeh);
+ err = iMessage.Write(0, pckg);
+ iMessage.Complete(err);
+ iSess->InvokeApiComplete();
+ }
+
+TInt CApiExecutor::RunError(TInt /*aReason*/)
+ {
+ return KErrNone;
+ }
+
+void CApiExecutor::DoCancel()
+ {
+ iTimer.Cancel();
+ if (iMessage.Handle())
+ {
+ iMessage.Complete(KErrCancel);
+ }
+ }
+
+CApiExecutor::CApiExecutor()
+ : CActive(CActive::EPriorityStandard)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+void CApiExecutor::ConstructL()
+ {
+ iTimer.CreateLocal();
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/stubsrv/src/stubsrvsession.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,135 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+// INCLUDE FILES
+#include "stubsrvsession.h"
+#include "stubsrv.h"
+#include "stubsrvapiexecutor.h"
+#include "stubclientsrv.h"
+
+CStubSrvSess* CStubSrvSess::NewL(CStubSrv& aServer)
+ {
+ CStubSrvSess* self = new (ELeave) CStubSrvSess (aServer);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CStubSrvSess::~CStubSrvSess()
+ {
+ delete iExecutor;
+ iServer.ClientClosed(*this);
+ }
+
+void CStubSrvSess::InvokeApiComplete()
+ {
+ delete iExecutor;
+ iExecutor = NULL;
+ }
+
+TInt CStubSrvSess::ConsumeApiBehavior(const TApiBehavior& aBeh, TInt aExeDuration)
+ {
+ if (iExecutor && iExecutor->Mode() == ESuspendIfNoBehaviorSet &&
+ iExecutor->ApiBehavior().MatchId(aBeh))
+ {
+ iExecutor->Resume(aBeh, aExeDuration);
+ return KErrNone;
+ }
+ return KErrNotFound;
+ }
+
+void CStubSrvSess::ServiceL(const RMessage2& aMessage)
+ {
+ TRAPD(err, DispatchMessageL( aMessage ));
+ if (err != KErrNone)
+ {
+ aMessage.Panic(KStubSrvName, err);
+ }
+ }
+
+void CStubSrvSess::DispatchMessageL(const RMessage2& aMessage)
+ {
+ switch (aMessage.Function())
+ {
+ case EStubSrvEnqueApiBehavior:
+ {
+ iServer.EnqueueL(aMessage);
+ aMessage.Complete(KErrNone);
+ break;
+ }
+ case EStubSrvDeleteApiBehaviors:
+ {
+ iServer.DeleteQueues(aMessage);
+ aMessage.Complete(KErrNone);
+ break;
+ }
+ case EStubSrvInvokeApi:
+ {
+ if (iExecutor)
+ {
+ aMessage.Panic(KStubSrvName, EStubfApiAlreadyStarted);
+ break;
+ }
+ TApiBehavior beh;
+ TApiBehaviorPckg pckg(beh);
+ aMessage.ReadL(0, pckg);
+ TInt transactionId = aMessage.Int2();
+ TInt dur = 0;
+ TInt err = iServer.Dequeue(beh, dur, transactionId);
+ iExecutor = CApiExecutor::NewL();
+ if (err)
+ {
+ iExecutor->ExecuteL(aMessage, *this, beh.iLib, beh.iApi);
+ }
+ else
+ {
+ iExecutor->ExecuteL(aMessage, *this, beh, dur);
+ }
+ break;
+ }
+ case EStubSrvInvokeApiCancel:
+ {
+ delete iExecutor;
+ iExecutor = NULL;
+ aMessage.Complete(KErrNone);
+ break;
+ }
+ case EStubSrvGetApiCompletionCode:
+ {
+ iServer.GetApiCompleteCodeL(aMessage);
+ break;
+ }
+ default:
+ {
+ aMessage.Panic(KStubSrvName, EStubfBadRequest);
+ break;
+ }
+ }
+ }
+
+CStubSrvSess::CStubSrvSess(CStubSrv& aServer) : iServer(aServer)
+ {
+ }
+
+void CStubSrvSess::ConstructL()
+ {
+ iServer.ClientOpened(*this);
+ }
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,19 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/logger/bwins/usbloggeru.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,17 @@
+EXPORTS
+ ??0TFunctionLogger@@QAE@ABVTDesC8@@0PAX@Z @ 1 NONAME ; TFunctionLogger::TFunctionLogger(class TDesC8 const &, class TDesC8 const &, void *)
+ ??1TFunctionLogger@@QAE@XZ @ 2 NONAME ; TFunctionLogger::~TFunctionLogger(void)
+ ?Close@CUsbLog@@SAXXZ @ 3 NONAME ; void CUsbLog::Close(void)
+ ?Connect@CUsbLog@@SAHXZ @ 4 NONAME ; int CUsbLog::Connect(void)
+ ?HexDump@CUsbLog@@SAXABVTDesC8@@PBG1PBEH@Z @ 5 NONAME ; void CUsbLog::HexDump(class TDesC8 const &, unsigned short const *, unsigned short const *, unsigned char const *, int)
+ ?VerboseLeaveIfErrorL@@YAXABVTDesC8@@PADHH@Z @ 6 NONAME ; void VerboseLeaveIfErrorL(class TDesC8 const &, char *, int, int)
+ ?VerbosePanic@@YAXABVTDesC8@@PADHHPAEABVTDesC16@@@Z @ 7 NONAME ; void VerbosePanic(class TDesC8 const &, char *, int, int, unsigned char *, class TDesC16 const &)
+ ?Write@CUsbLog@@SAXABVTDesC8@@0@Z @ 8 NONAME ; void CUsbLog::Write(class TDesC8 const &, class TDesC8 const &)
+ ?Write@CUsbLog@@SAXABVTDesC8@@ABVTDesC16@@@Z @ 9 NONAME ; void CUsbLog::Write(class TDesC8 const &, class TDesC16 const &)
+ ?WriteFormat@CUsbLog@@SAXABVTDesC8@@V?$TRefByValue@$$CBVTDesC16@@@@AAY00PAC@Z @ 10 NONAME ; void CUsbLog::WriteFormat(class TDesC8 const &, class TRefByValue<class TDesC16 const >, signed char * [1] &)
+ ?WriteFormat@CUsbLog@@SAXABVTDesC8@@V?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 11 NONAME ; void CUsbLog::WriteFormat(class TDesC8 const &, class TRefByValue<class TDesC16 const >, ...)
+ ?WriteFormat@CUsbLog@@SAXABVTDesC8@@V?$TRefByValue@$$CBVTDesC8@@@@AAY00PAC@Z @ 12 NONAME ; void CUsbLog::WriteFormat(class TDesC8 const &, class TRefByValue<class TDesC8 const >, signed char * [1] &)
+ ?WriteFormat@CUsbLog@@SAXABVTDesC8@@V?$TRefByValue@$$CBVTDesC8@@@@ZZ @ 13 NONAME ; void CUsbLog::WriteFormat(class TDesC8 const &, class TRefByValue<class TDesC8 const >, ...)
+ ?VerboseLeaveL@@YAXABVTDesC8@@PADHH@Z @ 14 NONAME ; void VerboseLeaveL(class TDesC8 const &, char *, int, int)
+ ?VerboseMsgPanic@@YAXABVTDesC8@@PADHABVRMessage2@@ABVTDesC16@@H@Z @ 15 NONAME ; void VerboseMsgPanic(class TDesC8 const &, char *, int, class RMessage2 const &, class TDesC16 const &, int)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/logger/eabi/usbloggeru.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,19 @@
+EXPORTS
+ _Z12VerbosePanicRK6TDesC8PciiPhRK7TDesC16 @ 1 NONAME
+ _Z20VerboseLeaveIfErrorLRK6TDesC8Pcii @ 2 NONAME
+ _ZN15TFunctionLoggerC1ERK6TDesC8S2_Pv @ 3 NONAME
+ _ZN15TFunctionLoggerC2ERK6TDesC8S2_Pv @ 4 NONAME
+ _ZN15TFunctionLoggerD1Ev @ 5 NONAME
+ _ZN15TFunctionLoggerD2Ev @ 6 NONAME
+ _ZN7CUsbLog11WriteFormatERK6TDesC811TRefByValueIK7TDesC16ERSt9__va_list @ 7 NONAME
+ _ZN7CUsbLog11WriteFormatERK6TDesC811TRefByValueIK7TDesC16Ez @ 8 NONAME
+ _ZN7CUsbLog11WriteFormatERK6TDesC811TRefByValueIS1_ERSt9__va_list @ 9 NONAME
+ _ZN7CUsbLog11WriteFormatERK6TDesC811TRefByValueIS1_Ez @ 10 NONAME
+ _ZN7CUsbLog5CloseEv @ 11 NONAME
+ _ZN7CUsbLog5WriteERK6TDesC8RK7TDesC16 @ 12 NONAME
+ _ZN7CUsbLog5WriteERK6TDesC8S2_ @ 13 NONAME
+ _ZN7CUsbLog7ConnectEv @ 14 NONAME
+ _ZN7CUsbLog7HexDumpERK6TDesC8PKtS4_PKhi @ 15 NONAME
+ _Z13VerboseLeaveLRK6TDesC8Pcii @ 16 NONAME
+ _Z15VerboseMsgPanicRK6TDesC8PciRK9RMessage2RK7TDesC16i @ 17 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/logger/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2010 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:
+* Logging engine for USB.
+*
+*/
+
+/**
+ @file
+*/
+
+PRJ_TESTEXPORTS
+//../public/usblogger.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/usblogger.h)
+//usblogger.mmh /epoc32/include/usb/usblogger.mmh
+
+PRJ_TESTMMPFILES
+//usblogger.MMP
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/logger/group/usblogger.mmh Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2010 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:
+* Logging engine for USB.
+*
+*/
+
+// Uncomment next line to temporarily engage logging for release builds.
+#define __FLOGGER_UREL
+// Comment next line to temporarily disengage logging for debug builds
+#define __FLOGGER_UDEB
+
+// Determine whether, and how, flogger is to be included
+#ifdef __FLOGGER_UREL
+ #ifdef __FLOGGER_UDEB
+ #define __FLOGGER_INCLUDED
+ MACRO __FLOG_UREL
+ #endif
+#endif
+#ifdef __FLOGGER_UREL
+ #ifndef __FLOGGER_UDEB
+ #define __FLOGGER_INCLUDED
+ MACRO __FLOG_UREL
+ MACRO __FLOG_NO_UDEB
+ #endif
+#endif
+#ifndef __FLOGGER_UREL
+ #ifndef __FLOGGER_UDEB
+ MACRO __FLOG_NO_UDEB
+ #endif
+#endif
+#ifndef __FLOGGER_UREL
+ #ifdef __FLOGGER_UDEB
+ #define __FLOGGER_INCLUDED
+ #define __FLOGGER_DEBUGGERLIBRARY
+ #endif
+#endif
+
+
+#ifdef __FLOGGER_INCLUDED
+ #ifndef __FLOGGER_SUPPRESS_LIBRARY
+ #ifdef __FLOGGER_DEBUGGERLIBRARY
+ DEBUGLIBRARY usblogger.lib
+ #else
+ LIBRARY usblogger.lib
+ #endif
+ #endif
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/logger/group/usblogger.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2010 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:
+* Logging engine for USB.
+*
+*/
+
+/**
+ @file
+*/
+
+target usblogger.dll
+
+CAPABILITY All -Tcb
+TARGETTYPE dll
+
+uid 0x1000008d 0x10281A7D
+
+// MACRO __USB_DEBUG_RDEBUG__
+// Define this macro to get output through the serial port (COM0)
+
+SOURCEPATH ../src
+SOURCE usblogger.cpp
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+library euser.lib
+
+VENDORID 0x70000001
+
+#include <comms-infras/commsdebugutility.mmh>
+
+UNPAGED
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/logger/public/usblogger.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,184 @@
+/*
+* Copyright (c) 2010 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:
+* Logging engine for USB.
+*
+*/
+
+/**
+ @file
+ @internalTechnology
+*/
+
+
+#ifndef LOGGER_H
+#define LOGGER_H
+
+#include <e32base.h>
+
+// Control function entry and exit logging using a compile-time switch.
+#define __LOG_FUNCTIONS__
+
+class TFunctionLogger;
+
+#ifndef __COMMSDEBUGUTILITY_H__ // comms-infras/commsdebugutility.h not included
+#ifdef _DEBUG // If this is a debug build...
+// Set flogging active.
+#define __FLOG_ACTIVE
+#endif
+#endif
+
+#ifdef __FLOG_ACTIVE
+#define IF_FLOGGING(a) a
+#else
+#define IF_FLOGGING(a)
+#endif
+
+_LIT8(KDefaultLogFile, "USB");
+
+#ifdef __FLOG_ACTIVE
+#define LEAVEIFERRORL(a) VerboseLeaveIfErrorL(KLogComponent, __FILE__, __LINE__, a)
+#define LEAVEL(a) VerboseLeaveL(KLogComponent, __FILE__, __LINE__, a)
+#define _USB_PANIC(CAT, CODE) VerbosePanic(KLogComponent, __FILE__, __LINE__, CODE, (TText8*)#CODE, CAT)
+#define PANIC_MSG(msg, cat, code) VerboseMsgPanic(KLogComponent, __FILE__, __LINE__, msg, cat, code);
+#define FLOG(a) CUsbLog::Write(KDefaultLogFile, a);
+#define FTRACE(a) {a;}
+#define LOGTEXT(text) CUsbLog::Write(KLogComponent, text);
+#define LOGTEXT2(text, a) CUsbLog::WriteFormat(KLogComponent, text, a);
+#define LOGTEXT3(text, a, b) CUsbLog::WriteFormat(KLogComponent, text, a, b);
+#define LOGTEXT4(text, a, b, c) CUsbLog::WriteFormat(KLogComponent, text, a, b, c);
+#define LOGTEXT5(text, a, b, c, d) CUsbLog::WriteFormat(KLogComponent, text, a, b, c, d);
+#define LOGTEXT6(text, a, b, c, d, e) CUsbLog::WriteFormat(KLogComponent, text, a, b, c, d, e);
+#define LOGTEXT7(text, a, b, c, d, e, f) CUsbLog::WriteFormat(KLogComponent, text, a, b, c, d, e, f);
+#define LOGHEXDESC(desc) CUsbLog::HexDump(KLogComponent, 0, 0, desc.Ptr() , desc.Length());
+#define LOGHEXRAW(data, len) CUsbLog::HexDump(KLogComponent, 0, 0, data, len);
+#else
+#define LEAVEIFERRORL(a) static_cast<void>(User::LeaveIfError(a))
+#define LEAVEL(a) User::Leave(a)
+#define _USB_PANIC(CAT, CODE) User::Panic(CAT, CODE)
+#define PANIC_MSG(msg, cat, code) msg.Panic(cat, code);
+#define FLOG(a)
+#define FTRACE(a)
+#define LOGTEXT(text)
+#define LOGTEXT2(text, a)
+#define LOGTEXT3(text, a, b)
+#define LOGTEXT4(text, a, b, c)
+#define LOGTEXT5(text, a, b, c, d)
+#define LOGTEXT6(text, a, b, c, d, e)
+#define LOGTEXT7(text, a, b, c, d, e, f)
+#define LOGHEXDESC(desc)
+#define LOGHEXRAW(data, len)
+#endif // __FLOG_ACTIVE
+
+#define FORCED_LOG_FUNC TFunctionLogger __instrument(KLogComponent, TPtrC8((TUint8*)__PRETTY_FUNCTION__), (TAny*)this);
+#define FORCED_LOG_STATIC_FUNC_ENTRY TFunctionLogger __instrument(KLogComponent, TPtrC8((TUint8*)__PRETTY_FUNCTION__), (TAny*)NULL);
+
+#if ( defined __FLOG_ACTIVE && defined __LOG_FUNCTIONS__ )
+#define LOG_LINE CUsbLog::Write(KLogComponent, KNullDesC8());
+#define LOG_FUNC FORCED_LOG_FUNC
+#define LOG_STATIC_FUNC_ENTRY FORCED_LOG_STATIC_FUNC_ENTRY
+#else
+#define LOG_LINE
+#define LOG_FUNC
+#define LOG_STATIC_FUNC_ENTRY
+#endif
+
+
+
+NONSHARABLE_CLASS(CUsbLog) : public CBase
+ {
+public:
+ IMPORT_C static TInt Connect();
+ IMPORT_C static void Close();
+
+ IMPORT_C static void Write(const TDesC8& aCmpt, const TDesC8& aText);
+ IMPORT_C static void WriteFormat(const TDesC8& aCmpt, TRefByValue<const TDesC8> aFmt, ...);
+ IMPORT_C static void WriteFormat(const TDesC8& aCmpt, TRefByValue<const TDesC8> aFmt, VA_LIST& aList);
+ IMPORT_C static void Write(const TDesC8& aCmpt, const TDesC16& aText);
+ IMPORT_C static void WriteFormat(const TDesC8& aCmpt, TRefByValue<const TDesC16> aFmt, ...);
+ IMPORT_C static void WriteFormat(const TDesC8& aCmpt, TRefByValue<const TDesC16> aFmt, VA_LIST& aList);
+ IMPORT_C static void HexDump(const TDesC8& aCmpt, const TText* aHeader, const TText* aMargin, const TUint8* aPtr, TInt aLen);
+ };
+
+
+#ifndef NO_FPRINT
+inline void FPrint(const TRefByValue<const TDesC> IF_FLOGGING(aFmt), ...)
+ {
+#ifdef __FLOG_ACTIVE
+ VA_LIST list;
+ VA_START(list,aFmt);
+ CUsbLog::WriteFormat(KDefaultLogFile, aFmt, list);
+#endif
+ }
+#endif
+
+
+#ifndef NO_FHEX_PTR
+inline void FHex(const TUint8* IF_FLOGGING(aPtr), TInt IF_FLOGGING(aLen))
+ {
+#ifdef __FLOG_ACTIVE
+ CUsbLog::HexDump(KDefaultLogFile, 0, 0, aPtr, aLen);
+#endif
+ }
+#endif
+
+
+#ifndef NO_FHEX_DESC
+inline void FHex(const TDesC8& IF_FLOGGING(aDes))
+ {
+#ifdef __FLOG_ACTIVE
+ FHex(aDes.Ptr(), aDes.Length());
+#endif
+ }
+#endif
+
+
+IMPORT_C void VerboseLeaveIfErrorL(const TDesC8& aCpt,
+ char* aFile,
+ TInt aLine,
+ TInt aReason);
+
+IMPORT_C void VerboseLeaveL(const TDesC8& aCpt,
+ char* aFile,
+ TInt aLine,
+ TInt aReason);
+
+IMPORT_C void VerbosePanic(const TDesC8& aCpt,
+ char* aFile,
+ TInt aLine,
+ TInt aPanicCode,
+ TText8* aPanicName,
+ const TDesC& aPanicCategory);
+
+IMPORT_C void VerboseMsgPanic(const TDesC8& aCpt,
+ char* aFile,
+ TInt aLine,
+ const RMessage2& aMsg,
+ const TDesC& aCat,
+ TInt aPanicCode);
+
+
+NONSHARABLE_CLASS(TFunctionLogger)
+ {
+public:
+ IMPORT_C TFunctionLogger(const TDesC8& aCpt, const TDesC8& aString, TAny* aThis);
+ IMPORT_C ~TFunctionLogger();
+
+private:
+ TPtrC8 iCpt;
+ TPtrC8 iString;
+ };
+
+#endif // LOGGER_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/logger/src/usblogger.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,601 @@
+/*
+* Copyright (c) 2010 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:
+* Logging engine for USB.
+*
+*/
+
+/**
+ @file
+ @internalTechnology
+*/
+
+
+#include <e32base.h>
+#include <comms-infras/commsdebugutility.h>
+#include <usb/usblogger.h>
+
+
+#ifdef __USB_DEBUG_RDEBUG__
+#include <e32debug.h>
+const TInt KUSBLogBufferSize=255;
+class TUSBFlogOverflow8 : public TDes8Overflow
+ {
+public:
+ void Overflow(TDes8& /*aDes*/) { }
+ };
+
+class TUSBFlogOverflow16 : public TDes16Overflow
+ {
+public:
+ void Overflow(TDes16& /*aDes*/) { }
+ };
+void __CUsbLog_DoHexDump(const TDesC8& aCmpt, const TDesC8& aData, const TDesC8& aHeader, const TDesC8& aMargin);
+#endif //__USB_DEBUG_RDEBUG__
+
+
+
+
+#ifdef __FLOG_ACTIVE
+_LIT8(KSubsystem, "USB");
+_LIT8(KLogCmpt, "logengine");
+#endif
+
+
+NONSHARABLE_CLASS(TLogData)
+ {
+ public:
+#ifdef __FLOG_ACTIVE
+ TLogData();
+
+ void SetLogTags(const TDesC8& aCmpt);
+
+ TInt iAccessCount;
+
+ RFileLogger iLogEngine;
+ TBuf8<KMaxTagLength> iCurrentComponent;
+#endif
+ };
+
+
+#ifdef __FLOG_ACTIVE
+TLogData::TLogData()
+ : iAccessCount(0), iCurrentComponent(KNullDesC8)
+ {}
+
+void TLogData::SetLogTags(const TDesC8& aCmpt)
+ {
+ if (aCmpt != iCurrentComponent)
+ {
+ iLogEngine.SetLogTags(KSubsystem, aCmpt.Left(KMaxTagLength));
+ iCurrentComponent = aCmpt.Left(KMaxTagLength);
+ }
+ }
+#endif
+
+#define GETLOG TLogData* __logger = static_cast<TLogData*>(Dll::Tls());
+
+
+
+EXPORT_C /*static*/ TInt CUsbLog::Connect()
+ {
+#ifdef __FLOG_ACTIVE
+ GETLOG;
+
+ if (!__logger)
+ {
+
+ CUsbLog::Write(KLogCmpt, _L8("Opening new logger connection"));
+ __logger = new TLogData();
+ if (!__logger)
+ {
+ CUsbLog::Write(KLogCmpt, _L8("Opening logger connection failed, no memory"));
+ return KErrNoMemory;
+ }
+
+ __logger->iLogEngine.Connect();
+ Dll::SetTls(__logger);
+ }
+
+ __logger->iAccessCount++;
+ CUsbLog::WriteFormat(KLogCmpt, _L8("Opening -- %d instances now open"), __logger->iAccessCount);
+
+ return KErrNone;
+#else
+ return KErrNotSupported;
+#endif
+ }
+
+
+EXPORT_C /*static*/ void CUsbLog::Close()
+ {
+#ifdef __FLOG_ACTIVE
+ GETLOG;
+
+ if (__logger)
+ {
+ TInt& count = __logger->iAccessCount;
+
+ if (count)
+ {
+ count--;
+ CUsbLog::WriteFormat(KLogCmpt, _L8("Closing -- %d instance(s) left open"), count);
+ if (!count)
+ {
+ __logger->iLogEngine.Close();
+ delete __logger;
+ Dll::SetTls(NULL);
+ CUsbLog::Write(KLogCmpt, _L8("Fully closed and deleted, now flogging statically."));
+ }
+ }
+ else
+ {
+ CUsbLog::Write(KLogCmpt, _L8("Not closing -- not opened"));
+ }
+ }
+#endif
+ }
+
+
+EXPORT_C /*static*/ void CUsbLog::Write(const TDesC8& IF_FLOGGING(aCmpt), const TDesC8& IF_FLOGGING(aText))
+ {
+#ifdef __FLOG_ACTIVE
+ GETLOG;
+
+#ifdef __USB_DEBUG_RDEBUG__
+ TBuf8<KUSBLogBufferSize> buf;
+ RThread thread;
+ buf.AppendFormat(_L8("%S\t%S\t%LX\t%S\r\n"), &KSubsystem(), &aCmpt, thread.Id().Id(), &aText);
+ RDebug::RawPrint(buf);
+#endif // __USB_DEBUG_RDEBUG
+
+ if (__logger)
+ {
+ __logger->SetLogTags(aCmpt);
+ __logger->iLogEngine.Write(aText);
+ }
+ else
+ {
+ RFileLogger::Write(KSubsystem, aCmpt, aText);
+ }
+#endif
+ }
+
+
+EXPORT_C /*static*/ void CUsbLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue<const TDesC8> IF_FLOGGING(aFmt), ...)
+ {
+#ifdef __FLOG_ACTIVE
+ VA_LIST list;
+ VA_START(list, aFmt);
+
+ GETLOG;
+
+#ifdef __USB_DEBUG_RDEBUG__
+ TUSBFlogOverflow8 objFlogBody8;
+ TBuf8<KUSBLogBufferSize> buf;
+ RThread thread;
+ buf.AppendFormat(_L8("%S\t%S\t%LX\t"), &KSubsystem(), &aCmpt, thread.Id().Id());
+ buf.AppendFormatList(aFmt, list, &objFlogBody8);
+ buf.Append(_L8("\r\n"));
+ RDebug::RawPrint(buf);
+#endif // __USB_DEBUG_RDEBUG
+
+ if (__logger)
+ {
+ __logger->SetLogTags(aCmpt);
+ __logger->iLogEngine.WriteFormat(aFmt, list);
+ }
+ else
+ {
+ RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, list);
+ }
+#endif
+ }
+
+
+EXPORT_C /*static*/ void CUsbLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue<const TDesC8> IF_FLOGGING(aFmt), VA_LIST& IF_FLOGGING(aList))
+ {
+#ifdef __FLOG_ACTIVE
+ GETLOG;
+
+#ifdef __USB_DEBUG_RDEBUG__
+ TUSBFlogOverflow8 objFlogBody8;
+ TBuf8<KUSBLogBufferSize> buf;
+ RThread thread;
+ buf.AppendFormat(_L8("%S\t%S\t%LX\t"), &KSubsystem(), &aCmpt, thread.Id().Id());
+ buf.AppendFormatList(aFmt, aList, &objFlogBody8);
+ buf.Append(_L8("\r\n"));
+ RDebug::RawPrint(buf);
+#endif // __USB_DEBUG_RDEBUG
+
+ if (__logger)
+ {
+ __logger->SetLogTags(aCmpt);
+ __logger->iLogEngine.WriteFormat(aFmt, aList);
+ }
+ else
+ {
+ RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, aList);
+ }
+#endif
+ }
+
+
+EXPORT_C /*static*/ void CUsbLog::Write(const TDesC8& IF_FLOGGING(aCmpt), const TDesC16& IF_FLOGGING(aText))
+ {
+#ifdef __FLOG_ACTIVE
+ GETLOG;
+
+#ifdef __USB_DEBUG_RDEBUG__
+ TBuf16<KUSBLogBufferSize> buf;
+ buf.AppendFormat(_L16("(TDesC16): %S\r\n"), &aText);
+ RDebug::RawPrint(buf);
+#endif // __USB_DEBUG_RDEBUG
+
+ if (__logger)
+ {
+ __logger->SetLogTags(aCmpt);
+ __logger->iLogEngine.Write(aText);
+ }
+ else
+ {
+ RFileLogger::WriteFormat(KSubsystem, aCmpt, aText);
+ }
+#endif
+ }
+
+
+EXPORT_C /*static*/ void CUsbLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue<const TDesC16> IF_FLOGGING(aFmt), ...)
+ {
+#ifdef __FLOG_ACTIVE
+ VA_LIST list;
+ VA_START(list, aFmt);
+
+ GETLOG;
+
+#ifdef __USB_DEBUG_RDEBUG__
+ TUSBFlogOverflow16 objFlogBody16;
+ TBuf16<KUSBLogBufferSize> wideBuf;
+ wideBuf.Append(_L16("(TDesC16): "));
+ wideBuf.AppendFormatList(aFmt, list, &objFlogBody16);
+ wideBuf.Append(_L16("\r\n"));
+ RDebug::RawPrint(wideBuf);
+#endif // __USB_DEBUG_RDEBUG
+
+ if (__logger)
+ {
+ __logger->SetLogTags(aCmpt);
+ __logger->iLogEngine.WriteFormat(aFmt, list);
+ }
+ else
+ {
+ RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, list);
+ }
+#endif
+ }
+
+
+EXPORT_C /*static*/ void CUsbLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue<const TDesC16> IF_FLOGGING(aFmt), VA_LIST& IF_FLOGGING(aList))
+ {
+#ifdef __FLOG_ACTIVE
+ GETLOG;
+
+#ifdef __USB_DEBUG_RDEBUG__
+ TUSBFlogOverflow16 objFlogBody16;
+ TBuf16<KUSBLogBufferSize> wideBuf;
+ wideBuf.Append(_L16("(TDesC16): "));
+ wideBuf.AppendFormatList(aFmt, aList, &objFlogBody16);
+ wideBuf.Append(_L16("\r\n"));
+ RDebug::RawPrint(wideBuf);
+#endif // __USB_DEBUG_RDEBUG
+
+ if (__logger)
+ {
+ __logger->SetLogTags(aCmpt);
+ __logger->iLogEngine.WriteFormat(aFmt, aList);
+ }
+ else
+ {
+ RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, aList);
+ }
+#endif
+ }
+
+
+EXPORT_C /*static*/ void CUsbLog::HexDump(const TDesC8& IF_FLOGGING(aCmpt), const TText* IF_FLOGGING(aHeader), const TText* IF_FLOGGING(aMargin), const TUint8* IF_FLOGGING(aPtr), TInt IF_FLOGGING(aLen))
+ {
+#ifdef __FLOG_ACTIVE
+ GETLOG;
+
+#ifdef __USB_DEBUG_RDEBUG__
+ __CUsbLog_DoHexDump(aCmpt, TPtrC8(aPtr, aLen), TPtrC8(NULL,0), TPtrC8(NULL,0));
+#endif // __USB_DEBUG_RDEBUG
+
+ if (__logger)
+ {
+ __logger->SetLogTags(aCmpt);
+ __logger->iLogEngine.HexDump(aHeader, aMargin, aPtr, aLen);
+ }
+ else
+ {
+ RFileLogger::HexDump(KSubsystem, aCmpt, TPtrC8(aPtr, aLen), KNullDesC8);
+ }
+#endif
+ }
+
+
+#ifdef __USB_DEBUG_RDEBUG__
+
+#define BLANK _S("")
+const TInt KHexDumpWidth=16; ///< Number of bytes written per line when formatting as hex.
+const TInt KLowestPrintableCharacter = 32; ///< In Hex output, replace chars below space with a dot.
+const TInt KHighestPrintableCharacter = 126; ///< In Hex output, replace chars above 7-bits with a dot.
+
+_LIT8(KFirstFormatString8,"%04x : "); ///< Format string used in Hexdump to format first part: header and byte numbers.
+_LIT8(KSecondFormatString8,"%02x "); ///< Format string used in Hexdump to format mid part: each of the 16 bytes as hex
+_LIT8(KThirdFormatString8,"%c"); ///< Format string used in Hexdump to format the last part: each of the 16 bytes as characters
+_LIT8(KThreeSpaces8," "); ///< Format string used in Hexdump to define padding between first and mid parts
+_LIT8(KTwoSpaces8," "); ///< Format string used in Hexdump to define padding between hex and char bytes.
+const TText8 KFullStopChar8='.';
+
+void __CUsbLog_DoHexDump(const TDesC8& aCmpt, const TDesC8& aData, const TDesC8& aHeader, const TDesC8& aMargin)
+ {
+#ifdef __FLOG_ACTIVE
+ HBufC8* marginStr = NULL;
+ TBuf8<KMaxHexDumpWidth> buf;
+ TInt aRemainingLen = aData.Length();
+ TInt aHeaderLen = aHeader.Length();
+ TUSBFlogOverflow8 objFlogBody8;
+
+ if (aData.Length()==0) // nothing to do
+ {
+ return;
+ }
+
+
+ if (aHeaderLen > 0)
+ {
+
+ if (aMargin.Length() == 0)
+ {
+ marginStr = HBufC8::New(aHeader.Length());
+ if (marginStr == NULL)
+ {
+ return; // abort if No memory
+ }
+ TPtr8 marginStrPtr(marginStr->Des());
+ marginStrPtr.AppendFill(' ',aHeader.Length());
+ }
+ else
+ {
+ marginStr = aMargin.Alloc();
+ }
+ }
+
+
+
+ TUint blockStartPos = 0;
+ while (aRemainingLen>0)
+ {
+ RThread thread;
+ buf.AppendFormat(_L8("%S\t%S\t%LX\t"), &KSubsystem(), &aCmpt, thread.Id().Id());
+ TInt blockLength = (aRemainingLen>KHexDumpWidth ? KHexDumpWidth : aRemainingLen);
+
+ // write the header/margin and print in hex which bytes we are about to write
+ if (blockStartPos == 0)
+ {
+ if (aHeaderLen > 0)
+ {
+ buf.Append(aHeader);
+ }
+ buf.AppendFormat(KFirstFormatString8,&objFlogBody8, blockStartPos);
+ }
+ else
+ {
+ if (marginStr)
+ {
+ buf.Append(*marginStr);
+ }
+ buf.AppendFormat(KFirstFormatString8,&objFlogBody8,blockStartPos);
+ }
+
+ TInt bytePos;
+ // write the bytes as hex
+ for (bytePos = 0; bytePos < blockLength; bytePos++)
+ {
+ buf.AppendFormat(KSecondFormatString8,aData[blockStartPos + bytePos]);
+ }
+ while (bytePos++ < KHexDumpWidth)
+ {
+ buf.Append(KThreeSpaces8);
+ }
+ buf.Append(KTwoSpaces8);
+ // print the bytes as characters, or full stops if outside printable range
+ for (bytePos = 0; bytePos < blockLength; bytePos++)
+ {
+ buf.AppendFormat(KThirdFormatString8,(aData[blockStartPos + bytePos] < KLowestPrintableCharacter || aData[blockStartPos + bytePos] > KHighestPrintableCharacter) ? KFullStopChar8 : aData[blockStartPos + bytePos]);
+ }
+
+ buf.Append(_L8("\r\n"));
+ RDebug::RawPrint(buf);
+
+ buf.SetLength(0);
+ aRemainingLen -= blockLength;
+ blockStartPos += blockLength;
+ }
+ delete marginStr;
+#endif // __FLOG_ACTIVE
+ }
+
+
+
+#endif // __USB_DEBUG_RDEBUG
+
+
+/**
+Leave (if error) verbosely- log name of file and line number just before
+leaving.
+@param aFile The file we're leaving from.
+@param aLine The line number we're leaving from.
+@param aReason The leave code.
+*/
+EXPORT_C void VerboseLeaveIfErrorL(const TDesC8& IF_FLOGGING(aCpt),
+ char* IF_FLOGGING(aFile),
+ TInt IF_FLOGGING(aLine),
+ TInt aReason)
+ {
+ // only leave negative value
+ if ( aReason >= 0 )
+ {
+ return;
+ }
+
+#ifdef __FLOG_ACTIVE
+ _LIT8(KLeavePrefix, "LEAVE: ");
+
+ TPtrC8 fullFileName((const TUint8*)aFile);
+ TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1);
+
+ TBuf8<256> buf;
+ buf.Append(KLeavePrefix);
+ buf.AppendFormat(_L8("aReason = %d [file %S, line %d]"), aReason, &fileName,
+ aLine);
+ CUsbLog::Write(aCpt, buf);
+#endif
+
+ // finally
+ User::Leave(aReason);
+ }
+
+/**
+Leave verbosely- log name of file and line number just before
+leaving.
+@param aFile The file we're leaving from.
+@param aLine The line number we're leaving from.
+@param aReason The leave code.
+*/
+EXPORT_C void VerboseLeaveL(const TDesC8& IF_FLOGGING(aCpt),
+ char* IF_FLOGGING(aFile),
+ TInt IF_FLOGGING(aLine),
+ TInt aReason)
+ {
+#ifdef __FLOG_ACTIVE
+ _LIT8(KLeavePrefix, "LEAVE: ");
+
+ TPtrC8 fullFileName((const TUint8*)aFile);
+ TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1);
+
+ TBuf8<256> buf;
+ buf.Append(KLeavePrefix);
+ buf.AppendFormat(_L8("aReason = %d [file %S, line %d]"), aReason, &fileName,
+ aLine);
+ CUsbLog::Write(aCpt, buf);
+#endif
+
+ // finally
+ User::Leave(aReason);
+ }
+
+/**
+Panic verbosely- log name of file and line number just before panicking.
+@param aFile The file that's panicking.
+@param aLine The line number that's panicking.
+@param aReason The panic code.
+@param aPanicName The text of the panic code.
+@param aPanicCategory The panic category.
+*/
+EXPORT_C void VerbosePanic(const TDesC8& IF_FLOGGING(aCpt),
+ char* IF_FLOGGING(aFile),
+ TInt IF_FLOGGING(aLine),
+ TInt aPanicCode,
+ TText8* IF_FLOGGING(aPanicName),
+ const TDesC& aPanicCategory)
+ {
+#ifdef __FLOG_ACTIVE
+ _LIT8(KPanicPrefix, "PANIC: code ");
+
+ TPtrC8 fullFileName((const TUint8*)aFile);
+ TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1);
+
+ TBuf8<256> buf;
+ buf.Append(KPanicPrefix);
+ buf.AppendFormat(_L8("%d = %s [file %S, line %d]"),
+ aPanicCode,
+ aPanicName,
+ &fileName,
+ aLine);
+ CUsbLog::Write(aCpt, buf);
+#endif
+
+ // finally
+ User::Panic(aPanicCategory, aPanicCode);
+ }
+
+
+/**
+Panic the given message verbosely- log name of file and line number just
+before panicking.
+@param aMsg Message to panic.
+@param aFile The file that's panicking.
+@param aLine The line number that's panicking.
+@param aReason The panic code.
+@param aPanicName The text of the panic code.
+@param aPanicCategory The panic category.
+*/
+EXPORT_C void VerboseMsgPanic(const TDesC8& IF_FLOGGING(aCpt),
+ char* IF_FLOGGING(aFile),
+ TInt IF_FLOGGING(aLine),
+ const RMessage2& aMsg,
+ const TDesC& aCat,
+ TInt aPanicCode)
+ {
+#ifdef __FLOG_ACTIVE
+ _LIT8(KPanicPrefix, "PANICKING CLIENT: code ");
+
+ TPtrC8 fullFileName((const TUint8*)aFile);
+ TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1);
+
+ TBuf8<256> buf;
+ buf.Append(KPanicPrefix);
+ buf.AppendFormat(_L8("%d [file %S, line %d]"),
+ aPanicCode,
+ &fileName,
+ aLine);
+ CUsbLog::Write(aCpt, buf);
+#endif
+ // finally
+ aMsg.Panic(aCat, aPanicCode);
+ }
+
+#ifdef __FLOG_ACTIVE
+_LIT8(KInstrumentIn, ">>%S this = [0x%08x]");
+_LIT8(KInstrumentOut, "<<%S");
+#endif
+
+EXPORT_C TFunctionLogger::TFunctionLogger(const TDesC8& IF_FLOGGING(aCpt), const TDesC8& IF_FLOGGING(aString), TAny* IF_FLOGGING(aThis))
+ {
+#ifdef __FLOG_ACTIVE
+ iCpt.Set(aCpt);
+ iString.Set(aString);
+ CUsbLog::WriteFormat(iCpt, KInstrumentIn, &iString, aThis);
+#endif
+ }
+
+EXPORT_C TFunctionLogger::~TFunctionLogger()
+ {
+#ifdef __FLOG_ACTIVE
+ CUsbLog::WriteFormat(iCpt, KInstrumentOut, &iString);
+#endif
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,18 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include "client/group/bld.inf"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/bwins/usbman_over_dummyusbdiu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,52 @@
+EXPORTS
+ ??0RUsb@@QAE@XZ @ 1 NONAME ; RUsb::RUsb(void)
+ ??1RUsb@@QAE@XZ @ 2 NONAME ; RUsb::~RUsb(void)
+ ?BusDrop@RUsb@@QAEHXZ @ 3 NONAME ; int RUsb::BusDrop(void)
+ ?BusRespondSrp@RUsb@@QAEHXZ @ 4 NONAME ; int RUsb::BusRespondSrp(void)
+ ?BusRequest@RUsb@@QAEHXZ @ 5 NONAME ; int RUsb::BusRequest(void)
+ ?CancelInterest@RUsb@@QAEHW4TUsbReqType@1@@Z @ 6 NONAME ; int RUsb::CancelInterest(enum RUsb::TUsbReqType)
+ ?ClassSupported@RUsb@@QAEHHVTUid@@AAH@Z @ 7 NONAME ; int RUsb::ClassSupported(int, class TUid, int &)
+ ?Connect@RUsb@@QAEHXZ @ 8 NONAME ; int RUsb::Connect(void)
+ ?DeviceStateNotification@RUsb@@QAEXIAAW4TUsbDeviceState@@AAVTRequestStatus@@@Z @ 9 NONAME ; void RUsb::DeviceStateNotification(unsigned int, enum TUsbDeviceState &, class TRequestStatus &)
+ ?DeviceStateNotificationCancel@RUsb@@QAEXXZ @ 10 NONAME ; void RUsb::DeviceStateNotificationCancel(void)
+ ?DisableFunctionDriverLoading@RUsb@@QAEXXZ @ 11 NONAME ; void RUsb::DisableFunctionDriverLoading(void)
+ ?EnableFunctionDriverLoading@RUsb@@QAEHXZ @ 12 NONAME ; int RUsb::EnableFunctionDriverLoading(void)
+ ?GetCurrentPersonalityId@RUsb@@QAEHAAH@Z @ 13 NONAME ; int RUsb::GetCurrentPersonalityId(int &)
+ ?GetCurrentState@RUsb@@QAEHAAW4TUsbServiceState@@@Z @ 14 NONAME ; int RUsb::GetCurrentState(enum TUsbServiceState &)
+ ?GetDescription@RUsb@@QAEHHAAPAVHBufC16@@@Z @ 15 NONAME ; int RUsb::GetDescription(int, class HBufC16 * &)
+ ?GetDeviceState@RUsb@@QAEHAAW4TUsbDeviceState@@@Z @ 16 NONAME ; int RUsb::GetDeviceState(enum TUsbDeviceState &)
+ ?GetManufacturerStringDescriptor@RUsb@@QAEHIIAAV?$TBuf@$0IA@@@@Z @ 17 NONAME ; int RUsb::GetManufacturerStringDescriptor(unsigned int, unsigned int, class TBuf<128> &)
+ ?GetPersonalityIds@RUsb@@QAEHAAV?$RArray@H@@@Z @ 18 NONAME ; int RUsb::GetPersonalityIds(class RArray<int> &)
+ ?GetProductStringDescriptor@RUsb@@QAEHIIAAV?$TBuf@$0IA@@@@Z @ 19 NONAME ; int RUsb::GetProductStringDescriptor(unsigned int, unsigned int, class TBuf<128> &)
+ ?GetServiceState@RUsb@@QAEHAAW4TUsbServiceState@@@Z @ 20 NONAME ; int RUsb::GetServiceState(enum TUsbServiceState &)
+ ?GetSupportedClasses@RUsb@@QAEHHAAV?$RArray@VTUid@@@@@Z @ 21 NONAME ; int RUsb::GetSupportedClasses(int, class RArray<class TUid> &)
+ ?GetSupportedLanguages@RUsb@@QAEHIAAV?$RArray@I@@@Z @ 22 NONAME ; int RUsb::GetSupportedLanguages(unsigned int, class RArray<unsigned int> &)
+ ?HostEventNotification@RUsb@@QAEXAAVTRequestStatus@@AAVTDeviceEventInformation@@@Z @ 23 NONAME ; void RUsb::HostEventNotification(class TRequestStatus &, class TDeviceEventInformation &)
+ ?HostEventNotificationCancel@RUsb@@QAEXXZ @ 24 NONAME ; void RUsb::HostEventNotificationCancel(void)
+ ?MessageNotification@RUsb@@QAEXAAVTRequestStatus@@AAH@Z @ 25 NONAME ; void RUsb::MessageNotification(class TRequestStatus &, int &)
+ ?MessageNotificationCancel@RUsb@@QAEXXZ @ 26 NONAME ; void RUsb::MessageNotificationCancel(void)
+ ?ServiceStateNotification@RUsb@@QAEXAAW4TUsbServiceState@@AAVTRequestStatus@@@Z @ 27 NONAME ; void RUsb::ServiceStateNotification(enum TUsbServiceState &, class TRequestStatus &)
+ ?ServiceStateNotificationCancel@RUsb@@QAEXXZ @ 28 NONAME ; void RUsb::ServiceStateNotificationCancel(void)
+ ?SetCtlSessionMode@RUsb@@QAEHH@Z @ 29 NONAME ; int RUsb::SetCtlSessionMode(int)
+ ?Start@RUsb@@QAEXAAVTRequestStatus@@@Z @ 30 NONAME ; void RUsb::Start(class TRequestStatus &)
+ ?StartCancel@RUsb@@QAEXXZ @ 31 NONAME ; void RUsb::StartCancel(void)
+ ?StateNotification@RUsb@@QAEXIAAW4TUsbDeviceState@@AAVTRequestStatus@@@Z @ 32 NONAME ; void RUsb::StateNotification(unsigned int, enum TUsbDeviceState &, class TRequestStatus &)
+ ?StateNotificationCancel@RUsb@@QAEXXZ @ 33 NONAME ; void RUsb::StateNotificationCancel(void)
+ ?Stop@RUsb@@QAEXAAVTRequestStatus@@@Z @ 34 NONAME ; void RUsb::Stop(class TRequestStatus &)
+ ?Stop@RUsb@@QAEXXZ @ 35 NONAME ; void RUsb::Stop(void)
+ ?StopCancel@RUsb@@QAEXXZ @ 36 NONAME ; void RUsb::StopCancel(void)
+ ?TryStart@RUsb@@QAEXHAAVTRequestStatus@@@Z @ 37 NONAME ; void RUsb::TryStart(int, class TRequestStatus &)
+ ?TryStop@RUsb@@QAEXAAVTRequestStatus@@@Z @ 38 NONAME ; void RUsb::TryStop(class TRequestStatus &)
+ ?Version@RUsb@@QBE?AVTVersion@@XZ @ 39 NONAME ; class TVersion RUsb::Version(void) const
+ ?__DbgAlloc@RUsb@@QAEHXZ @ 40 NONAME ; int RUsb::__DbgAlloc(void)
+ ?__DbgCheckHeap@RUsb@@QAEHH@Z @ 41 NONAME ; int RUsb::__DbgCheckHeap(int)
+ ?__DbgFailNext@RUsb@@QAEHH@Z @ 42 NONAME ; int RUsb::__DbgFailNext(int)
+ ?__DbgMarkEnd@RUsb@@QAEHH@Z @ 43 NONAME ; int RUsb::__DbgMarkEnd(int)
+ ?__DbgMarkHeap@RUsb@@QAEHXZ @ 44 NONAME ; int RUsb::__DbgMarkHeap(void)
+ ?panic@@YAXXZ @ 45 NONAME ; void panic(void)
+ ?RequestSession@RUsb@@QAEHXZ @ 46 NONAME ; int RUsb::RequestSession(void)
+ ?BusClearError@RUsb@@QAEHXZ @ 47 NONAME ; int RUsb::BusClearError(void)
+ ?GetOtgDescriptor@RUsb@@QAEHIAAVTOtgDescriptor@@@Z @ 48 NONAME ; int RUsb::GetOtgDescriptor(unsigned int, class TOtgDescriptor &)
+ ?GetDetailedDescription@RUsb@@QAEHHAAPAVHBufC16@@@Z @ 49 NONAME ; int RUsb::GetDetailedDescription(int, class HBufC16 * &)
+ ?GetPersonalityProperty@RUsb@@QAEHHAAK@Z @ 50 NONAME ; int RUsb::GetPersonalityProperty(int, unsigned long &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/bwins/usbmanu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,52 @@
+EXPORTS
+ ??0RUsb@@QAE@XZ @ 1 NONAME ; public: __thiscall RUsb::RUsb(void)
+ ??1RUsb@@QAE@XZ @ 2 NONAME ; public: __thiscall RUsb::~RUsb(void)
+ ?panic@@YAXXZ @ 3 NONAME ; public: static int __cdecl UsbMan::Run(class UsbMan::TSignal &)
+ ?Stop@RUsb@@QAEXXZ @ 4 NONAME ; public: void __thiscall RUsb::Stop(void)
+ ?Version@RUsb@@QBE?AVTVersion@@XZ @ 5 NONAME ; public: class TVersion __thiscall RUsb::Version(void)const
+ ?Connect@RUsb@@QAEHXZ @ 6 NONAME ; public: int __thiscall RUsb::Connect(void)
+ ?Start@RUsb@@QAEXAAVTRequestStatus@@@Z @ 7 NONAME ; public: void __thiscall RUsb::Start(class TRequestStatus &)
+ ?StateNotification@RUsb@@QAEXIAAW4TUsbDeviceState@@AAVTRequestStatus@@@Z @ 8 NONAME ; public: void __thiscall RUsb::StateNotification(unsigned int,enum TUsbDeviceState &,class TRequestStatus &)
+ ?GetCurrentState@RUsb@@QAEHAAW4TUsbServiceState@@@Z @ 9 NONAME ; public: int __thiscall RUsb::GetCurrentState(enum TUsbServiceState &)
+ ?StartCancel@RUsb@@QAEXXZ @ 10 NONAME ; public: void __thiscall RUsb::StartCancel(void)
+ ?StateNotificationCancel@RUsb@@QAEXXZ @ 11 NONAME ; public: void __thiscall RUsb::StateNotificationCancel(void)
+ ?GetDeviceState@RUsb@@QAEHAAW4TUsbDeviceState@@@Z @ 12 NONAME ; public: int __thiscall RUsb::GetDeviceState(enum TUsbDeviceState &)
+ ?ServiceStateNotification@RUsb@@QAEXAAW4TUsbServiceState@@AAVTRequestStatus@@@Z @ 13 NONAME ; public: void __thiscall RUsb::ServiceStateNotification(enum TUsbServiceState &,class TRequestStatus &)
+ ?ServiceStateNotificationCancel@RUsb@@QAEXXZ @ 14 NONAME ; public: void __thiscall RUsb::ServiceStateNotificationCancel(void)
+ ?Stop@RUsb@@QAEXAAVTRequestStatus@@@Z @ 15 NONAME ; public: void __thiscall RUsb::Stop(class TRequestStatus &)
+ ?StopCancel@RUsb@@QAEXXZ @ 16 NONAME ; public: void __thiscall RUsb::StopCancel(void)
+ ?DeviceStateNotification@RUsb@@QAEXIAAW4TUsbDeviceState@@AAVTRequestStatus@@@Z @ 17 NONAME ; public: void __thiscall RUsb::DeviceStateNotification(unsigned int,enum TUsbDeviceState &,class TRequestStatus &)
+ ?DeviceStateNotificationCancel@RUsb@@QAEXXZ @ 18 NONAME ; public: void __thiscall RUsb::DeviceStateNotificationCancel(void)
+ ?GetServiceState@RUsb@@QAEHAAW4TUsbServiceState@@@Z @ 19 NONAME ; public: int __thiscall RUsb::GetServiceState(enum TUsbServiceState &)
+ ?__DbgCheckHeap@RUsb@@QAEHH@Z @ 20 NONAME ; public: int __thiscall RUsb::__DbgCheckHeap(int)
+ ?__DbgFailNext@RUsb@@QAEHH@Z @ 21 NONAME ; public: int __thiscall RUsb::__DbgFailNext(int)
+ ?__DbgMarkEnd@RUsb@@QAEHH@Z @ 22 NONAME ; public: int __thiscall RUsb::__DbgMarkEnd(int)
+ ?__DbgMarkHeap@RUsb@@QAEHXZ @ 23 NONAME ; public: int __thiscall RUsb::__DbgMarkHeap(void)
+ ?CancelInterest@RUsb@@QAEHW4TUsbReqType@1@@Z @ 24 NONAME ; int RUsb::CancelInterest(enum RUsb::TUsbReqType)
+ ?ClassSupported@RUsb@@QAEHHVTUid@@AAH@Z @ 25 NONAME ; int RUsb::ClassSupported(int, class TUid, int &)
+ ?GetCurrentPersonalityId@RUsb@@QAEHAAH@Z @ 26 NONAME ; int RUsb::GetCurrentPersonalityId(int &)
+ ?GetDescription@RUsb@@QAEHHAAPAVHBufC16@@@Z @ 27 NONAME ; int RUsb::GetDescription(int, class HBufC16 * &)
+ ?GetPersonalityIds@RUsb@@QAEHAAV?$RArray@H@@@Z @ 28 NONAME ; int RUsb::GetPersonalityIds(class RArray<int> &)
+ ?GetSupportedClasses@RUsb@@QAEHHAAV?$RArray@VTUid@@@@@Z @ 29 NONAME ; int RUsb::GetSupportedClasses(int, class RArray<class TUid> &)
+ ?TryStart@RUsb@@QAEXHAAVTRequestStatus@@@Z @ 30 NONAME ; void RUsb::TryStart(int, class TRequestStatus &)
+ ?TryStop@RUsb@@QAEXAAVTRequestStatus@@@Z @ 31 NONAME ; void RUsb::TryStop(class TRequestStatus &)
+ ?BusDrop@RUsb@@QAEHXZ @ 32 NONAME ; int RUsb::BusDrop(void)
+ ?BusRespondSrp@RUsb@@QAEHXZ @ 33 NONAME ; int RUsb::BusRespondSrp(void)
+ ?BusRequest@RUsb@@QAEHXZ @ 34 NONAME ; int RUsb::BusRequest(void)
+ ?DisableFunctionDriverLoading@RUsb@@QAEXXZ @ 35 NONAME ; void RUsb::DisableFunctionDriverLoading(void)
+ ?EnableFunctionDriverLoading@RUsb@@QAEHXZ @ 36 NONAME ; int RUsb::EnableFunctionDriverLoading(void)
+ ?GetManufacturerStringDescriptor@RUsb@@QAEHIIAAV?$TBuf@$0IA@@@@Z @ 37 NONAME ; int RUsb::GetManufacturerStringDescriptor(unsigned int, unsigned int, class TBuf<128> &)
+ ?GetProductStringDescriptor@RUsb@@QAEHIIAAV?$TBuf@$0IA@@@@Z @ 38 NONAME ; int RUsb::GetProductStringDescriptor(unsigned int, unsigned int, class TBuf<128> &)
+ ?GetSupportedLanguages@RUsb@@QAEHIAAV?$RArray@I@@@Z @ 39 NONAME ; int RUsb::GetSupportedLanguages(unsigned int, class RArray<unsigned int> &)
+ ?HostEventNotification@RUsb@@QAEXAAVTRequestStatus@@AAVTDeviceEventInformation@@@Z @ 40 NONAME ; void RUsb::HostEventNotification(class TRequestStatus &, class TDeviceEventInformation &)
+ ?HostEventNotificationCancel@RUsb@@QAEXXZ @ 41 NONAME ; void RUsb::HostEventNotificationCancel(void)
+ ?MessageNotification@RUsb@@QAEXAAVTRequestStatus@@AAH@Z @ 42 NONAME ; void RUsb::MessageNotification(class TRequestStatus &, int &)
+ ?MessageNotificationCancel@RUsb@@QAEXXZ @ 43 NONAME ; void RUsb::MessageNotificationCancel(void)
+ ?SetCtlSessionMode@RUsb@@QAEHH@Z @ 44 NONAME ; int RUsb::SetCtlSessionMode(int)
+ ?__DbgAlloc@RUsb@@QAEHXZ @ 45 NONAME ; int RUsb::__DbgAlloc(void)
+ ?RequestSession@RUsb@@QAEHXZ @ 46 NONAME ; int RUsb::RequestSession(void)
+ ?BusClearError@RUsb@@QAEHXZ @ 47 NONAME ; int RUsb::BusClearError(void)
+ ?GetOtgDescriptor@RUsb@@QAEHIAAVTOtgDescriptor@@@Z @ 48 NONAME ; int RUsb::GetOtgDescriptor(unsigned int, class TOtgDescriptor &)
+ ?GetDetailedDescription@RUsb@@QAEHHAAPAVHBufC16@@@Z @ 49 NONAME ; int RUsb::GetDetailedDescription(int, class HBufC16 * &)
+ ?GetPersonalityProperty@RUsb@@QAEHHAAK@Z @ 50 NONAME ; int RUsb::GetPersonalityProperty(int, unsigned long &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/eabi/usbmanu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,54 @@
+EXPORTS
+ _Z5panicv @ 1 NONAME
+ _ZN4RUsb10StopCancelEv @ 2 NONAME
+ _ZN4RUsb11StartCancelEv @ 3 NONAME
+ _ZN4RUsb12__DbgMarkEndEi @ 4 NONAME
+ _ZN4RUsb13__DbgFailNextEi @ 5 NONAME
+ _ZN4RUsb13__DbgMarkHeapEv @ 6 NONAME
+ _ZN4RUsb14GetDeviceStateER15TUsbDeviceState @ 7 NONAME
+ _ZN4RUsb14__DbgCheckHeapEi @ 8 NONAME
+ _ZN4RUsb15GetCurrentStateER16TUsbServiceState @ 9 NONAME
+ _ZN4RUsb15GetServiceStateER16TUsbServiceState @ 10 NONAME
+ _ZN4RUsb17StateNotificationEjR15TUsbDeviceStateR14TRequestStatus @ 11 NONAME
+ _ZN4RUsb23DeviceStateNotificationEjR15TUsbDeviceStateR14TRequestStatus @ 12 NONAME
+ _ZN4RUsb23StateNotificationCancelEv @ 13 NONAME
+ _ZN4RUsb24ServiceStateNotificationER16TUsbServiceStateR14TRequestStatus @ 14 NONAME
+ _ZN4RUsb29DeviceStateNotificationCancelEv @ 15 NONAME
+ _ZN4RUsb30ServiceStateNotificationCancelEv @ 16 NONAME
+ _ZN4RUsb4StopER14TRequestStatus @ 17 NONAME
+ _ZN4RUsb4StopEv @ 18 NONAME
+ _ZN4RUsb5StartER14TRequestStatus @ 19 NONAME
+ _ZN4RUsb7ConnectEv @ 20 NONAME
+ _ZN4RUsbC1Ev @ 21 NONAME
+ _ZN4RUsbC2Ev @ 22 NONAME
+ _ZN4RUsbD1Ev @ 23 NONAME
+ _ZN4RUsbD2Ev @ 24 NONAME
+ _ZNK4RUsb7VersionEv @ 25 NONAME
+ _ZN4RUsb14CancelInterestENS_11TUsbReqTypeE @ 26 NONAME
+ _ZN4RUsb14ClassSupportedEi4TUidRi @ 27 NONAME
+ _ZN4RUsb14GetDescriptionEiRP7HBufC16 @ 28 NONAME
+ _ZN4RUsb17GetPersonalityIdsER6RArrayIiE @ 29 NONAME
+ _ZN4RUsb19GetSupportedClassesEiR6RArrayI4TUidE @ 30 NONAME
+ _ZN4RUsb23GetCurrentPersonalityIdERi @ 31 NONAME
+ _ZN4RUsb7TryStopER14TRequestStatus @ 32 NONAME
+ _ZN4RUsb8TryStartEiR14TRequestStatus @ 33 NONAME
+ _ZN4RUsb13BusRespondSrpEv @ 34 NONAME
+ _ZN4RUsb10BusRequestEv @ 35 NONAME
+ _ZN4RUsb17SetCtlSessionModeEi @ 36 NONAME
+ _ZN4RUsb19MessageNotificationER14TRequestStatusRi @ 37 NONAME
+ _ZN4RUsb21GetSupportedLanguagesEjR6RArrayIjE @ 38 NONAME
+ _ZN4RUsb21HostEventNotificationER14TRequestStatusR23TDeviceEventInformation @ 39 NONAME
+ _ZN4RUsb25MessageNotificationCancelEv @ 40 NONAME
+ _ZN4RUsb26GetProductStringDescriptorEjjR4TBufILi128EE @ 41 NONAME
+ _ZN4RUsb27EnableFunctionDriverLoadingEv @ 42 NONAME
+ _ZN4RUsb27HostEventNotificationCancelEv @ 43 NONAME
+ _ZN4RUsb28DisableFunctionDriverLoadingEv @ 44 NONAME
+ _ZN4RUsb31GetManufacturerStringDescriptorEjjR4TBufILi128EE @ 45 NONAME
+ _ZN4RUsb7BusDropEv @ 46 NONAME
+ _ZN4RUsb10__DbgAllocEv @ 47 NONAME
+ _ZN4RUsb14RequestSessionEv @ 48 NONAME
+ _ZN4RUsb13BusClearErrorEv @ 49 NONAME
+ _ZN4RUsb16GetOtgDescriptorEjR14TOtgDescriptor @ 50 NONAME
+ _ZN4RUsb22GetDetailedDescriptionEiRP7HBufC16 @ 51 NONAME
+ _ZN4RUsb22GetPersonalityPropertyEiRm @ 52 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/group/UsbManStub.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,58 @@
+;
+; Copyright (c) 2010 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:
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"UsbManStub"},(0x00000001),11,1,0,TYPE=SA, RU
+
+; Series60 product id for S60 5.1
+[0x10283160], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"\epoc32\release\armv5\udeb\usbman.dll"-"c:\Sys\Bin\usbman.dll"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/group/UsbManStub_empty.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,34 @@
+;
+; Copyright (c) 2010 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:
+;
+
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"UsbManStub"},(0x00000001),10,1,0,TYPE=SA
+
+; Series60 product id for S60 5.1
+;[0x10283160], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+;Files
+""-"z:\sys\bin\usbman.dll"
Binary file tsrc/testtools/usbman_stub/usbman/client/group/UsbManStub_empty.sis has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/group/Usbman.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <platform_paths.hrh>
+/**
+ @file
+*/
+
+target usbman.dll
+CAPABILITY All -Tcb
+targettype dll
+
+//
+// We have a laggard, ill-defined UID3 which must be kept
+// for old platforms for BC. For newer platforms, we use
+// KUidUsbmanClient = 0x101FE1DA
+//
+ uid 0x1000008d 0x101fe1da
+
+sourcepath ../SRC
+source RUsb.cpp
+
+USERINCLUDE ../inc
+userinclude ../../server/public
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+MW_LAYER_SYSTEMINCLUDE
+
+SYSTEMINCLUDE /epoc32/include/mw/stubsrv
+
+library euser.lib
+library efsrv.lib
+LIBRARY stubber.lib
+LIBRARY apibehavior.lib
+
+#include <usb/usblogger.mmh>
+
+VENDORID 0x70000001
+
+UNPAGED
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+PRJ_TESTEXPORTS
+//../public/usbman.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbman.h)
+//../public/usbstates.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbstates.h)
+../inc/usbmandll_stub.h /epoc32/include/mw/taf/usbmandll_stub.h
+
+
+../rom/usbManStubSIS.iby /epoc32/rom/include/core/mw/usbman_stub.iby
+UsbManStub_empty.sis /epoc32/data/z/system/install/UsbMan_stub.sis
+
+PRJ_TESTMMPFILES
+//Usbman.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/inc/usbmandll_stub.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2010 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 USBMANDLL_STUB_H_
+#define USBMANDLL_STUB_H_
+
+static const TUint KUsbManStubAgentDll = 0x00000033;
+
+enum TUsbManStubAgentApi
+ {
+ EConnect,
+ EGetDeviceState,
+ EStart,
+ EStop,
+ ETryStartAsync,
+ ETryStopAsync,
+ EDeviceStateNotification,
+ EGetCurrentPersonalityId,
+ ECancelInterest,
+ EDeviceStateNotificationCancel,
+ EServiceState,
+ ESetCtlSessionMode,
+ EGetPersonalityProperty
+ };
+
+#endif /*USBMANDLL_STUB_H_*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/public/usbman.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,705 @@
+/*
+* Copyright (c) 2010 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
+*/
+
+#ifndef __USBMAN_H__
+#define __USBMAN_H__
+
+#include <e32std.h>
+#include <usberrors.h>
+#include <usbstates.h>
+#include <usb/usbshared.h>
+
+// The propery of a personality is a bitmap, and bit 0 is used to identify
+// whether a personality is hidden.
+const TUint32 KUsbPersonalityPropertyHidden = 0x00000001;
+
+NONSHARABLE_CLASS(RUsb) : public RSessionBase
+/**
+The RUsb class implements the Symbian OS USB Management API RUsb
+
+@publishedPartner
+@released
+*/
+ {
+public:
+
+ // Request types, the interest of which can be cancelled by clients
+ enum TUsbReqType
+ {
+ EStart,
+ EStop,
+ ETryStart,
+ ETryStop
+ };
+
+ /**
+ Constructor
+
+
+ @since 7.0
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C RUsb();
+
+ /**
+ Destructor
+
+
+ @since 7.0
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C ~RUsb();
+
+ /**
+ Extract the version of the server providing the RUsb API
+
+
+ @since 7.0
+
+ @return Version of the server
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TVersion Version() const;
+
+ /**
+ Connect the Handle to the Server
+ Must be called before all other methods except Version()
+
+
+ @since 7.0
+
+ @return KErrNone if successful, otherwise the error that occurred
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt Connect();
+
+ /**
+ Start the device's USB service. Should not be called if the USB services
+ have already been started
+ Note: Asynchonous Version, outcome returned when the status is completed
+
+
+ @since 7.0
+ @param aStatus Status to complete once the start operation has completed
+ @capability NetworkControl
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void Start(TRequestStatus& aStatus);
+
+ /**
+ Cancels the pending start operation of the device's USB service.
+
+
+ @since 7.0
+ @capability NetworkControl
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void StartCancel();
+
+ /**
+ Stops the device's USB service. Should not be called if the USB services
+ have not been started. This is the synchronous variant of this function.
+ This function is deprecated- use the asynchronous version.
+
+
+ @since 7.0
+ @capability NetworkControl
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void Stop();
+
+ /**
+ Stops the device's USB service. Should not be called if the USB services
+ have not been started. This is the asynchronous variant of this function.
+
+
+ @since 7.0s
+ @param aStatus Status to complete once the stop operation has completed
+ @capability NetworkControl
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void Stop(TRequestStatus& aStatus);
+
+ /**
+ Cancels the pending stop operation of the device's USB service.
+
+
+ @since 7.0s
+ @capability NetworkControl
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void StopCancel();
+
+ /**
+ Get the current state of the device's USB service.
+
+
+ @since 7.0s
+ @param aState Set by the method to the current state of the USB service
+
+ @return KErrNone if successful, otherwise the error that occurred
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt GetServiceState(TUsbServiceState& aState);
+
+ /**
+ Request to be notified of a change in service state of the USB device. The
+ request only completes when the service state changes.
+
+
+ @since 7.0s
+ @param aState State variable to be written to upon completion of the request
+ @param aStatus Status to complete when required state change occurs
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void ServiceStateNotification(
+ TUsbServiceState& aState,
+ TRequestStatus& aStatus
+ );
+
+ /**
+ Cancel the outstanding service state notification request.
+
+
+ @since 7.0s
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void ServiceStateNotificationCancel();
+
+ /**
+ Gets the current device state (eg. powered, configured...).
+
+
+ @since 7.0s
+ @param aState Set by the method to the current state of the USB device
+ @return KErrNone if successful, otherwise the error that occurred
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt GetDeviceState(TUsbDeviceState& aState);
+
+ /**
+ Request to be notified of a change in state of the USB device.
+
+
+ @since 7.0s
+ @param aStateMask State mask of the states the client is interested in
+ @param aState State variable to be written to upon completion of the request
+ @param aStatus Status to complete when required state change occurs
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void DeviceStateNotification(
+ TUint aStateMask,
+ TUsbDeviceState& aState,
+ TRequestStatus& aStatus
+ );
+
+ /**
+ Cancel the outstanding device state notification request.
+
+
+ @since 7.0s
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void DeviceStateNotificationCancel();
+
+ /**
+ Try to start the device's USB service. It starts the current personality
+ only if the service is in the idle state. Calling this API while the server
+ is in any other states has no any effect on the service state.
+
+ Note: Asynchonous version, outcome returned when the status is completed
+
+ @param aPersonalityId a personality id
+ @param aStatus Status to complete once the start operation has completed.
+ It may be one of the following:
+ KErrNotSupported
+ KErrAccessDenied
+ KErrServerBusy
+ KErrAbort
+ KErrNone
+ @capability NetworkControl
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void TryStart(TInt aPersonalityId, TRequestStatus& aStatus);
+
+ /**
+ Try to stop the device's USB service. It stops the service only if the serice
+ is in the started state. Calling this API while the server is in the other states
+ has no any effect on the service state.
+
+ Note: Asynchonous version, outcome returned when the status is completed
+
+ @param aStatus Status to complete once the stop operation has completed.
+ It may be one of the following:
+ KErrNotSupported
+ KErrAccessDenied
+ KErrServerBusy
+ KErrNone
+ @capability NetworkControl
+ @publishedPartner
+ @released
+ */
+ IMPORT_C void TryStop(TRequestStatus& aStatus);
+
+ /**
+ Cancels the interest of the pending operation of the device's USB service,
+ either starting or stopping. The pending request will run to the completion.
+ The caller of this function receives a status of KErrCancel.
+
+ @param aMessageId a message id to identify the request to be cancelled
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt CancelInterest(TUsbReqType aMessageId);
+
+ /**
+ Gets the textual description of the personality identified by the aPersonalityId.
+ Caller is repsonsible for freeing up memories allocated to
+ aLocalizedPersonalityDescriptor.
+
+ @param aPersonalityId a personality id
+ @param aLocalizedPersonalityDescriptor a localize text string
+ @return KErrNone if successful, otherwise the error that occurred
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt GetDescription(TInt aPersonalityId, HBufC*& aLocalizedPersonalityDescriptor);
+
+ /**
+ Gets the current personality id of the device's USb service
+
+ @param aPersonalityId set to the current personality of USB device
+ @return KErrNone if successful, otherwise the error that occurred
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt GetCurrentPersonalityId(TInt& aPersonalityId);
+
+ /**
+ Gets supported classes by the given personality identified by the aPersonalityId
+
+ @param aPersonalityId a personality id
+ @param aClassUids an array of class uids
+ @return KErrNone if successful, otherwise the error that occurred
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt GetSupportedClasses(TInt aPersonalityId, RArray<TUid>& aClassUids);
+
+ /**
+ Queries the USB manager to determine if a given class is supported
+
+ @param aPersonalityId a personality id
+ @param aClassUid a class uid
+ @param aSupported set upon return
+ @return KErrNone if successful, otherwise the error that occurred
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt ClassSupported(TInt aPersonalityId, TUid aClassUid, TBool& aSupported);
+
+ /**
+ Gets all supported personality ids of the device's USB service.
+
+ @param aPersonalityIds populated with all supported personality ids of the USB device
+ @return KErrNone if successful, otherwise the error that occurred
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt GetPersonalityIds(RArray<TInt>& aPersonalityIds);
+
+ /**
+ Marks the start of heap cell checking for the USB Manager. This function is only defined
+ in debug builds.
+
+ @return KErrNone if successful, otherwise the error that occurred
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt __DbgMarkHeap();
+
+ /**
+ Checks that the number of allocated cells on the USB Manager's heap is correct. The USB
+ Manager will be panicked if it is not. This function is only defined in debug builds.
+
+ @param aCount The expected number of heap cells allocated
+ @return KErrNone if successful, otherwise the error that occurred
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt __DbgCheckHeap(TInt aCount);
+
+ /**
+ Marks the end of heap cell checking for the USB Manager. Checks that the number of heap
+ cells allocated since the last __DbgMarkHeap() is aCount; the most common value to pass
+ here is zero. This function is only defined in debug builds.
+
+ @param aCount The expected number of heap cells allocated
+ @return KErrNone if successful, otherwise the error that occurred
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt __DbgMarkEnd(TInt aCount);
+
+ /**
+ Simulates memory allocation failure in the USB Manager. This function is only defined in
+ debug builds.
+
+ @param aCount The number of allocations after which memory allocation should fail
+ @return KErrNone if successful, otherwise the error that occurred
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt __DbgFailNext(TInt aCount);
+
+ /**
+ Functions below this point are deprecated and should not be used.
+ */
+
+ /**
+ Get the current state of the device's USB service. This function is deprecated and has been
+ replaced by the GetServiceState function from version 7.0s onwards.
+
+
+ @since 7.0
+ @param aState Set by the method to the current state of the USB service
+
+ @return KErrNone if successful, otherwise the error that occurred
+
+ @publishedPartner
+ @deprecated
+ */
+ IMPORT_C TInt GetCurrentState(TUsbServiceState& aState);
+
+ /**
+ Request to be notified of a change in state of the USB device. This function is deprecated
+ and has been replaced by the DeviceStateNotification function from version 7.0s onwards.
+
+
+ @since 7.0
+ @param aStateMask State mask of the states the client is interested in
+ @param aState State variable to be written to upon completion of the request
+ @param aStatus Status to complete when required state change occurs
+
+ @publishedPartner
+ @deprecated
+ */
+ IMPORT_C void StateNotification(
+ TUint aStateMask,
+ TUsbDeviceState& aState,
+ TRequestStatus& aStatus
+ );
+
+ /**
+ Cancel the outstanding device state notification request. This function is deprecated and
+ has been replaced by the DeviceStateNotificationCancel function from version 7.0s onwards.
+
+
+ @since 7.0
+
+ @publishedPartner
+ @deprecated
+ */
+ IMPORT_C void StateNotificationCancel();
+
+ /**
+ * Set or reset the mode in which current RUsb session operates.
+ * Recent implementation assumes that there is the one and only application
+ * which controls USBMAN, all other clients act as listeners to notification
+ * requests. Only application which was previously granted 'control' mode is
+ * allowed to reset it at later stage. Any calls from other applications will
+ * generate an error.
+ *
+ * @param aValue True to inform USBMAN that Application wants to 'control'
+ * USBMAN
+ * False otherwise
+ *
+ * @capability NetworkControl
+ * @return KErrNone if successful
+ * KErrAccessDenied otherwise
+ */
+ IMPORT_C TInt SetCtlSessionMode(TBool aValue);
+
+ /**
+ * Cable watcher wants to assert Bus_request.
+ * If ID-Pin is present this is an A-Device and this will result in an attempt
+ * to raise VBus. Second attempt to raise VBus causes KErrUsbOtgVbusAlreadyRaised
+ * error.
+ * If ID-Pin is absent this is a B-Device and this will result in an attempt to
+ * use SRP. Recently does nothing
+ *
+ * When BusRequest() returns an error, VBus remains low until the errors are cleared by
+ * BusDrop() or BusClearErr() calls
+ *
+ * @capability NetworkControl
+ * @return KErrNone if successful, otherwise an error code returned by OTGDI
+ */
+ IMPORT_C TInt BusRequest();
+
+ /**
+ * Cable watcher wants to assert Bus_request after SRP.
+ * If ID-Pin is present this is an A-Device and this will result in an attempt
+ * to raise VBus
+ *
+ * @capability NetworkControl
+ * @return KErrNone if successful, otherwise an error code returned by OTGDI
+ */
+ IMPORT_C TInt BusRespondSrp();
+
+ /**
+ * Cable watcher wants to clear the Bus Error after A_VBUS_ERR
+ * Only works if ID-Pin is present (this is an A-Device) and there
+ * has already been a bus erorr.
+ * This will not result in any attempt to raise or drop VBus
+ *
+ * @capability NetworkControl
+ * @return KErrNone if successful, otherwise an error code returned by OTGDI
+ */
+ IMPORT_C TInt BusClearError();
+
+ /**
+ * Cable watcher wants to drop VBus.
+ * If ID-Pin is present this is an A-Device and this will result in stopping VBus
+ * power-up
+ *
+ * @capability NetworkControl
+ * @return KErrNone if successful, otherwise an error code returned by OTGDI
+ */
+ IMPORT_C TInt BusDrop();
+
+ /**
+ * Register for Messages notifications
+ * The request only completes when the new message arrives.
+ * Calling this function the first time initializes Messages queue
+ *
+ *
+ * @param aMessage UI Message variable to be written to upon completion
+ * of the request
+ * @param aStatus Status to complete when required state change occurs
+ * KErrNone - if successful
+ * KErrInUse - if there is another outstanding nofitication request
+ * for the same session
+ * otherwise an error code returned by OTGDI or Host
+ */
+ IMPORT_C void MessageNotification(TRequestStatus& aStatus, TInt& aMessage);
+
+ /**
+ * Cancel the outstanding Messages notification request.
+ */
+ IMPORT_C void MessageNotificationCancel();
+
+ /**
+ * Register for Host Device Event notifications.
+ * The request only completes when the host event occurs.
+ * Calling this function the first time initializes Host Events queue
+ *
+ * @param aStatus Status to complete when required event occurs
+ *
+ * KErrNone - if successful
+ * KErrInUse - if there is another outstanding nofitication
+ * request for the same session
+ * otherwise an error code returned by FDF
+ * @param aDeviceInformation device info to be written to upon completion
+ * of the request
+ */
+ IMPORT_C void HostEventNotification(TRequestStatus& aStatus,
+ TDeviceEventInformation& aDeviceInformation);
+ /**
+ * Cancel the outstanding FDF Device Event notification request.
+ */
+ IMPORT_C void HostEventNotificationCancel();
+
+ /**
+ * Enable Function Driver Loading.
+ *
+ * @capability NetworkControl
+ * @return KErrNone - if successful
+ * KErrNotSupported - if FDF is not included in current configuration
+ * otherwise an error code returned by FDF
+ */
+ IMPORT_C TInt EnableFunctionDriverLoading();
+
+ /**
+ * Disable Function Driver Loading.
+ *
+ * @capability NetworkControl
+ */
+ IMPORT_C void DisableFunctionDriverLoading();
+
+ /**
+ * Get Supported Languages from USB Device
+ *
+ * @param aDeviceId DeviceID of given device
+ * @param aLangIds an array of language IDs supported by given device.
+ * These language IDs are supplied by USB-IF and are
+ * different from standard Symbian TLanguage enumeration
+ *
+ * @return KErrNone - if successful
+ * otherwise an error code returned by FDF
+ */
+ IMPORT_C TInt GetSupportedLanguages(TUint aDeviceId, RArray<TUint>& aLangIds);
+
+ /**
+ * Get Manufacturer Descriptor
+ *
+ * @param aDeviceId DeviceID of given device
+ * @param aLangId required language ID which is supplied by USB-IF and is
+ * different from standard Symbian TLanguage enumeration
+ * @param aString manufacturer descriptor value at output
+ *
+ * @return KErrNone - if successful
+ * otherwise an error code returned by FDF
+ */
+ IMPORT_C TInt GetManufacturerStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString);
+
+ /**
+ * Get Product Descriptor
+ *
+ * @param aDeviceId DeviceID of given device
+ * @param aLangId required language ID which is supplied by USB-IF and is
+ * different from standard Symbian TLanguage enumeration
+ * @param aString product descriptor value at output
+ *
+ * @return KErrNone - if successful
+ * otherwise an error code returned by FDF
+ */
+ IMPORT_C TInt GetProductStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString);
+
+ /**
+ * Retrieve Otg Descriptor for device which has given device Id.
+ * Currently TOtgDescriptor has following fields:
+ * - HNP supported
+ * - SRP supported
+ * An OTG device should support them both.
+ *
+ * @param aDeviceId DeviceID of given device
+ * @param aDescriptor OTG descriptor value at output
+ *
+ * @return KErrNone - if successful
+ * otherwise an error code returned by FDF
+ */
+ IMPORT_C TInt GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& aDescriptor);
+
+ /**
+ Simulates memory allocation in the USB Manager. This function is only defined in
+ debug builds.
+
+ @return KErrNone if successful, otherwise the error that occurred
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt __DbgAlloc();
+
+ /**
+ Informs USB Manager that the client would like to initialte USB session.
+ On A-Device, it results in sending a notification to 'controller' application
+ On B-Device, it may trigger either SRP or HNP sequence depending on the state of VBus
+
+ @return KErrNone if successful, otherwise the error that occurred
+
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt RequestSession();
+
+
+ /**
+ Gets the property of the personality identified by the aPersonalityId.
+
+ @param aPersonalityId a personality id
+ @return the personality property
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt GetPersonalityProperty(TInt aPersonalityId, TUint32& aProperty);
+
+ /**
+ Gets the detailed textual description of the personality identified by the aPersonalityId.
+ Caller is repsonsible for freeing up memories allocated to
+ aLocalizedPersonalityDescriptor.
+
+ @param aPersonalityId a personality id
+ @param aLocalizedPersonalityDescriptor a localize text string
+ @return KErrNone if successful, otherwise the error that occurred
+ @publishedPartner
+ @released
+ */
+ IMPORT_C TInt GetDetailedDescription(TInt aPersonalityId, HBufC*& aLocalizedPersonalityDescriptor);
+
+private:
+ /**
+ Used to register device state notifications.
+ */
+ TPckg<TUint32> iDeviceStatePkg;
+
+ /**
+ Used to register service state notifications.
+ */
+ TPckg<TUint32> iServiceStatePkg;
+
+ /**
+ Used to register OTG/Host message notifications.
+ */
+ TPckg<TUint32> iMessagePkg;
+
+ /**
+ Used to register Host state notifications.
+ */
+ TPckg<TDeviceEventInformation> iHostPkg;
+ };
+
+#endif //__USBMAN_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/public/usbstates.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2010 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
+*/
+
+#ifndef __USBSTATES_H__
+#define __USBSTATES_H__
+
+#include <e32def.h>
+
+/** TUsbServiceState
+
+ Enumeration of all the USB service states.
+
+ @publishedPartner
+ @released
+*/
+enum TUsbServiceState
+ {
+ /** EUsbServiceIdle
+ The service is not started.
+ */
+ EUsbServiceIdle = 0x01,
+
+ /** EUsbServiceStarting */
+ EUsbServiceStarting = 0x02,
+
+ /** EUsbServiceStarted */
+ EUsbServiceStarted = 0x04,
+
+ /** EUsbServiceStopping */
+ EUsbServiceStopping = 0x08,
+
+ /** EUsbServiceFatalError */
+ EUsbServiceFatalError = 0x10
+ };
+
+/** TUsbDeviceState
+
+ Enumeration of all of the states of the USB device.
+ The states reported are dependent on the hardware.
+
+ *** If this changes update KUsbDeviceStates below ***
+
+ @publishedPartner
+ @released
+*/
+enum TUsbDeviceState
+ {
+ /** EUsbDeviceStateUndefined */
+ EUsbDeviceStateUndefined = 0x00,
+
+ /** EUsbDeviceStateDefault */
+ EUsbDeviceStateDefault = 0x01,
+
+ /** EUsbDeviceStateAttached */
+ EUsbDeviceStateAttached = 0x02,
+
+ /** EUsbDeviceStatePowered */
+ EUsbDeviceStatePowered = 0x04,
+
+ /** EUsbDeviceStateConfigured */
+ EUsbDeviceStateConfigured = 0x08,
+
+ /** EUsbDeviceStateAddress */
+ EUsbDeviceStateAddress = 0x10,
+
+ /** EUsbDeviceStateSuspended */
+ EUsbDeviceStateSuspended = 0x20
+ };
+
+/**
+Number of different USB Device States
+
+@publishedPartner
+*/
+const TInt KUsbDeviceStates = 7;
+
+
+#endif //__USBSTATES_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/rom/usbManStubSIS.iby Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2010 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 USBMANSISECLIPSING_IBY
+#define USBMANSISECLIPSING_IBY
+
+data=DATAZ_\system\install\UsbMan_stub.sis System\Install\usbman_stub.sis
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/client/src/RUsb.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,1031 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32uid.h>
+#include <f32file.h>
+#include <usbman.h>
+#include <usb.h>
+#include <e32base.h>
+#include "rusb.h"
+#include <usb/usblogger.h>
+#include <stubber.h>
+#include "usbmandll_stub.h"
+#include <usbpersonalityids.h>
+
+#ifdef __FLOG_ACTIVE
+_LIT8(KLogComponent, "USBMAN");
+#endif
+
+#ifdef __USBMAN_NO_PROCESSES__
+#include <e32math.h>
+#endif
+
+// CONSTANTS
+//const TUint KUsbAllStates = 0xFFFFFFFF;
+
+_LIT8(KLogStub, "[USBMAN] [Stub]");
+
+static TInt StartServer()
+//
+// Start the server process or thread
+//
+ {
+ const TUidType serverUid(KNullUid, KNullUid, KUsbmanSvrUid);
+
+#ifdef __USBMAN_NO_PROCESSES__
+ //
+ // In EKA1 WINS the server is a DLL, the exported entrypoint returns a TInt
+ // which represents the real entry-point for the server thread
+ //
+ RLibrary lib;
+ TInt err = lib.Load(KUsbmanImg, serverUid);
+
+ if (err != KErrNone)
+ {
+ return err;
+ }
+
+ TLibraryFunction ordinal1 = lib.Lookup(1);
+ TThreadFunction serverFunc = reinterpret_cast<TThreadFunction>(ordinal1());
+
+ //
+ // To deal with the unique thread (+semaphore!) naming in EPOC, and that we may
+ // be trying to restart a server that has just exited we attempt to create a
+ // unique thread name for the server.
+ // This uses Math::Random() to generate a 32-bit random number for the name
+ //
+ TName name(KUsbServerName);
+ name.AppendNum(Math::Random(),EHex);
+
+ RThread server;
+ err = server.Create (
+ name,
+ serverFunc,
+ KUsbmanStackSize,
+ NULL,
+ &lib,
+ NULL,
+ KUsbmanMinHeapSize,
+ KUsbmanMaxHeapSize,
+ EOwnerProcess
+ );
+
+ lib.Close(); // if successful, server thread has handle to library now
+#else
+ //
+ // EPOC and EKA2 is easy, we just create a new server process. Simultaneous
+ // launching of two such processes should be detected when the second one
+ // attempts to create the server object, failing with KErrAlreadyExists.
+ //
+ RProcess server;
+ TInt err = server.Create(KUsbmanImg, KNullDesC, serverUid);
+#endif //__USBMAN_NO_PROCESSES__
+
+ if (err != KErrNone)
+ {
+ return err;
+ }
+
+ TRequestStatus stat;
+ server.Rendezvous(stat);
+
+ if (stat!=KRequestPending)
+ server.Kill(0); // abort startup
+ else
+ server.Resume(); // logon OK - start the server
+
+ User::WaitForRequest(stat); // wait for start or death
+
+ // we can't use the 'exit reason' if the server panicked as this
+ // is the panic 'reason' and may be '0' which cannot be distinguished
+ // from KErrNone
+ err = (server.ExitType() == EExitPanic) ? KErrServerTerminated : stat.Int();
+
+ server.Close();
+
+ LOGTEXT2(_L8("USB server started successfully: err = %d\n"),err);
+
+ return err;
+ }
+
+
+
+
+EXPORT_C RUsb::RUsb()
+ : iDeviceStatePkg(0), iServiceStatePkg(0), iMessagePkg(0),
+ iHostPkg(TDeviceEventInformation())
+ {
+ LOG_LINE
+ LOG_FUNC
+ }
+
+EXPORT_C RUsb::~RUsb()
+ {
+ LOG_LINE
+ LOG_FUNC
+ }
+
+EXPORT_C TVersion RUsb::Version() const
+ {
+ return(TVersion(KUsbSrvMajorVersionNumber,KUsbSrvMinorVersionNumber,KUsbSrvBuildVersionNumber));
+ }
+
+EXPORT_C TInt RUsb::Connect()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ TInt retry = 2;
+
+ FOREVER
+ {
+ // Create the session to UsbSrv with 10 asynchronous message slots
+ TInt err = CreateSession(KUsbServerName, Version(), 10);
+
+ if ((err != KErrNotFound) && (err != KErrServerTerminated))
+ {
+ return err;
+ }
+
+ if (--retry == 0)
+ {
+ return err;
+ }
+
+ err = StartServer();
+
+ if ((err != KErrNone) && (err != KErrAlreadyExists))
+ {
+ return err;
+ }
+ }
+ }
+
+EXPORT_C void RUsb::Start(TRequestStatus& aStatus)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ SendReceive(EUsbStart, aStatus);
+ }
+
+EXPORT_C void RUsb::StartCancel()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ SendReceive(EUsbStartCancel);
+ }
+
+EXPORT_C void RUsb::Stop()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ SendReceive(EUsbStop);
+ }
+
+EXPORT_C void RUsb::Stop(TRequestStatus& aStatus)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ SendReceive(EUsbStop, aStatus);
+ }
+
+EXPORT_C void RUsb::StopCancel()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ SendReceive(EUsbStopCancel);
+ }
+
+EXPORT_C TInt RUsb::GetServiceState(TUsbServiceState& aState)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ CStubber* stubber = CStubber::NewL();
+ TApiBehavior beh( KUsbManStubAgentDll, EServiceState, 0, 0, KNullDesC8 );
+ stubber -> InvokeApi( beh );
+
+ delete stubber;
+ stubber = NULL;
+
+ if ( beh.iOutput != KNullDesC8 )
+ {
+ if ( !beh.iOutput.Compare( _L8( "EUsbServiceIdle" ) ) )
+ aState = EUsbServiceIdle;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbServiceStarting" ) ) )
+ aState = EUsbServiceStarting;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbServiceStarted" ) ) )
+ aState = EUsbServiceStarted;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbServiceStopping" ) ) )
+ aState = EUsbServiceStopping;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbServiceFatalError" ) ) )
+ aState = EUsbServiceFatalError;
+ else
+ {}
+ }
+ else
+ {
+ TPckg<TUint32> pkg(aState);
+ TInt ret=SendReceive(EUsbGetCurrentState, TIpcArgs(&pkg));
+ aState=(TUsbServiceState)pkg();
+ return ret;
+ }
+ return beh.iCompleteCode;
+ }
+
+EXPORT_C TInt RUsb::GetCurrentState(TUsbServiceState& aState)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ return GetServiceState(aState);
+ }
+
+EXPORT_C void RUsb::ServiceStateNotification(TUsbServiceState& aState,
+ TRequestStatus& aStatus)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ iServiceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32));
+
+ SendReceive(EUsbRegisterServiceObserver, TIpcArgs(&iServiceStatePkg), aStatus);
+ }
+
+EXPORT_C void RUsb::ServiceStateNotificationCancel()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ SendReceive(EUsbCancelServiceObserver);
+ }
+
+EXPORT_C TInt RUsb::GetDeviceState(TUsbDeviceState& aState)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ _LIT8( KLogStubConfigured, "[USBMAN] [StubConfigured]");
+ CUsbLog::Write(KLogStub, KNullDesC8());
+
+ CStubber* stubber = CStubber::NewL();
+ TApiBehavior beh( KUsbManStubAgentDll, EGetDeviceState, 0, 0, KNullDesC8 );
+ stubber -> InvokeApi( beh );
+
+ delete stubber;
+ stubber = NULL;
+
+ if ( beh.iOutput != KNullDesC8 )
+ {
+ CUsbLog::Write(KLogStub, KNullDesC8());
+ if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateUndefined" ) ) )
+ aState = EUsbDeviceStateUndefined;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateDefault" ) ) )
+ aState = EUsbDeviceStateDefault;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateAttached" ) ) )
+ aState = EUsbDeviceStateAttached;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStatePowered" ) ) )
+ aState = EUsbDeviceStatePowered;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateConfigured" ) ) )
+ {
+ aState = EUsbDeviceStateConfigured;
+ CUsbLog::Write(KLogStubConfigured, KNullDesC8());
+ }
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateAddress" ) ) )
+ aState = EUsbDeviceStateAddress;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateSuspended" ) ) )
+ aState = EUsbDeviceStateSuspended;
+ else
+ {}
+ }
+ else
+ {
+ _LIT8(KLogNoStub, "[USBMAN] [NoStub]");
+ CUsbLog::Write(KLogNoStub, KNullDesC8());
+ TPckg<TUint32> pkg(aState);
+ TInt ret=SendReceive(EUsbGetCurrentDeviceState, TIpcArgs(&pkg));
+ aState=(TUsbDeviceState)pkg();
+ return ret;
+ }
+
+ return beh.iCompleteCode;
+ }
+
+EXPORT_C void RUsb::DeviceStateNotification(TUint aEventMask, TUsbDeviceState& aState,
+ TRequestStatus& aStatus)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ CUsbLog::Write(KLogStub, KNullDesC8());
+ CStubber* stubber = CStubber::NewL();
+ TApiBehavior beh( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, KNullDesC8 );
+ stubber -> InvokeApi( beh );
+
+ delete stubber;
+ stubber = NULL;
+
+ TRequestStatus* stat = &aStatus;
+
+ if ( beh.iOutput != KNullDesC8 )
+ {
+ if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateUndefined" ) ) )
+ aState = EUsbDeviceStateUndefined;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateDefault" ) ) )
+ aState = EUsbDeviceStateDefault;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateAttached" ) ) )
+ aState = EUsbDeviceStateAttached;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStatePowered" ) ) )
+ aState = EUsbDeviceStatePowered;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateConfigured" ) ) )
+ aState = EUsbDeviceStateConfigured;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateAddress" ) ) )
+ aState = EUsbDeviceStateAddress;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbDeviceStateSuspended" ) ) )
+ aState = EUsbDeviceStateSuspended;
+ else
+ {}
+ User::RequestComplete( stat, beh.iAsyncCompleteCode );
+ }
+ else
+ {
+ iDeviceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32));
+ SendReceive(EUsbRegisterObserver, TIpcArgs(aEventMask, &iDeviceStatePkg), aStatus);
+ }
+
+ }
+
+EXPORT_C void RUsb::DeviceStateNotificationCancel()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ CStubber* stubber = CStubber::NewL();
+ TApiBehavior beh( KUsbManStubAgentDll, EDeviceStateNotificationCancel, 0, 0, KNullDesC8 );
+ stubber -> InvokeApi( beh );
+
+ delete stubber;
+ stubber = NULL;
+
+ if ( beh.iOutput != KNullDesC8 )
+ {
+
+ }
+ else
+ {
+ SendReceive(EUsbCancelObserver);
+ }
+ }
+
+EXPORT_C void RUsb::StateNotification(TUint aEventMask, TUsbDeviceState& aState, TRequestStatus& aStatus)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ DeviceStateNotification(aEventMask, aState, aStatus);
+ }
+
+EXPORT_C void RUsb::StateNotificationCancel()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ DeviceStateNotificationCancel();
+ }
+
+EXPORT_C void RUsb::TryStart(TInt aPersonalityId, TRequestStatus& aStatus)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ CStubber* stubber = CStubber::NewL();
+ TApiBehavior beh( KUsbManStubAgentDll, ETryStartAsync, 0, 0, KNullDesC8 );
+ stubber -> InvokeApi( beh );
+
+ delete stubber;
+ stubber = NULL;
+
+ if ( beh.iOutput != KNullDesC8 )
+ {
+ TRequestStatus* stat = &aStatus;
+ User::RequestComplete( stat, beh.iAsyncCompleteCode );
+ }
+ else
+ {
+ TIpcArgs ipcArgs(aPersonalityId);
+ SendReceive(EUsbTryStart, ipcArgs, aStatus);
+ }
+ }
+
+EXPORT_C void RUsb::TryStop(TRequestStatus& aStatus)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ CStubber* stubber = CStubber::NewL();
+ TApiBehavior beh( KUsbManStubAgentDll, ETryStopAsync, 0, 0, KNullDesC8 );
+ stubber -> InvokeApi( beh );
+
+ delete stubber;
+ stubber = NULL;
+
+ if ( beh.iOutput != KNullDesC8 )
+ {
+ TRequestStatus* stat = &aStatus;
+ User::RequestComplete( stat, beh.iAsyncCompleteCode );
+ }
+ else
+ SendReceive(EUsbTryStop, aStatus);
+ }
+
+EXPORT_C TInt RUsb::CancelInterest(TUsbReqType aMessageId)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ CStubber* stubber = CStubber::NewL();
+ TApiBehavior beh( KUsbManStubAgentDll, ECancelInterest, 0, 0, KNullDesC8 );
+ stubber -> InvokeApi( beh );
+
+ delete stubber;
+ stubber = NULL;
+
+ if ( beh.iOutput != KNullDesC8 )
+ {
+
+ }
+ else
+ {
+ TInt messageId;
+ switch (aMessageId)
+ {
+ case EStart:
+ messageId = EUsbStart;
+ break;
+ case EStop:
+ messageId = EUsbStop;
+ break;
+ case ETryStart:
+ messageId = EUsbTryStart;
+ break;
+ case ETryStop:
+ messageId = EUsbTryStop;
+ break;
+ default:
+ return KErrNotSupported;
+ }
+
+ TIpcArgs ipcArgs(messageId);
+ return SendReceive(EUsbCancelInterest, ipcArgs);
+ }
+
+ return beh.iCompleteCode;
+ }
+
+EXPORT_C TInt RUsb::GetDescription(TInt aPersonalityId, HBufC*& aLocalizedPersonalityDescriptor)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ TInt ret = KErrNone;
+ // caller is responsible for freeing up memory allocatd for aLocalizedPersonalityDescriptor
+ TRAP(ret, aLocalizedPersonalityDescriptor = HBufC::NewL(KUsbStringDescStringMaxSize));
+ if (ret == KErrNone)
+ {
+ TPtr ptr = aLocalizedPersonalityDescriptor->Des();
+ TIpcArgs ipcArgs(0, &ptr);
+ ipcArgs.Set(0, aPersonalityId);
+ ret = SendReceive(EUsbGetDescription, ipcArgs);
+ }
+ else
+ {
+ // just in case caller tries to free the memory before checking the return code
+ aLocalizedPersonalityDescriptor = NULL;
+ }
+
+ return ret;
+ }
+
+EXPORT_C TInt RUsb::GetCurrentPersonalityId(TInt& aPersonalityId)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ CUsbLog::Write(KLogStub, KNullDesC8());
+ CStubber* stubber = CStubber::NewL();
+ TApiBehavior beh( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, KNullDesC8 );
+ stubber -> InvokeApi( beh );
+
+ delete stubber;
+ stubber = NULL;
+
+ if ( beh.iOutput != KNullDesC8 )
+ {
+ if ( !beh.iOutput.Compare( _L8( "KUsbPersonalityIdPCSuite" ) ) )
+ aPersonalityId = KUsbPersonalityIdPCSuite;
+ else if ( !beh.iOutput.Compare( _L8( "KUsbPersonalityIdMS" ) ) )
+ aPersonalityId = KUsbPersonalityIdMS;
+ else if ( !beh.iOutput.Compare( _L8( "KUsbPersonalityIdPTP" ) ) )
+ aPersonalityId = KUsbPersonalityIdPTP;
+ else if ( !beh.iOutput.Compare( _L8( "KUsbPersonalityIdMTP" ) ) )
+ aPersonalityId = KUsbPersonalityIdMTP;
+ else if ( !beh.iOutput.Compare( _L8( "KUsbPersonalityIdPCSuite" ) ) )
+ aPersonalityId = KUsbPersonalityIdPCSuite;
+ else
+ {}
+ }
+ else
+ {
+ TPckg<TInt> pkg0(aPersonalityId);
+ TInt ret = SendReceive(EUsbGetCurrentPersonalityId, TIpcArgs(&pkg0));
+ aPersonalityId = static_cast<TInt>(pkg0());
+ return ret;
+ }
+
+ return beh.iCompleteCode;
+ }
+
+EXPORT_C TInt RUsb::GetSupportedClasses(TInt aPersonalityId, RArray<TUid>& aClassUids)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ TInt ret = KErrNone;
+ HBufC8* buf = NULL;
+ // +1 for the actual count of personality ids
+ TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedClasses + 1)*sizeof (TInt32)));
+ if (ret != KErrNone)
+ {
+ return ret;
+ }
+
+ TPtr8 ptr8 = buf->Des();
+ ret = SendReceive(EUsbGetSupportedClasses, TIpcArgs(aPersonalityId, &ptr8));
+
+ if (ret == KErrNone)
+ {
+ const TInt32* recvedIds = reinterpret_cast<const TInt32*>(buf->Ptr());
+ if (!recvedIds)
+ {
+ delete buf;
+ return KErrCorrupt;
+ }
+
+ TInt arraySize = *recvedIds++;
+ // Copy received supported class ids to aClassUids
+ for (TInt i = 0; i < arraySize; i++)
+ {
+ if (recvedIds)
+ {
+ ret = aClassUids.Append(TUid::Uid(*recvedIds++));
+ if(ret!=KErrNone)
+ {
+ //Remove all the ids appended so far (assume the last append failed, because
+ //the only reason to fail is if the array couldn't grow to accommodate another
+ //element).
+ //It would be easier to just reset the array, but we never specified that
+ //aClassUids should be an empty array, nor did we specify that this method
+ //might empty the array. To maintain exisiting behaviour we should return
+ //aClassUids to the state it was in when this method was called.
+ TInt last = aClassUids.Count() - 1;
+ while(i>0)
+ {
+ aClassUids.Remove(last);
+ i--;
+ last--;
+ }
+ break;
+ }
+ }
+ else
+ {
+ ret = KErrCorrupt;
+ break;
+ }
+ }
+ }
+
+ delete buf;
+ return ret;
+ }
+
+EXPORT_C TInt RUsb::ClassSupported(TInt aPersonalityId, TUid aClassUid, TBool& aSupported)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ TPckg<TInt32> pkg2(aSupported);
+ TIpcArgs ipcArgs(aPersonalityId, aClassUid.iUid, &pkg2);
+
+ TInt ret = SendReceive(EUsbClassSupported, ipcArgs);
+
+ if (ret == KErrNone)
+ {
+ aSupported = static_cast<TBool>(pkg2());
+ }
+
+ return ret;
+ }
+
+EXPORT_C TInt RUsb::GetPersonalityIds(RArray<TInt>& aPersonalityIds)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ TInt ret = KErrNone;
+ HBufC8* buf = NULL;
+ // +1 for the actual count of personality ids
+ TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedPersonalities + 1)*sizeof (TInt)));
+ if (ret != KErrNone)
+ {
+ return ret;
+ }
+
+ TPtr8 ptr8 = buf->Des();
+ ret = SendReceive(EUsbGetPersonalityIds, TIpcArgs(&ptr8));
+
+ if (ret == KErrNone)
+ {
+ const TInt* recvedIds = reinterpret_cast<const TInt*>(buf->Ptr());
+ if (!recvedIds)
+ {
+ delete buf;
+ return KErrCorrupt;
+ }
+
+ TInt arraySize = *recvedIds++;
+ // Copy received personality ids to aPersonalityIds
+ for (TInt i = 0; i < arraySize; i++)
+ {
+ if (recvedIds)
+ {
+ ret = aPersonalityIds.Append(*recvedIds++);
+
+ if(ret!=KErrNone)
+ {
+ //Remove all the ids appended so far (assume the last append failed, because
+ //the only reason to fail is if the array couldn't grow to accommodate another
+ //element).
+ //It would be easier to just reset the array, but we never specified that
+ //aPersonalityIds should be an empty array, nor did we specify that this method
+ //might empty the array. To maintain exisiting behaviour we should return
+ //aPersonalityIds to the state it was in when this method was called.
+ TInt last = aPersonalityIds.Count() - 1;
+ while(i>0)
+ {
+ aPersonalityIds.Remove(last);
+ i--;
+ last--;
+ }
+ break;
+ }
+ }
+ else
+ {
+ ret = KErrCorrupt;
+ break;
+ }
+ }
+ }
+
+ delete buf;
+ return ret;
+ }
+
+EXPORT_C TInt RUsb::__DbgMarkHeap()
+ {
+#ifdef _DEBUG
+ return SendReceive(EUsbDbgMarkHeap);
+#else
+ return KErrNone;
+#endif
+ }
+
+EXPORT_C TInt RUsb::__DbgCheckHeap(TInt aCount)
+ {
+#ifdef _DEBUG
+ return SendReceive(EUsbDbgCheckHeap, TIpcArgs(aCount));
+#else
+ (void)aCount; // not used for Release builds
+ return KErrNone;
+#endif
+ }
+
+EXPORT_C TInt RUsb::__DbgMarkEnd(TInt aCount)
+ {
+#ifdef _DEBUG
+ return SendReceive(EUsbDbgMarkEnd, TIpcArgs(aCount));
+#else
+ (void)aCount; // not used for Release builds
+ return KErrNone;
+#endif
+ }
+
+EXPORT_C TInt RUsb::__DbgFailNext(TInt aCount)
+ {
+#ifdef _DEBUG
+ return SendReceive(EUsbDbgFailNext, TIpcArgs(aCount));
+#else
+ (void)aCount; // not used for Release builds
+ return KErrNone;
+#endif
+ }
+
+EXPORT_C TInt RUsb::__DbgAlloc()
+ {
+#ifdef _DEBUG
+ return SendReceive(EUsbDbgAlloc);
+#else
+ return KErrNone;
+#endif
+ }
+
+EXPORT_C void panic()
+ {
+ _USB_PANIC(KUsbCliPncCat, EUsbPanicRemovedExport);
+ }
+
+EXPORT_C TInt RUsb::SetCtlSessionMode(TBool aValue)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+// CUsbLog::Write(KLogStub, KNullDesC8());
+// CStubber* stubber = CStubber::NewL();
+// TApiBehavior beh( KUsbManStubAgentDll, ESetCtlSessionMode, 0, 0, KNullDesC8 );
+// stubber -> InvokeApi( beh );
+//
+// delete stubber;
+// stubber = NULL;
+//
+// if ( beh.iOutput != KNullDesC8 )
+// {
+// return KErrNone;
+// }
+// else
+// {
+ TPckg<TBool> pkg(aValue);
+ return SendReceive(EUsbSetCtlSessionMode, TIpcArgs(&pkg));
+// }
+
+ }
+
+EXPORT_C TInt RUsb::BusRequest()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ return SendReceive(EUsbBusRequest);
+ }
+
+EXPORT_C TInt RUsb::BusRespondSrp()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ return SendReceive(EUsbBusRespondSrp);
+ }
+
+EXPORT_C TInt RUsb::BusClearError()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ return SendReceive(EUsbBusClearError);
+ }
+
+
+EXPORT_C TInt RUsb::BusDrop()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ return SendReceive(EUsbBusDrop);
+ }
+
+EXPORT_C void RUsb::MessageNotification(TRequestStatus& aStatus, TInt& aMessage)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ iMessagePkg.Set((TUint8*)&aMessage, sizeof(TInt), sizeof(TInt));
+
+ SendReceive(EUsbRegisterMessageObserver, TIpcArgs(&iMessagePkg), aStatus);
+ }
+
+EXPORT_C void RUsb::MessageNotificationCancel()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ SendReceive(EUsbCancelMessageObserver);
+ }
+
+EXPORT_C void RUsb::HostEventNotification(TRequestStatus& aStatus,
+ TDeviceEventInformation& aDeviceInformation)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ iHostPkg.Set((TUint8*)&aDeviceInformation, sizeof(TDeviceEventInformation), sizeof(TDeviceEventInformation));
+
+ SendReceive(EUsbRegisterHostObserver, TIpcArgs(&iHostPkg), aStatus);
+ }
+
+EXPORT_C void RUsb::HostEventNotificationCancel()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ SendReceive(EUsbCancelHostObserver);
+ }
+
+EXPORT_C TInt RUsb::EnableFunctionDriverLoading()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ return SendReceive(EUsbEnableFunctionDriverLoading);
+ }
+
+EXPORT_C void RUsb::DisableFunctionDriverLoading()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ SendReceive(EUsbDisableFunctionDriverLoading);
+ }
+
+EXPORT_C TInt RUsb::GetSupportedLanguages(TUint aDeviceId, RArray<TUint>& aLangIds)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ aLangIds.Reset();
+
+ TInt ret = KErrNone;
+ HBufC8* buf = NULL;
+ // +1 for the actual count of language ids
+ TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedLanguageIds + 1)*sizeof (TUint)));
+ if (ret != KErrNone)
+ {
+ return ret;
+ }
+
+ TPtr8 ptr8 = buf->Des();
+ ret = SendReceive(EUsbGetSupportedLanguages, TIpcArgs(aDeviceId, &ptr8));
+
+ if (ret == KErrNone)
+ {
+ const TUint* recvedIds = reinterpret_cast<const TUint*>(buf->Ptr());
+ if (!recvedIds)
+ {
+ delete buf;
+ return KErrCorrupt;
+ }
+
+ TInt arraySize = *recvedIds++;
+ // Copy received language ids to aLangIds
+ for (TInt i = 0; i < arraySize; i++)
+ {
+ ret = aLangIds.Append(*recvedIds++); // increments by sizeof(TUint)
+ if ( ret )
+ {
+ aLangIds.Reset();
+ break;
+ }
+ }
+ }
+
+ delete buf;
+ return ret;
+ }
+
+EXPORT_C TInt RUsb::GetManufacturerStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ return SendReceive(EUsbGetManufacturerStringDescriptor, TIpcArgs(aDeviceId, aLangId, &aString));
+ }
+
+EXPORT_C TInt RUsb::GetProductStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ return SendReceive(EUsbGetProductStringDescriptor, TIpcArgs(aDeviceId, aLangId, &aString));
+ }
+
+EXPORT_C TInt RUsb::GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& aDescriptor)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ TPckg<TOtgDescriptor> otgDescPkg(aDescriptor);
+
+ TIpcArgs args;
+ args.Set(0, aDeviceId);
+ args.Set(1, &otgDescPkg);
+
+ return SendReceive(EUsbGetOtgDescriptor, args);
+ }
+
+
+EXPORT_C TInt RUsb::RequestSession()
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ return SendReceive(EUsbRequestSession);
+ }
+
+EXPORT_C TInt RUsb::GetDetailedDescription(TInt aPersonalityId, HBufC*& aLocalizedPersonalityDescriptor)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ TInt ret = KErrNone;
+ // caller is responsible for freeing up memory allocated for aLocalizedPersonalityDescriptor
+ TRAP(ret, aLocalizedPersonalityDescriptor = HBufC::NewL(KUsbStringDescStringMaxSize));
+ if (ret == KErrNone)
+ {
+ TPtr ptr = aLocalizedPersonalityDescriptor->Des();
+ TIpcArgs ipcArgs(0, &ptr);
+ ipcArgs.Set(0, aPersonalityId);
+ ret = SendReceive(EUsbGetDetailedDescription, ipcArgs);
+ }
+ else
+ {
+ // just in case caller tries to free the memory before checking the return code
+ aLocalizedPersonalityDescriptor = NULL;
+ }
+
+ return ret;
+ }
+
+EXPORT_C TInt RUsb::GetPersonalityProperty(TInt aPersonalityId, TUint32& aProperty)
+ {
+ LOG_LINE
+ LOG_FUNC
+
+ CUsbLog::Write(KLogStub, KNullDesC8());
+ TPckg<TUint32> pkg(aProperty);
+ TInt ret = SendReceive(EUsbGetPersonalityProperty, TIpcArgs(aPersonalityId, &pkg));
+ if (ret == KErrNone)
+ {
+ aProperty = static_cast<TUint32>(pkg());
+ }
+
+// CUsbLog::Write(KLogStub, KNullDesC8());
+// CStubber* stubber = CStubber::NewL();
+// TApiBehavior beh( KUsbManStubAgentDll, EGetPersonalityProperty, 0, 0, KNullDesC8 );
+// stubber -> InvokeApi( beh );
+//
+// delete stubber;
+// stubber = NULL;
+//
+// if ( beh.iOutput != KNullDesC8 )
+// {
+// if ( !beh.iOutput.Compare( _L8( "stub" ) ) )
+// {
+// CUsbLog::Write(KLogStub, KNullDesC8());
+// TRequestStatus stat;
+// TInt message;
+// MessageNotification(stat,message);
+// DeviceStateNotificationCancel();
+// TUsbDeviceState aState;
+// GetDeviceState(aState);
+// DeviceStateNotification( KUsbAllStates, aState, stat );
+// TryStop(stat);
+// User::WaitForRequest(stat);
+// TInt personalityId;
+// GetCurrentPersonalityId(personalityId);
+// TryStart(personalityId,stat);
+// User::WaitForRequest(stat);
+// }
+// else
+// {}
+// }
+
+ return ret;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/server/public/rusb.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,116 @@
+/*
+* Copyright (c) 2010 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
+*/
+
+#ifndef __RUSB_H__
+#define __RUSB_H__
+
+#include <e32std.h>
+#include <usb/usbshared.h>
+
+const TInt KUsbSrvMajorVersionNumber = 1;
+const TInt KUsbSrvMinorVersionNumber = 1;
+const TInt KUsbSrvBuildVersionNumber = 0;
+
+const TInt KUsbMaxSupportedClasses = 64; // Max number of supported USB classes by a personality
+
+const TInt KUsbMaxSupportedPersonalities = 64; // Max number of supported personalities
+
+_LIT(KUsbServerName, "!usbman");
+
+enum TUsbMessages
+ {
+ EUsbStart,
+ EUsbStop,
+ EUsbRegisterObserver,
+ EUsbGetCurrentState,
+ EUsbStartCancel,
+ EUsbCancelObserver,
+ EUsbStopCancel,
+ EUsbGetCurrentDeviceState,
+ EUsbRegisterServiceObserver,
+ EUsbCancelServiceObserver,
+ EUsbDbgMarkHeap,
+ EUsbDbgCheckHeap,
+ EUsbDbgMarkEnd,
+ EUsbDbgFailNext,
+ EUsbTryStart,
+ EUsbTryStop,
+ EUsbCancelInterest,
+ EUsbGetCurrentPersonalityId,
+ EUsbGetSupportedClasses,
+ EUsbGetPersonalityIds,
+ EUsbGetDescription,
+ EUsbClassSupported,
+
+
+ EUsbSetCtlSessionMode,
+ EUsbBusRequest,
+ EUsbBusRespondSrp,
+ EUsbBusClearError,
+
+ EUsbBusDrop,
+ EUsbRegisterMessageObserver,
+ EUsbCancelMessageObserver,
+ EUsbRegisterHostObserver,
+ EUsbCancelHostObserver,
+ EUsbEnableFunctionDriverLoading,
+ EUsbDisableFunctionDriverLoading,
+ EUsbGetSupportedLanguages,
+ EUsbGetManufacturerStringDescriptor,
+ EUsbGetProductStringDescriptor,
+ EUsbGetOtgDescriptor,
+ EUsbDbgAlloc,
+ EUsbRequestSession,
+ EUsbGetDetailedDescription,
+ EUsbGetPersonalityProperty
+ };
+
+_LIT(KUsbCliPncCat, "UsbMan-Client");
+
+enum TUsbPanicClient
+ {
+ EUsbCreateFailure,
+ EUsbPanicIllegalIPC,
+ EUsbPanicRemovedExport
+ };
+
+const TUid KUsbmanSvrUid = {0x101fe1db};
+
+#ifdef __USBMAN_NO_PROCESSES__
+
+const TUint KUsbmanStackSize = 0x3000; // 12KB
+const TUint KUsbmanMinHeapSize = 0x1000; // 4KB
+const TUint KUsbmanMaxHeapSize = 0x40000; // 256KB
+
+_LIT(KUsbmanImg, "usbsvr");
+
+#else
+
+#ifndef __OVER_DUMMYUSBDI__
+_LIT(KUsbmanImg, "z:\\system\\programs\\usbsvr.exe");
+#else
+_LIT(KUsbmanImg, "z:\\system\\programs\\usbsvr_over_dummyusbdi.exe");
+#endif
+
+#endif //__USBMAN_NO_PROCESSES__
+
+#endif //__RUSB_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/testtools/usbman_stub/usbman/server/public/usbman.rh Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2010 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:
+* Resource header for usbman configuration.
+*
+*/
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+STRUCT usb_configuration
+ {
+ /**
+ vendorId is the 16-bit number that is assigned by USB-ORG.
+ */
+ WORD vendorId = 0x0e22;
+
+ /**
+ productId is a 16-bit number that is assigned by the licensee to
+ uniquely identify this particular type of device.
+ */
+ WORD productId = 0x000b;
+
+ /**
+ bcdDevice may be optionally used during enumeration, this depends on
+ the licensee's policy regarding device upgrades (new versions of a
+ device may require to use new host driver files)
+ */
+ WORD bcdDevice = 0x0000;
+
+ /**
+ manufacturerString is displayed on the Windows screen during first
+ enumeration of the device, and should identify the same company that
+ owns the USB vendorId given above
+ */
+ LTEXT manufacturer = "Symbian Ltd.";
+
+ /**
+ productString is displayed on the Windows screen during first
+ enumeration of the device, and should identify the same device that is
+ implied by the productId given above
+ */
+ LTEXT product = "Symbian OS";
+ }
+
+STRUCT PERSONALITY
+ {
+ /** Class code (assigned by the USB-IF). If this field is set to zero, each interface within
+ a configuration specifies its own class information and the various interfaces operate independently.
+
+ If this field is set to a value between 1 and FEH, the device supports different class
+ specifications on different interfaces and the interfaces may not operate independently.
+ This value identifies the class definition used for the aggregate interfaces.
+
+ If this field is set to FFH, the device class is vendor-specific. */
+ BYTE bDeviceClass;
+
+ /** Subclass code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass field.
+ If the bDeviceClass field is set to zero, this field must also be set to zero.
+ If the bDeviceClass field is not set to FFH, all values are reserved for assignment by the USB-IF. */
+ BYTE bDeviceSubClass;
+
+ /** Protocol code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass and the
+ bDeviceSubClass fields. If a device supports class-specific protocols on a device basis as opposed to an
+ interface basis, this code identifies the protocols that the device uses as defined by the specification of the device class.
+ If this field is set to zero, the device does not use class-specific protocols on a device basis. However, it may use
+ classspecific protocols on an interface basis.
+ If this field is set to FFH, the device uses a vendor-specific protocol on a device basis. */
+ BYTE protocol;
+
+ /** Number of possible configurations */
+ BYTE numConfigurations;
+
+ /** vendorId is the 16-bit number that is assigned by USB-ORG. */
+ WORD vendorId;
+
+ /** productId is a 16-bit number that is assigned by the licensee to
+ uniquely identify this particular personality as type of device . */
+ WORD productId;
+
+ /** bcdDevice may be optionally used during enumeration, this depends on
+ the licensee's policy regarding device upgrades */
+ WORD bcdDevice;
+
+ /** manufacturerString is displayed on the Windows screen during first
+ enumeration of the device, and should identify the same company that
+ owns the USB vendorId given above */
+ LTEXT manufacturer;
+
+ /** productString is displayed on the Windows screen during first
+ enumeration of the device, and should identify the same device that is
+ implied by the productId given above */
+ LTEXT product;
+
+ /** personality id - UID which identified this personality */
+ WORD id;
+
+ /** list of Class Controllers UIDs associated with this personality.
+ UIDs shoud be provided as list of hexadecimal numbers separated by space or comma.
+ Note Do not provide leading 0x or any trailing characters!
+ Example "1Abc3422, 12345678 FE43bc33"
+ Incorrect example "1abc3422, 0x12345678," */
+ LTEXT class_uids;
+
+ /** free text description of this personality. */
+ LTEXT description;
+
+ /** free text detailed description of this personality. */
+ LTEXT detailedDescription;
+
+ /** personality property - the property of this personality */
+ LONG property;
+
+ }
+
+STRUCT PERSONALITY_ARRAY
+ {
+ STRUCT personalities[]; // STRUCT PERSONALITY
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/Bmarm/UsbBasicPersonalityTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/Bwins/UsbBasicPersonalityTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/conf/UsbBasicPersonalityTest.cfg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,126 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+[StifSettings]
+CapsModifier= UsbBasicPersonalityTest.exe
+[EndStifSettings]
+
+// UsbBasicPersonalityTest Module - total 12 tc
+
+// UsbBasicPersonalityTest Api Tests (12 tc)
+
+[Test]
+title Create And Delete Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest CreateAndDeleteTest
+delete tester
+[Endtest]
+
+[Test]
+title Is Active Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest IsActiveTest
+delete tester
+[Endtest]
+
+[Test]
+title Is Added Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest IsAddedTest
+delete tester
+[Endtest]
+
+[Test]
+title Priority Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest PriorityTest
+delete tester
+[Endtest]
+
+[Test]
+title Prepare Personality Start Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest PreparePersonalityStartTest
+delete tester
+[Endtest]
+
+[Test]
+title Confirm Personality Unload Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest ConfirmPersonalityUnloadTest
+delete tester
+[Endtest]
+
+[Test]
+title State Change Notify Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest StateChangeNotifyTest
+delete tester
+[Endtest]
+
+[Test]
+title Finish Personality Start Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest FinishPersonalityStartTest
+delete tester
+[Endtest]
+
+[Test]
+title Finish Personality Stop Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest FinishPersonalityStopTest
+delete tester
+[Endtest]
+
+[Test]
+title Prepare Personality Stop Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest PreparePersonalityStopTest
+delete tester
+[Endtest]
+
+[Test]
+title Set Priority Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest SetPriorityTest
+delete tester
+[Endtest]
+
+[Test]
+title Show Usb Connection Note Test
+create UsbBasicPersonalityTest tester
+tester ExecuteApiTest ShowUsbConnectionNoteTest
+delete tester
+[Endtest]
+
+
+// Add new api tests here
+// ...
+
+
+// UsbBasicPersonalityTest Module Tests (... tc)
+
+
+// Add new module tests here
+// ...
+
+
+// UsbBasicPersonalityTest Branch Tests (... tc)
+
+
+// Add new branch tests here
+// ...
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/eabi/UsbBasicPersonalityTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ _Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/group/UsbBasicPersonalityTest.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+#if defined(__S60_)
+ // To get the OSEXT_LAYER_SYSTEMINCLUDE-definition
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbBasicPersonalityTest.dll
+TARGETTYPE dll
+UID 0x1000008D 0x101FB3E3
+
+CAPABILITY LocalServices ReadDeviceData NetworkControl WriteDeviceData DiskAdmin ReadUserData WriteUserData ProtServ
+
+DEFFILE UsbBasicPersonalityTest.def
+
+
+USERINCLUDE ../inc
+
+MW_LAYER_SYSTEMINCLUDE
+
+USERINCLUDE ../../../inc
+
+
+SOURCEPATH ../src
+SOURCE UsbBasicPersonalityTest.cpp
+SOURCE UsbBasicPersonalityTestBlocks.cpp UsbBasicPersonalityTest_exe.cpp
+
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+LIBRARY stiftestengine.lib
+LIBRARY ecom.lib
+LIBRARY usbman.lib
+LIBRARY usbpersonality.lib
+
+
+LANG SC
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/group/UsbBasicPersonalityTest_ats.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,63 @@
+;
+; Copyright (c) 2010 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:
+;
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"\epoc32\release\armv5\udeb\UsbBasicPersonalityTest.dll"-"c:\Sys\Bin\UsbBasicPersonalityTest.dll"
+"\epoc32\release\armv5\udeb\UsbBasicPersonalityTest.exe"-"c:\Sys\Bin\UsbBasicPersonalityTest.exe"
+
+"..\init\UsbBasicPersonalityTest_ats.ini"-"e:\testing\init\UsbBasicPersonalityTest.ini"
+"..\conf\UsbBasicPersonalityTest.cfg"-"e:\testing\conf\UsbBasicPersonalityTest.cfg"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/group/UsbBasicPersonalityTest_exe.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+#if defined(__S60_)
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbBasicPersonalityTest.exe
+TARGETTYPE exe
+
+CAPABILITY LocalServices ReadDeviceData NetworkControl WriteDeviceData DiskAdmin ReadUserData WriteUserData ProtServ
+
+UID 0 0xEF4892C6
+
+MW_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH ../src
+
+SOURCE UsbBasicPersonalityTest_exe.cpp
+
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+
+EPOCSTACKSIZE 40960
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/group/UsbBasicPersonalityTest_phone.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,63 @@
+;
+; Copyright (c) 2010 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:
+;
+
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0
+[0x1028315F], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"\epoc32\release\armv5\urel\UsbBasicPersonalityTest.dll"-"c:\Sys\Bin\UsbBasicPersonalityTest.dll"
+"\epoc32\release\armv5\urel\UsbBasicPersonalityTest.exe"-"c:\Sys\Bin\UsbBasicPersonalityTest.exe"
+
+"..\init\UsbBasicPersonalityTest_phone.ini"-"c:\testframework\testframework.ini"
+"..\conf\UsbBasicPersonalityTest.cfg"-"c:\testframework\UsbBasicPersonalityTest.cfg"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTEXPORTS
+
+PRJ_EXPORTS
+
+PRJ_TESTMMPFILES
+UsbBasicPersonalityTest.mmp
+UsbBasicPersonalityTest_exe.mmp
+
+PRJ_MMPFILES
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/group/build_sis_ats.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,22 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+call sbs -c armv5.test
+call sbs freeze
+call sbs -c armv5.test
+
+call makesis UsbBasicPersonalityTest_ats.pkg
+call signsis UsbBasicPersonalityTest_ats.sis UsbBasicPersonalityTest_ats.sisx x:\rd.cer x:\rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/group/build_sis_phone.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,22 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+call sbs -c armv5.test
+call sbs freeze
+call sbs -c armv5.test
+
+call makesis UsbBasicPersonalityTest_phone.pkg
+call signsis UsbBasicPersonalityTest_phone.sis UsbBasicPersonalityTest_phone.sisx x:\rd.cer x:\rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/inc/UsbBasicPersonalityTest.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,231 @@
+/*
+* Copyright (c) 2010 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 USBBASICPERSONALITYTEST_H
+#define USBBASICPERSONALITYTEST_H
+
+// INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+#include <cusbpersonalityplugin.h>
+#include "TUsbPersonalityParams.h"
+
+class RUsb;
+class CUsbPersonalityNotifier;
+
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+#define TEST_CLASS_VERSION_MAJOR 0
+#define TEST_CLASS_VERSION_MINOR 0
+#define TEST_CLASS_VERSION_BUILD 0
+
+// Logging path
+//_LIT( KUsbBasicPersonalityTestLogPath, "\\logs\\testframework\\UsbBasicPersonalityTest\\" );
+
+// Logging path for ATS - for phone builds comment this line
+_LIT( KUsbBasicPersonalityTestLogPath, "e:\\testing\\stiflogs\\" );
+
+// Log file
+_LIT( KUsbBasicPersonalityTestLogFile, "UsbBasicPersonalityTest.txt" );
+_LIT( KUsbBasicPersonalityTestLogFileWithTitle, "UsbBasicPersonalityTest_[%S].txt" );
+
+// FUNCTION PROTOTYPES
+//?type ?function_name(?arg_list);
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+class CUsbBasicPersonalityTest;
+
+// DATA TYPES
+//enum ?declaration
+
+enum TUsbBasicPersonalityTestResult
+ {
+ ETestCasePassed,
+ ETestCaseFailed
+ };
+
+//typedef ?declaration
+//extern ?data_type;
+
+// CLASS DECLARATION
+
+/**
+* CUsbBasicPersonalityTest test class for STIF Test Framework TestScripter.
+* ?other_description_lines
+*
+* @lib ?library
+* @since ?Series60_version
+*/
+NONSHARABLE_CLASS(CUsbBasicPersonalityTest) : public CScriptBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CUsbBasicPersonalityTest* NewL( CTestModuleIf& aTestModuleIf );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbBasicPersonalityTest();
+
+ public: // New functions
+
+ /**
+ * ?member_description.
+ * @since ?Series60_version
+ * @param ?arg1 ?description
+ * @return ?description
+ */
+ //?type ?member_function( ?type ?arg1 );
+
+ public: // Functions from base classes
+
+ /**
+ * From CScriptBase Runs a script line.
+ * @since ?Series60_version
+ * @param aItem Script line containing method name and parameters
+ * @return Symbian OS error code
+ */
+ virtual TInt RunMethodL( CStifItemParser& aItem );
+
+ protected: // New functions
+
+ /**
+ * ?member_description.
+ * @since ?Series60_version
+ * @param ?arg1 ?description
+ * @return ?description
+ */
+ //?type ?member_function( ?type ?arg1 );
+
+ protected: // Functions from base classes
+
+ /**
+ * From ?base_class ?member_description
+ */
+ //?type ?member_function();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CUsbBasicPersonalityTest( CTestModuleIf& aTestModuleIf );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ // Prohibit copy constructor if not deriving from CBase.
+ // ?classname( const ?classname& );
+ // Prohibit assigment operator if not deriving from CBase.
+ // ?classname& operator=( const ?classname& );
+
+ /**
+ * Frees all resources allocated from test methods.
+ * @since ?Series60_version
+ */
+ void Delete();
+
+ /**
+ * Test methods are listed below.
+ */
+
+ virtual TInt ExecuteApiTest( CStifItemParser& aItem );
+ virtual TInt ExecuteModuleTest( CStifItemParser& aItem );
+ virtual TInt ExecuteBranchTest( CStifItemParser& aItem );
+
+ /**
+ * Method used to log version of test class
+ */
+ void SendTestClassVersion();
+
+ //ADD NEW METHOD DEC HERE
+ //[TestMethods] - Do not remove
+
+ void DoExecuteApiTestL( TPtrC aApiTestName, TUsbBasicPersonalityTestResult& aTestResult );
+ void ExampleApiTestL( TUsbBasicPersonalityTestResult& aTestResult );
+
+ void DoExecuteModuleTestL( TPtrC aModuleTestName, TUsbBasicPersonalityTestResult& aTestResult );
+ void ExampleModuleTestL( TUsbBasicPersonalityTestResult& aTestResult );
+
+ void DoExecuteBranchTestL( TPtrC aBranchTestName, TUsbBasicPersonalityTestResult& aTestResult );
+ void ExampleBranchTestL( TUsbBasicPersonalityTestResult& aTestResult );
+
+ TInt CreateAndDeleteTest( TUsbBasicPersonalityTestResult& aTestResult );
+ TInt StateChangeNotifyTest( TUsbBasicPersonalityTestResult& aTestResult );
+ TInt IsActiveTest( TUsbBasicPersonalityTestResult& aTestResult );
+ TInt IsAddedTest( TUsbBasicPersonalityTestResult& aTestResult );
+ TInt PriorityTest( TUsbBasicPersonalityTestResult& aTestResult );
+ TInt ConfirmPersonalityUnloadTest( TUsbBasicPersonalityTestResult& aTestResult );
+ TInt PreparePersonalityStartTest( TUsbBasicPersonalityTestResult& aTestResult );
+ TInt ShowUsbConnectionNoteTest( TUsbBasicPersonalityTestResult& aTestResult ); //TODO Check
+ TInt FinishPersonalityStartTest( TUsbBasicPersonalityTestResult& aTestResult );
+ TInt FinishPersonalityStopTest( TUsbBasicPersonalityTestResult& aTestResult );
+ TInt PreparePersonalityStopTest( TUsbBasicPersonalityTestResult& aTestResult );
+ TInt SetPriorityTest( TUsbBasicPersonalityTestResult& aTestResult );
+
+
+ public: // Data
+ // ?one_line_short_description_of_data
+ //?data_declaration;
+
+ protected: // Data
+ // ?one_line_short_description_of_data
+ //?data_declaration;
+
+ private: // Data
+
+ // ?one_line_short_description_of_data
+ //?data_declaration;
+
+ CActiveScheduler* iScheduler;
+ TRequestStatus iStatus;
+
+ RUsb iUsb;
+ CUsbPersonalityNotifier *iNotifier;
+ TUsbPersonalityParams *iParams;
+ CUsbPersonalityPlugin *iPlugin;
+
+ // Reserved pointer for future extension
+ //TAny* iReserved;
+
+ public: // Friend classes
+ //?friend_class_declaration;
+ protected: // Friend classes
+ //?friend_class_declaration;
+ private: // Friend classes
+ //?friend_class_declaration;
+
+ };
+
+#endif // USBBASICPERSONALITYTEST_H
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/init/UsbBasicPersonalityTest_ats.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,235 @@
+#
+# Copyright (c) 2010 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:
+#
+#
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+# + XML, Test report will be xml type, for example 'TestReport.xml'.
+# Note, that xml format is available only when output is set to FILE.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= e:\testing\logs\
+TestReportFileName= UsbBasicPersonalityTest_TestReport
+
+TestReportFormat= TXT # Possible values: TXT, HTML or XML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbBasicPersonalityTestUsbBasicPersonalityTestUsbBasicPersonalityTest
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= e:\testing\conf\UsbBasicPersonalityTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbBasicPersonalityTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbBasicPersonalityTest used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleUsbBasicPersonalityTest used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined
+# Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+# will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+#CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/init/UsbBasicPersonalityTest_phone.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,235 @@
+#
+# Copyright (c) 2010 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:
+#
+#
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+# + XML, Test report will be xml type, for example 'TestReport.xml'.
+# Note, that xml format is available only when output is set to FILE.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= c:\logs\testframework\UsbBasicPersonalityTest\
+TestReportFileName= testreport
+
+TestReportFormat= TXT # Possible values: TXT, HTML or XML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbBasicPersonalityTestUsbBasicPersonalityTestUsbBasicPersonalityTest
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= c:\testframework\UsbBasicPersonalityTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbBasicPersonalityTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbBasicPersonalityTest used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleUsbBasicPersonalityTest used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined
+# Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+# will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+#CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/src/UsbBasicPersonalityTest.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,213 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+
+
+// INCLUDE FILES
+#include <Stiftestinterface.h>
+#include "UsbBasicPersonalityTest.h"
+#include <SettingServerClient.h>
+#include <ecom/ecom.h>
+
+// EXTERNAL DATA STRUCTURES
+//extern ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+// ?value_n: ?description_line1
+// ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+ ?arg_type arg, // ?description
+ ?arg_type arg) // ?description
+ {
+
+ ?code // ?comment
+
+ // ?comment
+ ?code
+ }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::CUsbBasicPersonalityTest
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CUsbBasicPersonalityTest::CUsbBasicPersonalityTest(
+ CTestModuleIf& aTestModuleIf ):
+ CScriptBase( aTestModuleIf )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CUsbBasicPersonalityTest::ConstructL()
+ {
+ //Read logger settings to check whether test case name is to be
+ //appended to log file name.
+ RSettingServer settingServer;
+ TInt ret = settingServer.Connect();
+ if(ret != KErrNone)
+ {
+ User::Leave(ret);
+ }
+ // Struct to StifLogger settigs.
+ TLoggerSettings loggerSettings;
+ // Parse StifLogger defaults from STIF initialization file.
+ ret = settingServer.GetLoggerSettings(loggerSettings);
+ if(ret != KErrNone)
+ {
+ User::Leave(ret);
+ }
+ // Close Setting server session
+ settingServer.Close();
+
+ TFileName logFileName;
+
+ if(loggerSettings.iAddTestCaseTitle)
+ {
+ TName title;
+ TestModuleIf().GetTestCaseTitleL(title);
+ logFileName.Format(KUsbBasicPersonalityTestLogFileWithTitle, &title);
+ }
+ else
+ {
+ logFileName.Copy(KUsbBasicPersonalityTestLogFile);
+ }
+
+ iLog = CStifLogger::NewL( KUsbBasicPersonalityTestLogPath,
+ logFileName,
+ CStifLogger::ETxt,
+ CStifLogger::EFile,
+ EFalse );
+
+ SendTestClassVersion();
+
+ if (!CActiveScheduler::Current())
+ {
+ iScheduler = new ( ELeave ) CActiveScheduler();
+ CActiveScheduler::Install( iScheduler );
+ }
+
+ iNotifier = CUsbPersonalityNotifier::NewL();
+ iParams = new ( ELeave )TUsbPersonalityParams( iUsb, *iNotifier );
+ iPlugin = CUsbPersonalityPlugin::NewL( *iParams, TUid::Uid(0x102068DF) );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CUsbBasicPersonalityTest* CUsbBasicPersonalityTest::NewL(
+ CTestModuleIf& aTestModuleIf )
+ {
+ CUsbBasicPersonalityTest* self = new (ELeave) CUsbBasicPersonalityTest( aTestModuleIf );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ return self;
+
+ }
+
+// Destructor
+CUsbBasicPersonalityTest::~CUsbBasicPersonalityTest()
+ {
+ // Delete resources allocated from test methods
+ Delete();
+
+ // Delete logger
+ delete iLog;
+ iLog = NULL;
+ }
+
+//-----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CUsbBasicPersonalityTest::SendTestClassVersion()
+ {
+ TVersion moduleVersion;
+ moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+ moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+ moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+
+ TFileName moduleName;
+ moduleName = _L("UsbBasicPersonalityTest.dll");
+
+ TBool newVersionOfMethod = ETrue;
+ TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL(
+ CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+ {
+
+ return ( CScriptBase* ) CUsbBasicPersonalityTest::NewL( aTestModuleIf );
+
+ }
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/src/UsbBasicPersonalityTestBlocks.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,646 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include "UsbBasicPersonalityTest.h"
+#include <usbpersonalityids.h>
+
+#include <ecom/ecom.h>
+
+
+// EXTERNAL DATA STRUCTURES
+//extern ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+// ?value_n: ?description_line1
+// ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+ ?arg_type arg, // ?description
+ ?arg_type arg) // ?description
+ {
+
+ ?code // ?comment
+
+ // ?comment
+ ?code
+ }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+//
+void CUsbBasicPersonalityTest::Delete()
+ {
+ iUsb.Close();
+
+ delete iScheduler;
+ iScheduler = NULL;
+
+ delete iPlugin;
+ iPlugin = NULL;
+ REComSession::FinalClose();
+
+ delete iNotifier;
+ iNotifier = NULL;
+
+ delete iParams;
+ iParams = NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::RunMethodL(
+ CStifItemParser& aItem )
+ {
+
+ static TStifFunctionInfo const KFunctions[] =
+ {
+ //ADD NEW ENTRY HERE
+ // [test cases entries] - Do not remove
+ ENTRY( "ExecuteApiTest", CUsbBasicPersonalityTest::ExecuteApiTest ),
+ ENTRY( "ExecuteModuleTest", CUsbBasicPersonalityTest::ExecuteModuleTest ),
+ ENTRY( "ExecuteBranchTest", CUsbBasicPersonalityTest::ExecuteBranchTest ),
+ };
+
+ const TInt count = sizeof( KFunctions ) /
+ sizeof( TStifFunctionInfo );
+
+ return RunInternalL( KFunctions, count, aItem );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::ExecuteApiTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::ExecuteApiTest( CStifItemParser& aItem )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExecuteApiTest" );
+
+ TInt res;
+ TUsbBasicPersonalityTestResult testResult;
+ TPtrC apiTestName( KNullDesC );
+
+ res = aItem.GetString( _L( "ExecuteApiTest" ), apiTestName );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "GetString failed with value: %d" ), res );
+ return res;
+ }
+
+ TRAP( res, DoExecuteApiTestL( apiTestName, testResult ) );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "DoExecuteApiTestL error: %d"), res );
+ return res;
+ }
+
+ STIF_ASSERT_EQUALS( ETestCasePassed, testResult );
+ STIF_LOG( "[STIF_LOG] Test case passed" );
+ STIF_LOG( "[STIF_LOG] <<<ExecuteApiTest" );
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CusbBasicPersonalityApiTest::DoExecuteApiTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbBasicPersonalityTest::DoExecuteApiTestL( TPtrC aApiTestName, TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>DoExecuteApiTestL" );
+ if ( !aApiTestName.Compare( _L( "ExampleApiTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ ExampleApiTestL( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "CreateAndDeleteTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: CreateAndDeleteTest" );
+ CreateAndDeleteTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "IsActiveTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: IsActiveTest" );
+ IsActiveTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "IsAddedTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: IsAddedTest" );
+ IsAddedTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "PriorityTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: PriorityTest" );
+ PriorityTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "PreparePersonalityStartTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: PreparePersonalityStartTest" );
+ PreparePersonalityStartTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "ConfirmPersonalityUnloadTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ConfirmPersonalityUnloadTest" );
+ ConfirmPersonalityUnloadTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "StateChangeNotifyTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: StateChangeNotifyTest" );
+ StateChangeNotifyTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "FinishPersonalityStartTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: FinishPersonalityStartTest" );
+ FinishPersonalityStartTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "FinishPersonalityStopTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: FinishPersonalityStopTest" );
+ FinishPersonalityStopTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "PreparePersonalityStopTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: PreparePersonalityStopTest" );
+ PreparePersonalityStopTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "SetPriorityTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: SetPriorityTest" );
+ SetPriorityTest ( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "ShowUsbConnectionNoteTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ShowUsbConnectionNoteTest" );
+ ShowUsbConnectionNoteTest ( aTestResult );
+ }
+ else
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: not found" );
+ User::Leave( KErrNotFound );
+ }
+ STIF_LOG( "[STIF_LOG] <<<DoExecuteApiTestL" );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CusbBasicPersonalityApiTest::ExampleApiTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbBasicPersonalityTest::ExampleApiTestL( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExampleApiTestL" );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG( "[STIF_LOG] <<<ExampleApiTestL" );
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::ExecuteModuleTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::ExecuteModuleTest( CStifItemParser& aItem )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExecuteModuleTest" );
+
+ TInt res;
+ TUsbBasicPersonalityTestResult testResult;
+ TPtrC moduleTestName( KNullDesC );
+
+ res = aItem.GetString( _L( "ExecuteModuleTest" ), moduleTestName );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "GetString failed with value: %d" ), res );
+ return res;
+ }
+
+ TRAP( res, DoExecuteModuleTestL( moduleTestName, testResult ) );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "DoExecuteModuleTestL error: %d"), res );
+ return res;
+ }
+
+ STIF_ASSERT_EQUALS( ETestCasePassed, testResult );
+ STIF_LOG( "[STIF_LOG] Test case passed" );
+ STIF_LOG( "[STIF_LOG] <<<ExecuteModuleTest" );
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CusbBasicPersonalityApiTest::DoExecuteModuleTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbBasicPersonalityTest::DoExecuteModuleTestL( TPtrC aModuleTestName, TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>DoExecuteModuleTestL" );
+ if ( !aModuleTestName.Compare( _L( "ExampleModuleTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Module test type: ExampleModuleTest" );
+ ExampleModuleTestL( aTestResult );
+ }
+ else
+ {
+ STIF_LOG( "[STIF_LOG] Module test type: not found" );
+ User::Leave( KErrNotFound );
+ }
+ STIF_LOG( "[STIF_LOG] <<<DoExecuteModuleTestL" );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CusbBasicPersonalityApiTest::ExampleModuleTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbBasicPersonalityTest::ExampleModuleTestL( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExampleModuleTestL" );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG( "[STIF_LOG] <<<ExampleModuleTestL" );
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::ExecuteBranchTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::ExecuteBranchTest( CStifItemParser& aItem )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExecuteBranchTest" );
+
+ TInt res;
+ TUsbBasicPersonalityTestResult testResult;
+ TPtrC branchTestName( KNullDesC );
+
+ res = aItem.GetString( _L( "ExecuteBranchTest" ), branchTestName );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "GetString failed with value: %d" ), res );
+ return res;
+ }
+
+ TRAP( res, DoExecuteBranchTestL( branchTestName, testResult ) );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "DoExecuteBranchTestL error: %d"), res );
+ return res;
+ }
+
+ STIF_ASSERT_EQUALS( ETestCasePassed, testResult );
+ STIF_LOG( "[STIF_LOG] Test case passed" );
+ STIF_LOG( "[STIF_LOG] <<<ExecuteBranchTest" );
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CusbBasicPersonalityApiTest::DoExecuteBranchTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbBasicPersonalityTest::DoExecuteBranchTestL( TPtrC aBranchTestName, TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>DoExecuteBranchTestL" );
+ if ( !aBranchTestName.Compare( _L( "ExampleBranchTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Branch test type: ExampleBranchTest" );
+ ExampleBranchTestL( aTestResult );
+ }
+ else
+ {
+ STIF_LOG( "[STIF_LOG] Branch test type: not found" );
+ User::Leave( KErrNotFound );
+ }
+ STIF_LOG( "[STIF_LOG] <<<DoExecuteBranchTestL" );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CusbBasicPersonalityApiTest::ExampleBranchTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbBasicPersonalityTest::ExampleBranchTestL( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExampleBranchTestL" );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG( "[STIF_LOG] <<<ExampleBranchTestL" );
+ }
+
+// -----------------------------------------------------------------------------
+// CusbBasicPersonalityApiTest::CreateAndDeleteTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::CreateAndDeleteTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("CreateAndDeleteTest: Started");
+
+ //PC Suite
+ CUsbPersonalityPlugin* plugin1 = CUsbPersonalityPlugin::NewL( *iParams, TUid::Uid(0x102068DF) );
+ CleanupStack::PushL( plugin1 );
+
+ //Media Transfer
+ CUsbPersonalityPlugin* plugin3 = CUsbPersonalityPlugin::NewL( *iParams, TUid::Uid(0x10282C70) );
+ CleanupStack::PushL( plugin3 );
+
+ //PC Suite
+ CUsbPersonalityPlugin* plugin4 = CUsbPersonalityPlugin::NewL( *iParams, TUid::Uid(0x2000B5D2) );
+ CleanupStack::PushL( plugin4 );
+
+ CleanupStack::PopAndDestroy( 3 );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("CreateAndDeleteTest: End ");
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::ShowUsbConnectionNoteTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::ShowUsbConnectionNoteTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("ShowUsbConnectionNoteTest: Started");
+
+ iPlugin->ShowUsbConnectionNote();
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("ShowUsbConnectionNoteTest: End ");
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::SetPriorityTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::SetPriorityTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("SetPriorityTest:> Started");
+
+ TRequestStatus status;
+
+ iPlugin->SetPriority( CActive::EPriorityStandard );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("SetPriorityTest:> End ");
+
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::PreparePersonalityStopTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::PreparePersonalityStopTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("PreparePersonalityStopTest:> Started");
+
+ TRequestStatus status;
+
+ iPlugin->PreparePersonalityStop( status );
+ User::WaitForRequest( iStatus );
+
+ REComSession::FinalClose();
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("PreparePersonalityStopTest:> End ");
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::FinishPersonalityStopTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::FinishPersonalityStopTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("FinishPersonalityStopTest:> Started");
+
+ TRequestStatus status;
+
+ iPlugin->FinishPersonalityStop( status );
+ User::WaitForRequest( iStatus );
+
+ REComSession::FinalClose();
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("FinishPersonalityStopTets:> End ");
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::FinishPersonalityStartTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::FinishPersonalityStartTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("FinishPersonalityStartTest:> Started");
+
+ TRequestStatus status;
+
+ iPlugin->FinishPersonalityStart( status );
+ User::WaitForRequest( iStatus );
+
+ REComSession::FinalClose();
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("FinishPersonalityStartTest:> End ");
+
+ return KErrNone;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::ConfirmPersonalityUnloadTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::ConfirmPersonalityUnloadTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("ConfirmPersonalityUnloadTest: Started");
+
+ iPlugin->ConfirmPersonalityUnload( iStatus );
+ User::WaitForRequest( iStatus );
+
+ REComSession::FinalClose();
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("ConfirmPersonalityUnloadTest: End ");
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::PreparePersonalityStartTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::PreparePersonalityStartTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("PreparePersonalityStartTest: Started");
+
+ iPlugin->PreparePersonalityStart( iStatus );
+ User::WaitForRequest( iStatus );
+
+ REComSession::FinalClose();
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("PreparePersonalityStartTest: End ");
+
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::StateChangeNotifyTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::StateChangeNotifyTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("StateChangeNotifyTest:> Started");
+
+ TUsbDeviceState state = EUsbDeviceStateDefault;
+ iPlugin->StateChangeNotify( state );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("StateChangeNotifyTest:> End ");
+ return KErrNone;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::IsActiveTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::IsActiveTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("IsActiveTest:> Started");
+
+ _LIT(KIsActive,"IsActiveTest:> Is Active? %d");
+ iLog->Log(KIsActive, iPlugin->IsActive() );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("IsActiveTest:> End ");
+
+ return KErrNone;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::IsAddedTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::IsAddedTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("IsAddedTest:> Started");
+
+ _LIT(KIsActive,"IsAddedTest:> Is Added? %d");
+ iLog->Log(KIsActive, iPlugin->IsAdded() );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG("IsAddedTest:> End ");
+
+ return KErrNone;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbBasicPersonalityTest::PriorityTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbBasicPersonalityTest::PriorityTest( TUsbBasicPersonalityTestResult& aTestResult )
+ {
+ STIF_LOG("PriorityTest:> Started");
+
+ iPlugin->SetPriority( CActive::EPriorityLow );
+ TInt priority;
+ priority = iPlugin->Priority();
+
+ priority == CActive::EPriorityLow ?
+ aTestResult = ETestCasePassed :
+ aTestResult = ETestCaseFailed;
+
+ STIF_LOG("PriorityTest:> End ");
+
+ return KErrNone;
+
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+// [End of File] - Do not remove
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbbasicpersonality/tsrc/UsbBasicPersonalityTest/src/UsbBasicPersonalityTest_exe.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <e32svr.h>
+#include <StifTestInterface.h>
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// ================= OTHER EXPORTED FUNCTIONS =================================
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: -
+
+ Method: E32Main
+
+ Description:
+
+ Parameters: None
+
+ Return Values: TInt: Symbian error code
+
+ Errors/Exceptions: None
+
+ Status: Draft
+
+-------------------------------------------------------------------------------
+*/
+GLDEF_C TInt E32Main()
+ {
+ _LIT( KProcessMsgStart, "New process starting" );
+ RDebug::Print( KProcessMsgStart );
+
+
+ // This starts a new session that get capabilites that is used in
+ // UsbBasicPersonalityTest_exe.mmp file.
+ TInt r = StartSession();
+
+ _LIT( KProcessMsgEnd, "New process ends" );
+ RDebug::Print( KProcessMsgEnd );
+
+ return r;
+
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/Bmarm/UsbMscPersonalityTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/Bwins/UsbMscPersonalityTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/conf/UsbMscPersonalityTest.cfg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,124 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+[StifSettings]
+CapsModifier = UsbMscPersonalityTest.exe
+[EndStifSettings]
+
+// UsbMscPersonalityTest Module - total 13 tc
+
+
+// UsbHidClassDriverTest Api Tests (8 tc)
+
+[Test]
+title Initialization Test
+create UsbMscPersonalityTest tester
+tester InitializationTestL API
+delete tester
+[Endtest]
+
+[Test]
+title Prepare Personality Start
+create UsbMscPersonalityTest tester
+tester PreparePersonalityStartTestL API
+delete tester
+[Endtest]
+
+[Test]
+title Finish Personality Start
+create UsbMscPersonalityTest tester
+tester FinishPersonalityStartTestL API
+delete tester
+[Endtest]
+
+[Test]
+title Prepare Personality Stop
+create UsbMscPersonalityTest tester
+tester PreparePersonalityStopTestL API
+delete tester
+[Endtest]
+
+[Test]
+title Finish Personality Stop
+create UsbMscPersonalityTest tester
+tester FinishPersonalityStopTestL API
+delete tester
+[Endtest]
+
+[Test]
+title State Change Notify
+create UsbMscPersonalityTest tester
+tester StateChangeNotifyTestL API
+delete tester
+[Endtest]
+
+[Test]
+title State Change Notify Undefined
+create UsbMscPersonalityTest tester
+tester StateChangeNotifyUndefinedTestL API
+delete tester
+[Endtest]
+
+[Test]
+title State Change Notify State Address
+create UsbMscPersonalityTest tester
+tester StateChangeNotifyStateAddressTestL API
+delete tester
+[Endtest]
+
+// UsbHidClassDriverTest Module Tests (5 tc)
+// Add new module tests here
+// ...
+
+[Test]
+title Confirm Personality Unload
+create UsbMscPersonalityTest tester
+tester ConfirmPersonalityUnloadTestL MODULE
+delete tester
+[Endtest]
+
+[Test]
+title Allow Dismount 2 sec
+create UsbMscPersonalityTest tester
+tester AllowDismountAfter2SecTestL MODULE
+delete tester
+[Endtest]
+
+[Test]
+title Allow Dismount
+create UsbMscPersonalityTest tester
+tester AllowDismountTestL MODULE
+delete tester
+[Endtest]
+
+[Test]
+title Not Allow Dismount
+create UsbMscPersonalityTest tester
+tester NotAllowDismountTestL MODULE
+delete tester
+[Endtest]
+
+[Test]
+title Allow Dismount Late
+create UsbMscPersonalityTest tester
+tester AllowDismountTooLateTestL MODULE
+delete tester
+[Endtest]
+// Add new module tests here
+// ...
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/eabi/UsbMscPersonalityTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,7 @@
+EXPORTS
+ _Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+ _ZTI15CDismountClient @ 2 NONAME
+ _ZTI34CUsbMscPersonalityTestActiveObject @ 3 NONAME
+ _ZTV15CDismountClient @ 4 NONAME
+ _ZTV34CUsbMscPersonalityTestActiveObject @ 5 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/group/UsbMscPersonalityTest.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+#if defined(__S60_)
+ // To get the OSEXT_LAYER_SYSTEMINCLUDE-definition
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbMscPersonalityTest.dll
+TARGETTYPE dll
+UID 0x1000008D 0x101FB3E3
+
+CAPABILITY LocalServices ReadDeviceData NetworkControl WriteDeviceData DiskAdmin ReadUserData WriteUserData ProtServ
+
+DEFFILE UsbMscPersonalityTest.def
+
+MW_LAYER_SYSTEMINCLUDE
+
+USERINCLUDE ../inc
+
+SOURCEPATH ../src
+SOURCE UsbMscPersonalityTest.cpp
+SOURCE UsbMscPersonalityTestBlocks.cpp DismountClient.cpp UsbMscPersonalityTestActiveObject.cpp
+
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+LIBRARY stiftestengine.lib
+LIBRARY ecom.lib
+LIBRARY usbman.lib
+LIBRARY usbpersonality.lib
+LIBRARY platformver.lib
+LIBRARY efsrv.lib
+
+LANG SC
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/group/UsbMscPersonalityTest_ats.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,62 @@
+;
+; Copyright (c) 2010 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:
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 5.2
+[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"/epoc32/release/armv5/udeb/UsbMscPersonalityTest.dll"-"c:/Sys/Bin/UsbMscPersonalityTest.dll"
+"/epoc32/release/armv5/udeb/UsbMscPersonalityTest.exe"-"c:/Sys/Bin/UsbMscPersonalityTest.exe"
+
+"../init/UsbMscPersonalityTest_ats.ini"-"e:/testing/init/UsbMscPersonalityTest.ini"
+"../conf/UsbMscPersonalityTest.cfg"-"e:/testing/conf/UsbMscPersonalityTest.cfg"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/group/UsbMscPersonalityTest_exe.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#if defined(__S60_)
+ // To get the OS_LAYER_SYSTEMINCLUDE-definition
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbMscPersonalityTest.exe
+TARGETTYPE exe
+UID 0 0xEF4892C6
+
+/* Specify the capabilities according to your test environment */
+CAPABILITY LocalServices ReadDeviceData NetworkControl WriteDeviceData DiskAdmin ReadUserData WriteUserData ProtServ
+/* Remove comments and replace 0x00000000 with correct vendor id */
+// VENDORID 0x00000000
+/* Remove comments and replace 0x00000000 with correct secure id */
+// SECUREID 0x00000000
+
+MW_LAYER_SYSTEMINCLUDE
+SOURCEPATH ../src
+
+
+SOURCE UsbMscPersonalityTest_exe.cpp
+
+/* Used libraries */
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+
+EPOCSTACKSIZE 40960
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/group/UsbMscPersonalityTest_phone.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,63 @@
+;
+; Copyright (c) 2010 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:
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 5.2
+[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"/epoc32/release/armv5/udeb/UsbMscPersonalityTest.dll"-"c:/Sys/Bin/UsbMscPersonalityTest.dll"
+"/epoc32/release/armv5/udeb/UsbMscPersonalityTest.exe"-"c:/Sys/Bin/UsbMscPersonalityTest.exe"
+
+"../init/UsbMscPersonalityTest_phone.ini"-"c:/testframework/testframework.ini"
+"../conf/UsbMscPersonalityTest.cfg"-"c:/testframework/UsbMscPersonalityTest.cfg"
+
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTEXPORTS
+
+PRJ_EXPORTS
+
+PRJ_TESTMMPFILES
+UsbMscPersonalityTest.mmp
+UsbMscPersonalityTest_exe.mmp
+
+PRJ_MMPFILES
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/group/build_sis_ats.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,20 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+
+call sbs -c armv5.test
+call makesis UsbMscPersonalityTest_ats.pkg
+call signsis UsbMscPersonalityTest_ats.sis UsbMscPersonalityTest_ats.sisx x:\rd.cer x:\rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/group/build_sis_phone.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,21 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+call sbs -c armv5.test
+call sbs freeze
+call sbs -c armv5.test
+call makesis UsbMscPersonalityTest_phone.pkg
+call signsis UsbMscPersonalityTest_phone.sis UsbMscPersonalityTest_phone.sisx x:\rd.cer x:\rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/inc/DismountClient.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,89 @@
+/*
+* Copyright (c) 2010 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 DISMOUNTCLIENT_H
+#define DISMOUNTCLIENT_H
+
+#include <e32base.h> // For CActive, link against: euser.lib
+#include <e32std.h> // For RTimer, link against: euser.lib
+#include <StifLogger.h>
+#include <f32file.h>
+
+enum TAllowDismountOption
+{
+ EAllowDismount,
+ EAllowDismountAfter2Sec,
+ EAllowDismountTooLate,
+ ENotAllowDismount
+};
+
+class CDismountClient : public CActive
+ {
+public:
+ // Cancel and destroy
+ ~CDismountClient();
+
+ // Two-phased constructor.
+ static CDismountClient* NewL(CStifLogger *aLog);
+
+ // Two-phased constructor.
+ static CDismountClient* NewLC(CStifLogger *aLog);
+
+public:
+ // New functions
+ // Function for making the initial request
+ void StartL(TAllowDismountOption aAllowDismountOption);
+
+private:
+ // C++ constructor
+ CDismountClient();
+
+ // Second-phase constructor
+ void ConstructL(CStifLogger *aLog);
+
+private:
+ // From CActive
+ // Handle completion
+ void RunL();
+
+ // How to cancel me
+ void DoCancel();
+
+ // Override to handle leaves from RunL(). Default implementation causes
+ // the active scheduler to panic.
+ TInt RunError(TInt aError);
+
+private:
+ enum TDismountClientState
+ {
+ EWaitForDelay,
+ EDelay,
+ EUninitialized, // Uninitialized
+ EInitialized, // Initalized
+ EError // Error condition
+ };
+
+private:
+ TInt iState; // State of the active object
+ RFs iFs;
+ CStifLogger *iLog;
+ RTimer iTimer;
+ TAllowDismountOption iAllowDismountOption;
+
+ };
+
+#endif // DISMOUNTCLIENT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/inc/UsbMscPersonalityTest.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,269 @@
+/*
+* Copyright (c) 2010 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 USBMSCPERSONALITYTEST_H
+#define USBMSCPERSONALITYTEST_H
+
+// INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+
+#include <cusbpersonalityplugin.h>
+#include <cusbpersonalitynotifier.h>
+
+#include "UsbMscPersonalityTestActiveObject.h"
+#include <tusbpersonalityparams.h>
+#include "DismountClient.h"
+
+// CONSTANTS
+// Logging path
+_LIT( KUsbMscPersonalityTestLogPath, "\\logs\\testframework\\UsbMscPersonalityTest\\" );
+
+// Logging path for ATS - for phone builds comment this line
+//_LIT( KUsbMscPersonalityTestLogPath, "e:\\testing\\stiflogs\\" );
+
+// Log file
+_LIT( KUsbMscPersonalityTestLogFile, "UsbMscPersonalityTest.txt" );
+_LIT( KUsbMscPersonalityTestLogFileWithTitle, "UsbMscPersonalityTest_[%S].txt" );
+
+// MACROS
+#define TEST_CLASS_VERSION_MAJOR 0
+#define TEST_CLASS_VERSION_MINOR 0
+#define TEST_CLASS_VERSION_BUILD 0
+
+// Macros used to extract test block parameters
+#define TESTENTRY( A, B )\
+ if ( !iTestBlockParams.iTestBlockName.Compare( TPtrC( ( TText* ) L ##A ) ) )\
+ { iTestBlockFunction = &B; iTestBlockFound = ETrue; }\
+ if ( !iTestBlockParams.iTestBlockName.Compare( TPtrC( ( TText* ) L ##A ) ) )
+
+#define TESTPARAM( A, B )\
+ GetTestBlockParamL( ( TGetTestBlockParamOperation ) A, ( TTestBlockParamName ) B );
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// DATA TYPES
+
+// Enum type used to determine test block execution result
+enum TUsbMscPersonalityTestResult
+ {
+ ETestCasePassed,
+ ETestCaseFailed
+ };
+
+// Enum type indicating test block parameter which should be used to store
+// data extracted from test script
+enum TTestBlockParamName
+ {
+ eTestOption1,
+ eTestOption2,
+ eTestOption3,
+ eTestIntOption1,
+ eTestIntOption2,
+ eTestIntOption3,
+ eTestCharOption1,
+ eTestCharOption2,
+ eTestCharOption3
+ };
+
+// Enum type used to indicate which get parameter function should be used
+enum TGetTestBlockParamOperation
+ {
+ eGetString,
+ eGetInt,
+ eGetChar
+ };
+
+// CLASS DECLARATION
+/**
+* TUsbMscPersonalityTestBlockParams test class for storing test block parameters.
+*/
+NONSHARABLE_CLASS( TUsbMscPersonalityTestBlockParams )
+ {
+ public:
+ TPtrC iTestBlockName;
+
+ TPtrC iTestOption1;
+ TPtrC iTestOption2;
+ TPtrC iTestOption3;
+
+ TInt iTestIntOption1;
+ TInt iTestIntOption2;
+ TInt iTestIntOption3;
+
+ TChar iTestCharOption1;
+ TChar iTestCharOption2;
+ TChar iTestCharOption3;
+ };
+
+/**
+* CUsbMscPersonalityTest test class for STIF Test Framework TestScripter.
+*/
+NONSHARABLE_CLASS( CUsbMscPersonalityTest ) : public CScriptBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CUsbMscPersonalityTest* NewL( CTestModuleIf& aTestModuleIf );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbMscPersonalityTest();
+
+ public: // New functions
+ public: // Functions from base classes
+
+ /**
+ * From CScriptBase Runs a script line.
+ * @since ?Series60_version
+ * @param aItem Script line containing method name and parameters
+ * @return Symbian OS error code
+ */
+ virtual TInt RunMethodL( CStifItemParser& aItem );
+
+ protected: // New functions
+ protected: // Functions from base classes
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CUsbMscPersonalityTest( CTestModuleIf& aTestModuleIf );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Frees all resources allocated from test methods.
+ * @since ?Series60_version
+ */
+ void TestDelete();
+
+ /**
+ * Constructs all test resources for test methods.
+ */
+ void TestConstructL();
+
+ /**
+ * Extracts test block parameters from script file
+ */
+ void TestBlocksInfoL();
+
+ /**
+ * Executes test block
+ */
+ TInt ExecuteTestBlock( CStifItemParser& aItem );
+
+ /**
+ * Executes proper get parameter function indicated by its arguments
+ */
+ void GetTestBlockParamL( TGetTestBlockParamOperation aOperation,
+ TTestBlockParamName aParamName );
+
+ /**
+ * Method used to log version of test class
+ */
+ void SendTestClassVersion();
+
+ // ADD NEW METHOD DEC HERE
+ // [TestMethods] - Do not remove
+ void ExampleTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+
+ void ExecuteDismounting();
+
+ void PreparePersonalityStartTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void FinishPersonalityStartTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void PreparePersonalityStopTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void FinishPersonalityStopTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void InitializationTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void StateChangeNotifyTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void StateChangeNotifyUndefinedTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void StateChangeNotifyStateAddressTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void ConfirmPersonalityUnloadTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void AllowDismountAfter2SecTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void AllowDismountTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void NotAllowDismountTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+ void AllowDismountTooLateTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult );
+
+
+ void InitializeTestObjectsL();
+ void DeleteTestObjects();
+
+
+ public: // Data
+ protected: // Data
+ private: // Data
+
+ // Member object used to store test block parameters
+ TUsbMscPersonalityTestBlockParams iTestBlockParams;
+
+ // Used to indicate if test block with specified parameters exist
+ TBool iTestBlockFound;
+
+ // Function pointer used to call proper test block methods
+ void ( CUsbMscPersonalityTest::*iTestBlockFunction )
+ ( TUsbMscPersonalityTestBlockParams&, TUsbMscPersonalityTestResult& );
+
+ // Not own
+ CStifItemParser* iItem;
+
+ // Reserved pointer for future extension
+ //TAny* iReserved;
+
+ // ADD NEW DATA DEC HERE
+
+ RUsb* iUsb;
+ CUsbPersonalityNotifier* iNotifier;
+ TRequestStatus iRequestStatus;
+ CActiveScheduler* iScheduler;
+ CUsbMscPersonalityTestActiveObject* iActive;
+ CUsbPersonalityPlugin* iPlugin;
+ TUsbPersonalityParams* iParams;
+ CDismountClient* iDismountClient;
+
+ public: // Friend classes
+ protected: // Friend classes
+ private: // Friend classes
+
+ };
+#endif // USBMSCPERSONALITYTEST_H
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/inc/UsbMscPersonalityTestActiveObject.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2010 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 USBMSCPERSONALITYTESTACTIVEOBJECT_H
+#define USBMSCPERSONALITYTESTACTIVEOBJECT_H
+
+#include <e32base.h> // For CActive, link against: euser.lib
+#include <e32std.h> // For RTimer, link against: euser.lib
+#include <tusbpersonalityparams.h>
+#include <cusbpersonalityplugin.h>
+
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+
+class CUsbMscPersonalityTestActiveObject : public CActive
+ {
+public:
+ // Cancel and destroy
+ ~CUsbMscPersonalityTestActiveObject();
+
+ // Two-phased constructor.
+ static CUsbMscPersonalityTestActiveObject* NewL( CUsbPersonalityPlugin*, CStifLogger*, TUsbPersonalityParams* );
+
+ // Two-phased constructor.
+ static CUsbMscPersonalityTestActiveObject* NewLC( CUsbPersonalityPlugin*, CStifLogger*, TUsbPersonalityParams* );
+
+public:
+
+ void PreparePersonalityStart( TRequestStatus& aStatus);
+ void FinishPersonalityStart( TRequestStatus& aStatus);
+ void PreparePersonalityStop( TRequestStatus& aStatus);
+ void FinishPersonalityStop( TRequestStatus& aStatus);
+ void ConfirmPersonalityUnload( TRequestStatus& aStatus);
+
+private:
+ // C++ constructor
+ CUsbMscPersonalityTestActiveObject( CUsbPersonalityPlugin*, CStifLogger*, TUsbPersonalityParams* );
+
+ // Second-phase constructor
+ void ConstructL();
+
+private:
+ // From CActive
+ // Handle completion
+ void RunL();
+
+ // How to cancel me
+ void DoCancel();
+
+ // Override to handle leaves from RunL(). Default implementation causes
+ // the active scheduler to panic.
+ TInt RunError(TInt aError);
+
+private:
+
+
+private:
+
+ CUsbPersonalityPlugin* iPlugin;
+ CStifLogger* iLog;
+ TUsbPersonalityParams* iParams;
+
+ };
+
+#endif // USBMSCPERSONALITYTESTACTIVEOBJECT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/inc/testdebug.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 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 TESTDEBUG_H_
+#define TESTDEBUG_H_
+
+// INCLUDES
+#include <e32debug.h>
+#include <e32def.h>
+
+// CONSTANTS
+_LIT8(KStifTestPrefix8, "[STIF_LOG] ");
+_LIT( KStifTestPrefix, "[STIF_LOG] ");
+_LIT8( KStifEntryPrefix8, ">>> %S" );
+_LIT8( KStifExitPrefix8, "<<< %S" );
+
+const TInt KMaxLogLineLength = 512;
+typedef TBuf8< KMaxLogLineLength > TLogBuf8;
+typedef TBuf16< KMaxLogLineLength > TLogBuf16;
+
+// CLASS DECLARATION
+NONSHARABLE_CLASS( TTestLogger )
+ {
+public:
+ static inline TLogBuf16 CreateLogBuf( TRefByValue<const TDesC8> aFmt, ... );
+ static inline TLogBuf16 CreateLogBuf( TRefByValue<const TDesC16> aFmt, ... );
+ static inline void Trace( CStifLogger& aLog, TLogBuf16 aLogBuf );
+ };
+
+// MACROS
+#define TRACE( p ) {\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( _L( p ) );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_INFO( p, args... ) {\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( _L( p ), args );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_FUNC_ENTRY {\
+ TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ );\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( KStifEntryPrefix8, &ptr8 );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_FUNC_EXIT {\
+ TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ );\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( KStifExitPrefix8, &ptr8 );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+
+#include "testdebug.inl"
+
+#endif /* TESTDEBUG_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/inc/testdebug.inl Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32debug.h>
+
+NONSHARABLE_CLASS( TOverflowTruncate8 ) : public TDes8Overflow
+ {
+public:
+ void Overflow( TDes8& /*aDes*/ ) {}
+ };
+
+NONSHARABLE_CLASS( TOverflowTruncate16 ) : public TDes16Overflow
+ {
+public:
+ void Overflow( TDes16& /*aDes*/ ) {}
+ };
+
+TLogBuf16 TTestLogger::CreateLogBuf( TRefByValue<const TDesC8> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TOverflowTruncate8 overflow;
+ TLogBuf8 buf8;
+ TLogBuf16 buf16;
+ buf8.AppendFormatList( aFmt, list, &overflow );
+ buf16.Copy( buf8 );
+ return buf16;
+ };
+
+TLogBuf16 TTestLogger::CreateLogBuf( TRefByValue<const TDesC16> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TOverflowTruncate16 overflow;
+ TLogBuf16 buf16;
+ buf16.AppendFormatList( aFmt, list, &overflow );
+ return buf16;
+ };
+
+void TTestLogger::Trace( CStifLogger& aLog, TLogBuf16 aLogBuf )
+ {
+ RBuf16 buf;
+ RBuf16 bufStifLog;
+
+ buf.Create( KMaxLogLineLength );
+ buf.Append( KStifTestPrefix );
+ buf.Append( aLogBuf );
+ bufStifLog.Create( KMaxLogLineLength );
+ bufStifLog.Append( aLogBuf );
+
+ RDebug::Print( buf );
+ aLog.Log( bufStifLog );
+ buf.Close();
+ bufStifLog.Close();
+ };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/init/UsbMscPersonalityTest_ats.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,233 @@
+# Copyright (c) 2010 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:
+#
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+# + XML, Test report will be xml type, for example 'TestReport.xml'.
+# Note, that xml format is available only when output is set to FILE.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= e:\testing\logs\
+TestReportFileName= UsbMscPersonalityTest_TestReport
+
+TestReportFormat= TXT # Possible values: TXT, HTML or XML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbMscPersonalityTestUsbMscPersonalityTestUsbMscPersonalityTest
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= e:\testing\conf\UsbMscPersonalityTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbMscPersonalityTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbMscPersonalityTest used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleUsbMscPersonalityTest used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined
+# Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+# will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+#CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/init/UsbMscPersonalityTest_phone.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,234 @@
+# Copyright (c) 2010 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:
+#
+
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+# + XML, Test report will be xml type, for example 'TestReport.xml'.
+# Note, that xml format is available only when output is set to FILE.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= c:\logs\testframework\UsbMscPersonalityTest\
+TestReportFileName= testreport
+
+TestReportFormat= TXT # Possible values: TXT, HTML or XML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbMscPersonalityTestUsbMscPersonalityTestUsbMscPersonalityTest
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= c:\testframework\UsbMscPersonalityTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbMscPersonalityTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbMscPersonalityTest used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleUsbMscPersonalityTest used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined
+# Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+# will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+#CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/src/DismountClient.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,129 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include "DismountClient.h"
+
+CDismountClient::CDismountClient() :
+ CActive(EPriorityStandard) // Standard priority
+ {
+ }
+
+CDismountClient* CDismountClient::NewLC(CStifLogger *aLog)
+ {
+ CDismountClient* self = new (ELeave) CDismountClient();
+ CleanupStack::PushL(self);
+ self->ConstructL(aLog);
+ return self;
+ }
+
+CDismountClient* CDismountClient::NewL(CStifLogger *aLog)
+ {
+ CDismountClient* self = CDismountClient::NewLC(aLog);
+ CleanupStack::Pop(); // self;
+ return self;
+ }
+
+void CDismountClient::ConstructL(CStifLogger *aLog)
+ {
+ User::LeaveIfError(iTimer.CreateLocal());
+ iLog = aLog;
+ User::LeaveIfError( iFs.Connect() );
+
+ CActiveScheduler::Add(this); // Add to scheduler
+ }
+
+CDismountClient::~CDismountClient()
+ {
+ Cancel(); // Cancel any request, if outstanding
+ // Delete instance variables if any
+ iTimer.Close();
+ iFs.NotifyDismountCancel();
+ iFs.Close();
+ }
+
+void CDismountClient::DoCancel()
+ {
+ iTimer.Cancel();
+ iFs.NotifyDismountCancel();
+ }
+
+void CDismountClient::StartL(TAllowDismountOption aAllowDismountOption)
+ {
+ Cancel();
+
+ iAllowDismountOption = aAllowDismountOption;
+ if (iAllowDismountOption == EAllowDismountTooLate ||
+ iAllowDismountOption == EAllowDismountAfter2Sec)
+ {
+ iState = EDelay;
+ }
+
+ iFs.NotifyDismount(EDriveE,iStatus,EFsDismountRegisterClient);
+ RDebug::Printf( " DiscmountClient StartL ");
+ iFs.NotifyDismountCancel();
+ SetActive();
+ }
+
+void CDismountClient::RunL()
+ {
+
+ switch (iAllowDismountOption)
+ {
+ case EAllowDismount:
+ iFs.AllowDismount(EDriveE);
+ break;
+
+ case EAllowDismountAfter2Sec:
+ if (iState ==EDelay)
+ {
+ iTimer.After(iStatus,(TTimeIntervalMicroSeconds32)2000000);
+ iState=EWaitForDelay;
+ SetActive();
+ }
+ else
+ if(iState==EWaitForDelay)
+ {
+ iFs.AllowDismount(EDriveE);
+ iState=EDelay;
+ }
+ break;
+
+ case EAllowDismountTooLate:
+ if (iState == EDelay)
+ {
+ iTimer.After(iStatus,(TTimeIntervalMicroSeconds32)8000000);
+ iState=EWaitForDelay;
+ SetActive();
+ }
+ else
+ if(iState==EWaitForDelay)
+ {
+ iFs.AllowDismount(EDriveE);
+ iState=EDelay;
+ }
+ break;
+
+ case ENotAllowDismount:
+ default:
+ break;
+ }
+ }
+
+TInt CDismountClient::RunError(TInt aError)
+ {
+ return aError;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/src/UsbMscPersonalityTest.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,326 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+// INCLUDE FILES
+#include <Stiftestinterface.h>
+#include "UsbMscPersonalityTest.h"
+#include <SettingServerClient.h>
+#include "testdebug.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::CUsbMscPersonalityTest
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CUsbMscPersonalityTest::CUsbMscPersonalityTest(
+ CTestModuleIf& aTestModuleIf ):
+ CScriptBase( aTestModuleIf )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CUsbMscPersonalityTest::ConstructL()
+ {
+ //Read logger settings to check whether test case name is to be
+ //appended to log file name.
+ RSettingServer settingServer;
+ TInt ret = settingServer.Connect();
+ if(ret != KErrNone)
+ {
+ User::Leave(ret);
+ }
+ // Struct to StifLogger settigs.
+ TLoggerSettings loggerSettings;
+ // Parse StifLogger defaults from STIF initialization file.
+ ret = settingServer.GetLoggerSettings( loggerSettings );
+ if( ret != KErrNone )
+ {
+ User::Leave( ret );
+ }
+ // Close Setting server session
+ settingServer.Close();
+
+ TFileName logFileName;
+
+ if( loggerSettings.iAddTestCaseTitle )
+ {
+ TName title;
+ TestModuleIf().GetTestCaseTitleL( title );
+ logFileName.Format( KUsbMscPersonalityTestLogFileWithTitle, &title );
+ }
+ else
+ {
+ logFileName.Copy( KUsbMscPersonalityTestLogFile );
+ }
+
+ iLog = CStifLogger::NewL( KUsbMscPersonalityTestLogPath,
+ logFileName,
+ CStifLogger::ETxt,
+ CStifLogger::EFile,
+ EFalse );
+
+ SendTestClassVersion();
+ TestConstructL();
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CUsbMscPersonalityTest* CUsbMscPersonalityTest::NewL(
+ CTestModuleIf& aTestModuleIf )
+ {
+ CUsbMscPersonalityTest* self = new (ELeave) CUsbMscPersonalityTest( aTestModuleIf );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// Destructor
+CUsbMscPersonalityTest::~CUsbMscPersonalityTest()
+ {
+
+ // Delete resources allocated from test methods
+ TestDelete();
+
+ // Delete logger
+ delete iLog;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+
+TInt CUsbMscPersonalityTest::RunMethodL(
+ CStifItemParser& aItem )
+ {
+ return ExecuteTestBlock( aItem );
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::ExecuteTestBlock
+// -----------------------------------------------------------------------------
+
+TInt CUsbMscPersonalityTest::ExecuteTestBlock( CStifItemParser& aItem )
+ {
+ TRACE_FUNC_ENTRY
+ iItem = &aItem;
+ TInt res;
+ TUsbMscPersonalityTestResult testResult = ETestCaseFailed;
+
+ res = iItem -> GetString( _L( "tester" ), iTestBlockParams.iTestBlockName );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "Getting test block name failed with: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+ TRACE_INFO( "Test block name: %S", &iTestBlockParams.iTestBlockName )
+
+ TRACE( "Extracting test block parameters..." )
+ TRAP( res, TestBlocksInfoL() );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "Extracting parameters failed: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+ if ( !iTestBlockFound )
+ {
+ TRACE( "Test block not found!" )
+ TRACE_FUNC_EXIT
+ return KErrNotFound;
+ }
+ TRACE( "Extracting parameters successful" )
+
+ TRAP( res, ( this ->*iTestBlockFunction )( iTestBlockParams, testResult ) );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "ExecuteTestBlockL error: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+
+ STIF_ASSERT_EQUALS( ETestCasePassed, testResult );
+ TRACE( "Test block passed!" );
+ TRACE_FUNC_EXIT
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::GetTestBlockParamL
+// -----------------------------------------------------------------------------
+
+void CUsbMscPersonalityTest::GetTestBlockParamL( TGetTestBlockParamOperation aOperation, TTestBlockParamName aParamName )
+ {
+ switch( aOperation )
+ {
+ case eGetString:
+ {
+ switch ( aParamName )
+ {
+ case eTestOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption1 ) );
+ break;
+ }
+ case eTestOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption2 ) );
+ break;
+ }
+ case eTestOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ break;
+ }
+ }
+ break;
+ }
+ case eGetInt:
+ {
+ switch ( aParamName )
+ {
+ case eTestIntOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption1 ) );
+ break;
+ }
+ case eTestIntOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption2 ) );
+ break;
+ }
+ case eTestIntOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ break;
+ }
+ }
+ break;
+ }
+ case eGetChar:
+ {
+ switch ( aParamName )
+ {
+ case eTestCharOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption1 ) );
+ break;
+ }
+ case eTestCharOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption2 ) );
+ break;
+ }
+ case eTestCharOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ }
+ }
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ }
+ }
+ }
+
+//-----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CUsbMscPersonalityTest::SendTestClassVersion()
+ {
+ TVersion moduleVersion;
+ moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+ moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+ moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+
+ TFileName moduleName;
+ moduleName = _L("UsbMscPersonalityTest.dll");
+
+ TBool newVersionOfMethod = ETrue;
+ TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL(
+ CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+ {
+
+ return ( CScriptBase* ) CUsbMscPersonalityTest::NewL( aTestModuleIf );
+
+ }
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/src/UsbMscPersonalityTestActiveObject.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+#include "UsbMscPersonalityTestActiveObject.h"
+#include <e32debug.h>
+
+CUsbMscPersonalityTestActiveObject::CUsbMscPersonalityTestActiveObject( CUsbPersonalityPlugin* aPlugin, CStifLogger* aLog, TUsbPersonalityParams* aParams ) :
+ CActive(EPriorityStandard) // Standard priority
+ {
+ iPlugin = aPlugin;
+ iLog = aLog;
+ iParams = aParams;
+ }
+
+CUsbMscPersonalityTestActiveObject* CUsbMscPersonalityTestActiveObject::NewLC( CUsbPersonalityPlugin* aPlugin, CStifLogger* aLog, TUsbPersonalityParams* aParams )
+ {
+ CUsbMscPersonalityTestActiveObject* self =
+ new (ELeave) CUsbMscPersonalityTestActiveObject( aPlugin, aLog, aParams );
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+CUsbMscPersonalityTestActiveObject* CUsbMscPersonalityTestActiveObject::NewL( CUsbPersonalityPlugin* aPlugin, CStifLogger* aLog, TUsbPersonalityParams* aParams )
+ {
+ CUsbMscPersonalityTestActiveObject* self =
+ CUsbMscPersonalityTestActiveObject::NewLC( aPlugin, aLog, aParams );
+ CleanupStack::Pop(); // self;
+ return self;
+ }
+
+void CUsbMscPersonalityTestActiveObject::ConstructL()
+ {
+ CActiveScheduler::Add(this); // Add to scheduler
+ }
+
+CUsbMscPersonalityTestActiveObject::~CUsbMscPersonalityTestActiveObject()
+ {
+ Cancel(); // Cancel any request, if outstanding
+
+ // Delete instance variables if any
+ }
+
+void CUsbMscPersonalityTestActiveObject::DoCancel()
+ {
+ }
+
+void CUsbMscPersonalityTestActiveObject::RunL()
+ {
+ CActiveScheduler::Stop();
+ }
+
+TInt CUsbMscPersonalityTestActiveObject::RunError(TInt aError)
+ {
+ return aError;
+ }
+
+void CUsbMscPersonalityTestActiveObject::PreparePersonalityStart( TRequestStatus& aStatus)
+ {
+ iPlugin->PreparePersonalityStart(aStatus);
+ RDebug::Printf( "prepare personality start, status: %d", aStatus.Int());
+
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CUsbMscPersonalityTestActiveObject::FinishPersonalityStart( TRequestStatus& aStatus)
+ {
+ iPlugin->FinishPersonalityStart(aStatus);
+ RDebug::Printf( "finish personality start, status: %d", aStatus.Int());
+
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CUsbMscPersonalityTestActiveObject::PreparePersonalityStop( TRequestStatus& aStatus)
+ {
+ iPlugin->PreparePersonalityStop(aStatus);
+ RDebug::Printf( "prepare personality start, status: %d", aStatus.Int());
+
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CUsbMscPersonalityTestActiveObject::FinishPersonalityStop( TRequestStatus& aStatus)
+ {
+ iPlugin->FinishPersonalityStop(aStatus);
+ RDebug::Printf( "finish personality start, status: %d", aStatus.Int());
+
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CUsbMscPersonalityTestActiveObject::ConfirmPersonalityUnload( TRequestStatus& aStatus)
+ {
+ iPlugin->ConfirmPersonalityUnload(aStatus);
+ RDebug::Printf( "confirm personality unload, status: %d", aStatus.Int());
+
+ iParams->PersonalityNotifier().CancelQuery(KQueriesNotifier);
+ SetActive();
+ CActiveScheduler::Start();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/src/UsbMscPersonalityTestBlocks.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,497 @@
+/*
+ * Copyright (c) 2010 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:
+ *
+ */
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include "UsbMscPersonalityTest.h"
+#include "testdebug.h"
+#include <ecom/ecom.h>
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::TestConstructL
+// Construct here all test resources for test methods.
+// Called from ConstructL.
+// -----------------------------------------------------------------------------
+
+void CUsbMscPersonalityTest::TestConstructL()
+ {
+ TRACE_FUNC_ENTRY
+
+ if (!CActiveScheduler::Current())
+ {
+ iScheduler = new (ELeave) CActiveScheduler;
+ CActiveScheduler::Install(iScheduler);
+ }
+
+ iUsb = new (ELeave) RUsb;
+ iNotifier = CUsbPersonalityNotifier::NewL();
+ iParams = new (ELeave) TUsbPersonalityParams(*iUsb, *iNotifier);
+ // iParams->SetPersonalityId(2);
+ iPlugin = CUsbPersonalityPlugin::NewL(*iParams, TUid::Uid(0x1020DF7B));
+
+ TRACE_FUNC_EXIT
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::TestDelete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+
+void CUsbMscPersonalityTest::TestDelete()
+ {
+ TRACE_FUNC_ENTRY
+
+ if (iScheduler)
+ {
+ iScheduler->Stop();
+ delete iScheduler;
+ iScheduler = NULL;
+ }
+
+ if (iUsb)
+ {
+ delete iUsb;
+ iUsb = NULL;
+ }
+
+ if (iNotifier)
+ {
+ delete iNotifier;
+ }
+
+ if (iParams)
+ {
+ delete iParams;
+ iParams = NULL;
+ }
+
+ if (iPlugin)
+ {
+ iPlugin->Cancel();
+ delete iPlugin;
+ iPlugin = NULL;
+ }
+
+ if (iActive)
+ {
+ delete iActive;
+ iActive = NULL;
+ }
+
+ if (iDismountClient)
+ {
+ delete iDismountClient;
+ iDismountClient = NULL;
+ }
+
+ REComSession::FinalClose();
+
+ TRACE_FUNC_EXIT
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::TestBlocksInfoL
+// Add new test block parameter entries below
+// -----------------------------------------------------------------------------
+
+void CUsbMscPersonalityTest::TestBlocksInfoL()
+ {
+
+ TESTENTRY( "ExampleTestL", CUsbMscPersonalityTest::ExampleTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ TESTPARAM( eGetInt, eTestIntOption1 )
+ TESTPARAM( eGetChar, eTestCharOption1 )
+ }
+ TESTENTRY( "PreparePersonalityStartTestL", CUsbMscPersonalityTest::PreparePersonalityStartTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "FinishPersonalityStartTestL", CUsbMscPersonalityTest::FinishPersonalityStartTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "PreparePersonalityStopTestL", CUsbMscPersonalityTest::PreparePersonalityStopTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "FinishPersonalityStopTestL", CUsbMscPersonalityTest::FinishPersonalityStopTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "InitializationTestL", CUsbMscPersonalityTest::InitializationTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "StateChangeNotifyTestL", CUsbMscPersonalityTest::StateChangeNotifyTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "StateChangeNotifyUndefinedTestL", CUsbMscPersonalityTest::StateChangeNotifyUndefinedTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "StateChangeNotifyStateAddressTestL", CUsbMscPersonalityTest::StateChangeNotifyStateAddressTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "ConfirmPersonalityUnloadTestL", CUsbMscPersonalityTest::ConfirmPersonalityUnloadTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "AllowDismountAfter2SecTestL", CUsbMscPersonalityTest::AllowDismountAfter2SecTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "AllowDismountTestL", CUsbMscPersonalityTest::AllowDismountTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "NotAllowDismountTestL", CUsbMscPersonalityTest::NotAllowDismountTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "AllowDismountTooLateTestL", CUsbMscPersonalityTest::AllowDismountTooLateTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ }
+
+// Add test block methods implementation here
+// -----------------------------------------------------------------------------
+// CUsbMscPersonalityTest::ExampleTestL
+// -----------------------------------------------------------------------------
+
+void CUsbMscPersonalityTest::ExampleTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+
+ if (!aParams.iTestOption1.Compare(_L( "API" )))
+ {
+ TRACE_INFO( "Api test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Api test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Api test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Api test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else if (!aParams.iTestOption1.Compare(_L( "MODULE" )))
+ {
+ TRACE_INFO( "Module test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Module test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Module test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Module test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else if (!aParams.iTestOption1.Compare(_L( "BRANCH" )))
+ {
+ TRACE_INFO( "Branch test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Branch test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Branch test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Branch test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else
+ {
+ TRACE( "Invalid test parameter" )
+ TRACE_FUNC_EXIT
+ User::Leave(KErrNotFound);
+ }
+
+ aTestResult = ETestCasePassed;
+ TRACE_FUNC_EXIT
+ }
+
+void CUsbMscPersonalityTest::InitializeTestObjectsL()
+ {
+ iActive
+ = CUsbMscPersonalityTestActiveObject::NewL(iPlugin, iLog, iParams);
+ iDismountClient = CDismountClient::NewL(iLog);
+ TRACE ( " test objects initialized " );
+ }
+
+void CUsbMscPersonalityTest::DeleteTestObjects()
+ {
+ delete iActive;
+ iActive = NULL;
+ delete iDismountClient;
+ iDismountClient = NULL;
+ TRACE ( " test objects deleted " );
+ }
+
+void CUsbMscPersonalityTest::InitializationTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+ TRACE( "checking iPlugin")
+ if (iPlugin)
+ {
+ aTestResult = ETestCasePassed;
+ }
+ else
+ {
+ TRACE( "no iplugin instance")
+ }
+
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::ExecuteDismounting()
+ {
+ iActive->PreparePersonalityStart(iRequestStatus);
+ iActive->FinishPersonalityStart(iRequestStatus);
+ iActive->PreparePersonalityStop(iRequestStatus);
+ iActive->FinishPersonalityStop(iRequestStatus);
+ }
+
+void CUsbMscPersonalityTest::PreparePersonalityStartTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+
+ iActive->PreparePersonalityStart(iRequestStatus);
+
+ TRACE_INFO( "prepare personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ aTestResult = ETestCasePassed;
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::FinishPersonalityStartTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+
+ iActive->PreparePersonalityStart(iRequestStatus);
+ TRACE_INFO( "prepare personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ iActive->FinishPersonalityStart(iRequestStatus);
+ TRACE_INFO( "finish personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+
+ iActive->PreparePersonalityStop(iRequestStatus);
+ iActive->FinishPersonalityStart(iRequestStatus);
+ User::LeaveIfError(iRequestStatus.Int());
+
+ aTestResult = ETestCasePassed;
+
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::PreparePersonalityStopTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+
+ iActive->PreparePersonalityStart(iRequestStatus);
+ TRACE_INFO( "prepare personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError( iRequestStatus.Int() );
+
+ iActive->FinishPersonalityStart(iRequestStatus);
+ TRACE_INFO( "finish personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError( iRequestStatus.Int() );
+
+ iActive->PreparePersonalityStop(iRequestStatus);
+ TRACE_INFO( "prepare personality stop status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError( iRequestStatus.Int() );
+
+ aTestResult = ETestCasePassed;
+
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::FinishPersonalityStopTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+
+ iActive->PreparePersonalityStart(iRequestStatus);
+ TRACE_INFO( "prepare personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError( iRequestStatus.Int() );
+
+ iActive->FinishPersonalityStart(iRequestStatus);
+ TRACE_INFO( "finish personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError( iRequestStatus.Int() );
+
+ iActive->PreparePersonalityStop(iRequestStatus);
+ TRACE_INFO( "prepare personality stop status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError( iRequestStatus.Int() );
+
+ iActive->FinishPersonalityStop(iRequestStatus);
+ TRACE_INFO( "finish personality stop status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError( iRequestStatus.Int() );
+
+ aTestResult = ETestCasePassed;
+
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::ConfirmPersonalityUnloadTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+
+ TRACE_INFO( "prepare personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError( iRequestStatus.Int() );
+
+ iActive->FinishPersonalityStart(iRequestStatus);
+ TRACE_INFO( "finish personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError( iRequestStatus.Int() );
+
+ iActive->ConfirmPersonalityUnload(iRequestStatus);
+ User::After(5000);
+ TRACE_INFO( "confirm personality unload status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError( iRequestStatus.Int() );
+
+ aTestResult = ETestCasePassed;
+
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::StateChangeNotifyTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+
+ TUsbDeviceState state = EUsbDeviceStateDefault;
+ iPlugin->StateChangeNotify(state);
+
+ aTestResult = ETestCasePassed;
+
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::StateChangeNotifyUndefinedTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult )
+ {
+ InitializeTestObjectsL();
+
+ TUsbDeviceState state = EUsbDeviceStateUndefined;
+ iPlugin->StateChangeNotify(state);
+
+ aTestResult = ETestCasePassed;
+
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::StateChangeNotifyStateAddressTestL( TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult )
+ {
+ InitializeTestObjectsL();
+
+ TUsbDeviceState state = EUsbDeviceStateAddress;
+ iPlugin->StateChangeNotify(state);
+
+ User::After( 2000000 );
+ iPlugin->Cancel();
+
+ aTestResult = ETestCasePassed;
+
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::AllowDismountAfter2SecTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+ iDismountClient->StartL(EAllowDismountAfter2Sec);
+ iActive->PreparePersonalityStart(iRequestStatus);
+ ExecuteDismounting();
+
+ aTestResult = ETestCasePassed;
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::AllowDismountTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+ iDismountClient->StartL(EAllowDismount);
+ iActive->PreparePersonalityStart(iRequestStatus);
+ ExecuteDismounting();
+
+ aTestResult = ETestCasePassed;
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::NotAllowDismountTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+ iDismountClient->StartL(ENotAllowDismount);
+ iActive->PreparePersonalityStart(iRequestStatus);
+ ExecuteDismounting();
+
+ aTestResult = ETestCasePassed;
+ DeleteTestObjects();
+ }
+
+void CUsbMscPersonalityTest::AllowDismountTooLateTestL(
+ TUsbMscPersonalityTestBlockParams& aParams,
+ TUsbMscPersonalityTestResult& aTestResult)
+ {
+ InitializeTestObjectsL();
+ iDismountClient->StartL(EAllowDismountTooLate);
+ iActive->PreparePersonalityStart(iRequestStatus);
+ ExecuteDismounting();
+
+ aTestResult = ETestCasePassed;
+ DeleteTestObjects();
+ }
+// Add other member functions implementation here
+
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+// [End of File] - Do not remove
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbmscpersonality/tsrc/UsbMscPersonalityTest/src/UsbMscPersonalityTest_exe.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <e32svr.h>
+#include <StifTestInterface.h>
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// ================= OTHER EXPORTED FUNCTIONS =================================
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: -
+
+ Method: E32Main
+
+ Description:
+
+ Parameters: None
+
+ Return Values: TInt: Symbian error code
+
+ Errors/Exceptions: None
+
+ Status: Draft
+
+-------------------------------------------------------------------------------
+*/
+GLDEF_C TInt E32Main()
+ {
+ _LIT( KProcessMsgStart, "New process starting" );
+ RDebug::Print( KProcessMsgStart );
+
+
+ // This starts a new session that get capabilites that is used in
+ // usbmscpersonalitytest_exe.mmp file.
+ TInt r = StartSession();
+
+ _LIT( KProcessMsgEnd, "New process ends" );
+ RDebug::Print( KProcessMsgEnd );
+
+ return r;
+
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/bmarm/UsbObexClassControllerTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/bwins/UsbObexClassControllerTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/conf/UsbObexClassControllerTest.cfg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+[StifSettings]
+CapsModifier= UsbObexClassControllerTest.exe
+[EndStifSettings]
+
+// UsbObexClassControllerTest Module - total 9 tc
+
+// UsbObexClassControllerTest Api Tests (9 tc)
+
+[Test]
+title Initialization Test
+create UsbObexClassControllerTest tester
+tester ExecuteApiTest InitializationTest
+delete tester
+[Endtest]
+
+[Test]
+title Start Test
+create UsbObexClassControllerTest tester
+tester ExecuteApiTest StartTest
+delete tester
+[Endtest]
+
+[Test]
+title Stop Test
+create UsbObexClassControllerTest tester
+tester ExecuteApiTest StopTest
+delete tester
+[Endtest]
+
+[Test]
+title InterfaceInfo Test
+create UsbObexClassControllerTest tester
+tester ExecuteApiTest InterfaceInfoTest
+delete tester
+[Endtest]
+
+[Test]
+title InterfaceLengthInfo Test
+create UsbObexClassControllerTest tester
+tester ExecuteApiTest InterfaceLengthInfoTest
+delete tester
+[Endtest]
+
+[Test]
+title NumberOfInterfacesInfo Test
+create UsbObexClassControllerTest tester
+tester ExecuteApiTest NumberOfInterfacesInfoTest
+delete tester
+[Endtest]
+
+[Test]
+title StartupPriorityInfo Test
+create UsbObexClassControllerTest tester
+tester ExecuteApiTest StartupPriorityInfoTest
+delete tester
+[Endtest]
+
+[Test]
+title StateInfo Test
+create UsbObexClassControllerTest tester
+tester ExecuteApiTest StateInfoTest
+delete tester
+[Endtest]
+
+[Test]
+title Owner Test
+create UsbObexClassControllerTest tester
+tester ExecuteApiTest OwnerTest
+delete tester
+[Endtest]
+
+// Add new api tests here
+// ...
+
+
+// UsbObexClassControllerTest Module Tests (... tc)
+
+
+// Add new module tests here
+// ...
+
+
+// UsbObexClassControllerTest Branch Tests (... tc)
+
+
+// Add new branch tests here
+// ...
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/eabi/UsbObexClassControllerTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,5 @@
+EXPORTS
+ _Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+ _ZTI27CUSBObexApiTestActiveObject @ 2 NONAME
+ _ZTV27CUSBObexApiTestActiveObject @ 3 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/group/UsbObexClassControllerTest.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2010 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: TYPE TESTCLASS
+*
+*/
+
+
+#if defined(__S60_)
+ // To get the OSEXT_LAYER_SYSTEMINCLUDE-definition
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbObexClassControllerTest.dll
+TARGETTYPE dll
+UID 0x1000008D 0x101FB3E3
+
+CAPABILITY NetworkControl LocalServices NetworkServices CommDD ProtServ
+
+DEFFILE UsbObexClassControllerTest.def
+
+MW_LAYER_SYSTEMINCLUDE
+
+USERINCLUDE ../inc
+
+SOURCEPATH ../src
+SOURCE UsbObexClassControllerTest.cpp
+SOURCE UsbObexClassControllerTestBlocks.cpp USBObexApiTestActiveObject.cpp UsbObexClassControllerTest_exe.cpp
+
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+LIBRARY stiftestengine.lib
+LIBRARY usbclasscontroller.lib
+LIBRARY ecom.lib
+
+
+LANG SC
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/group/UsbObexClassControllerTest_ats.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,62 @@
+;
+; Copyright (c) 2010 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:
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"\epoc32\release\armv5\udeb\UsbObexClassControllerTest.dll"-"c:\Sys\Bin\UsbObexClassControllerTest.dll"
+"\epoc32\release\armv5\udeb\UsbObexClassControllerTest.exe"-"c:\Sys\Bin\UsbObexClassControllerTest.exe"
+
+"..\init\UsbObexClassControllerTest_ats.ini"-"e:\testing\init\UsbObexClassControllerTest.ini"
+"..\conf\UsbObexClassControllerTest.cfg"-"e:\testing\conf\UsbObexClassControllerTest.cfg"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/group/UsbObexClassControllerTest_exe.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2010 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: TYPE TESTCLASS
+*
+*/
+
+
+#if defined(__S60_)
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbObexClassControllerTest.exe
+TARGETTYPE exe
+
+CAPABILITY NetworkControl LocalServices NetworkServices CommDD ProtServ
+
+UID 0 0xEF4892C6
+
+MW_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH ../src
+
+SOURCE UsbObexClassControllerTest_exe.cpp
+
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+
+EPOCSTACKSIZE 40960
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/group/UsbObexClassControllerTest_phone.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,62 @@
+;
+; Copyright (c) 2010 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:
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0
+[0x1028315F], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"\epoc32\release\armv5\udeb\UsbObexClassControllerTest.dll"-"c:\Sys\Bin\UsbObexClassControllerTest.dll"
+"\epoc32\release\armv5\udeb\UsbObexClassControllerTest.exe"-"c:\Sys\Bin\UsbObexClassControllerTest.exe"
+
+"..\init\UsbObexClassControllerTest_phone.ini"-"c:\testframework\testframework.ini"
+"..\conf\UsbObexClassControllerTest.cfg"-"c:\testframework\UsbObexClassControllerTest.cfg"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2010 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: ?Description
+*
+*/
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTEXPORTS
+
+PRJ_EXPORTS
+
+PRJ_TESTMMPFILES
+UsbObexClassControllerTest.mmp
+UsbObexClassControllerTest_exe.mmp
+
+PRJ_MMPFILES
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/group/build_sis_ats.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,23 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+call sbs -c armv5_udeb clean
+call sbs -c armv5_udeb.test
+call sbs -c armv5_udeb.test freeze
+call sbs -c armv5_udeb.test
+
+call makesis UsbObexClassControllerTest_ats.pkg
+call signsis UsbObexClassControllerTest_ats.sis UsbObexClassControllerTest_ats.sisx x:\rd.cer x:\rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/group/build_sis_phone.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,25 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+
+call sbs -c armv5_udeb clean
+call sbs -c armv5_udeb.test
+call sbs -c armv5_udeb.test freeze
+call sbs -c armv5_udeb.test
+
+
+call makesis UsbObexClassControllerTest_phone.pkg
+call signsis UsbObexClassControllerTest_phone.sis UsbObexClassControllerTest_phone.sisx x:\rd.cer x:\rd-key.pem
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/inc/USBObexApiTestActiveObject.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2010 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 USBOBEXAPITESTACTIVEOBJECT_H_
+#define USBOBEXAPITESTACTIVEOBJECT_H_
+
+#include <e32base.h>
+#include <StifLogger.h>
+#include <CUsbClassControllerPlugIn.h>
+
+class CStifLogger;
+class CUsbClassControllerPlugIn;
+
+class CUSBObexApiTestActiveObject : public CActive
+{
+public:
+ static CUSBObexApiTestActiveObject* NewL
+ (CStifLogger* aLog,
+ CUsbClassControllerPlugIn* aUsbClassControllerPlugIn);
+ virtual ~CUSBObexApiTestActiveObject();
+
+ void Start();
+ void Stop();
+
+private:
+ CUSBObexApiTestActiveObject
+ (CStifLogger* aLog,
+ CUsbClassControllerPlugIn* aUsbClassControllerPlugIn);
+ void RunL();
+ void DoCancel();
+ void ConstructL();
+
+
+private:
+ CStifLogger* iLog;
+ CUsbClassControllerPlugIn* iUsbClassControllerPlugIn;
+ TUsbServiceState iUsbServiceState;
+};
+
+#endif /*USBOBEXAPITESTACTIVEOBJECT_H_*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/inc/UsbObexClassControllerTest.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,240 @@
+/*
+* Copyright (c) 2010 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: ?Description
+*
+*/
+
+
+
+
+#ifndef USBOBEXCLASSCONTROLLERTEST_H
+#define USBOBEXCLASSCONTROLLERTEST_H
+
+// INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+
+#include "USBObexApiTestActiveObject.h"
+#include <musbclasscontrollernotify.h>
+#include <cusbclasscontrollerplugin.h>
+#include <usbobex.h>
+#include <usb_std.h>
+#include <ecom/ecom.h>
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+#define TEST_CLASS_VERSION_MAJOR 0
+#define TEST_CLASS_VERSION_MINOR 0
+#define TEST_CLASS_VERSION_BUILD 0
+
+// Logging path
+_LIT( KUsbObexClassControllerTestLogPath, "\\logs\\testframework\\UsbObexClassControllerTest\\" );
+
+// Logging path for ATS - for phone builds comment this line
+//_LIT( KUsbObexClassControllerTestLogPath, "e:\\testing\\stiflogs\\" );
+
+// Log file
+_LIT( KUsbObexClassControllerTestLogFile, "UsbObexClassControllerTest.txt" );
+_LIT( KUsbObexClassControllerTestLogFileWithTitle, "UsbObexClassControllerTest_[%S].txt" );
+
+// FUNCTION PROTOTYPES
+//?type ?function_name(?arg_list);
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+class CUsbObexClassControllerTest;
+class CUsbClassControllerIterator;
+
+// DATA TYPES
+//enum ?declaration
+
+enum TUsbObexClassControllerTestResult
+ {
+ ETestCasePassed,
+ ETestCaseFailed
+ };
+
+//typedef ?declaration
+//extern ?data_type;
+
+// CLASS DECLARATION
+
+/**
+* CUsbObexClassControllerTest test class for STIF Test Framework TestScripter.
+* ?other_description_lines
+*
+* @lib ?library
+* @since ?Series60_version
+*/
+NONSHARABLE_CLASS(CUsbObexClassControllerTest) :
+ public CScriptBase,
+ public MUsbClassControllerNotify
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CUsbObexClassControllerTest* NewL( CTestModuleIf& aTestModuleIf );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbObexClassControllerTest();
+
+ public: // New functions
+
+ /**
+ * ?member_description.
+ * @since ?Series60_version
+ * @param ?arg1 ?description
+ * @return ?description
+ */
+ //?type ?member_function( ?type ?arg1 );
+
+ public: // Functions from base classes
+
+ /**
+ * From CScriptBase Runs a script line.
+ * @since ?Series60_version
+ * @param aItem Script line containing method name and parameters
+ * @return Symbian OS error code
+ */
+ virtual TInt RunMethodL( CStifItemParser& aItem );
+
+ /**
+ * overrider of pure virtual functions from MUsbClassControllerNotify class
+ */
+ CUsbClassControllerIterator* UccnGetClassControllerIteratorL();
+ void UccnError(TInt aError);
+
+ protected: // New functions
+
+ /**
+ * ?member_description.
+ * @since ?Series60_version
+ * @param ?arg1 ?description
+ * @return ?description
+ */
+ //?type ?member_function( ?type ?arg1 );
+
+ protected: // Functions from base classes
+
+ /**
+ * From ?base_class ?member_description
+ */
+ //?type ?member_function();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CUsbObexClassControllerTest( CTestModuleIf& aTestModuleIf );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ // Prohibit copy constructor if not deriving from CBase.
+ // ?classname( const ?classname& );
+ // Prohibit assigment operator if not deriving from CBase.
+ // ?classname& operator=( const ?classname& );
+
+ /**
+ * Frees all resources allocated from test methods.
+ * @since ?Series60_version
+ */
+ void Delete();
+
+ /**
+ * Test methods are listed below.
+ */
+
+ virtual TInt ExecuteApiTest( CStifItemParser& aItem );
+ virtual TInt ExecuteModuleTest( CStifItemParser& aItem );
+ virtual TInt ExecuteBranchTest( CStifItemParser& aItem );
+
+ /**
+ * Method used to log version of test class
+ */
+ void SendTestClassVersion();
+
+ //ADD NEW METHOD DEC HERE
+ //[TestMethods] - Do not remove
+
+ void DoExecuteApiTestL( TPtrC aApiTestName, TUsbObexClassControllerTestResult& aTestResult );
+
+ void ExampleApiTestL( TUsbObexClassControllerTestResult& aTestResult );
+
+ void DoExecuteModuleTestL( TPtrC aModuleTestName, TUsbObexClassControllerTestResult& aTestResult );
+
+ void ExampleModuleTestL( TUsbObexClassControllerTestResult& aTestResult );
+
+ void DoExecuteBranchTestL( TPtrC aBranchTestName, TUsbObexClassControllerTestResult& aTestResult );
+
+ void ExampleBranchTestL( TUsbObexClassControllerTestResult& aTestResult );
+
+ void InitializeTestObjectL();
+ void DeleteTestObject();
+ TInt InitializationTestL( TUsbObexClassControllerTestResult& aTestResult );
+ TInt StartTestL( TUsbObexClassControllerTestResult& aTestResult );
+ TInt StopTestL( TUsbObexClassControllerTestResult& aTestResult );
+ TInt InterfaceInfoTestL( TUsbObexClassControllerTestResult& aTestResult );
+ TInt InterfaceLengthInfoTestL( TUsbObexClassControllerTestResult& aTestResult );
+ TInt NumberOfInterfacesInfoTestL( TUsbObexClassControllerTestResult& aTestResult );
+ TInt StartupPriorityInfoTestL( TUsbObexClassControllerTestResult& aTestResult );
+ TInt StateInfoTestL( TUsbObexClassControllerTestResult& aTestResult );
+ TInt OwnerTestL( TUsbObexClassControllerTestResult& aTestResult );
+ TInt CompareTestL( TUsbObexClassControllerTestResult& aTestResult );
+
+ public: // Data
+ // ?one_line_short_description_of_data
+ //?data_declaration;
+
+ protected: // Data
+ // ?one_line_short_description_of_data
+ //?data_declaration;
+
+ private: // Data
+
+ // ?one_line_short_description_of_data
+ //?data_declaration;
+
+ CUsbClassControllerPlugIn* iUsbClassControllerPlugIn;
+ CActiveScheduler* iScheduler;
+ TRequestStatus iRequestStatus;
+ TUsbServiceState iUsbServiceState;
+
+ // Reserved pointer for future extension
+ //TAny* iReserved;
+
+ public: // Friend classes
+ //?friend_class_declaration;
+ protected: // Friend classes
+ //?friend_class_declaration;
+ private: // Friend classes
+ //?friend_class_declaration;
+
+ };
+
+#endif // USBOBEXCLASSCONTROLLERTEST_H
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/init/UsbObexClassControllerTest_ats.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,235 @@
+#
+# Copyright (c) 2010 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:
+#
+
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+# + XML, Test report will be xml type, for example 'TestReport.xml'.
+# Note, that xml format is available only when output is set to FILE.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= e:\testing\logs\
+TestReportFileName= UsbObexClassControllerTest_TestReport
+
+TestReportFormat= TXT # Possible values: TXT, HTML or XML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbObexClassControllerTestUsbObexClassControllerTestUsbObexClassControllerTest
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= e:\testing\conf\UsbObexClassControllerTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbObexClassControllerTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbObexClassControllerTest used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleUsbObexClassControllerTest used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined
+# Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+# will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+#CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/init/UsbObexClassControllerTest_phone.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,235 @@
+#
+# Copyright (c) 2010 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:
+#
+
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+# + XML, Test report will be xml type, for example 'TestReport.xml'.
+# Note, that xml format is available only when output is set to FILE.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= c:\logs\testframework\UsbObexClassControllerTest\
+TestReportFileName= testreport
+
+TestReportFormat= TXT # Possible values: TXT, HTML or XML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbObexClassControllerTestUsbObexClassControllerTestUsbObexClassControllerTest
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= c:\testframework\UsbObexClassControllerTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbObexClassControllerTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbObexClassControllerTest used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleUsbObexClassControllerTest used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined
+# Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+# will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+#CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/src/USBObexApiTestActiveObject.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,107 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include "USBObexApiTestActiveObject.h"
+
+// -----------------------------------------------------------------------------
+// CUSBObexApiTestActiveObject::CUSBObexApiTestActiveObject
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CUSBObexApiTestActiveObject::CUSBObexApiTestActiveObject( CStifLogger* aLog,
+ CUsbClassControllerPlugIn* aUsbClassControllerPlugIn ) :
+ CActive( EPriorityStandard )
+ {
+ iUsbClassControllerPlugIn = aUsbClassControllerPlugIn;
+ iLog = aLog;
+ }
+
+// Destructor
+CUSBObexApiTestActiveObject::~CUSBObexApiTestActiveObject()
+ {
+ Cancel();
+ }
+
+// ---------------------------------------------------------------------------
+// CUSBObexApiTestActiveObject::RunL
+// ---------------------------------------------------------------------------
+//
+void CUSBObexApiTestActiveObject::RunL()
+ {
+ iLog->Log( _L("ActiveTestObject::RunL"));
+ CActiveScheduler::Stop();
+ iLog->Log( _L("ActiveScheduler Stopped"));
+ iUsbServiceState = iUsbClassControllerPlugIn -> State();
+ }
+
+// -----------------------------------------------------------------------------
+// CUSBObexApiTestActiveObject::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CUSBObexApiTestActiveObject* CUSBObexApiTestActiveObject::NewL(
+ CStifLogger* aLog, CUsbClassControllerPlugIn* aUsbClassControllerPlugIn )
+ {
+ CUSBObexApiTestActiveObject* self = new ( ELeave )CUSBObexApiTestActiveObject( aLog, aUsbClassControllerPlugIn );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CUSBObexApiTestActiveObject::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CUSBObexApiTestActiveObject::ConstructL()
+ {
+ CActiveScheduler::Add( this );
+ }
+
+// ---------------------------------------------------------------------------
+// CUSBObexApiTestActiveObject::DoCancel
+// ---------------------------------------------------------------------------
+//
+void CUSBObexApiTestActiveObject::DoCancel()
+ {
+ iLog->Log( _L("ActiveTestObject::DoCancel"));
+ }
+
+// ---------------------------------------------------------------------------
+// CUSBObexApiTestActiveObject::Start
+// ---------------------------------------------------------------------------
+//
+void CUSBObexApiTestActiveObject::Start()
+ {
+ iUsbClassControllerPlugIn -> Start( iStatus );
+ SetActive();
+ iLog->Log( _L("Obex Controller Started"));
+ }
+
+// ---------------------------------------------------------------------------
+// CUSBObexApiTestActiveObject::Stop
+// ---------------------------------------------------------------------------
+//
+void CUSBObexApiTestActiveObject::Stop()
+ {
+ iUsbClassControllerPlugIn -> Stop( iStatus );
+ SetActive();
+ iLog->Log( _L("Obex Controller Stopped"));
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/src/UsbObexClassControllerTest.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,202 @@
+/*
+* Copyright (c) 2010 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: ?Description
+*
+*/
+
+
+
+
+// INCLUDE FILES
+#include <Stiftestinterface.h>
+#include "UsbObexClassControllerTest.h"
+#include <SettingServerClient.h>
+
+// EXTERNAL DATA STRUCTURES
+//extern ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+// ?value_n: ?description_line1
+// ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+ ?arg_type arg, // ?description
+ ?arg_type arg) // ?description
+ {
+
+ ?code // ?comment
+
+ // ?comment
+ ?code
+ }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::CUsbObexClassControllerTest
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CUsbObexClassControllerTest::CUsbObexClassControllerTest(
+ CTestModuleIf& aTestModuleIf ):
+ CScriptBase( aTestModuleIf )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::ConstructL()
+ {
+ //Read logger settings to check whether test case name is to be
+ //appended to log file name.
+ RSettingServer settingServer;
+ TInt ret = settingServer.Connect();
+ if(ret != KErrNone)
+ {
+ User::Leave(ret);
+ }
+ // Struct to StifLogger settigs.
+ TLoggerSettings loggerSettings;
+ // Parse StifLogger defaults from STIF initialization file.
+ ret = settingServer.GetLoggerSettings(loggerSettings);
+ if(ret != KErrNone)
+ {
+ User::Leave(ret);
+ }
+ // Close Setting server session
+ settingServer.Close();
+
+ TFileName logFileName;
+
+ if(loggerSettings.iAddTestCaseTitle)
+ {
+ TName title;
+ TestModuleIf().GetTestCaseTitleL(title);
+ logFileName.Format(KUsbObexClassControllerTestLogFileWithTitle, &title);
+ }
+ else
+ {
+ logFileName.Copy(KUsbObexClassControllerTestLogFile);
+ }
+
+ iLog = CStifLogger::NewL( KUsbObexClassControllerTestLogPath,
+ logFileName,
+ CStifLogger::ETxt,
+ CStifLogger::EFile,
+ EFalse );
+
+ SendTestClassVersion();
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CUsbObexClassControllerTest* CUsbObexClassControllerTest::NewL(
+ CTestModuleIf& aTestModuleIf )
+ {
+ CUsbObexClassControllerTest* self = new (ELeave) CUsbObexClassControllerTest( aTestModuleIf );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ return self;
+
+ }
+
+// Destructor
+CUsbObexClassControllerTest::~CUsbObexClassControllerTest()
+ {
+
+ // Delete resources allocated from test methods
+ Delete();
+
+ // Delete logger
+ delete iLog;
+
+ }
+
+//-----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::SendTestClassVersion()
+ {
+ TVersion moduleVersion;
+ moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+ moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+ moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+
+ TFileName moduleName;
+ moduleName = _L("UsbObexClassControllerTest.dll");
+
+ TBool newVersionOfMethod = ETrue;
+ TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL(
+ CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+ {
+
+ return ( CScriptBase* ) CUsbObexClassControllerTest::NewL( aTestModuleIf );
+
+ }
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/src/UsbObexClassControllerTestBlocks.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,681 @@
+/*
+* Copyright (c) 2010 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: ?Description
+*
+*/
+
+
+
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include "UsbObexClassControllerTest.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+const TUid KCSrcsInterfaceUid = {0x101F7C8C};
+const TInt KObexNumInterfaces = 2;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+// ?value_n: ?description_line1
+// ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+ ?arg_type arg, // ?description
+ ?arg_type arg) // ?description
+ {
+
+ ?code // ?comment
+
+ // ?comment
+ ?code
+ }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::Delete()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::RunMethodL(
+ CStifItemParser& aItem )
+ {
+
+ static TStifFunctionInfo const KFunctions[] =
+ {
+ //ADD NEW ENTRY HERE
+ // [test cases entries] - Do not remove
+ ENTRY( "ExecuteApiTest", CUsbObexClassControllerTest::ExecuteApiTest ),
+ ENTRY( "ExecuteModuleTest", CUsbObexClassControllerTest::ExecuteModuleTest ),
+ ENTRY( "ExecuteBranchTest", CUsbObexClassControllerTest::ExecuteBranchTest ),
+ };
+
+ const TInt count = sizeof( KFunctions ) /
+ sizeof( TStifFunctionInfo );
+
+ return RunInternalL( KFunctions, count, aItem );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::ExecuteApiTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::ExecuteApiTest( CStifItemParser& aItem )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExecuteApiTest" );
+
+ TInt res;
+ TUsbObexClassControllerTestResult testResult = ETestCaseFailed;
+ TPtrC apiTestName( KNullDesC );
+
+ res = aItem.GetString( _L( "ExecuteApiTest" ), apiTestName );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "GetString failed with value: %d" ), res );
+ return res;
+ }
+
+ TRAP( res, DoExecuteApiTestL( apiTestName, testResult ) );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "DoExecuteApiTestL error: %d"), res );
+ return res;
+ }
+
+ STIF_ASSERT_EQUALS( ETestCasePassed, testResult );
+ STIF_LOG( "[STIF_LOG] Test case passed" );
+ STIF_LOG( "[STIF_LOG] <<<ExecuteApiTest" );
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::DoExecuteApiTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::DoExecuteApiTestL( TPtrC aApiTestName, TUsbObexClassControllerTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>DoExecuteApiTestL" );
+ if ( !aApiTestName.Compare( _L( "ExampleApiTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ ExampleApiTestL( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "InitializationTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ InitializationTestL( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "StartTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ StartTestL( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "StopTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ StopTestL( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "InterfaceInfoTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ InterfaceInfoTestL( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "InterfaceLengthInfoTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ InterfaceLengthInfoTestL( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "NumberOfInterfacesInfoTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ NumberOfInterfacesInfoTestL( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "StartupPriorityInfoTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ StartupPriorityInfoTestL( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "StateInfoTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ StateInfoTestL( aTestResult );
+ }
+ else if ( !aApiTestName.Compare( _L( "OwnerTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: ExampleApiTest" );
+ OwnerTestL( aTestResult );
+ }
+ else
+ {
+ STIF_LOG( "[STIF_LOG] Api test type: not found" );
+ User::Leave( KErrNotFound );
+ }
+ STIF_LOG( "[STIF_LOG] <<<DoExecuteApiTestL" );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::ExecuteApiTest
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::ExampleApiTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExampleApiTestL" );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG( "[STIF_LOG] <<<ExampleApiTestL" );
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::ExecuteModuleTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::ExecuteModuleTest( CStifItemParser& aItem )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExecuteModuleTest" );
+
+ TInt res;
+ TUsbObexClassControllerTestResult testResult;
+ TPtrC moduleTestName( KNullDesC );
+
+ res = aItem.GetString( _L( "ExecuteModuleTest" ), moduleTestName );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "GetString failed with value: %d" ), res );
+ return res;
+ }
+
+ TRAP( res, DoExecuteModuleTestL( moduleTestName, testResult ) );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "DoExecuteModuleTestL error: %d"), res );
+ return res;
+ }
+
+ STIF_ASSERT_EQUALS( ETestCasePassed, testResult );
+ STIF_LOG( "[STIF_LOG] Test case passed" );
+ STIF_LOG( "[STIF_LOG] <<<ExecuteModuleTest" );
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::DoExecuteModuleTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::DoExecuteModuleTestL( TPtrC aModuleTestName, TUsbObexClassControllerTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>DoExecuteModuleTestL" );
+ if ( !aModuleTestName.Compare( _L( "ExampleModuleTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Module test type: ExampleModuleTest" );
+ ExampleModuleTestL( aTestResult );
+ }
+ else
+ {
+ STIF_LOG( "[STIF_LOG] Module test type: not found" );
+ User::Leave( KErrNotFound );
+ }
+ STIF_LOG( "[STIF_LOG] <<<DoExecuteModuleTestL" );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::ExampleModuleTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::ExampleModuleTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExampleModuleTestL" );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG( "[STIF_LOG] <<<ExampleModuleTestL" );
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::ExecuteBranchTest
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::ExecuteBranchTest( CStifItemParser& aItem )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExecuteBranchTest" );
+
+ TInt res;
+ TUsbObexClassControllerTestResult testResult;
+ TPtrC branchTestName( KNullDesC );
+
+ res = aItem.GetString( _L( "ExecuteBranchTest" ), branchTestName );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "GetString failed with value: %d" ), res );
+ return res;
+ }
+
+ TRAP( res, DoExecuteBranchTestL( branchTestName, testResult ) );
+ if ( res != KErrNone )
+ {
+ iLog -> Log( _L( "DoExecuteBranchTestL error: %d"), res );
+ return res;
+ }
+
+ STIF_ASSERT_EQUALS( ETestCasePassed, testResult );
+ STIF_LOG( "[STIF_LOG] Test case passed" );
+ STIF_LOG( "[STIF_LOG] <<<ExecuteBranchTest" );
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::DoExecuteBranchTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::DoExecuteBranchTestL( TPtrC aBranchTestName, TUsbObexClassControllerTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>DoExecuteBranchTestL" );
+ if ( !aBranchTestName.Compare( _L( "ExampleBranchTest" ) ) )
+ {
+ STIF_LOG( "[STIF_LOG] Branch test type: ExampleBranchTest" );
+ ExampleBranchTestL( aTestResult );
+ }
+ else
+ {
+ STIF_LOG( "[STIF_LOG] Branch test type: not found" );
+ User::Leave( KErrNotFound );
+ }
+ STIF_LOG( "[STIF_LOG] <<<DoExecuteBranchTestL" );
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::ExampleBranchTestL
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::ExampleBranchTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ STIF_LOG( "[STIF_LOG] >>>ExampleBranchTestL" );
+
+ aTestResult = ETestCasePassed;
+
+ STIF_LOG( "[STIF_LOG] <<<ExampleBranchTestL" );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::InitializationTestL
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::InitializationTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ InitializeTestObjectL();
+ STIF_ASSERT_NOT_NULL( iUsbClassControllerPlugIn );
+ DeleteTestObject();
+
+ // Case was executed
+ iLog->Log( _L("Test Case Passed"));
+ aTestResult = ETestCasePassed;
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::StartTestL
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::StartTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ iUsbServiceState = EUsbServiceStarted;
+ InitializeTestObjectL();
+ CUSBObexApiTestActiveObject* activeTestObject =
+ CUSBObexApiTestActiveObject::NewL( iLog, iUsbClassControllerPlugIn );
+ activeTestObject -> Start();
+ CActiveScheduler::Start();
+ iLog->Log( _L("UsbServiceState = %d, expected %d"),
+ iUsbServiceState, iUsbClassControllerPlugIn -> State());
+ STIF_ASSERT_EQUALS( iUsbServiceState, iUsbClassControllerPlugIn -> State() );
+ DeleteTestObject();
+ activeTestObject -> Cancel();
+
+ // Case was executed
+ iLog->Log( _L("Test Case Passed"));
+ aTestResult = ETestCasePassed;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::StopTestL
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::StopTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ iUsbServiceState = EUsbServiceIdle;
+ InitializeTestObjectL();
+ CUSBObexApiTestActiveObject* activeTestObject =
+ CUSBObexApiTestActiveObject::NewL( iLog, iUsbClassControllerPlugIn );
+ activeTestObject -> Start();
+ CActiveScheduler::Start();
+ activeTestObject -> Stop();
+ CActiveScheduler::Start();
+ iLog->Log( _L("UsbServiceState = %d, expected %d"),
+ iUsbServiceState, iUsbClassControllerPlugIn -> State());
+ STIF_ASSERT_EQUALS( iUsbServiceState, iUsbClassControllerPlugIn -> State() );
+ DeleteTestObject();
+ activeTestObject -> Cancel();
+
+ // Case was executed
+ iLog->Log( _L("Test Case Passed"));
+ aTestResult = ETestCasePassed;
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::InterfaceInfoTestL
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::InterfaceInfoTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ TUsbDescriptor aDescriptorInfo;
+ RImplInfoPtrArray implInfoArray;
+ CleanupClosePushL(implInfoArray);
+ TEComResolverParams resolverParams;
+ TInt numberOfInterfaces;
+
+ InitializeTestObjectL();
+ CUSBObexApiTestActiveObject* activeTestObject =
+ CUSBObexApiTestActiveObject::NewL( iLog, iUsbClassControllerPlugIn );
+ activeTestObject -> Start();
+ CActiveScheduler::Start();
+ iUsbClassControllerPlugIn -> GetDescriptorInfo( aDescriptorInfo );
+ resolverParams.SetDataType( KSrcsTransportUSB );
+ resolverParams.SetWildcardMatch( EFalse );
+ REComSession::ListImplementationsL( KCSrcsInterfaceUid, resolverParams, implInfoArray );
+ numberOfInterfaces = implInfoArray.Count() * KObexNumInterfaces;
+
+ iLog->Log( _L("Number of interfaces = %d, expected %d"),
+ numberOfInterfaces, aDescriptorInfo.iNumInterfaces);
+ STIF_ASSERT_EQUALS( numberOfInterfaces, aDescriptorInfo.iNumInterfaces );
+
+ DeleteTestObject();
+ activeTestObject -> Cancel();
+ CleanupStack::PopAndDestroy(&implInfoArray);
+
+ // Case was executed
+ iLog->Log( _L("Test Case Passed"));
+ aTestResult = ETestCasePassed;
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::InterfaceLengthInfoTestL
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::InterfaceLengthInfoTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ TUsbDescriptor aDescriptorInfo;
+ RImplInfoPtrArray implInfoArray;
+ CleanupClosePushL(implInfoArray);
+ TEComResolverParams resolverParams;
+ TInt interfaceLength = 0;
+
+ InitializeTestObjectL();
+ CUSBObexApiTestActiveObject* activeTestObject =
+ CUSBObexApiTestActiveObject::NewL( iLog, iUsbClassControllerPlugIn );
+ activeTestObject -> Start();
+ CActiveScheduler::Start();
+ iUsbClassControllerPlugIn -> GetDescriptorInfo( aDescriptorInfo );
+ resolverParams.SetDataType( KSrcsTransportUSB );
+ resolverParams.SetWildcardMatch( EFalse );
+ REComSession::ListImplementationsL( KCSrcsInterfaceUid, resolverParams, implInfoArray );
+
+ iLog->Log( _L("Interface Length = %d, expected %d"),
+ interfaceLength, aDescriptorInfo.iLength);
+ STIF_ASSERT_EQUALS( interfaceLength, aDescriptorInfo.iLength );
+
+ DeleteTestObject();
+ activeTestObject -> Cancel();
+ CleanupStack::PopAndDestroy(&implInfoArray);
+
+ // Case was executed
+ iLog->Log( _L("Test Case Passed"));
+ aTestResult = ETestCasePassed;
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::NumberOfInterfacesInfoTestL
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::NumberOfInterfacesInfoTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ TUsbDescriptor aDescriptorInfo;
+ RImplInfoPtrArray implInfoArray;
+ CleanupClosePushL(implInfoArray);
+ TEComResolverParams resolverParams;
+ TInt interfaceLength = 0;
+
+ InitializeTestObjectL();
+ CUSBObexApiTestActiveObject* activeTestObject =
+ CUSBObexApiTestActiveObject::NewL( iLog, iUsbClassControllerPlugIn );
+ activeTestObject -> Start();
+ CActiveScheduler::Start();
+ iUsbClassControllerPlugIn -> GetDescriptorInfo( aDescriptorInfo );
+ resolverParams.SetDataType( KSrcsTransportUSB );
+ resolverParams.SetWildcardMatch( EFalse );
+ REComSession::ListImplementationsL( KCSrcsInterfaceUid, resolverParams, implInfoArray );
+
+ iLog->Log( _L("Number of Interfaces this class controller is responsible for = %d, expected %d"),
+ interfaceLength, aDescriptorInfo.iNumInterfaces);
+ STIF_ASSERT_EQUALS( interfaceLength, aDescriptorInfo.iLength );
+
+ DeleteTestObject();
+ activeTestObject -> Cancel();
+ CleanupStack::PopAndDestroy(&implInfoArray);
+
+ // Case was executed
+ iLog->Log( _L("Test Case Passed"));
+ aTestResult = ETestCasePassed;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::StartupPriorityInfoTestL
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::StartupPriorityInfoTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ TInt priority = 0;
+
+ InitializeTestObjectL();
+ CUSBObexApiTestActiveObject* activeTestObject =
+ CUSBObexApiTestActiveObject::NewL( iLog, iUsbClassControllerPlugIn );
+ activeTestObject -> Start();
+ CActiveScheduler::Start();
+ priority = iUsbClassControllerPlugIn -> StartupPriority();
+
+ iLog->Log( _L("StartupPriorityInfoTestL:> Priority = %d "),priority );
+
+ DeleteTestObject();
+ activeTestObject -> Cancel();
+
+ // Case was executed
+ iLog->Log( _L("StartupPriorityInfoTestL:> Test Case Passed"));
+ aTestResult = ETestCasePassed;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::StateInfoTestL
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::StateInfoTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ TUsbServiceState state;
+
+ InitializeTestObjectL();
+ CUSBObexApiTestActiveObject* activeTestObject =
+ CUSBObexApiTestActiveObject::NewL( iLog, iUsbClassControllerPlugIn );
+ activeTestObject -> Start();
+ CActiveScheduler::Start();
+ state = iUsbClassControllerPlugIn -> State();
+
+ iLog->Log( _L("StateTestL:> State = 0x%x "), state );
+
+ DeleteTestObject();
+ activeTestObject -> Cancel();
+
+ // Case was executed
+ iLog->Log( _L("StateInfoTestL:> Test Case Passed"));
+ aTestResult = ETestCasePassed;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::OwnerTestL
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::OwnerTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ InitializeTestObjectL();
+ CUSBObexApiTestActiveObject* activeTestObject =
+ CUSBObexApiTestActiveObject::NewL( iLog, iUsbClassControllerPlugIn );
+ activeTestObject -> Start();
+ CActiveScheduler::Start();
+ (iUsbClassControllerPlugIn -> Owner()).UccnGetClassControllerIteratorL();
+
+ (iUsbClassControllerPlugIn -> Owner()).UccnError( KErrNone );
+
+ DeleteTestObject();
+ activeTestObject -> Cancel();
+
+ // Case was executed
+ iLog->Log( _L("OwnerTestL:> Test Case Passed"));
+ aTestResult = ETestCasePassed;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::CompareTestL
+// -----------------------------------------------------------------------------
+//
+TInt CUsbObexClassControllerTest::CompareTestL( TUsbObexClassControllerTestResult& aTestResult )
+ {
+ InitializeTestObjectL();
+
+ CUSBObexApiTestActiveObject* activeTestObject =
+ CUSBObexApiTestActiveObject::NewL( iLog, iUsbClassControllerPlugIn );
+ activeTestObject -> Start();
+ CActiveScheduler::Start();
+
+ //result = iUsbClassControllerPlugIn -> Compare( this, iUsbClassControllerPlugIn );
+ //iLog->Log( _L("CompareTestL:> Comparition Result = %d "),result );
+
+ DeleteTestObject();
+ activeTestObject -> Cancel();
+
+ // Case was executed
+ iLog->Log( _L("CompareTestL:> Test Case Passed"));
+ aTestResult = ETestCasePassed;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::InitializeTestObjectL
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::InitializeTestObjectL()
+ {
+ iUsbClassControllerPlugIn = CUsbClassControllerPlugIn::NewL( TUid::Uid( 0x10281F2A ), *this);
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::DeleteTestObject
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::DeleteTestObject()
+ {
+ delete iUsbClassControllerPlugIn;
+ iUsbClassControllerPlugIn = NULL;
+ REComSession::FinalClose();
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::UccnGetClassControllerIteratorL
+// -----------------------------------------------------------------------------
+//
+CUsbClassControllerIterator* CUsbObexClassControllerTest::UccnGetClassControllerIteratorL()
+ {
+ iLog->Log( _L("get class controller iterator"));
+ return (CUsbClassControllerIterator *)NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbObexClassControllerTest::UccnError
+// -----------------------------------------------------------------------------
+//
+void CUsbObexClassControllerTest::UccnError( TInt aError )
+ {
+ iLog->Log( _L("class controller iterator error: %d"), aError );
+ }
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+// [End of File] - Do not remove
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbclasses/usbobexclasscontroller/tsrc/UsbObexClassControllerTest/src/UsbObexClassControllerTest_exe.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 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: ?Description
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <e32svr.h>
+#include <StifTestInterface.h>
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// ================= OTHER EXPORTED FUNCTIONS =================================
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: -
+
+ Method: E32Main
+
+ Description:
+
+ Parameters: None
+
+ Return Values: TInt: Symbian error code
+
+ Errors/Exceptions: None
+
+ Status: Draft
+
+-------------------------------------------------------------------------------
+*/
+GLDEF_C TInt E32Main()
+ {
+ _LIT( KProcessMsgStart, "New process starting" );
+ RDebug::Print( KProcessMsgStart );
+
+
+ // This starts a new session that get capabilites that is used in
+ // UsbObexClassControllerTest_exe.mmp file.
+ TInt r = StartSession();
+
+ _LIT( KProcessMsgEnd, "New process ends" );
+ RDebug::Print( KProcessMsgEnd );
+
+ return r;
+
+ }
+
+// End of File
--- a/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/group/USBLocodPluginTest_phone.pkg Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/group/USBLocodPluginTest_phone.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -44,7 +44,7 @@
; None
; Install files
-"\epoc32\release\armv5\urel\USBLocodPluginTest.dll"-"c:\Sys\Bin\USBLocodPluginTest.dll"
+"\epoc32\release\armv5\udeb\USBLocodPluginTest.dll"-"c:\Sys\Bin\USBLocodPluginTest.dll"
"..\init\USBLocodPluginTest_phone.ini"-"c:\testframework\testframework.ini"
"..\conf\USBLocodPluginTest.cfg"-"c:\testframework\USBLocodPluginTest.cfg"
--- a/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/group/build_sis_ats.bat Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/group/build_sis_ats.bat Thu Aug 19 10:54:11 2010 +0300
@@ -14,7 +14,10 @@
@rem Description:
@rem
-call bldmake bldfiles
-call abld test build armv5
+call sbs -c armv5_udeb clean
+call sbs -c armv5_udeb.test
+call sbs -c armv5_udeb.test freeze
+call sbs -c armv5_udeb.test
+
call makesis USBLocodPluginTest_ats.pkg
-call signsis USBLocodPluginTest_ats.sis USBLocodPluginTest_ats.sisx rd.cer rd-key.pem
+call signsis USBLocodPluginTest_ats.sis USBLocodPluginTest_ats.sisx x:\rd.cer x:\rd-key.pem
--- a/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/group/build_sis_phone.bat Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/group/build_sis_phone.bat Thu Aug 19 10:54:11 2010 +0300
@@ -14,7 +14,10 @@
@rem Description:
@rem
-call bldmake bldfiles
-call abld test build armv5
+call sbs -c armv5_udeb clean
+call sbs -c armv5_udeb.test
+call sbs -c armv5_udeb.test freeze
+call sbs -c armv5_udeb.test
+
call makesis USBLocodPluginTest_phone.pkg
-call signsis USBLocodPluginTest_phone.sis USBLocodPluginTest_phone.sisx rd.cer rd-key.pem
+call signsis USBLocodPluginTest_phone.sis USBLocodPluginTest_phone.sisx x:\rd.cer x:\rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/Bmarm/UsbOtgWatcherTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/Bwins/UsbOtgWatcherTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/conf/UsbOtgWatcherTest.cfg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+[StifSettings]
+CapsModifier= UsbOtgWatcherTest.exe
+[EndStifSettings]
+
+// UsbOtgWatcherTest Module - total 10 tc
+
+// UsbOtgWatcherTest Api Tests (1 tc)
+
+[Test]
+title SetupTearDown
+create UsbOtgWatcherTest tester
+tester SetupTearDown API
+delete tester
+[Endtest]
+
+
+// Add new api tests here
+// ...
+
+
+// UsbOtgWatcherTest Module Tests (9 tc)
+
+// Add new module tests here
+// ...
+
+[Test]
+title PinOnTest_Success
+create UsbOtgWatcherTest tester
+tester PinOnTest_Success MODULE
+delete tester
+[Endtest]
+
+
+[Test]
+title PinOffTest_Success
+create UsbOtgWatcherTest tester
+tester PinOffTest_Success MODULE
+delete tester
+[Endtest]
+
+[Test]
+title PinOnTest_EmptyCable
+create UsbOtgWatcherTest tester
+tester PinOnTest_EmptyCable MODULE
+delete tester
+[Endtest]
+
+[Test]
+title PinOnTest_TryStartError
+create UsbOtgWatcherTest tester
+tester PinOnTest_TryStartError MODULE
+delete tester
+[Endtest]
+
+[Test]
+title PinOnTest_BusRequestError
+create UsbOtgWatcherTest tester
+tester PinOnTest_BusRequestError MODULE
+delete tester
+[Endtest]
+
+[Test]
+title DeviceAttached_BadHubPostion
+create UsbOtgWatcherTest tester
+tester DeviceAttached_BadHubPostion MODULE
+delete tester
+[Endtest]
+
+[Test]
+title DeviceAttached_TooMuchRequired
+create UsbOtgWatcherTest tester
+tester DeviceAttached_TooMuchRequired MODULE
+delete tester
+[Endtest]
+
+[Test]
+title DeviceAttached_SupportedDevice
+create UsbOtgWatcherTest tester
+tester DeviceAttached_SupportedDevice MODULE
+delete tester
+[Endtest]
+
+[Test]
+title DeviceDetached_SupportedDevice
+create UsbOtgWatcherTest tester
+tester DeviceDetached_SupportedDevice MODULE
+delete tester
+[Endtest]
+
+
+
+// UsbOtgWatcherTest Branch Tests (... tc)
+
+// Add new branch tests here
+// ...
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/eabi/UsbOtgWatcherTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,23 @@
+EXPORTS
+ _Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+ _ZN14CUsbOtgWatcher4NewLER4RUsb @ 2 NONAME
+ _ZN14CUsbOtgWatcher9IsDeviceAEv @ 3 NONAME
+ _ZTI14CUsbOtgWatcher @ 4 NONAME
+ _ZTI16CUsbNotifManager @ 5 NONAME
+ _ZTIN16CUsbNoteNotifier15CNotifierActiveE @ 6 NONAME
+ _ZTV14CUsbOtgWatcher @ 7 NONAME
+ _ZTV16CUsbNotifManager @ 8 NONAME
+ _ZTVN16CUsbNoteNotifier15CNotifierActiveE @ 9 NONAME
+ _ZTI16CUsbVBusObserver @ 10 NONAME
+ _ZTI17CUsbIdPinObserver @ 11 NONAME
+ _ZTI20CUsbOtgStateObserver @ 12 NONAME
+ _ZTI23CUsbBusActivityObserver @ 13 NONAME
+ _ZTI31CUsbMessageNotificationObserver @ 14 NONAME
+ _ZTI33CUsbHostEventNotificationObserver @ 15 NONAME
+ _ZTV16CUsbVBusObserver @ 16 NONAME
+ _ZTV17CUsbIdPinObserver @ 17 NONAME
+ _ZTV20CUsbOtgStateObserver @ 18 NONAME
+ _ZTV23CUsbBusActivityObserver @ 19 NONAME
+ _ZTV31CUsbMessageNotificationObserver @ 20 NONAME
+ _ZTV33CUsbHostEventNotificationObserver @ 21 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/group/UsbOtgWatcherTest.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,100 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+#if defined(__S60_)
+ // To get the MW_LAYER_SYSTEMINCLUDE-definition
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbOtgWatcherTest.dll
+TARGETTYPE dll
+UID 0x1000008D 0x101FB3E3
+
+CAPABILITY CommDD NetworkControl WriteDeviceData NetworkServices LocalServices ProtServ
+VENDORID VID_DEFAULT
+
+DEFFILE UsbOtgWatcherTest.def
+
+MW_LAYER_SYSTEMINCLUDE
+MACRO STIF_STUB
+MACRO STIF
+
+//includes for stubbing
+SYSTEMINCLUDE /epoc32/include/mw/stubsrv/
+SYSTEMINCLUDE /epoc32/include/mw/taf/
+
+USERINCLUDE ../inc
+SOURCEPATH ../src
+
+SOURCE UsbOtgWatcherTest.cpp
+SOURCE UsbOtgWatcherTestBlocks.cpp
+
+// Mock classes (used for emulation of real ones)
+SOURCE mockcusbidpinobserver.cpp
+SOURCE mockcusbvbusobserver.cpp
+SOURCE mockcusbotgstateobserver.cpp
+SOURCE mockcusbhosteventnotificationobserver.cpp
+SOURCE mockcusbmessagenotificationobserver.cpp
+SOURCE mockcusbbusactivityobserver.cpp
+SOURCE mockrusb.cpp
+SOURCE mockcusbtimer.cpp
+SOURCE mockcusbnotifmanager.cpp
+
+// real classes to be tested
+SOURCEPATH ../../../src
+USERINCLUDE ../../../inc
+
+SOURCE cusbotgwatcher.cpp
+SOURCE cusbstate.cpp
+SOURCE cusbstatehostabase.cpp
+SOURCE cusbstatehostainitiate.cpp
+SOURCE cusbstatehostahost.cpp
+SOURCE cusbstatehostaperipheral.cpp
+SOURCE cusbstatehosthandle.cpp
+SOURCE cusbservicecontrol.cpp
+SOURCE cusbnotifier.cpp
+SOURCE cusbwarningnotifier.cpp
+SOURCE CUsbNoteNotifier.cpp
+SOURCE CUsbStateHostHandleDropping.cpp
+SOURCE CUsbStateHostDelayNotAttachedHandle.cpp
+SOURCE CUsbStateHostDelayAttachedHandle.cpp
+SOURCE CUsbStateHostUndefined.cpp
+SOURCE cusbstatehostdelayhandle.cpp
+
+
+
+
+//standart lib for stif testing
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+LIBRARY stiftestengine.lib
+
+//lib for stubbing
+LIBRARY apibehavior.lib
+LIBRARY stubber.lib
+
+//lib for component testing
+LIBRARY usbdescriptors.lib
+LIBRARY usbdi_utils.lib
+LIBRARY aknnotify.lib
+
+LANG SC
+
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/group/UsbOtgWatcherTest_ats.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,69 @@
+;
+; Copyright (c) 2010 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: Installation file for STIF
+;
+
+
+;
+; Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"UsbOtgWatcherTest"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 5.2
+[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name;
+:"Nokia"
+
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"/epoc32/release/armv5/udeb/UsbOtgWatcherTest.dll"-"C:/Sys/Bin/UsbOtgWatcherTest.dll"
+"/epoc32/release/armv5/udeb/UsbOtgWatcherTest.exe"-"C:/Sys/Bin/UsbOtgWatcherTest.exe"
+
+"../conf/UsbOtgWatcherTest.cfg"-"E:/testing/conf/UsbOtgWatcherTest.cfg"
+"../init/UsbOtgWatcherTest_ats.ini"-"E:/testing/init/UsbOtgWatcherTest.ini"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/group/UsbOtgWatcherTest_exe.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+#if defined(__S60_)
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbOtgWatcherTest.exe
+TARGETTYPE exe
+UID 0 0xEF4892C6
+
+CAPABILITY CommDD NetworkControl WriteDeviceData NetworkServices LocalServices ProtServ
+VENDORID VID_DEFAULT
+
+MW_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH ../src
+
+SOURCE UsbOtgWatcherTest_exe.cpp
+
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+
+EPOCSTACKSIZE 40960
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/group/UsbOtgWatcherTest_phone.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,64 @@
+
+; Copyright (c) 2010 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: Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"UsbOtgWatcherTest"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 5.2
+[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name;
+:"Nokia"
+
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"/epoc32/release/armv5/udeb/UsbOtgWatcherTest.dll"-"C:/Sys/Bin/UsbOtgWatcherTest.dll"
+"/epoc32/release/armv5/udeb/UsbOtgWatcherTest.exe"-"C:/Sys/Bin/UsbOtgWatcherTest.exe"
+
+"../conf/UsbOtgWatcherTest.cfg"-"C:/testframework/UsbOtgWatcherTest.cfg"
+"../init/UsbOtgWatcherTest_phone.ini"-"C:/testframework/testframework.ini"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTEXPORTS
+
+../inc/usbmandll_stub.h /epoc32/include/mw/taf/usbmandll_stub.h
+
+
+PRJ_TESTMMPFILES
+UsbOtgWatcherTest.mmp
+UsbOtgWatcherTest_exe.mmp
+
+PRJ_MMPFILES
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/group/build_sis_ats.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,20 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+
+call sbs -c armv5.test
+call makesis UsbOtgWatcherTest_ats.pkg
+call signsis UsbOtgWatcherTest_ats.sis UsbOtgWatcherTest_ats.sisx rd.cer rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/group/build_sis_phone.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,20 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+
+call sbs -c armv5.test
+call makesis UsbOtgWatcherTest_phone.pkg
+call signsis UsbOtgWatcherTest_phone.sis UsbOtgWatcherTest_phone.sisx rd.cer rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/UsbOtgWatcherTest.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,274 @@
+/*
+* Copyright (c) 2010 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 USBOTGWATCHERTEST_H
+#define USBOTGWATCHERTEST_H
+
+// INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+#include "stifassertmacros.h"
+// INCLUDES FOR STUBS
+#include <stubber.h>
+#include <apibehavior.h>
+#include <usbmandll_stub.h>
+// INCLUDES FOR TEST
+#include <usbstates.h>
+#include <usbuinotif.h>
+#include "cusbotgwatcher.h"
+#include "cusbnotifier.h"
+#include "cusbstatehostainitiate.h"
+#include "cusbstatehosthandle.h"
+#include "cusbservicecontrol.h"
+
+
+// CONSTANTS
+// Logging path
+_LIT( KUsbOtgWatcherTestLogPath, "\\logs\\testframework\\UsbOtgWatcherTest\\" );
+
+// Logging path for ATS - for phone builds comment this line
+//_LIT( KUsbOtgWatcherTestLogPath, "e:\\testing\\stiflogs\\" );
+
+// Log file
+_LIT( KUsbOtgWatcherTestLogFile, "UsbOtgWatcherTest.txt" );
+_LIT( KUsbOtgWatcherTestLogFileWithTitle, "UsbOtgWatcherTest_[%S].txt" );
+
+// MACROS
+#define TEST_CLASS_VERSION_MAJOR 0
+#define TEST_CLASS_VERSION_MINOR 0
+#define TEST_CLASS_VERSION_BUILD 0
+
+// Macros used to extract test block parameters
+#define TESTENTRY( A, B )\
+ if ( !iTestBlockParams.iTestBlockName.Compare( TPtrC( ( TText* ) L ##A ) ) )\
+ { iTestBlockFunction = &B; iTestBlockFound = ETrue; }\
+ if ( !iTestBlockParams.iTestBlockName.Compare( TPtrC( ( TText* ) L ##A ) ) )
+
+#define TESTPARAM( A, B )\
+ GetTestBlockParamL( ( TGetTestBlockParamOperation ) A, ( TTestBlockParamName ) B );
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CUsbOtgWatcher;
+class RUsb;
+
+// DATA TYPES
+
+// Enum type used to determine test block execution result
+enum TUsbOtgWatcherTestResult
+ {
+ ETestCasePassed,
+ ETestCaseFailed
+ };
+
+// Enum type indicating test block parameter which should be used to store
+// data extracted from test script
+enum TTestBlockParamName
+ {
+ eTestOption1,
+ eTestOption2,
+ eTestOption3,
+ eTestIntOption1,
+ eTestIntOption2,
+ eTestIntOption3,
+ eTestCharOption1,
+ eTestCharOption2,
+ eTestCharOption3
+ };
+
+// Enum type used to indicate which get parameter function should be used
+enum TGetTestBlockParamOperation
+ {
+ eGetString,
+ eGetInt,
+ eGetChar
+ };
+
+// CLASS DECLARATION
+/**
+* TUsbOtgWatcherTestBlockParams test class for storing test block parameters.
+*/
+NONSHARABLE_CLASS( TUsbOtgWatcherTestBlockParams )
+ {
+ public:
+ TPtrC iTestBlockName;
+
+ TPtrC iTestOption1;
+ TPtrC iTestOption2;
+ TPtrC iTestOption3;
+
+ TInt iTestIntOption1;
+ TInt iTestIntOption2;
+ TInt iTestIntOption3;
+
+ TChar iTestCharOption1;
+ TChar iTestCharOption2;
+ TChar iTestCharOption3;
+ };
+
+/**
+* CUsbOtgWatcherTest test class for STIF Test Framework TestScripter.
+*/
+NONSHARABLE_CLASS( CtUsbOtgWatcher ) : public CScriptBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CtUsbOtgWatcher* NewL( CTestModuleIf& aTestModuleIf );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CtUsbOtgWatcher();
+
+ public: // New functions
+ public: // Functions from base classes
+
+ /**
+ * From CScriptBase Runs a script line.
+ * @since ?Series60_version
+ * @param aItem Script line containing method name and parameters
+ * @return Symbian OS error code
+ */
+ virtual TInt RunMethodL( CStifItemParser& aItem );
+
+ protected: // New functions
+ protected: // Functions from base classes
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CtUsbOtgWatcher( CTestModuleIf& aTestModuleIf );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Frees all resources allocated from test methods.
+ * @since ?Series60_version
+ */
+ void TestDelete();
+
+ /**
+ * Constructs all test resources for test methods.
+ */
+ void TestConstructL();
+
+ /**
+ * Extracts test block parameters from script file
+ */
+ void TestBlocksInfoL();
+
+ /**
+ * Executes test block
+ */
+ TInt ExecuteTestBlock( CStifItemParser& aItem );
+
+ /**
+ * Executes proper get parameter function indicated by its arguments
+ */
+ void GetTestBlockParamL( TGetTestBlockParamOperation aOperation,
+ TTestBlockParamName aParamName );
+
+ /**
+ * Method used to log version of test class
+ */
+ void SendTestClassVersion();
+
+ // ADD NEW METHOD DEC HERE
+ // [TestMethods] - Do not remove
+ void ExampleTestL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ void SetupTearDownL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ void PinOnTest_SuccessL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ void PinOffTest_SuccessL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ void PinOnTest_EmptyCableL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ void PinOnTest_TryStartErrorL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ void PinOnTest_BusRequestErrorL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ void DeviceAttached_BadHubPostionL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ void DeviceAttached_TooMuchRequiredL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ void DeviceAttached_SupportedDeviceL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ void DeviceDetached_SupportedDeviceL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult );
+
+ //others method
+ void SetupL();
+ void TearDown();
+
+ public: // Data
+ protected: // Data
+ private: // Data
+
+ // Member object used to store test block parameters
+ TUsbOtgWatcherTestBlockParams iTestBlockParams;
+ TTestResult iResult;
+
+ // Used to indicate if test block with specified parameters exist
+ TBool iTestBlockFound;
+
+ // Function pointer used to call proper test block methods
+ void ( CtUsbOtgWatcher::*iTestBlockFunction )
+ ( TUsbOtgWatcherTestBlockParams&, TUsbOtgWatcherTestResult& );
+
+ // Not own
+ CStifItemParser* iItem;
+ CStubber * iStubber;
+ RUsb* iUsbMan;
+ CUsbOtgWatcher* iWatcher;
+
+ // Reserved pointer for future extension
+ //TAny* iReserved;
+
+ // ADD NEW DATA DEC HERE
+
+
+ public: // Friend classes
+ protected: // Friend classes
+ private: // Friend classes
+
+ };
+#endif // USBOTGWATCHERTEST_H
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/mockcusbbusactivityobserver.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,108 @@
+/*
+* Copyright (c) 2010 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 C_USBBUSACTIVITYOBSERVER_H
+#define C_USBBUSACTIVITYOBSERVER_H
+
+#include <e32base.h>
+
+#include "tassertbase.h"
+
+class MUsbBusActivityObserver
+ {
+public:
+
+ virtual void BusIdleL() = 0;
+ virtual void BusActiveL() = 0;
+ };
+
+/**
+ * Class observes OTG State property, see usbotgdefs.h
+ *
+ * @lib ?library
+ * @since S60 ?S60_version *** for example, S60 v3.0
+ */
+class CUsbBusActivityObserver : public TAssertBase
+ {
+ friend class CtUsbOtgWatcher;
+ friend class CUsbOtgWatcherTest;
+
+public:
+
+ enum TBusActivity
+ {
+ EBusIdle = 0,
+ EBusActive = 1
+ };
+
+ /**
+ * Two-phased constructor.
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ */
+ // ?IMPORT_C
+ static CUsbBusActivityObserver* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbBusActivityObserver();
+
+ /**
+ * ?description
+ *
+ * @since S60 ?S60_version
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ * @return ?description
+ */
+ // ?IMPORT_C
+ TBusActivity BusActivity();
+
+ /**
+ * ?description
+ *
+ * @since S60 ?S60_version
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ * @return ?description
+ */
+ void SubscribeL(MUsbBusActivityObserver&);
+
+ void UnsubscribeL(MUsbBusActivityObserver&);
+
+ void TriggerBusIdleL();
+
+ void TriggerBusActiveL();
+
+private:
+
+ CUsbBusActivityObserver();
+
+ void ConstructL();
+
+private:
+ // data
+
+ // The observer reports state changes to own observers
+ // Owns
+ MUsbBusActivityObserver* iObserver;
+
+ TInt iBusActivity;
+ };
+
+#endif // C_USBOTGSTATEOBSERVER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/mockcusbhosteventnotificationobserver.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2010 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 C_USBHOSTEVENTNOTIFICATIONOBSERVER_H
+#define C_USBHOSTEVENTNOTIFICATIONOBSERVER_H
+
+#include <e32base.h>
+#include <usbhostdefs.h>
+
+#include <StifTestModule.h>
+#include <StifLogger.h>
+
+#include "tassertbase.h"
+
+class RUsb;
+
+class MUsbHostEventNotificationObserver
+ {
+public:
+
+ virtual void DeviceAttachedL(TDeviceEventInformation) = 0;
+ virtual void DeviceDetachedL(TDeviceEventInformation) = 0;
+ virtual void DriverLoadSuccessL(TDeviceEventInformation) = 0;
+ virtual void DriverLoadPartialSuccessL(TDeviceEventInformation) = 0;
+ virtual void DriverLoadFailureL(TDeviceEventInformation) = 0;
+
+ };
+
+/**
+ * Class observes USB Notifications
+ *
+ * @lib ?library
+ * @since S60 ?S60_version *** for example, S60 v3.0
+ */
+class CUsbHostEventNotificationObserver : public TAssertBase
+ {
+ friend class CtUsbOtgWatcher;
+ friend class CUsbOtgWatcherTest;
+
+public:
+
+ /**
+ * Two-phased constructor.
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ */
+ // ?IMPORT_C
+ static CUsbHostEventNotificationObserver* NewL(RUsb* aUsb);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbHostEventNotificationObserver();
+
+ void SubscribeL(MUsbHostEventNotificationObserver&);
+
+ void UnsubscribeL(MUsbHostEventNotificationObserver&);
+
+ void TriggerDeviceAttachedL(TDeviceEventInformation eventInfo);
+ void TriggerDeviceDetachedL(TDeviceEventInformation eventInfo);
+ void TriggerDriverLoadSuccessL(TDeviceEventInformation eventInfo);
+ void TriggerDriverLoadPartialSuccessL(TDeviceEventInformation eventInfo);
+ void TriggerDriverLoadFailureL(TDeviceEventInformation eventInfo);
+
+private:
+
+ CUsbHostEventNotificationObserver(RUsb* aUsb);
+
+ void ConstructL();
+
+private:
+ // data
+
+ // The observer reports changes to own observers
+ // Owns
+ MUsbHostEventNotificationObserver* iObserver;
+
+ // Notifications come from USB
+ // Not own
+ RUsb* iUsb;
+ };
+
+#endif // C_USBHOSTEVENTNOTIFICATIONOBSERVER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/mockcusbidpinobserver.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* Copyright (c) 2010 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 MOCK_C_USBIDPINOBSERVER_H
+#define MOCK_C_USBIDPINOBSERVER_H
+
+#include <e32base.h>
+
+#include <StifTestModule.h>
+#include <StifLogger.h>
+#include <e32property.h>
+
+#include "tassertbase.h"
+
+class CStifLogger;
+
+class MUsbIdPinObserver
+ {
+public:
+
+ virtual void IdPinOffL() = 0;
+ virtual void IdPinOnL() = 0;
+
+ };
+
+/**
+ * Class observes ID-PIN property
+ *
+ * @lib ?library
+ * @since S60 ?S60_version *** for example, S60 v3.0
+ */
+class CUsbIdPinObserver : public TAssertBase
+ {
+ friend class CtUsbOtgWatcher;
+ friend class CUsbOtgWatcherTest;
+public:
+ enum TState
+ {
+ EIdPinOff = 0,
+ EIdPinOn = 1
+ };
+
+ /**
+ * Two-phased constructor.
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ */
+ // ?IMPORT_C
+ static CUsbIdPinObserver* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbIdPinObserver();
+
+ /**
+ * ?description
+ *
+ * @since S60 ?S60_version
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ * @return ?description
+ */
+ // ?IMPORT_C
+ TState IdPin() /* const! read comment in impl*/;
+
+ /**
+ * ?description
+ *
+ * @since S60 ?S60_version
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ * @return ?description
+ */
+
+ void SubscribeL(MUsbIdPinObserver&);
+
+ void UnsubscribeL(MUsbIdPinObserver&);
+
+ void TriggerPinOnL();
+
+ void TriggerPinOffL();
+
+private:
+
+ CUsbIdPinObserver();
+
+ void ConstructL();
+
+private:
+ // data
+ // The observer reports state changes to its own observers
+ // Own
+ MUsbIdPinObserver* iObserver;
+ TInt iIdPinOn;
+ CActiveSchedulerWait * iWait;
+ };
+
+#endif // MOCK_C_USBIDPINOBSERVER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/mockcusbmessagenotificationobserver.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2010 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 C_USBMESSAGENOTIFICATIONOBSERVER_H
+#define C_USBMESSAGENOTIFICATIONOBSERVER_H
+
+#include <e32base.h>
+
+#include "tassertbase.h"
+
+class RUsb;
+
+class MUsbMessageNotificationObserver
+ {
+public:
+
+ virtual void MessageNotificationReceivedL(TInt) = 0;
+ virtual void BadHubPositionL() = 0;
+ virtual void VBusErrorL() = 0;
+ virtual void SrpReceivedL() = 0;
+ virtual void SessionRequestedL() = 0;
+ };
+
+/**
+ * Class observes USB Notifications
+ *
+ * @lib ?library
+ * @since S60 ?S60_version *** for example, S60 v3.0
+ */
+class CUsbMessageNotificationObserver : public TAssertBase
+ {
+ friend class CtUsbOtgWatcher;
+ friend class CUsbOtgWatcherTest;
+
+public:
+
+ /**
+ * Two-phased constructor.
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ */
+ // ?IMPORT_C
+ static CUsbMessageNotificationObserver* NewL(RUsb* aUsb);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbMessageNotificationObserver();
+
+ void SubscribeL(MUsbMessageNotificationObserver&);
+
+ void UnsubscribeL(MUsbMessageNotificationObserver&);
+
+ void TriggerMessageNotificationReceivedL(TInt);
+ void TriggerBadHubPositionL();
+ void TriggerVBusErrorL();
+ void TriggerSrpReceivedL();
+ void TriggerSessionRequestedL();
+
+private:
+
+ CUsbMessageNotificationObserver(RUsb* aUsb);
+
+ void ConstructL();
+
+private:
+ // data
+
+ // The observer reports to own observers
+ // Owns
+ MUsbMessageNotificationObserver* iObserver;
+
+ // Notifications come from USB
+ // Not own
+ RUsb* iUsb;
+
+ // Info from notification comes to this member
+ TInt iMessage;
+
+ };
+
+#endif // C_USBMESSAGENOTIFICATIONOBSERVER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/mockcusbnotifmanager.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* Copyright (c) 2010 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 C_USBNOTIFMANAGER_H
+#define C_USBNOTIFMANAGER_H
+
+#include <e32base.h>
+
+#include <StifTestModule.h>
+#include <StifLogger.h>
+
+#include "tassertbase.h"
+#include "cusbnotifier.h"
+#include "cusbwarningnotifier.h"
+#include "cusbotgwatcher.h"
+
+#define INVALID_VALUE NULL
+
+// forward declaration
+class CUsbWaitNotifier;
+class CUsbNotifier;
+
+class MWaitNotifierObserver
+{
+public:
+
+ // feedback to observer
+ virtual void WaitNotifierCompletedL(TInt aFeedback) = 0;
+};
+
+/**
+ * Function of the class is own and share RNotifier, own list of CWaitNotifier(s),
+ * show notifiers, which are synchronous, and cancel it with a delay
+ *
+ * @lib ?library
+ * @since S60 ?S60_version *** for example, S60 v3.0
+ */
+class CUsbNotifManager : public TAssertBase
+ {
+friend class CtUsbOtgWatcher;
+ friend class CUsbOtgWatcherTest;
+
+public:
+ static CUsbNotifManager* NewL(CUsbOtgWatcher& aOtgWatcher);
+
+ virtual ~CUsbNotifManager();
+
+ void ShowNotifierL(TUid aCat, TUint aNotifId, MWaitNotifierObserver* aObserver = NULL );
+
+ void BlinkIndicatorL(TBool aBlinking = ETrue);
+
+ void ShowIndicatorL(TBool aVisible = ETrue);
+
+ void CloseAllNotifiers();
+
+ TBool GetUsbIconBlinking() { return iUsbIconBlinking; };
+
+private:
+
+ CUsbNotifManager();
+
+ void ConstructL();
+
+ // call back. Notifier show is over
+ void NotifierShowCompletedL(CUsbNotifier& aWaitNotifier, TInt aResult, TInt aFeedback);
+
+private: // data
+ TUid iCat;
+ TUint iNotifId;
+ MWaitNotifierObserver* iObserver;
+
+ TBool iUsbIconBlinking;
+ TBool iUsbIconShown;
+ };
+
+#endif // C_USBNOTIFMANAGER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/mockcusbotgstateobserver.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2010 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 C_USBOTGSTATEOBSERVER_H
+#define C_USBOTGSTATEOBSERVER_H
+
+#include <e32base.h>
+#include <usbotgdefs.h>
+
+#include <StifTestModule.h>
+#include <StifLogger.h>
+
+#include "tassertbase.h"
+
+class MUsbOtgStateObserver
+ {
+public:
+
+ virtual void AIdleL() = 0;
+ virtual void AHostL() = 0;
+ virtual void APeripheralL() = 0;
+ virtual void AVBusErrorL() = 0;
+ virtual void BIdleL() = 0;
+ virtual void BPeripheralL() = 0;
+ virtual void BHostL() = 0;
+ };
+
+/**
+ * Class observes OTG State property, see usbotgdefs.h
+ *
+ * @lib ?library
+ * @since S60 ?S60_version *** for example, S60 v3.0
+ */
+class CUsbOtgStateObserver : public TAssertBase
+ {
+ friend class CtUsbOtgWatcher;
+ friend class CUsbOtgWatcherTest;
+
+public:
+
+ /**
+ * Two-phased constructor.
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ */
+ // ?IMPORT_C
+ static CUsbOtgStateObserver* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbOtgStateObserver();
+
+ /**
+ * ?description
+ *
+ * @since S60 ?S60_version
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ * @return ?description
+ */
+ // ?IMPORT_C
+ TUsbOtgState OtgState();
+
+ /**
+ * ?description
+ *
+ * @since S60 ?S60_version
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ * @return ?description
+ */
+ void SubscribeL(MUsbOtgStateObserver&);
+
+ void UnsubscribeL(MUsbOtgStateObserver&);
+
+ void TriggerAIdleL();
+ void TriggerAHostL();
+ void TriggerAPeripheralL();
+ void TriggerAVBusErrorL();
+ void TriggerBIdleL();
+ void TriggerBPeripheralL();
+ void TriggerBHostL();
+
+private:
+
+ CUsbOtgStateObserver();
+
+ void ConstructL();
+
+private:
+ // data
+
+ // The observer reports state changes to own observers
+ // Owns
+ MUsbOtgStateObserver* iObserver;
+
+ TInt iOtgState;
+ };
+
+#endif // C_USBOTGSTATEOBSERVER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/mockcusbtimer.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2010 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 C_USBTIMER_H
+#define C_USBTIMER_H
+
+#include <e32base.h>
+
+#include <StifTestModule.h>
+#include <StifLogger.h>
+
+#include "tassertbase.h"
+
+class CUsbTimer;
+
+/**
+ * timer ids for usbotgwatcher
+ */
+enum TUsbTimerId
+ {
+ EDeviceAttachmentTimer,
+ EInactiveTimer,
+ EIconBlinkingTimer,
+ ETooMuchPowerRequiredTimer,
+ EDriversNotFoundTimer
+ };
+
+
+class MUsbTimerObserver
+ {
+ friend class CtUsbOtgWatcher;
+ friend class CUsbOtgWatcherTest;
+public:
+
+ virtual void TimerElapsedL(TUsbTimerId aTimerId) = 0;
+ };
+
+// Wrapper class, will report to MUsbTimerObserver once time is over
+// Name CUsbTimer is given due to CTimer name already used
+NONSHARABLE_CLASS(CUsbTimer) : public TAssertBase
+ {
+public:
+
+ /**
+ * Two-phased constructor
+ *
+ * @param aTimeOver pointer to a call back function. Called when time is over.
+ */
+ static CUsbTimer* NewL(MUsbTimerObserver& aObserver, TUsbTimerId aTimerId);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbTimer();
+
+ // calls RunL after aMilliseconds
+ void After(TInt aMilliseconds);
+
+ //cancels timer
+ void Cancel();
+
+ TBool IsActive();
+
+ void TriggerTimerElapsedL();
+
+public:
+
+ // from base class CActive
+
+ void RunL();
+
+ TInt RunError( TInt /*aError*/);
+
+ void DoCancel();
+
+private:
+
+ CUsbTimer(MUsbTimerObserver& aObserver, TUsbTimerId aTimerId);
+
+ void ConstructL();
+
+private: // data
+
+ MUsbTimerObserver* iObserver;
+ TBool iActive;
+ TUsbTimerId iTimerId;
+ };
+
+#endif // C_USBTIMER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/mockcusbvbusobserver.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2010 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 C_USBVBUSOBSERVER_H
+#define C_USBVBUSOBSERVER_H
+
+#include <e32base.h>
+
+#include <StifTestModule.h>
+#include <StifLogger.h>
+
+#include "tassertbase.h"
+
+class RUsb;
+
+class MUsbVBusObserver
+ {
+public:
+
+ void virtual VBusDownL() = 0;
+ void virtual VBusUpL() = 0;
+
+ };
+
+/**
+ * Class observes VBUS property
+ *
+ * @lib ?library
+ * @since S60 ?S60_version *** for example, S60 v3.0
+ */
+class CUsbVBusObserver : public TAssertBase
+ {
+ friend class CtUsbOtgWatcher;
+ friend class CUsbOtgWatcherTest;
+
+public:
+ enum TState
+ {
+ EVBusDown = 0,
+ EVBusUp = 1
+ };
+
+ /**
+ * Two-phased constructor.
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ */
+ // ?IMPORT_C
+ static CUsbVBusObserver* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbVBusObserver();
+
+ /**
+ * ?description
+ *
+ * @since S60 ?S60_version
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ * @return ?description
+ */
+ // ?IMPORT_C
+ TState VBus() /* const! read comment in impl*/;
+
+ /**
+ * ?description
+ *
+ * @since S60 ?S60_version
+ * @param ?arg1 ?description
+ * @param ?arg2 ?description
+ * @return ?description
+ */
+
+ void SubscribeL(MUsbVBusObserver&);
+
+ void UnsubscribeL(MUsbVBusObserver&);
+
+ void SetRUsb(RUsb* aRUsb);
+
+ void TriggerVBusUpL();
+
+ void TriggerVBusDownL();
+private:
+
+ CUsbVBusObserver();
+
+ void ConstructL();
+
+private:
+ // data
+ RUsb* iUsb;
+
+ // The observer reports state changes to own observers
+ // Own
+ MUsbVBusObserver* iObserver;
+
+ };
+
+#endif // C_USBVBUSOBSERVER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/mockusbman.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,152 @@
+/*
+* Copyright (c) 2010 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 __USBMAN_H__
+#define __USBMAN_H__
+
+//#ifndef R_USB_H
+//#define R_USB_H
+
+#include <usbhostdefs.h>
+
+#include <StifTestModule.h>
+#include <StifLogger.h>
+
+#include "tassertbase.h"
+#include <usbstates.h>
+
+//enum TUsbMockServiceState
+// {
+// EUsbServiceStateIdle = 0x01,
+// EUsbServiceStateStarting = 0x02,
+// EUsbServiceStateStarted = 0x04,
+// EUsbServiceStateStopping = 0x08,
+// EUsbServiceStateFatalError = 0x10
+// };
+
+class RUsb : public TAssertBase
+ {
+
+ // Request types, the interest of which can be cancelled by clients
+ enum TUsbReqType
+ {
+ EStart,
+ EStop,
+ ETryStart,
+ ETryStop
+ };
+
+public:
+ static RUsb* NewL();
+
+ ~RUsb();
+ // from base class MUsb
+ /**
+ */
+ void TryStart(TInt aPersonalityId, TRequestStatus& aStatus);
+
+ /**
+ */
+ void StartCancel(TRequestStatus& aStatus);
+
+ /**
+ */
+ void TryStop(TRequestStatus& aStatus);
+
+ /**
+ */
+ void MessageNotification(TRequestStatus& aStatus, TInt& aMessage);
+
+ /**
+ */
+ void MessageNotificationCancel();
+
+ /**
+ */
+ void HostEventNotification(TRequestStatus& aStatus,
+ TDeviceEventInformation& aDeviceInformation);
+
+ /**
+ */
+ void HostEventNotificationCancel();
+
+ /**
+ */
+ TInt EnableFunctionDriverLoading();
+
+ /**
+ */
+ void DisableFunctionDriverLoading();
+
+ /**
+ */
+ TInt BusRequest();
+
+ /**
+ */
+ TInt BusRespondSrp();
+
+ /**
+ */
+ TInt BusClearError();
+
+ /**
+ */
+ TInt BusDrop();
+
+ void ServiceStateNotification(TUsbServiceState &aState, TRequestStatus &aStatus);
+
+ TInt GetCurrentPersonalityId(TInt &aPersonalityId);
+
+ TInt CancelInterest(TUsbReqType aMessageId); // to pending op. of usb service state
+
+ void ServiceStateNotificationCancel();
+
+ TInt GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& aDescriptor);
+
+ // from base class RSessionBase
+ /**
+ */
+ void Close();
+
+ //Mock methods
+ void SetTryStartError(TInt aError);
+ void SetBusRequestError(TInt aError);
+ void SetUsbServiceState(TUsbServiceState aUsbServiceState);
+ void SetCurrentPersonality(TInt aPersonality);
+
+ TBool GetVBusUp();
+
+ TInt GetServiceState(TUsbServiceState& aState);
+private:
+ RUsb();
+
+ void ConstructL();
+
+private: // data
+ TBool iBusCleared;
+ TBool iBusRequested;
+ TBool iServiceStateNotificationRequested;
+
+ TInt iTryStartError;
+ TInt iBusRequestError;
+ TInt iCurrentPersonalityId;
+
+ TUsbServiceState iUsbServiceState;
+ };
+
+#endif // __USBMAN_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/stifassertmacros.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2010 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 STIFASSERT_MACRO_H
+#define STIFASSERT_MACRO_H
+
+#ifdef __STIF_ASSERT_SHARED
+#undef __STIF_ASSERT_SHARED
+/*********************************************************************************
+ * Assert Macros
+ *********************************************************************************/
+#define __STIF_ASSERT_SHARED( aFunction, aMessage ) \
+ if(!aFunction) \
+ { \
+ iLog->Log( aMessage, __STIF_DBG_FILE__, __LINE__ );\
+ iResult.SetResult( KErrGeneral, _L("Testcase failed"));\
+ return;\
+ }
+#endif
+
+#ifdef __STIF_ASSERT_SHARED_DESC
+#undef __STIF_ASSERT_SHARED_DESC
+#define __STIF_ASSERT_SHARED_DESC( aFunction, aMessage, aDesc ) \
+ if(!aFunction) \
+ { \
+ iLog->Log( aMessage, __STIF_DBG_FILE__, __LINE__ );\
+ iResult.SetResult( KErrGeneral, aDesc );\
+ return;\
+ } \
+ else \
+ { \
+ iResult.SetResult( KErrNone, aDesc ); \
+ }
+#endif
+
+#ifdef STIF_ASSERT_PANIC_DESC
+#undef STIF_ASSERT_PANIC_DESC
+
+#define STIF_ASSERT_PANIC_DESC( aPanicCode, aStatement, aDescription ) \
+ { \
+ TestModuleIf().SetExitReason( CTestModuleIf::EPanic, aPanicCode ); \
+ iResult.SetResult(KErrNone, aDescription); \
+ aStatement; \
+ }
+#endif
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/tassertbase.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2010 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 TASSERTBASE_H
+#define TASSERTBASE_H
+
+#include <StifTestModule.h>
+#include <StifLogger.h>
+
+class TAssertBase
+ {
+public:
+ // Pointer to logger
+ // Not own
+ CStifLogger * iLog;
+
+ // Test result
+ TTestResult iResult;
+
+ void SetStifLogger(CStifLogger* aLog)
+ {
+ iLog = aLog;
+ }
+
+ TBool IsTestResultNoneError()
+ {
+ return iResult.iResult == KErrNone;
+ }
+ };
+
+#endif //ASSERTBASE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/testdebug.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 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 TESTDEBUG_H_
+#define TESTDEBUG_H_
+
+// INCLUDES
+#include <e32debug.h>
+#include <e32def.h>
+
+// CONSTANTS
+_LIT8(KStifTestPrefix8, "[STIF_LOG] ");
+_LIT( KStifTestPrefix, "[STIF_LOG] ");
+_LIT8( KStifEntryPrefix8, ">>> %S" );
+_LIT8( KStifExitPrefix8, "<<< %S" );
+
+const TInt KMaxLogLineLength = 512;
+typedef TBuf8< KMaxLogLineLength > TLogBuf8;
+typedef TBuf16< KMaxLogLineLength > TLogBuf16;
+
+// CLASS DECLARATION
+NONSHARABLE_CLASS( TTestLogger )
+ {
+public:
+ static inline TLogBuf16 CreateLogBuf( TRefByValue<const TDesC8> aFmt, ... );
+ static inline TLogBuf16 CreateLogBuf( TRefByValue<const TDesC16> aFmt, ... );
+ static inline void Trace( CStifLogger& aLog, TLogBuf16 aLogBuf );
+ };
+
+// MACROS
+#define TRACE( p ) {\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( _L( p ) );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_INFO( p, args... ) {\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( _L( p ), args );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_FUNC_ENTRY {\
+ TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ );\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( KStifEntryPrefix8, &ptr8 );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_FUNC_EXIT {\
+ TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ );\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( KStifExitPrefix8, &ptr8 );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+
+#include "testdebug.inl"
+
+#endif /* TESTDEBUG_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/testdebug.inl Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32debug.h>
+
+NONSHARABLE_CLASS( TOverflowTruncate8 ) : public TDes8Overflow
+ {
+public:
+ void Overflow( TDes8& /*aDes*/ ) {}
+ };
+
+NONSHARABLE_CLASS( TOverflowTruncate16 ) : public TDes16Overflow
+ {
+public:
+ void Overflow( TDes16& /*aDes*/ ) {}
+ };
+
+TLogBuf16 TTestLogger::CreateLogBuf( TRefByValue<const TDesC8> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TOverflowTruncate8 overflow;
+ TLogBuf8 buf8;
+ TLogBuf16 buf16;
+ buf8.AppendFormatList( aFmt, list, &overflow );
+ buf16.Copy( buf8 );
+ return buf16;
+ };
+
+TLogBuf16 TTestLogger::CreateLogBuf( TRefByValue<const TDesC16> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TOverflowTruncate16 overflow;
+ TLogBuf16 buf16;
+ buf16.AppendFormatList( aFmt, list, &overflow );
+ return buf16;
+ };
+
+void TTestLogger::Trace( CStifLogger& aLog, TLogBuf16 aLogBuf )
+ {
+ RBuf16 buf;
+ RBuf16 bufStifLog;
+
+ buf.Create( KMaxLogLineLength );
+ buf.Append( KStifTestPrefix );
+ buf.Append( aLogBuf );
+ bufStifLog.Create( KMaxLogLineLength );
+ bufStifLog.Append( aLogBuf );
+
+ RDebug::Print( buf );
+ aLog.Log( bufStifLog );
+ buf.Close();
+ bufStifLog.Close();
+ };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/inc/usbmandll_stub.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2010 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 USBMANDLL_STUB_H_
+#define USBMANDLL_STUB_H_
+
+static const TUint KUsbManStubAgentDll = 0x00000033;
+
+enum TUsbManStubAgentApi
+ {
+ EConnect,
+ EGetDeviceState,
+ EStart,
+ EStop,
+ ETryStartAsync,
+ ETryStopAsync,
+ EDeviceStateNotification,
+ EGetCurrentPersonalityId,
+ ECancelInterest,
+ EDeviceStateNotificationCancel,
+ EServiceState,
+ ESetCtlSessionMode,
+ EGetPersonalityProperty
+ };
+
+#endif /*USBMANDLL_STUB_H_*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/init/UsbOtgWatcherTest_ats.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,232 @@
+# Copyright (c) 2010 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: Installation file for STIF
+#
+
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= E:/Testing/Logs/
+TestReportFileName= UsbOtgWatcherTest_TestReport.log
+
+TestReportFormat= TXT # Possible values: TXT or HTML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbOtgWatcherTestUsbOtgWatcherTestUsbOtgWatcherTest
+# Modules might have initialisation file, specified as
+# IniFile= c:/testframework/YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:/testframework/NormalCases.txt
+# TestCaseFile= c:/testframework/SmokeCases.txt
+# TestCaseFile= c:/testframework/ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= TestScripter
+TestCaseFile= E:/testing/conf/UsbOtgWatcherTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbOtgWatcherTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbOtgWatcherTest used initialization file
+#IniFile= c:/testframework/init.txt
+
+#TestModuleUsbOtgWatcherTest used configuration file(s)
+#TestCaseFile= c:/testframework/testcases1.cfg
+#TestCaseFile= c:/testframework/testcases2.cfg
+#TestCaseFile= c:/testframework/manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:/LOGS/TestFramework/' and in code is defined
+# Logger's path 'D://LOGS//Module//' with those definition the path
+# will be 'C:/LOGS/TestFramework/LOGS/Module/'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:/LOGS/TestFramework/
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:/LOGS/TestFramework/
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/init/UsbOtgWatcherTest_phone.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,233 @@
+# Copyright (c) 2010 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: Installation file for STIF
+#
+
+
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= c:\logs\testframework\TemplateScriptUsbOtgWatcherTest\
+TestReportFileName= UsbOtgWatcherTest_TestReport.log
+
+TestReportFormat= TXT # Possible values: TXT or HTML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbOtgWatcherTestUsbOtgWatcherTestUsbOtgWatcherTest
+# Modules might have initialisation file, specified as
+# IniFile= c:/testframework/YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:/testframework/NormalCases.txt
+# TestCaseFile= c:/testframework/SmokeCases.txt
+# TestCaseFile= c:/testframework/ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= TestScripter
+TestCaseFile= c:\testframework\UsbOtgWatcherTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbOtgWatcherTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbOtgWatcherTest used initialization file
+#IniFile= c:/testframework/init.txt
+
+#TestModuleUsbOtgWatcherTest used configuration file(s)
+#TestCaseFile= c:/testframework/testcases1.cfg
+#TestCaseFile= c:/testframework/testcases2.cfg
+#TestCaseFile= c:/testframework/manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:/LOGS/TestFramework/' and in code is defined
+# Logger's path 'D://LOGS//Module//' with those definition the path
+# will be 'C:/LOGS/TestFramework/LOGS/Module/'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:/LOGS/TestFramework/
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:/LOGS/TestFramework/
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/UsbOtgWatcherTest.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,329 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+// INCLUDE FILES
+#include <Stiftestinterface.h>
+#include <SettingServerClient.h>
+#include "UsbOtgWatcherTest.h"
+#include "testdebug.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbOtgWatcherTest::CUsbOtgWatcherTest
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CtUsbOtgWatcher::CtUsbOtgWatcher(
+ CTestModuleIf& aTestModuleIf ):
+ CScriptBase( aTestModuleIf )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CtUsbOtgWatcher::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CtUsbOtgWatcher::ConstructL()
+ {
+ //Read logger settings to check whether test case name is to be
+ //appended to log file name.
+ RSettingServer settingServer;
+ TInt ret = settingServer.Connect();
+ if(ret != KErrNone)
+ {
+ User::Leave(ret);
+ }
+ // Struct to StifLogger settigs.
+ TLoggerSettings loggerSettings;
+ // Parse StifLogger defaults from STIF initialization file.
+ ret = settingServer.GetLoggerSettings( loggerSettings );
+ if( ret != KErrNone )
+ {
+ User::Leave( ret );
+ }
+ // Close Setting server session
+ settingServer.Close();
+
+ TFileName logFileName;
+
+ if( loggerSettings.iAddTestCaseTitle )
+ {
+ TName title;
+ TestModuleIf().GetTestCaseTitleL( title );
+ logFileName.Format( KUsbOtgWatcherTestLogFileWithTitle, &title );
+ }
+ else
+ {
+ logFileName.Copy( KUsbOtgWatcherTestLogFile );
+ }
+
+ iLog = CStifLogger::NewL( KUsbOtgWatcherTestLogPath,
+ logFileName,
+ CStifLogger::ETxt,
+ CStifLogger::EFile,
+ EFalse );
+
+ SendTestClassVersion();
+ TestConstructL();
+ }
+
+// -----------------------------------------------------------------------------
+// CtUsbOtgWatcher::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CtUsbOtgWatcher* CtUsbOtgWatcher::NewL(
+ CTestModuleIf& aTestModuleIf )
+ {
+ CtUsbOtgWatcher* self = new (ELeave) CtUsbOtgWatcher( aTestModuleIf );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// Destructor
+CtUsbOtgWatcher::~CtUsbOtgWatcher()
+ {
+
+ // Delete resources allocated from test methods
+ TestDelete();
+
+ // Delete logger
+ delete iLog;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CtUsbOtgWatcher::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+
+TInt CtUsbOtgWatcher::RunMethodL(
+ CStifItemParser& aItem )
+ {
+ return ExecuteTestBlock( aItem );
+ }
+
+// -----------------------------------------------------------------------------
+// CtUsbOtgWatcher::ExecuteTestBlock
+// -----------------------------------------------------------------------------
+
+TInt CtUsbOtgWatcher::ExecuteTestBlock( CStifItemParser& aItem )
+ {
+ TRACE_FUNC_ENTRY
+ iItem = &aItem;
+ TInt res;
+ TUsbOtgWatcherTestResult testResult = ETestCaseFailed;
+
+ res = iItem -> GetString( _L( "tester" ), iTestBlockParams.iTestBlockName );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "Getting test block name failed with: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+ TRACE_INFO( "Test block name: %S", &iTestBlockParams.iTestBlockName )
+
+ TRACE( "Extracting test block parameters..." )
+ TRAP( res, TestBlocksInfoL() );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "Extracting parameters failed: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+ if ( !iTestBlockFound )
+ {
+ TRACE( "Test block not found!" )
+ TRACE_FUNC_EXIT
+ return KErrNotFound;
+ }
+ TRACE( "Extracting parameters successful" )
+
+ TRAP( res, ( this ->*iTestBlockFunction )( iTestBlockParams, testResult ) );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "ExecuteTestBlockL error: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+
+ if (ETestCasePassed != testResult)
+ {
+ return KErrGeneral;
+ }
+ TRACE( "Test block passed!" );
+ TRACE_FUNC_EXIT
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CtUsbOtgWatcher::GetTestBlockParamL
+// -----------------------------------------------------------------------------
+
+void CtUsbOtgWatcher::GetTestBlockParamL( TGetTestBlockParamOperation aOperation, TTestBlockParamName aParamName )
+ {
+ switch( aOperation )
+ {
+ case eGetString:
+ {
+ switch ( aParamName )
+ {
+ case eTestOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption1 ) );
+ break;
+ }
+ case eTestOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption2 ) );
+ break;
+ }
+ case eTestOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ break;
+ }
+ }
+ break;
+ }
+ case eGetInt:
+ {
+ switch ( aParamName )
+ {
+ case eTestIntOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption1 ) );
+ break;
+ }
+ case eTestIntOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption2 ) );
+ break;
+ }
+ case eTestIntOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ break;
+ }
+ }
+ break;
+ }
+ case eGetChar:
+ {
+ switch ( aParamName )
+ {
+ case eTestCharOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption1 ) );
+ break;
+ }
+ case eTestCharOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption2 ) );
+ break;
+ }
+ case eTestCharOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ }
+ }
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ }
+ }
+ }
+
+//-----------------------------------------------------------------------------
+// CtUsbOtgWatcher::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CtUsbOtgWatcher::SendTestClassVersion()
+ {
+ TVersion moduleVersion;
+ moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+ moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+ moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+
+ TFileName moduleName;
+ moduleName = _L("UsbOtgWatcherTest.dll");
+
+ TBool newVersionOfMethod = ETrue;
+ TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL(
+ CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+ {
+
+ return ( CScriptBase* ) CtUsbOtgWatcher::NewL( aTestModuleIf );
+
+ }
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/UsbOtgWatcherTestBlocks.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,674 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include "UsbOtgWatcherTest.h"
+#include "testdebug.h"
+#include "panic.h"
+//#include "UsbWatcherInternalPSKeys.h"
+#include "mockusbman.h"
+#include "mockcusbnotifmanager.h"
+#include <usbpersonalityids.h>
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CtUsbOtgWatcher::TestConstructL
+// Construct here all test resources for test methods.
+// Called from ConstructL.
+// -----------------------------------------------------------------------------
+
+void CtUsbOtgWatcher::TestConstructL()
+ {
+ TRACE_FUNC_ENTRY
+
+ iStubber = CStubber::NewL();
+
+ TRACE_FUNC_EXIT
+ }
+
+// -----------------------------------------------------------------------------
+// CtUsbOtgWatcher::TestDelete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+
+void CtUsbOtgWatcher::TestDelete()
+ {
+ TRACE_FUNC_ENTRY
+
+ delete iStubber;
+
+ TRACE_FUNC_EXIT
+ }
+
+// -----------------------------------------------------------------------------
+// CtUsbOtgWatcher::TestBlocksInfoL
+// Add new test block parameter entries below
+// -----------------------------------------------------------------------------
+
+void CtUsbOtgWatcher::TestBlocksInfoL()
+ {
+
+ TESTENTRY( "ExampleTestL", CtUsbOtgWatcher::ExampleTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ TESTPARAM( eGetInt, eTestIntOption1 )
+ TESTPARAM( eGetChar, eTestCharOption1 )
+ }
+
+ TESTENTRY( "SetupTearDown", CtUsbOtgWatcher::SetupTearDownL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "PinOnTest_Success", CtUsbOtgWatcher::PinOnTest_SuccessL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "PinOffTest_Success", CtUsbOtgWatcher::PinOffTest_SuccessL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "PinOnTest_EmptyCable", CtUsbOtgWatcher::PinOnTest_EmptyCableL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "PinOnTest_TryStartError", CtUsbOtgWatcher::PinOnTest_TryStartErrorL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "PinOnTest_BusRequestError", CtUsbOtgWatcher::PinOnTest_BusRequestErrorL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "DeviceAttached_BadHubPostion", CtUsbOtgWatcher::DeviceAttached_BadHubPostionL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "DeviceAttached_TooMuchRequired", CtUsbOtgWatcher::DeviceAttached_TooMuchRequiredL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "DeviceAttached_SupportedDevice", CtUsbOtgWatcher::DeviceAttached_SupportedDeviceL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "DeviceDetached_SupportedDevice", CtUsbOtgWatcher::DeviceDetached_SupportedDeviceL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ }
+
+// Add test block methods implementation here
+// -----------------------------------------------------------------------------
+// CtUsbOtgWatcher::ExampleTestL
+// -----------------------------------------------------------------------------
+
+void CtUsbOtgWatcher::ExampleTestL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE_FUNC_ENTRY
+
+ //iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ if ( !aParams.iTestOption1.Compare( _L( "API" ) ) )
+ {
+ TRACE_INFO( "Api test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Api test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Api test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Api test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else if ( !aParams.iTestOption1.Compare( _L( "MODULE" ) ) )
+ {
+ TRACE_INFO( "Module test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Module test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Module test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Module test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else if ( !aParams.iTestOption1.Compare( _L( "BRANCH" ) ) )
+ {
+ TRACE_INFO( "Branch test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Branch test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Branch test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Branch test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else
+ {
+ TRACE( "Invalid test parameter" )
+ TRACE_FUNC_EXIT
+ User::Leave( KErrNotFound );
+ }
+
+ aTestResult = ETestCasePassed;
+ TRACE_FUNC_EXIT
+ }
+
+
+void CtUsbOtgWatcher::SetupTearDownL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE_FUNC_ENTRY;
+
+ TRACE( "Create classes of the state machine" );
+ SetupL();
+
+ TRACE( "Destroy classes of the state machine" );
+ TearDown();
+
+ aTestResult = ETestCasePassed;
+ }
+
+
+void CtUsbOtgWatcher::PinOnTest_SuccessL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE(">>CtUsbOtgWatcher::PinOnTest_SuccessL");
+
+ SetupL();
+
+ // Idpin observer should be subscribed
+ STIF_ASSERT_TRUE(iWatcher->IdPinObserver()->iObserver != NULL);
+
+ TRACE( "State machine initialized" );
+ CUsbStateHostAInitiate* aInitiate = (CUsbStateHostAInitiate*)(iWatcher->State(EUsbStateHostAInitiate));
+ STIF_ASSERT_NOT_NULL(aInitiate);
+
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusDown, iWatcher->VBusObserver()->VBus());
+
+ TRACE( "Trigger pin on" );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceIdle" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+// iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+
+ STIF_ASSERT_NOT_LEAVES(iWatcher->IdPinObserver()->TriggerPinOnL());
+ TRACE_INFO("Status iWatcher->iUsbServiceControl->iStatus: %d",iWatcher->iUsbServiceControl->iStatus.Int());
+
+ iWatcher->iUsbServiceControl->RunL();
+
+ TRACE_INFO("iWatcher->IdPinObserver()->IsTestResultNoneError(): %d", iWatcher->IdPinObserver()->IsTestResultNoneError() ? 1 : 0 );
+ STIF_ASSERT_TRUE(iWatcher->IdPinObserver()->IsTestResultNoneError());
+
+ TRACE_INFO("iWatcher->VBusObserver()->iObserver: %d", iWatcher->VBusObserver()->iObserver ? 1 : 0 );
+ STIF_ASSERT_TRUE(iWatcher->VBusObserver()->iObserver != NULL);
+
+ TRACE_INFO("iWatcher->OtgStateObserver()->iObserver: %d", iWatcher->OtgStateObserver()->iObserver ? 1 : 0 );
+ STIF_ASSERT_TRUE(iWatcher->OtgStateObserver()->iObserver != NULL);
+
+ TRACE_INFO("iWatcher->BusActivityObserver()->iObserver: %d", iWatcher->BusActivityObserver()->iObserver ? 1 : 0 );
+ STIF_ASSERT_TRUE(iWatcher->BusActivityObserver()->iObserver != NULL);
+
+ TRACE_INFO("iWatcher->HostEventNotificationObserver()->iObserver: %d", iWatcher->HostEventNotificationObserver()->iObserver ? 1 : 0 );
+ STIF_ASSERT_TRUE(iWatcher->HostEventNotificationObserver()->iObserver != NULL);
+
+ TRACE_INFO("iWatcher->MessageNotificationObserver()->iObserver: %d", iWatcher->MessageNotificationObserver()->iObserver ? 1 : 0 );
+ STIF_ASSERT_TRUE(iWatcher->MessageNotificationObserver()->iObserver != NULL);
+
+ TRACE_INFO("CUsbVBusObserver::EVBusUp == iWatcher->VBusObserver()->VBus(): %d", CUsbVBusObserver::EVBusUp == iWatcher->VBusObserver()->VBus() ? 1 : 0 );
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusUp, iWatcher->VBusObserver()->VBus());
+
+
+ TRACE( "Trigger vbus on" );
+ STIF_ASSERT_NOT_LEAVES(iWatcher->VBusObserver()->TriggerVBusUpL());
+
+ TRACE_INFO("iWatcher->VBusObserver()->IsTestResultNoneError(): %d", iWatcher->VBusObserver()->IsTestResultNoneError() ? 1 : 0 );
+ STIF_ASSERT_TRUE(iWatcher->VBusObserver()->IsTestResultNoneError());
+
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusUp, iWatcher->VBusObserver()->VBus());
+
+ TRACE_INFO("iWatcher->CurrentHostState() == iWatcher->iStates[EUsbStateHostAInitiate]: %d", iWatcher->CurrentHostState() == iWatcher->iStates[EUsbStateHostAInitiate] ? 1 : 0 );
+ STIF_ASSERT_TRUE(iWatcher->CurrentHostState() == iWatcher->iStates[EUsbStateHostAInitiate]);
+
+ TRACE_INFO("aInitiate->iAttachmentTimer->IsActive(): %d", aInitiate->iAttachmentTimer->IsActive() ? 1 : 0 );
+ STIF_ASSERT_TRUE(aInitiate->iAttachmentTimer->IsActive());
+
+ TRACE_INFO("CUsbVBusObserver::EVBusUp == iWatcher->VBusObserver()->VBus(): %d", CUsbVBusObserver::EVBusUp == iWatcher->VBusObserver()->VBus() ? 1 : 0 );
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusUp, iWatcher->VBusObserver()->VBus());
+
+// iUsbMan->StartCancel(iWatcher->iUsbServiceControl->iStatus);
+
+ TearDown();
+
+ aTestResult = ETestCasePassed;
+
+ TRACE("<<CtUsbOtgWatcher::PinOnTest_SuccessL");
+ }
+
+void CtUsbOtgWatcher::PinOffTest_SuccessL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE(">>CtUsbOtgWatcher::PinOffTest_SuccessL");
+ SetupL();
+
+ // Idpin observer should be subscribed
+ STIF_ASSERT_TRUE(iWatcher->IdPinObserver()->iObserver != NULL);
+
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusDown, iWatcher->VBusObserver()->VBus());
+
+ TRACE( "Trigger pin on" );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceIdle" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+// iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iWatcher->IdPinObserver()->TriggerPinOnL();
+ iWatcher->iUsbServiceControl->RunL();
+
+ TRACE( "Trigger vbus on" );
+ iWatcher->VBusObserver()->TriggerVBusUpL();
+
+ STIF_ASSERT_TRUE(iWatcher->CurrentHostState() == iWatcher->iStates[EUsbStateHostAInitiate]);
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusUp, iWatcher->VBusObserver()->VBus());
+// iUsbMan->StartCancel(iWatcher->iUsbServiceControl->iStatus);
+
+ TRACE( "Trigger vbus off" );
+ iWatcher->IdPinObserver()->TriggerPinOffL();
+ iWatcher->iUsbServiceControl->RunL();
+
+ STIF_ASSERT_TRUE(iWatcher->CurrentHostState() != NULL);
+
+ STIF_ASSERT_TRUE(iWatcher->CurrentHostState() != iWatcher->iStates[EUsbStateHostAInitiate]);
+ STIF_ASSERT_TRUE(iWatcher->VBusObserver()->IsTestResultNoneError());
+ STIF_ASSERT_TRUE(iWatcher->IdPinObserver()->IsTestResultNoneError());
+ STIF_ASSERT_TRUE(iWatcher->VBusObserver()->iObserver != NULL);
+ STIF_ASSERT_TRUE(iWatcher->OtgStateObserver()->iObserver != NULL);
+ STIF_ASSERT_TRUE(iWatcher->BusActivityObserver()->iObserver != NULL);
+ STIF_ASSERT_TRUE(iWatcher->HostEventNotificationObserver()->iObserver != NULL);
+ STIF_ASSERT_TRUE(iWatcher->MessageNotificationObserver()->iObserver != NULL);
+
+// iUsbMan->StartCancel(iWatcher->iUsbServiceControl->iStatus);
+ TearDown();
+
+ aTestResult = ETestCasePassed;
+
+ TRACE("<<CtUsbOtgWatcher::PinOffTest_SuccessL");
+ }
+
+void CtUsbOtgWatcher::PinOnTest_EmptyCableL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE(">>CtUsbOtgWatcher::PinOnTest_EmptyCable");
+ SetupL();
+
+ TRACE("State machine initialized");
+ CUsbStateHostAInitiate* aInitiate = (CUsbStateHostAInitiate*)(iWatcher->State(EUsbStateHostAInitiate));
+
+ TRACE( "Trigger pin on" );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+// iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+
+ STIF_ASSERT_NOT_LEAVES(iWatcher->IdPinObserver()->TriggerPinOnL());
+ iWatcher->iUsbServiceControl->RunL();
+
+ TRACE( "Trigger vbus on" );
+ STIF_ASSERT_NOT_LEAVES(iWatcher->VBusObserver()->TriggerVBusUpL());
+
+// STIF_ASSERT_TRUE(iWatcher->NotifManager()->GetUsbIconBlinking());
+
+ TRACE( "Trigger attachment timer elapsed" );
+ STIF_ASSERT_NOT_LEAVES(aInitiate->iAttachmentTimer->TriggerTimerElapsedL());
+ aInitiate->iAttachmentTimer->TriggerTimerElapsedL();
+ STIF_ASSERT_TRUE(aInitiate->iAttachmentTimer->IsTestResultNoneError());
+
+ STIF_ASSERT_TRUE(iWatcher->CurrentHostState() == iWatcher->iStates[EUsbStateHostHandleDropping]);
+ STIF_ASSERT_TRUE(KUsbUiNotifOtgError == iWatcher->iNotifManager->iCat);
+ STIF_ASSERT_TRUE(EUsbOtgErrorAttachTimedOut == iWatcher->iNotifManager->iNotifId);
+
+ STIF_ASSERT_TRUE(NULL != iWatcher->iNotifManager->iObserver);
+ STIF_ASSERT_FALSE(iWatcher->iNotifManager->iUsbIconBlinking);
+ STIF_ASSERT_FALSE(iWatcher->iNotifManager->iUsbIconShown);
+
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusDown, iWatcher->VBusObserver()->VBus());
+ TearDown();
+
+ aTestResult = ETestCasePassed;
+
+ TRACE("<<CtUsbOtgWatcher::PinOnTest_EmptyCable");
+ }
+
+void CtUsbOtgWatcher::PinOnTest_TryStartErrorL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE(">>CtUsbOtgWatcher::PinOnTest_TryStartErrorL");
+
+ SetupL();
+
+ CUsbStateHostAInitiate* aInitiate = (CUsbStateHostAInitiate*)(iWatcher->State(EUsbStateHostAInitiate));
+ STIF_ASSERT_NOT_NULL(aInitiate);
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ iWatcher->Usb().SetTryStartError(KErrGeneral);
+ STIF_ASSERT_PANIC(ECanNotStartUsbServices, iWatcher->IdPinObserver()->TriggerPinOnL());
+
+ TestModuleIf().SetExitReason( CTestModuleIf::ENormal, KErrNone );
+
+ TearDown();
+
+ aTestResult = ETestCasePassed;
+
+ TRACE("<<CtUsbOtgWatcher::PinOnTest_TryStartErrorL");
+ }
+
+void CtUsbOtgWatcher::PinOnTest_BusRequestErrorL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE(">>CtUsbOtgWatcher::PinOnTest_BusRequestErrorL");
+
+ SetupL();
+
+ CUsbStateHostAInitiate* aInitiate = (CUsbStateHostAInitiate*)(iWatcher->State(EUsbStateHostAInitiate));
+ STIF_ASSERT_NOT_NULL(aInitiate);
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ iWatcher->Usb().SetBusRequestError(KErrGeneral);
+ STIF_ASSERT_PANIC(EBusRequestError, iWatcher->IdPinObserver()->TriggerPinOnL());
+
+ TestModuleIf().SetExitReason( CTestModuleIf::ENormal, KErrNone );
+
+ TearDown();
+
+ aTestResult = ETestCasePassed;
+
+ TRACE("<<CtUsbOtgWatcher::PinOnTest_BusRequestErrorL");
+ }
+
+void CtUsbOtgWatcher::DeviceAttached_BadHubPostionL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE(">>CtUsbOtgWatcher::DeviceAttached_BadHubPostionL");
+ SetupL();
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceIdle" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+// iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+
+ TRACE( "PinOn triggered" );
+ STIF_ASSERT_NOT_LEAVES(iWatcher->IdPinObserver()->TriggerPinOnL());
+ iWatcher->iUsbServiceControl->RunL();
+
+ TRACE( "Trigger vbus on" );
+ STIF_ASSERT_NOT_LEAVES(iWatcher->VBusObserver()->TriggerVBusUpL());
+
+ TRACE( "BadHubPosition triggered" );
+ STIF_ASSERT_NOT_LEAVES(iWatcher->MessageNotificationObserver()->TriggerBadHubPositionL());
+ TRACE( "BadHubPosition test result" );
+ STIF_ASSERT_TRUE(iWatcher->MessageNotificationObserver()->IsTestResultNoneError());
+
+ TRACE( "Poscondition check" );
+ STIF_ASSERT_TRUE(KUsbUiNotifOtgError == iWatcher->iNotifManager->iCat);
+ STIF_ASSERT_TRUE(EUsbOtgHubUnsupported == iWatcher->iNotifManager->iNotifId);
+ STIF_ASSERT_TRUE(NULL != iWatcher->iNotifManager->iObserver);
+
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusDown, iWatcher->VBusObserver()->VBus());
+
+ TearDown();
+
+ aTestResult = ETestCasePassed;
+
+ TRACE("<<CtUsbOtgWatcher::DeviceAttached_BadHubPostionL");
+ }
+
+void CtUsbOtgWatcher::DeviceAttached_TooMuchRequiredL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE("<<CtUsbOtgWatcher::DeviceAttached_TooMuchRequiredL");
+ SetupL();
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceIdle" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+// iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+
+ TRACE( "PinOn triggered" );
+ STIF_ASSERT_NOT_LEAVES(iWatcher->IdPinObserver()->TriggerPinOnL());
+ iWatcher->iUsbServiceControl->RunL();
+
+ TRACE( "Trigger vbus on" );
+ STIF_ASSERT_NOT_LEAVES(iWatcher->VBusObserver()->TriggerVBusUpL());
+
+// STIF_ASSERT_TRUE(iWatcher->iNotifManager->GetUsbIconBlinking());
+ TDeviceEventInformation eventInfo;
+ eventInfo.iEventType = EDeviceAttachment;
+ eventInfo.iError = KErrBadPower;
+ TRACE( "Trigger device attched - KErrBadPower" );
+ iWatcher->HostEventNotificationObserver()->TriggerDeviceAttachedL(eventInfo);
+
+ STIF_ASSERT_TRUE(iWatcher->CurrentHostState() == iWatcher->iStates[EUsbStateHostDelayNotAttachedHandle]);
+// STIF_ASSERT_TRUE(iWatcher->CurrentHostState() == iWatcher->iStates[EUsbStateHostHandleDropping]);
+
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusUp, iWatcher->VBusObserver()->VBus());
+
+// TRACE( "Trigger timer ETooMuchPowerRequiredTimer elapsed" );
+// CUsbStateHostHandle* stateHostHandle = (CUsbStateHostHandle*)iWatcher->CurrentHostState();
+// STIF_ASSERT_NOT_LEAVES( stateHostHandle->iTooMuchPowerTimer->TriggerTimerElapsedL() );
+
+// STIF_ASSERT_FALSE(iWatcher->iNotifManager->iUsbIconBlinking);
+// STIF_ASSERT_FALSE(iWatcher->iNotifManager->iUsbIconShown);
+
+// STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusDown, iWatcher->VBusObserver()->VBus());
+
+ TearDown();
+
+ aTestResult = ETestCasePassed;
+
+ TRACE("<<CtUsbOtgWatcher::DeviceAttached_TooMuchRequiredL");
+ }
+
+void CtUsbOtgWatcher::DeviceAttached_SupportedDeviceL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE(">>CtUsbOtgWatcher::DeviceAttached_SupportedDeviceL");
+
+ SetupL();
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceIdle" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+// iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+
+ iLog->Log(_L("PinOn triggered"));
+ STIF_ASSERT_NOT_LEAVES(iWatcher->IdPinObserver()->TriggerPinOnL());
+ iWatcher->iUsbServiceControl->RunL();
+ iLog->Log(_L("Trigger vbus on"));
+ STIF_ASSERT_NOT_LEAVES(iWatcher->VBusObserver()->TriggerVBusUpL());
+
+ TDeviceEventInformation eventInfo;
+ eventInfo.iEventType = EDeviceAttachment;
+ eventInfo.iError = 0;
+ iLog->Log(_L("Trigger device attached"));
+ iWatcher->HostEventNotificationObserver()->TriggerDeviceAttachedL(eventInfo);
+
+ eventInfo.iEventType = EDriverLoad;
+ eventInfo.iError = 0;
+ iLog->Log(_L("Trigger device driver loaded"));
+ iWatcher->HostEventNotificationObserver()->TriggerDriverLoadSuccessL(eventInfo);
+ STIF_ASSERT_TRUE(iWatcher->CurrentHostState() == iWatcher->iStates[EUsbStateHostAHost]);
+
+// STIF_ASSERT_FALSE(iWatcher->iNotifManager->iUsbIconBlinking);
+//
+// STIF_ASSERT_TRUE(iWatcher->iNotifManager->iUsbIconShown);
+
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusUp, iWatcher->VBusObserver()->VBus());
+
+ TearDown();
+
+ aTestResult = ETestCasePassed;
+
+ TRACE("<<CtUsbOtgWatcher::DeviceAttached_SupportedDeviceL");
+ }
+
+void CtUsbOtgWatcher::DeviceDetached_SupportedDeviceL( TUsbOtgWatcherTestBlockParams& aParams,
+ TUsbOtgWatcherTestResult& aTestResult )
+ {
+ TRACE(">>CtUsbOtgWatcher::DeviceDetached_SupportedDeviceL");
+
+ SetupL();
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceIdle" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, _L8( "UsbPersonalityIdMTP" ) ) );
+// iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EServiceState, 0, 0, _L8( "EUsbServiceStarted" ) ) );
+
+ TRACE( "PinOn triggered" );
+ STIF_ASSERT_NOT_LEAVES(iWatcher->IdPinObserver()->TriggerPinOnL());
+ iWatcher->iUsbServiceControl->RunL();
+ TRACE( "Trigger vbus on" );
+ STIF_ASSERT_NOT_LEAVES(iWatcher->VBusObserver()->TriggerVBusUpL());
+
+ TDeviceEventInformation eventInfo;
+ eventInfo.iEventType = EDeviceAttachment;
+ eventInfo.iError = 0;
+ TRACE( "Trigger device attached" );
+ iWatcher->HostEventNotificationObserver()->TriggerDeviceAttachedL(eventInfo);
+
+ eventInfo.iEventType = EDriverLoad;
+ eventInfo.iError = 0;
+ TRACE( "Trigger device driver loaded" );
+ iWatcher->HostEventNotificationObserver()->TriggerDriverLoadSuccessL(eventInfo);
+
+ eventInfo.iEventType = EDeviceDetachment;
+ eventInfo.iError = 0;
+ TRACE( "Trigger device detached" );
+ iWatcher->HostEventNotificationObserver()->TriggerDeviceDetachedL(eventInfo);
+
+ STIF_ASSERT_TRUE(iWatcher->CurrentHostState() == iWatcher->iStates[EUsbStateHostAInitiate]);
+
+// STIF_ASSERT_TRUE(iWatcher->iNotifManager->iUsbIconBlinking);
+
+ STIF_ASSERT_EQUALS(CUsbVBusObserver::EVBusUp, iWatcher->VBusObserver()->VBus());
+
+ TearDown();
+
+ aTestResult = ETestCasePassed;
+
+ TRACE("<<CtUsbOtgWatcher::DeviceDetached_SupportedDeviceL");
+ }
+
+
+// Add other member functions implementation here
+
+void CtUsbOtgWatcher::SetupL()
+ {
+ TRACE_FUNC_ENTRY;
+
+ TRACE( "UsbMan initialization" );
+ iUsbMan = RUsb::NewL();
+ User::LeaveIfNull(iUsbMan);
+ TInt err;
+
+ TUsbServiceState serviceState;
+ //set service state
+ iUsbMan->SetUsbServiceState(EUsbServiceIdle);
+
+ err = iUsbMan->GetServiceState(serviceState);
+ TRACE_INFO( "UsbMan.GetServiceState err: %d", err );
+ User::LeaveIfError(err);
+
+ TRACE_INFO( "UsbMan.GetServiceState serviceState: %d, exspected: %d", serviceState, EUsbServiceIdle );
+ if(serviceState != EUsbServiceIdle)
+ {
+ TRACE("UsbMan ServiceState didn't set properly!");
+ User::Leave(KErrNotFound);
+ }
+
+ TRACE( "UsbOtgWatcher initialization" );
+ iWatcher = CUsbOtgWatcher::NewL(*iUsbMan);
+ if( !iWatcher )
+ {
+ TRACE("CUsbOtgWatcher::NewL Failed!");
+ User::LeaveIfNull(iWatcher);
+ }
+
+ iWatcher->VBusObserver()->SetRUsb(iUsbMan);
+
+ TRACE_FUNC_EXIT;
+ }
+
+void CtUsbOtgWatcher::TearDown()
+ {
+ TRACE_FUNC_ENTRY;
+
+ TRACE("delete iWatcher");
+ if (iWatcher)
+ delete iWatcher;
+
+ TRACE("delete iUsbMan");
+ if (iUsbMan)
+ delete iUsbMan;
+
+ TRACE_FUNC_EXIT;
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+// [End of File] - Do not remove
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/UsbOtgWatcherTest_exe.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <e32svr.h>
+#include <StifTestInterface.h>
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// ================= OTHER EXPORTED FUNCTIONS =================================
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: -
+
+ Method: E32Main
+
+ Description:
+
+ Parameters: None
+
+ Return Values: TInt: Symbian error code
+
+ Errors/Exceptions: None
+
+ Status: Draft
+
+-------------------------------------------------------------------------------
+*/
+GLDEF_C TInt E32Main()
+ {
+ _LIT( KProcessMsgStart, "New process starting" );
+ RDebug::Print( KProcessMsgStart );
+
+
+ // This starts a new session that get capabilites that is used in
+ // UsbOtgWatcherTest_exe.mmp file.
+ TInt r = StartSession();
+
+ _LIT( KProcessMsgEnd, "New process ends" );
+ RDebug::Print( KProcessMsgEnd );
+
+ return r;
+
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/mockcusbbusactivityobserver.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32base.h>
+#include <NormalHardcodedAssert.h>
+
+#include "stifassertmacros.h"
+
+#include "mockcusbbusactivityobserver.h"
+
+#include "debug.h"
+#include "panic.h"
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbBusActivityObserver::CUsbBusActivityObserver() :
+ iBusActivity(0)
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CUsbBusActivityObserver::ConstructL()
+ {
+ }
+
+CUsbBusActivityObserver* CUsbBusActivityObserver::NewL()
+ {
+ LOG( "[USBOTGWATCHER]\tMockCUsbBusActivityObserver::NewL" );
+
+ CUsbBusActivityObserver* self = new( ELeave ) CUsbBusActivityObserver();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbBusActivityObserver::~CUsbBusActivityObserver()
+ {
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbBusActivityObserver::~CUsbBusActivityObserver" ) );
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbBusActivityObserver::TBusActivity CUsbBusActivityObserver::BusActivity()
+ {
+ LOG1( "[USBOTGWATCHER]\tMockCUsbBusActivityObserver::State = %d", iBusActivity);
+
+ return (0 == iBusActivity ? EBusActive : EBusIdle);
+ }
+
+void CUsbBusActivityObserver::SubscribeL(MUsbBusActivityObserver& aObserver)
+ {
+ LOG( ("[USBOTGWATCHER]\tMockCUsbBusActivityObserver::SubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+
+ iObserver = &aObserver;
+ }
+
+void CUsbBusActivityObserver::UnsubscribeL(MUsbBusActivityObserver& aObserver)
+ {
+ LOG( ("[USBOTGWATCHER]\tMockCUsbBusActivityObserver::UnsubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+
+ iObserver = NULL;
+ }
+
+void CUsbBusActivityObserver::TriggerBusIdleL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ iObserver->BusIdleL();
+ }
+
+void CUsbBusActivityObserver::TriggerBusActiveL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ iObserver->BusActiveL();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/mockcusbhosteventnotificationobserver.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,125 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32base.h>
+#include <NormalHardcodedAssert.h>
+
+#include "stifassertmacros.h"
+
+#include "mockcusbhosteventnotificationobserver.h"
+
+#include "debug.h"
+#include "panic.h"
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbHostEventNotificationObserver::CUsbHostEventNotificationObserver(
+ RUsb* aUsb) :
+ iUsb(aUsb)
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CUsbHostEventNotificationObserver::ConstructL()
+ {
+ }
+
+CUsbHostEventNotificationObserver* CUsbHostEventNotificationObserver::NewL(
+ RUsb* aUsb)
+ {
+ LOG(( "[USBOTGWATCHER]\tMockCUsbHostEventNotificationObserver::NewL" ) );
+
+ CUsbHostEventNotificationObserver* self = new( ELeave ) CUsbHostEventNotificationObserver(aUsb);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbHostEventNotificationObserver::~CUsbHostEventNotificationObserver()
+ {
+ LOG(( "[USBOTGWATCHER]\tMockCUsbHostEventNotificationObserver::~CUsbHostEventNotificationObserver" ) );
+ }
+
+void CUsbHostEventNotificationObserver::SubscribeL(
+ MUsbHostEventNotificationObserver& aObserver)
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbHostEventNotificationObserver::SubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+
+ iObserver = &aObserver;
+ }
+
+void CUsbHostEventNotificationObserver::UnsubscribeL(
+ MUsbHostEventNotificationObserver& aObserver)
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbHostEventNotificationObserver::UnsubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+
+ iObserver = NULL;
+ }
+
+void CUsbHostEventNotificationObserver::TriggerDeviceAttachedL(TDeviceEventInformation eventInfo)
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //.iEventType = EDeviceAttachment
+ iObserver->DeviceAttachedL(eventInfo);
+
+ }
+
+void CUsbHostEventNotificationObserver::TriggerDeviceDetachedL(TDeviceEventInformation eventInfo)
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //.iEventType = EDeviceDetachment
+ iObserver->DeviceDetachedL(eventInfo);
+ }
+
+void CUsbHostEventNotificationObserver::TriggerDriverLoadSuccessL(TDeviceEventInformation eventInfo)
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //.iEventType = EDriverLoad, .iDriverLoadStatus = EDriverLoadSuccess
+ iObserver->DriverLoadSuccessL(eventInfo);
+ }
+
+void CUsbHostEventNotificationObserver::TriggerDriverLoadPartialSuccessL(TDeviceEventInformation eventInfo)
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //.iEventType = EDriverLoad, .iDriverLoadStatus = EDriverLoadPartialSuccess
+ iObserver->DriverLoadPartialSuccessL(eventInfo);
+ }
+
+void CUsbHostEventNotificationObserver::TriggerDriverLoadFailureL(TDeviceEventInformation eventInfo)
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //.iEventType = EDriverLoad, .iDriverLoadStatus = EDriverLoadFailure
+ iObserver->DriverLoadFailureL(eventInfo);
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/mockcusbidpinobserver.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <usbotgdefs.h>
+#include <NormalHardcodedAssert.h>
+
+#include "stifassertmacros.h"
+#include "mockcusbidpinobserver.h"
+
+#include "debug.h"
+#include "panic.h"
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbIdPinObserver::CUsbIdPinObserver() : iIdPinOn(EFalse)
+ {
+ }
+
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CUsbIdPinObserver::ConstructL()
+ {
+ iWait = new ( ELeave )CActiveSchedulerWait();
+ }
+
+CUsbIdPinObserver* CUsbIdPinObserver::NewL()
+ {
+ LOG( "[USBOTGWATCHER]\tMockCUsbIdPinObserver::NewL" );
+
+ CUsbIdPinObserver* self = new( ELeave ) CUsbIdPinObserver();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbIdPinObserver::~CUsbIdPinObserver()
+ {
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbIdPinObserver::~CUsbIdPinObserver" ) );
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbIdPinObserver::TState CUsbIdPinObserver::IdPin() /* const! But for some reason RProperty::Get is not const! */
+ {
+ // not found in Symbian docs clear definition of this property. Verification is needed
+ return (0 == iIdPinOn? EIdPinOff : EIdPinOn);
+ }
+
+
+void CUsbIdPinObserver::SubscribeL(MUsbIdPinObserver& aObserver)
+ {
+ //iLog->Log(_L("[USBOTGWATCHER] >>MockCUsbIdPinObserver::SubscribeL"));
+ LOG(("[USBOTGWATCHER]\tMockCUsbIdPinObserver::SubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+
+ iObserver = &aObserver;
+
+ //iLog->Log(_L("[USBOTGWATCHER] <<MockCUsbIdPinObserver::SubscribeL"));
+ }
+
+void CUsbIdPinObserver::UnsubscribeL(MUsbIdPinObserver& aObserver)
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbIdPinObserver::UnsubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+
+ iObserver = NULL;
+ }
+
+void CUsbIdPinObserver::TriggerPinOnL()
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbIdPinObserver::TriggerPinOn"));
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ iIdPinOn = 1;
+ iObserver->IdPinOnL();
+ LOG(("[USBOTGWATCHER] <<MockCUsbIdPinObserver::TriggerPinOn"));
+ }
+
+void CUsbIdPinObserver::TriggerPinOffL()
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbIdPinObserver::TriggerPinOff"));
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ iIdPinOn = 0;
+ iObserver->IdPinOffL();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/mockcusbmessagenotificationobserver.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,123 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32base.h>
+#include <NormalHardcodedAssert.h>
+
+#include "stifassertmacros.h"
+
+#include "mockcusbmessagenotificationobserver.h"
+
+#include "debug.h"
+#include "panic.h"
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbMessageNotificationObserver::CUsbMessageNotificationObserver(RUsb* aUsb) :
+ iUsb(aUsb)
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CUsbMessageNotificationObserver::ConstructL()
+ {
+ }
+
+CUsbMessageNotificationObserver* CUsbMessageNotificationObserver::NewL(
+ RUsb* aUsb)
+ {
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbMessageNotificationObserver::NewL" ) );
+
+ CUsbMessageNotificationObserver* self = new( ELeave ) CUsbMessageNotificationObserver(aUsb);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbMessageNotificationObserver::~CUsbMessageNotificationObserver()
+ {
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbMessageNotificationObserver::~CUsbMessageNotificationObserver" ) );
+ }
+
+void CUsbMessageNotificationObserver::SubscribeL(
+ MUsbMessageNotificationObserver& aObserver)
+ {
+ LOG( ("[USBOTGWATCHER]\tMockCUsbMessageNotificationObserver::SubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+
+ iObserver = &aObserver;
+ }
+
+void CUsbMessageNotificationObserver::UnsubscribeL(
+ MUsbMessageNotificationObserver& aObserver)
+ {
+ LOG( ("[USBOTGWATCHER]\tMockCUsbMessageNotificationObserver::UnsubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+
+ iObserver = NULL;
+ }
+
+void CUsbMessageNotificationObserver::TriggerMessageNotificationReceivedL(
+ TInt aMessage)
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ // default, others
+ iObserver->MessageNotificationReceivedL(aMessage);
+ }
+
+void CUsbMessageNotificationObserver::TriggerBadHubPositionL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //KErrUsbBadHubPosition
+ iObserver->BadHubPositionL();
+ }
+
+void CUsbMessageNotificationObserver::TriggerVBusErrorL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //KErrUsbOtgVbusError
+ iObserver->VBusErrorL();
+ }
+
+void CUsbMessageNotificationObserver::TriggerSrpReceivedL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //KUsbMessageSrpReceived
+ iObserver->SrpReceivedL();
+ }
+
+void CUsbMessageNotificationObserver::TriggerSessionRequestedL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //KUsbMessageRequestSession
+ iObserver->SessionRequestedL();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/mockcusbnotifmanager.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <usbuinotif.h>
+#include <NormalHardcodedAssert.h>
+
+#include "stifassertmacros.h"
+
+#include "mockcusbnotifmanager.h"
+
+#include "debug.h"
+#include "panic.h"
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbNotifManager::CUsbNotifManager() :
+ iNotifId(INVALID_VALUE),
+ iObserver(INVALID_VALUE),
+ iUsbIconBlinking(EFalse),
+ iUsbIconShown(EFalse)
+ {
+ iCat.iUid = INVALID_VALUE;
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CUsbNotifManager::ConstructL()
+ {
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbNotifManager::ConstructL" ) );
+
+ }
+
+CUsbNotifManager* CUsbNotifManager::NewL(CUsbOtgWatcher& aOtgWatcher)
+ {
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbNotifManager::NewL" ) );
+
+ CUsbNotifManager* self = new( ELeave ) CUsbNotifManager();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbNotifManager::~CUsbNotifManager()
+ {
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbNotifManager::~CUsbNotifManager" ) );
+
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CUsbNotifManager::ShowNotifierL(TUid aCat, TUint aNotifId, MWaitNotifierObserver* aObserver )
+{
+ LOG3 ("[USBOTGWATCHER]\tMockCUsbNotifManager::ShowNotifier aCat = 0x%X aNotifId = %d, aObserver=0x%X", aCat, aNotifId, aObserver);
+ iCat = aCat;
+ iNotifId = aNotifId;
+ iObserver = aObserver;
+}
+
+void CUsbNotifManager::BlinkIndicatorL(TBool aBlinking)
+ {
+ LOG1 ( "[USBOTGWATCHER]\tMockCUsbNotifManager::BlinkIndicatorL, aBlinking=%d", aBlinking);
+
+ iUsbIconBlinking = aBlinking;
+ }
+
+void CUsbNotifManager::ShowIndicatorL(TBool aVisible)
+ {
+ LOG1 ( "[USBOTGWATCHER]\tMockCUsbNotifManager::ShowIndicatorL, aVisible=%d", aVisible);
+
+ iUsbIconShown = aVisible;
+ iUsbIconBlinking = EFalse;
+ }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void CUsbNotifManager::NotifierShowCompletedL(CUsbNotifier& aWaitNotifier, TInt aResult, TInt aFeedback)
+{
+ LOG1 ( "[USBOTGWATCHER]\tMockCUsbNotifManager::NotifierShowCompleted aResult = %d", aResult);
+
+}
+
+void CUsbNotifManager::CloseAllNotifiers()
+{
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbNotifManager::CloseAllNotifiers" ) );
+
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/mockcusbotgstateobserver.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,145 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32base.h>
+#include <NormalHardcodedAssert.h>
+
+#include "stifassertmacros.h"
+
+#include "mockcusbotgstateobserver.h"
+
+#include "debug.h"
+#include "panic.h"
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbOtgStateObserver::CUsbOtgStateObserver()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CUsbOtgStateObserver::ConstructL()
+ {
+ }
+
+CUsbOtgStateObserver* CUsbOtgStateObserver::NewL()
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbOtgStateObserver::NewL" ));
+
+ CUsbOtgStateObserver* self = new( ELeave ) CUsbOtgStateObserver();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbOtgStateObserver::~CUsbOtgStateObserver()
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbOtgStateObserver::~CUsbOtgStateObserver" ));
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+TUsbOtgState CUsbOtgStateObserver::OtgState()
+ {
+ return (TUsbOtgState)iOtgState;
+ }
+
+void CUsbOtgStateObserver::SubscribeL(MUsbOtgStateObserver& aObserver)
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbOtgStateObserver::SubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+
+ iObserver = &aObserver;
+ }
+
+void CUsbOtgStateObserver::UnsubscribeL(MUsbOtgStateObserver& aObserver)
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbOtgStateObserver::UnsubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+
+ iObserver = NULL;
+ }
+
+//ignore EUsbOtgStateReset
+
+void CUsbOtgStateObserver::TriggerAIdleL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //EUsbOtgStateAIdle
+ iObserver->AIdleL();
+ }
+
+void CUsbOtgStateObserver::TriggerAHostL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //EUsbOtgStateAHost
+ iObserver->AHostL();
+ }
+
+void CUsbOtgStateObserver::TriggerAPeripheralL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //EUsbOtgStateAPeripheral
+ iObserver->APeripheralL();
+ }
+
+void CUsbOtgStateObserver::TriggerAVBusErrorL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //EUsbOtgStateAVbusError
+ iObserver->AVBusErrorL();
+ }
+
+void CUsbOtgStateObserver::TriggerBIdleL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //EUsbOtgStateBIdle
+ iObserver->BIdleL();
+ }
+
+void CUsbOtgStateObserver::TriggerBPeripheralL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //EUsbOtgStateBPeripheral
+ iObserver->BPeripheralL();
+ }
+
+void CUsbOtgStateObserver::TriggerBHostL()
+ {
+ STIF_ASSERT_NOT_NULL(iObserver);
+
+ //EUsbOtgStateBHost
+ iObserver->BHostL();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/mockcusbtimer.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32base.h>
+#include <NormalHardcodedAssert.h>
+
+#include "stifassertmacros.h"
+
+#include "mockcusbtimer.h"
+
+#include "debug.h"
+
+CUsbTimer::CUsbTimer(MUsbTimerObserver& aObserver, TUsbTimerId aTimerId) :
+ iObserver(&aObserver),
+ iActive(EFalse),
+ iTimerId(aTimerId)
+ {
+ }
+
+CUsbTimer::~CUsbTimer()
+ {
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbTimer::~CUsbTimer" ) );
+ }
+
+void CUsbTimer::ConstructL()
+ {
+ }
+
+CUsbTimer* CUsbTimer::NewL(MUsbTimerObserver& anObserver, TUsbTimerId aTimerId)
+ {
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbTimer::NewL" ) );
+
+ CUsbTimer* self = new ( ELeave ) CUsbTimer(anObserver, aTimerId);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(); // pop self
+ return self;
+ }
+
+void CUsbTimer::After(TInt aMilliseconds)
+ {
+ LOG1 ( "[USBOTGWATCHER]\tMockCUsbTimer::After aMilliseconds %d", aMilliseconds);
+ iActive = ETrue;
+ }
+
+void CUsbTimer::Cancel()
+ {
+ }
+
+TBool CUsbTimer::IsActive()
+ {
+ return iActive;
+ }
+
+void CUsbTimer::TriggerTimerElapsedL()
+ {
+ //STIF_ASSERT_NOT_NULL(iObserver);
+ LOG1( "[USBOTGWATCHER]\tMockCUsbTimer::TriggerTimerElapsedL iObserver: %d", (iObserver ? 1 : 0 ));
+ LOG1( "[USBOTGWATCHER]\tMockCUsbTimer::TriggerTimerElapsedL iTimerId: %d", (iTimerId ? 1 : 0 ));
+
+ iObserver->TimerElapsedL(iTimerId);
+ LOG( ( "[USBOTGWATCHER]\tMockCUsbTimer::TriggerTimerElapsedL" ) );
+ iActive = EFalse;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/mockcusbvbusobserver.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <usbotgdefs.h>
+#include <NormalHardcodedAssert.h>
+
+#include "mockusbman.h"
+
+#include "stifassertmacros.h"
+
+#include "mockcusbvbusobserver.h"
+
+#include "debug.h"
+#include "panic.h"
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbVBusObserver::CUsbVBusObserver()
+ {
+ }
+
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CUsbVBusObserver::ConstructL()
+ {
+ }
+
+CUsbVBusObserver* CUsbVBusObserver::NewL()
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbVBusObserver::NewL"));
+
+ CUsbVBusObserver* self = new( ELeave ) CUsbVBusObserver();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbVBusObserver::~CUsbVBusObserver()
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbVBusObserver::~CUsbVBusObserver"));
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CUsbVBusObserver::TState CUsbVBusObserver::VBus() /* const! But for some reason RProperty::Get is not const! */
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbVBusObserver::VBus"));
+
+ return (iUsb->GetVBusUp() ? EVBusUp : EVBusDown);
+ //return (iVBusDown ? EVBusDown : EVBusUp);
+ }
+
+void CUsbVBusObserver::SubscribeL(MUsbVBusObserver& aObserver)
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbVBusObserver::SubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+ iObserver = &aObserver;
+ }
+
+void CUsbVBusObserver::UnsubscribeL(MUsbVBusObserver& aObserver)
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbVBusObserver::UnsubscribeL"));
+ STIF_ASSERT_NOT_NULL(&aObserver);
+ iObserver = NULL;
+ }
+
+void CUsbVBusObserver::SetRUsb(RUsb* aRUsb)
+ {
+ iUsb = aRUsb;
+ }
+
+void CUsbVBusObserver::TriggerVBusUpL()
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbVBusObserver::TriggerVBusUpL"));
+ STIF_ASSERT_NOT_NULL(iObserver);
+ //STIF_ASSERT_TRUE(iUsb->GetVBusUp() == EVBusUp);
+ //iVBusDown = EFalse;
+ iObserver->VBusUpL();
+ }
+
+void CUsbVBusObserver::TriggerVBusDownL()
+ {
+ LOG(("[USBOTGWATCHER]\tMockCUsbVBusObserver::TriggerVBusDownL"));
+ //STIF_ASSERT_NOT_NULL(iObserver);
+ //STIF_ASSERT_TRUE(iUsb->GetVBusUp() == EVBusDown);
+
+ //iVBusDown = ETrue;
+ iObserver->VBusDownL();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/mockrusb.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,388 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32base.h>
+#include <NormalHardcodedAssert.h>
+
+#include <stubber.h>
+#include <usbmandll_stub.h>
+#include <usbpersonalityids.h>
+
+#include "mockusbman.h"
+#include "stifassertmacros.h"
+
+#include "mockcusbvbusobserver.h"
+#include "debug.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+RUsb* RUsb::NewL()
+ {
+ LOG( ( " MockRUsb::NewL" ) );
+ RUsb* self = new ( ELeave ) RUsb();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(); // pop self
+ return self;
+ }
+
+void RUsb::ConstructL()
+ {
+
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+RUsb::RUsb() :
+ iBusCleared(EFalse),
+ iBusRequested(EFalse),
+ iServiceStateNotificationRequested(EFalse),
+ iTryStartError(KErrNone),
+ iBusRequestError(KErrNone),
+ iCurrentPersonalityId(0),
+ iUsbServiceState(EUsbServiceIdle)
+ {
+ LOG1 (" MockRUsb::RUsb: %d", iUsbServiceState );
+ }
+
+RUsb::~RUsb()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+void RUsb::TryStart(TInt aPersonalityId, TRequestStatus& aStatus)
+ {
+ LOG( (" MockRUsb::TryStart"));
+
+// CStubber* stubber = CStubber::NewL();
+// TApiBehavior beh( KUsbManStubAgentDll, ETryStartAsync, 0, 0, KNullDesC8 );
+// stubber -> InvokeApi( beh );
+//
+// delete stubber;
+// stubber = NULL;
+//
+// if ( beh.iOutput != KNullDesC8 )
+// {
+ TRequestStatus* status = &aStatus;
+ User::RequestComplete(status, iTryStartError);
+// }
+ }
+
+void RUsb::StartCancel(TRequestStatus& aStatus)
+ {
+ LOG( (" MockRUsb::StartCancel"));
+
+ TRequestStatus* status = &aStatus;
+ User::RequestComplete(status, iTryStartError);
+
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+void RUsb::TryStop(TRequestStatus& aStatus)
+ {
+ LOG( (" MockRUsb::TryStop"));
+
+// CStubber* stubber = CStubber::NewL();
+// TApiBehavior beh( KUsbManStubAgentDll, ETryStartAsync, 0, 0, KNullDesC8 );
+// stubber -> InvokeApi( beh );
+//
+// delete stubber;
+// stubber = NULL;
+//
+// if ( beh.iOutput != KNullDesC8 )
+// {
+ TRequestStatus* status = &aStatus;
+ User::RequestComplete(status, KErrNone);
+// }
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+void RUsb::MessageNotification(TRequestStatus& aStatus, TInt& aMessage)
+ {
+ LOG( (" MockRUsb::MessageNotification"));
+
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+void RUsb::MessageNotificationCancel()
+ {
+ LOG( (" MockRUsb::MessageNotificationCancel"));
+
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+void RUsb::HostEventNotification(TRequestStatus& aStatus,
+ TDeviceEventInformation& aDeviceInformation)
+ {
+ LOG( (" MockRUsb::HostEventNotification"));
+
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+void RUsb::HostEventNotificationCancel()
+ {
+ LOG( (" MockRUsb::HostEventNotificationCancel"));
+
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+TInt RUsb::EnableFunctionDriverLoading()
+ {
+ LOG( (" MockRUsb::EnableFunctionDriverLoading"));
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+void RUsb::DisableFunctionDriverLoading()
+ {
+ LOG( (" MockRUsb::DisableFunctionDriverLoading"));
+
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+TInt RUsb::BusRequest()
+ {
+ LOG1 (" MockRUsb::BusRequest, ret=%d", iBusRequestError );
+
+ iBusRequested = ETrue;
+
+ return iBusRequestError;
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+TInt RUsb::BusRespondSrp()
+ {
+ LOG( (" MockRUsb::BusRespondSrp"));
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+TInt RUsb::BusClearError()
+ {
+ LOG( (" MockRUsb::BusClearError"));
+ iBusCleared = ETrue;
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// From class MUsb
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+TInt RUsb::BusDrop()
+ {
+ LOG( (" MockRUsb::BusDrop"));
+
+ iBusRequested = EFalse;
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// From class RSessionBase
+// ?implementation_description
+// ---------------------------------------------------------------------------
+//
+void RUsb::Close()
+ {
+ LOG( (" MockRUsb::Close"));
+
+ }
+
+void RUsb::SetTryStartError(TInt aError)
+ {
+ iTryStartError = aError;
+ }
+
+void RUsb::SetBusRequestError(TInt aError)
+ {
+ iBusRequestError = aError;
+ }
+
+void RUsb::SetUsbServiceState(TUsbServiceState aUsbServiceState)
+ {
+ LOG2 (" MockRUsb::SetUsbServiceState: %d, %d", iUsbServiceState, aUsbServiceState );
+ iUsbServiceState = aUsbServiceState;
+ }
+
+TBool RUsb::GetVBusUp()
+ {
+ LOG2 (" MockRUsb::GetVBusUp, iBusRequested=%d, iBusRequestError=%d", iBusRequested , iBusRequestError);
+
+ return iBusRequested && !iBusRequestError;
+ }
+
+TInt RUsb::GetServiceState(TUsbServiceState& aState)
+ {
+ LOG( (" MockRUsb::GetServiceState"));
+ aState = iUsbServiceState;
+
+ CStubber* stubber = CStubber::NewL();
+ TApiBehavior beh( KUsbManStubAgentDll, EServiceState, 0, 0, KNullDesC8 );
+ stubber -> InvokeApi( beh );
+
+ delete stubber;
+ stubber = NULL;
+
+ if ( beh.iOutput != KNullDesC8 )
+ {
+ if ( !beh.iOutput.Compare( _L8( "EUsbServiceIdle" ) ) )
+ aState = EUsbServiceIdle;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbServiceStarting" ) ) )
+ aState = EUsbServiceStarting;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbServiceStarted" ) ) )
+ aState = EUsbServiceStarted;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbServiceStopping" ) ) )
+ aState = EUsbServiceStopping;
+ else if ( !beh.iOutput.Compare( _L8( "EUsbServiceFatalError" ) ) )
+ aState = EUsbServiceFatalError;
+ }
+
+ LOG1 (" iUsbServiceState: %d", aState);
+
+ return KErrNone;
+ }
+
+void RUsb::ServiceStateNotification(TUsbServiceState &aState, TRequestStatus &aStatus)
+{
+ LOG( (" MockRUsb::ServiceStateNotification"));
+ if(iServiceStateNotificationRequested)
+ {
+ TRequestStatus* status = &aStatus;
+ User::RequestComplete(status, KErrGeneral); // already requested
+ return;
+ }
+
+ iServiceStateNotificationRequested = ETrue;
+ TRequestStatus* status = &aStatus;
+ User::RequestComplete(status, KErrNone);
+}
+
+TInt RUsb::GetCurrentPersonalityId(TInt &aPersonalityId)
+{
+ LOG( (" MockRUsb::GetCurrentPersonalityId"));
+
+ CStubber* stubber = CStubber::NewL();
+ TApiBehavior beh( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, KNullDesC8 );
+ stubber -> InvokeApi( beh );
+
+ delete stubber;
+ stubber = NULL;
+
+ if ( beh.iOutput != KNullDesC8 )
+ {
+ if ( !beh.iOutput.Compare( _L8( "UsbPersonalityIdPCSuite" ) ) )
+ aPersonalityId = KUsbPersonalityIdPCSuite;
+ else if ( !beh.iOutput.Compare( _L8( "UsbPersonalityIdMS" ) ) )
+ aPersonalityId = KUsbPersonalityIdMS;
+ else if ( !beh.iOutput.Compare( _L8( "UsbPersonalityIdPTP" ) ) )
+ aPersonalityId = KUsbPersonalityIdPTP;
+ else if ( !beh.iOutput.Compare( _L8( "UsbPersonalityIdMTP" ) ) )
+ aPersonalityId = KUsbPersonalityIdMTP;
+ else if ( !beh.iOutput.Compare( _L8( "UsbPersonalityIdPCSuiteMTP" ) ) )
+ aPersonalityId = KUsbPersonalityIdPCSuiteMTP;
+
+ LOG1( " MockRUsb::GetCurrentPersonalityId iStubbedPersonalityId: %d", aPersonalityId);
+ }
+ else
+ aPersonalityId = iCurrentPersonalityId;
+
+ LOG1( " MockRUsb::GetCurrentPersonalityId iCurrentPersonalityId: %d", iCurrentPersonalityId);
+
+ return KErrNone;
+}
+
+TInt RUsb::CancelInterest(TUsbReqType aMessageId) // to pending op. of usb service state
+{
+ LOG( (" MockRUsb::CancelInterest"));
+ iServiceStateNotificationRequested = EFalse;
+ return KErrNone;
+}
+
+void RUsb::ServiceStateNotificationCancel()
+{
+ LOG( (" MockRUsb::ServiceStateNotificationCancel"));
+ iServiceStateNotificationRequested = EFalse;
+}
+
+void RUsb::SetCurrentPersonality(TInt aPersonalityId)
+{
+ LOG( (" MockRUsb::SetCurrentPersonality"));
+ iCurrentPersonalityId = aPersonalityId;
+}
+
+TInt RUsb::GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& aDescriptor)
+{
+ LOG( (" MockRUsb::GetOtgDescriptor"));
+
+ aDescriptor.iAttributes = 1;
+ aDescriptor.iDeviceId = 2;
+
+ return KErrNone;
+}
+
+// End of File
--- a/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/conf/USBRemotePersonalityTest.cfg Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/conf/USBRemotePersonalityTest.cfg Thu Aug 19 10:54:11 2010 +0300
@@ -92,14 +92,6 @@
// USBRemotePersonalityTest Module Tests (... tc)
-/*
-[Test]
-title Example Api Test
-create USBRemotePersonalityTest tester
-tester ExecuteModuleTest ExampleModuleTest
-delete tester
-[Endtest]
-*/
// Add new module tests here
// ...
@@ -107,14 +99,6 @@
// USBRemotePersonalityTest Branch Tests (... tc)
-/*
-[Test]
-title Example Api Test
-create USBRemotePersonalityTest tester
-tester ExecuteBranchTest ExampleBranchTest
-delete tester
-[Endtest]
-*/
// Add new branch tests here
// ...
--- a/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/group/build_sis_ats.bat Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/group/build_sis_ats.bat Thu Aug 19 10:54:11 2010 +0300
@@ -14,7 +14,10 @@
@rem Description:
@rem
-call bldmake bldfiles
-call abld test build armv5
+call sbs -c armv5_udeb clean
+call sbs -c armv5_udeb.test
+call sbs -c armv5_udeb.test freeze
+call sbs -c armv5_udeb.test
+
call makesis USBRemotePersonalityTest_ats.pkg
-call signsis USBRemotePersonalityTest_ats.sis USBRemotePersonalityTest_ats.sisx rd.cer rd-key.pem
+call signsis USBRemotePersonalityTest_ats.sis USBRemotePersonalityTest_ats.sisx x:\rd.cer x:\rd-key.pem
--- a/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/group/build_sis_phone.bat Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/group/build_sis_phone.bat Thu Aug 19 10:54:11 2010 +0300
@@ -14,7 +14,10 @@
@rem Description:
@rem
-call bldmake bldfiles
-call abld test build armv5
+call sbs -c armv5_udeb clean
+call sbs -c armv5_udeb.test
+call sbs -c armv5_udeb.test freeze
+call sbs -c armv5_udeb.test
+
call makesis USBRemotePersonalityTest_phone.pkg
-call signsis USBRemotePersonalityTest_phone.sis USBRemotePersonalityTest_phone.sisx rd.cer rd-key.pem
+call signsis USBRemotePersonalityTest_phone.sis USBRemotePersonalityTest_phone.sisx x:\rd.cer x:\rd-key.pem
Binary file usbengines/usbwatcher/conf/usbwatcher.confml has changed
Binary file usbengines/usbwatcher/conf/usbwatcher_101F8801.crml has changed
--- a/usbengines/usbwatcher/inc/cusbactivepersonalityhandler.h Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usbwatcher/inc/cusbactivepersonalityhandler.h Thu Aug 19 10:54:11 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -76,11 +76,10 @@
*
* @since Series 60 3.2
* @param aPersonalityId Identification of the personality to be loaded.
- * @param aAskOnConnectionSetting When this parameter is ETrue, "ask on connection" query is shown.
* @param aStatus Used to complete outstanding request.
*/
void StartPersonality( TInt& aPersonalityId,
- TInt aAskOnConnectionSetting, TRequestStatus& aStatus );
+ TRequestStatus& aStatus );
/**
* Stop current personality.
@@ -233,11 +232,6 @@
TInt *iPersonalityId;
/**
- * Ask on connection is either on (1) or off (0).
- */
- TInt iAskOnConnectionSetting;
-
- /**
* When value is ETrue then serial number is written to P&S.
*/
TBool iSerialNumberWritten;
--- a/usbengines/usbwatcher/inc/cusbwatcher.h Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usbwatcher/inc/cusbwatcher.h Thu Aug 19 10:54:11 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -248,16 +248,6 @@
*/
void DoCancel();
- /**
- * Check if there is an observer with ask on connection suppression.
- * Check if one or more sessions have suppressed the ask on
- * connection mode query.
- *
- * @since S60 5.0
- * @return ETrue if suppression found
- */
- TBool IsAskOnConnectionSuppression();
-
private:
/**
@@ -362,11 +352,6 @@
TInt iOldPrevPersonalityId;
/**
- * Current ask on connection setting
- */
- TInt iAskOnConnectionSetting;
-
- /**
* State for USB starting/stoping
*/
TUsbState iState;
--- a/usbengines/usbwatcher/inc/cusbwatchersession.h Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usbwatcher/inc/cusbwatchersession.h Thu Aug 19 10:54:11 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -40,12 +40,6 @@
virtual void Notify(TInt iPersonalityId, TInt aStatus);
- /**
- * Check if ask on connection mode query is suppressed in this session.
- * From MUsbWatcherNotify
- */
- virtual TBool IsAskOnConnectionSuppressed();
-
protected:
CUsbWatcherSession(CUsbWatcherServer* aServer);
void ConstructL();
@@ -66,14 +60,6 @@
TInt SetPreviousPersonalityOnDisconnect(const RMessage2& aMessage,
TBool& aComplete);
- /**
- * Prevent showing ask on connection mode query in this session.
- * This affects to the next cable connections. The currently shown
- * mode query is not closed.
- * aSuppress ETrue prevents showing the mode query.
- */
- void SetAskOnConnectionSuppression(TBool aSuppress);
-
CUsbWatcherServer* iUsbWatcherServer;
RMessage2 iSetPersonalityMessage;
RMessage2 iCancelSetPersonalityMessage;
@@ -84,7 +70,6 @@
TBool iSetPreviousPersonalityOutstanding;
TBool iCancelSetPreviousPersonalityOutstanding;
- TBool iSuppressAskOnConnection; // Prevent ask on connection mode query
};
#endif
--- a/usbengines/usbwatcher/inc/musbwatchernotify.h Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usbwatcher/inc/musbwatchernotify.h Thu Aug 19 10:54:11 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -24,10 +24,6 @@
public:
virtual void Notify( TInt aPersonalityId, TInt aStatus ) = 0;
- /**
- * Check if ask on connection mode query is suppressed in this session.
- */
- virtual TBool IsAskOnConnectionSuppressed() = 0;
};
#endif
--- a/usbengines/usbwatcher/src/cusbactivepersonalityhandler.cpp Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usbwatcher/src/cusbactivepersonalityhandler.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -186,19 +186,17 @@
// ----------------------------------------------------------------------------
//
void CUsbActivePersonalityHandler::StartPersonality( TInt& aPersonalityId,
- TInt aAskOnConnectionSetting, TRequestStatus& aStatus )
+ TRequestStatus& aStatus )
{
LOG_FUNC
- LOG2( "PersonalityId = %d, AskOnConnectionSetting = %d", aPersonalityId,
- aAskOnConnectionSetting );
+ LOG1( "PersonalityId = %d ", aPersonalityId);
// Remove all notes.
iPersonalityNotifier->CancelAll();
iPersonalityId = &aPersonalityId;
- iAskOnConnectionSetting = aAskOnConnectionSetting;
aStatus = KRequestPending;
iRequestStatus = &aStatus;
@@ -272,10 +270,9 @@
{
case EUsbDeviceStateAddress:
{
- if( iAskOnConnectionSetting &&
- ( aStateOld != EUsbDeviceStateSuspended ) &&
- ( aStateOld != EUsbDeviceStateConfigured )
- )
+ if ((aStateOld != EUsbDeviceStateSuspended) && (aStateOld
+ != EUsbDeviceStateConfigured) && (ESwStateCharging
+ != CUsbGlobalSystemStateObserver::GlobalSystemState()))
{
iPersonalityParams->PersonalityNotifier().ShowQuery(
KCableConnectedNotifierUid, iDummy,
@@ -320,9 +317,13 @@
iQueryParams, iDummyBuf);
break;
case KErrDiskFull:
- iQueryParams().iQuery = EUSBDiskFull;
- iPersonalityParams->PersonalityNotifier().ShowQuery(KQueriesNotifier,
- iQueryParams, iDummyBuf);
+ if (ESwStateCharging
+ != CUsbGlobalSystemStateObserver::GlobalSystemState())
+ {
+ iQueryParams().iQuery = EUSBDiskFull;
+ iPersonalityParams->PersonalityNotifier().ShowQuery(
+ KQueriesNotifier, iQueryParams, iDummyBuf);
+ }
break;
default:
LOG( "Ignored" );
@@ -438,7 +439,6 @@
delete iCurrentPersonalityHandler;
iCurrentPersonalityHandler = NULL;
- //iAskOnConnectionSetting may be have been set to off
if ( iDeviceState == EUsbDeviceStateUndefined )
{
iPersonalityParams->PersonalityNotifier().CancelQuery(
--- a/usbengines/usbwatcher/src/cusbwatcher.cpp Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usbwatcher/src/cusbwatcher.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -254,15 +254,6 @@
}
LOG1( "Starting USB personality in device state: %d", aStateNew );
iPersonalityHandler->StateChangeNotify( aStateOld, aStateNew );
- // Check AskOnConnection setting every time
- if( ( iSupportedPersonalities.Count() > 1 ) &&
- !IsAskOnConnectionSuppression() )
- {
- // read setting if there is more than one personality
- iPersonalityRepository->Get(
- KUsbWatcherChangeOnConnectionSetting,
- iAskOnConnectionSetting );
- }
if( ( iState == EUsbIdle ) && !iPersonalityChangeOngoing )
{
@@ -274,10 +265,6 @@
Start();
}
- // Let's turn ask on connection off after start cause we will
- // issue it only when cable is connected
- iAskOnConnectionSetting = KUsbWatcherChangeOnConnectionOff;
-
//start usbdevcon only in normal global state
TInt globalState =
CUsbGlobalSystemStateObserver::GlobalSystemState();
@@ -530,17 +517,7 @@
if( EUsbDeviceStateAttached == state || EUsbDeviceStatePowered == state)
{
LOG( "Starting USB personality" );
- TInt err = iPersonalityRepository->Get(
- KUsbWatcherChangeOnConnectionSetting, iAskOnConnectionSetting );
- if( KErrNone == err )
- {
- Start();
- iAskOnConnectionSetting = KUsbWatcherChangeOnConnectionOff;
- }
- else
- {
- LOG1( "Error: CRepository::Get = %d", err );
- }
+ Start();
}
}
@@ -770,8 +747,7 @@
iStarted = ETrue;
// Restore personality to normal in charging mode
iSetPreviousPersonalityOnDisconnect = ETrue;
- iPersonalityHandler->StartPersonality( iPersonalityId,
- KUsbWatcherChangeOnConnectionOff, iStatus );
+ iPersonalityHandler->StartPersonality( iPersonalityId, iStatus );
}
else
{
@@ -790,8 +766,7 @@
RProperty::Set( KPSUidUsbWatcher,
KUsbWatcherSelectedPersonality, iPersonalityId );
iStarted = ETrue;
- iPersonalityHandler->StartPersonality( iPersonalityId,
- iAskOnConnectionSetting, iStatus );
+ iPersonalityHandler->StartPersonality( iPersonalityId, iStatus );
}
else
{
@@ -1034,27 +1009,6 @@
}
// ----------------------------------------------------------------------------
-// Check if there is an observer with ask on connection suppression
-// ----------------------------------------------------------------------------
-//
-TBool CUsbWatcher::IsAskOnConnectionSuppression()
- {
- LOG_FUNC
-
- TBool ret( EFalse );
- for( TInt i = 0; i < iObservers.Count(); i++ )
- {
- if( iObservers[i]->IsAskOnConnectionSuppressed() )
- {
- ret = ETrue;
- break;
- }
- }
- LOG1( "Return = %d", ret );
- return ret;
- }
-
-// ----------------------------------------------------------------------------
// Check current A or B device state
// ----------------------------------------------------------------------------
//
--- a/usbengines/usbwatcher/src/cusbwatchersession.cpp Thu Jul 15 19:48:29 2010 +0300
+++ b/usbengines/usbwatcher/src/cusbwatchersession.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 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"
@@ -159,9 +159,6 @@
aComplete = EFalse;
iSetPersonalityOutstanding = ETrue;
- //Set force parameter to this session.
- SetAskOnConnectionSuppression( aMessage.Int1() );
-
iUsbWatcherServer->Watcher().SetPersonality( aMessage.Int0(),
static_cast<TBool>( aMessage.Int2() ) );
@@ -183,7 +180,6 @@
return KErrNone;
}
- SetAskOnConnectionSuppression( EFalse );
aComplete = EFalse;
iCancelSetPersonalityMessage = aMessage;
iCancelSetPersonalityOutstanding = ETrue;
@@ -211,7 +207,6 @@
// Cancel all other pending requests
iUsbWatcherServer->Watcher().Notify( KErrCancel );
- SetAskOnConnectionSuppression( EFalse );
iSetPreviousPersonalityOutstanding = ETrue;
iSetPreviousPersonalityMessage = aMessage;
aComplete = EFalse;
@@ -239,7 +234,6 @@
// Cancel all other pending requests
iUsbWatcherServer->Watcher().Notify( KErrCancel );
- SetAskOnConnectionSuppression( EFalse );
iUsbWatcherServer->Watcher().SetPreviousPersonality();
return KErrNone;
@@ -277,8 +271,6 @@
{
LOG_FUNC
- //connected currently, so ask on connection can be enabled
- SetAskOnConnectionSuppression( EFalse );
iUsbWatcherServer->Watcher().SetPreviousPersonalityOnDisconnect();
return KErrNone;
@@ -323,26 +315,4 @@
}
}
-// ----------------------------------------------------------------------------
-// Set or clear AskOnConnection suppression
-// ----------------------------------------------------------------------------
-//
-void CUsbWatcherSession::SetAskOnConnectionSuppression( TBool aSuppress )
- {
- LOG_FUNC
-
- iSuppressAskOnConnection = aSuppress;
- }
-
-// ----------------------------------------------------------------------------
-// Check if AskOnConnection is suppressed
-// ----------------------------------------------------------------------------
-//
-TBool CUsbWatcherSession::IsAskOnConnectionSuppressed()
- {
- LOG_FUNC
-
- return iSuppressAskOnConnection;
- }
-
// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/Bmarm/UsbWatcherTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/Bwins/UsbWatcherTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/conf/UsbWatcherTest.cfg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,209 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+//[StifSettings]
+//CapsModifier= UsbWatcherTest.exe
+//[EndStifSettings]
+
+// UsbWatcherTest Module - total 23 tc
+
+// UsbWatcherTest Api Tests (23 tc)
+
+// USB watcher initialization tests (2)
+
+[Test]
+title Connect USB Watcher (USB Watcher Connection Test)
+create UsbWatcherTest tester
+tester InitializationTest SINGLE_CONN
+delete tester
+[Endtest]
+
+[Test]
+title Return Server Version (USB Watcher Initialization Test)
+create UsbWatcherTest tester
+tester InitializationTest VERSION
+delete tester
+[Endtest]
+
+// USB personality management tests (18)
+
+[Test]
+title Set PCSuite Personality (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest PCSUITE SET_PERSONALITY
+delete tester
+[Endtest]
+
+[Test]
+title Set MS Personality (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS SET_PERSONALITY
+delete tester
+[Endtest]
+
+
+[Test]
+title Set Modem Personality (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest Modem SET_PERSONALITY
+delete tester
+[Endtest]
+
+[Test]
+title Set MTP Personality (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MTP SET_PERSONALITY
+delete tester
+[Endtest]
+
+[Test]
+title Set Previous Personality (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS SET_PREVIOUS_PERSONALITY
+delete tester
+[Endtest]
+
+[Test]
+title Set Previous Personality On Disconnect (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS SET_PREVIOUS_PERSONALITY_ON_DISC
+delete tester
+[Endtest]
+
+[Test]
+title Set Previous Personality Sync (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS SET_PREVIOUS_PERSONALITY_SYNC
+delete tester
+[Endtest]
+
+[Test]
+title Set PCSuite Personality/Cable Disconnected (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest PCSUITE SET_PERSONALITY_DISC
+delete tester
+[Endtest]
+
+[Test]
+title Set MS Personality/Cable Disconnected (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS SET_PERSONALITY_DISC
+delete tester
+[Endtest]
+
+[Test]
+title Set Modem Personality/Cable Disconnected (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest Modem SET_PERSONALITY_DISC
+delete tester
+[Endtest]
+
+[Test]
+title Set MTP Personality/Cable Disconnected (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MTP SET_PERSONALITY_DISC
+delete tester
+[Endtest]
+
+[Test]
+title Cancel Set Personality/Cable Disconnected (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS CANCEL_SET_PERSONALITY_DISC
+delete tester
+[Endtest]
+
+[Test]
+title Set Previous Personality/Cable Disconnected (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS SET_PREVIOUS_PERSONALITY_DISC
+delete tester
+[Endtest]
+
+[Test]
+title Set Previous Personality On Disconnect/Cable Disconnected (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS SET_PREVIOUS_PERSONALITY_ON_DISC_DISC
+delete tester
+[Endtest]
+
+[Test]
+title Set Previous Personality Sync/Cable Disconnected (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS SET_PREVIOUS_PERSONALITY_SYNC_DISC
+delete tester
+[Endtest]
+
+[Test]
+title Cancel Set Previous Personality/Cable Disconnected (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS CANCEL_SET_PREVIOUS_PERSONALITY_DISC
+delete tester
+[Endtest]
+
+[Test]
+title Set Unknown Personality (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS SET_UNKNOWN_PERSONALITY
+delete tester
+[Endtest]
+
+[Test]
+title Interrupt Personality Set (USB Personality Management Test)
+create UsbWatcherTest tester
+tester PersonalityManagementTest MS INTERRUPT_PERSONALITY_SET
+delete tester
+[Endtest]
+
+// USB watcher branch tests (3)
+
+[Test]
+title Set Same Personality (USB Watcher Branch Test)
+create UsbWatcherTest tester
+tester BranchTest SAME_PERSONALITY_SET
+delete tester
+[Endtest]
+
+[Test]
+title Set Personality/Personality Switch Blocking On (USB Watcher Branch Test)
+create UsbWatcherTest tester
+tester BranchTest NON_BLOCKING
+delete tester
+[Endtest]
+
+[Test]
+title Set Personality/Ask On Connection Not Shown(USB Watcher Branch Test)
+create UsbWatcherTest tester
+tester BranchTest FORCE_SWITCH
+delete tester
+[Endtest]
+
+// Add new api tests here
+// ...
+
+
+// UsbWatcherTest Module Tests (... tc)
+
+
+// Add new module tests here
+// ...
+
+
+// UsbWatcherTest Branch Tests (... tc)
+
+
+// Add new branch tests here
+// ...
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/eabi/UsbWatcherTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ _Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/group/UsbWatcherTest.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+#if defined(__S60_)
+ // To get the MW_LAYER_SYSTEMINCLUDE-definition
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbWatcherTest.dll
+TARGETTYPE dll
+UID 0x1000008D 0x101FB3E3
+
+CAPABILITY ALL -TCB
+
+DEFFILE UsbWatcherTest.def
+
+MW_LAYER_SYSTEMINCLUDE
+
+//includes for stubbing
+SYSTEMINCLUDE /epoc32/include/mw/stubsrv/
+SYSTEMINCLUDE /epoc32/include/mw/taf/
+
+USERINCLUDE ../inc
+USERINCLUDE ../../../inc
+SOURCEPATH ../src
+
+SOURCE UsbWatcherTest.cpp
+SOURCE UsbWatcherTestBlocks.cpp
+
+//RESOURCE resource_file
+//RESOURCE resource_file2
+
+//standart lib for stif testing
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+LIBRARY stiftestengine.lib
+
+//lib for stubbing
+LIBRARY apibehavior.lib
+LIBRARY stubber.lib
+
+
+//lib for component testing
+//LIBRARY
+LIBRARY usbman.lib
+LIBRARY usbwatcher.lib
+LIBRARY centralrepository.lib
+LIBRARY efsrv.lib
+
+LANG SC
+
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/group/UsbWatcherTest_ats.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,69 @@
+;
+; Copyright (c) 2010 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: Installation file for STIF
+;
+
+
+;
+; Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"UsbWatcherTest"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 5.2
+[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name;
+:"Nokia"
+
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"/epoc32/release/armv5/udeb/UsbWatcherTest.dll"-"C:/Sys/Bin/UsbWatcherTest.dll"
+;"/epoc32/release/armv5/udeb/UsbWatcherTest.exe"-"C:/Sys/Bin/UsbWatcherTest.exe"
+
+"../conf/UsbWatcherTest.cfg"-"E:/testing/conf/UsbWatcherTest.cfg"
+"../init/UsbWatcherTest_ats.ini"-"E:/testing/init/UsbWatcherTest.ini"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/group/UsbWatcherTest_phone.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,64 @@
+
+; Copyright (c) 2010 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: Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"UsbWatcherTest"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 5.2
+[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name;
+:"Nokia"
+
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"/epoc32/release/armv5/udeb/UsbWatcherTest.dll" - "C:/Sys/Bin/UsbWatcherTest.dll"
+;"/epoc32/release/armv5/udeb/UsbWatcherTest.exe" - "C:/Sys/Bin/UsbWatcherTest.exe"
+
+"../conf/UsbWatcherTest.cfg"-"C:/testframework/UsbWatcherTest.cfg"
+"../init/UsbWatcherTest_phone.ini"-"C:/testframework/testframework.ini"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTEXPORTS
+PRJ_EXPORTS
+
+PRJ_TESTMMPFILES
+UsbWatcherTest.mmp
+
+PRJ_MMPFILES
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/group/build_sis_ats.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,23 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+call sbs -c armv5_udeb clean
+call sbs -c armv5_udeb.test
+call sbs -c armv5_udeb.test freeze
+call sbs -c armv5_udeb.test
+
+call makesis UsbWatcherTest_ats.pkg
+call signsis UsbWatcherTest_ats.sis UsbWatcherTest_ats.sisx x:\rd.cer x:\rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/group/build_sis_phone.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,25 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+
+call sbs -c armv5_udeb clean
+call sbs -c armv5_udeb.test
+call sbs -c armv5_udeb.test freeze
+call sbs -c armv5_udeb.test
+
+
+call makesis UsbWatcherTest_phone.pkg
+call signsis UsbWatcherTest_phone.sis UsbWatcherTest_phone.sisx x:\rd.cer x:\rd-key.pem
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/inc/UsbWatcherTest.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,274 @@
+/*
+* Copyright (c) 2010 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 TEMPLATESTUBSCRIPTUsbWatcherTest_H
+#define TEMPLATESTUBSCRIPTUsbWatcherTest_H
+
+// INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+
+#include <usbwatcher.h>
+#include <UsbWatcherInternalCRKeys.h>
+#include <usbpersonalityids.h>
+#include <centralrepository.h>
+#include "usbwatchershared.h"
+// INCLUDES FOR STUBS
+#include <stubber.h>
+#include <apibehavior.h>
+#include <usbmandll_stub.h>
+#include <usbman.h>
+
+// CONSTANTS
+// Logging path
+//_LIT( KUsbWatcherTestLogPath, "\\logs\\testframework\\UsbWatcherTest\\" );
+
+// Logging path for ATS - for phone builds comment this line
+_LIT( KUsbWatcherTestLogPath, "e:\\testing\\stiflogs\\" );
+
+// Log file
+_LIT( KUsbWatcherTestLogFile, "UsbWatcherTest.txt" );
+_LIT( KUsbWatcherTestLogFileWithTitle, "UsbWatcherTest_[%S].txt" );
+
+// MACROS
+#define TEST_CLASS_VERSION_MAJOR 0
+#define TEST_CLASS_VERSION_MINOR 0
+#define TEST_CLASS_VERSION_BUILD 0
+
+// Macros used to extract test block parameters
+#define TESTENTRY( A, B )\
+ if ( !iTestBlockParams.iTestBlockName.Compare( TPtrC( ( TText* ) L ##A ) ) )\
+ { iTestBlockFunction = &B; iTestBlockFound = ETrue; }\
+ if ( !iTestBlockParams.iTestBlockName.Compare( TPtrC( ( TText* ) L ##A ) ) )
+
+#define TESTPARAM( A, B )\
+ GetTestBlockParamL( ( TGetTestBlockParamOperation ) A, ( TTestBlockParamName ) B );
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// DATA TYPES
+
+// Enum type used to determine test block execution result
+enum TUsbWatcherTestResult
+ {
+ ETestCasePassed,
+ ETestCaseFailed
+ };
+
+// Enum type indicating test block parameter which should be used to store
+// data extracted from test script
+enum TTestBlockParamName
+ {
+ eTestOption1,
+ eTestOption2,
+ eTestOption3,
+ eTestIntOption1,
+ eTestIntOption2,
+ eTestIntOption3,
+ eTestCharOption1,
+ eTestCharOption2,
+ eTestCharOption3
+ };
+
+// Enum type used to indicate which get parameter function should be used
+enum TGetTestBlockParamOperation
+ {
+ eGetString,
+ eGetInt,
+ eGetChar
+ };
+
+// CLASS DECLARATION
+/**
+* TUsbWatcherTestBlockParams test class for storing test block parameters.
+*/
+NONSHARABLE_CLASS( TUsbWatcherTestBlockParams )
+ {
+ public:
+ TPtrC iTestBlockName;
+
+ TPtrC iTestOption1;
+ TPtrC iTestOption2;
+ TPtrC iTestOption3;
+
+ TInt iTestIntOption1;
+ TInt iTestIntOption2;
+ TInt iTestIntOption3;
+
+ TChar iTestCharOption1;
+ TChar iTestCharOption2;
+ TChar iTestCharOption3;
+ };
+
+/**
+* CUsbWatcherTest test class for STIF Test Framework TestScripter.
+*/
+NONSHARABLE_CLASS( CUsbWatcherTest ) : public CScriptBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CUsbWatcherTest* NewL( CTestModuleIf& aTestModuleIf );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbWatcherTest();
+
+ public: // New functions
+ public: // Functions from base classes
+
+ /**
+ * From CScriptBase Runs a script line.
+ * @since ?Series60_version
+ * @param aItem Script line containing method name and parameters
+ * @return Symbian OS error code
+ */
+ virtual TInt RunMethodL( CStifItemParser& aItem );
+
+ protected: // New functions
+ protected: // Functions from base classes
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CUsbWatcherTest( CTestModuleIf& aTestModuleIf );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Frees all resources allocated from test methods.
+ * @since ?Series60_version
+ */
+ void TestDelete();
+
+ /**
+ * Constructs all test resources for test methods.
+ */
+ void TestConstructL();
+
+ /**
+ * Extracts test block parameters from script file
+ */
+ void TestBlocksInfoL();
+
+ /**
+ * Executes test block
+ */
+ TInt ExecuteTestBlock( CStifItemParser& aItem );
+
+ /**
+ * Executes proper get parameter function indicated by its arguments
+ */
+ void GetTestBlockParamL( TGetTestBlockParamOperation aOperation,
+ TTestBlockParamName aParamName );
+
+ /**
+ * Method used to log version of test class
+ */
+ void SendTestClassVersion();
+
+ // ADD NEW METHOD DEC HERE
+ // [TestMethods] - Do not remove
+ void ExampleTestL( TUsbWatcherTestBlockParams& aParams,
+ TUsbWatcherTestResult& aTestResult );
+
+ /**
+ * Test methods are listed below.
+ */
+
+ void InitializationTestL( TUsbWatcherTestBlockParams& aParams,
+ TUsbWatcherTestResult& aTestResult );
+
+ void PersonalityManagementTestL( TUsbWatcherTestBlockParams& aParams,
+ TUsbWatcherTestResult& aTestResult );
+
+ void PersonalitySwitchTestL( TUsbWatcherTestBlockParams& aParams,
+ TUsbWatcherTestResult& aTestResult );
+
+ void BranchTestL( TUsbWatcherTestBlockParams& aParams,
+ TUsbWatcherTestResult& aTestResult );
+
+ TInt BackupPersonalitySetting();
+ TInt RestorePersonalitySetting();
+
+ TInt GetPersonalityIdFromString( TPtrC& aUsbPersonalityName, TInt& aUsbPersonalityId );
+ TUsbWatcherTestResult SetPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected );
+ TUsbWatcherTestResult CancelSetPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected );
+ TUsbWatcherTestResult SetPreviousPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected );
+ TUsbWatcherTestResult SetPreviousPersonalityOnDiscTest( TInt aNewPersonalityId, TBool aCableConnected );
+ TUsbWatcherTestResult SetPreviousPersonalitySyncTest( TInt aNewPersonalityId, TBool aCableConnected );
+ TUsbWatcherTestResult CancelSetPreviousPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected );
+ TUsbWatcherTestResult SetUnknownPersonalityTest();
+ TUsbWatcherTestResult InterruptPersonalitySetTest( TInt aNewPersonalityId );
+
+ TUsbWatcherTestResult FastPersonalitySwitchTest();
+ TUsbWatcherTestResult DelayedPersonalitySwitchTest();
+
+ TUsbWatcherTestResult SetSamePersonalityTest();
+ TUsbWatcherTestResult SetPersonalityBlockingOn();
+ TUsbWatcherTestResult SetPersonalityAskOnConnectionOff();
+
+
+ public: // Data
+ protected: // Data
+ private: // Data
+
+ // Member object used to store test block parameters
+ TUsbWatcherTestBlockParams iTestBlockParams;
+
+ // Used to indicate if test block with specified parameters exist
+ TBool iTestBlockFound;
+
+ // Function pointer used to call proper test block methods
+ void ( CUsbWatcherTest::*iTestBlockFunction )
+ ( TUsbWatcherTestBlockParams&, TUsbWatcherTestResult& );
+
+ // Not own
+ CStifItemParser* iItem;
+ CStubber * iStubber;
+ RUsbWatcher* iWatcher;
+ RUsb* iUsbMan;
+ CRepository* iCenRep;
+
+ // Reserved pointer for future extension
+ //TAny* iReserved;
+
+ // ADD NEW DATA DEC HERE
+
+ TInt iPersonalityIdBackup;
+
+
+ public: // Friend classes
+ protected: // Friend classes
+ private: // Friend classes
+
+ };
+#endif // TEMPLATESTUBSCRIPTUsbWatcherTest_H
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/inc/UsbWatcherTestDebug.inl Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32debug.h>
+
+NONSHARABLE_CLASS( TOverflowTruncate8 ) : public TDes8Overflow
+ {
+public:
+ void Overflow( TDes8& /*aDes*/ ) {}
+ };
+
+NONSHARABLE_CLASS( TOverflowTruncate16 ) : public TDes16Overflow
+ {
+public:
+ void Overflow( TDes16& /*aDes*/ ) {}
+ };
+
+_LIT8(KStifTestPrefix8, "[STIF_LOG] ");
+_LIT( KStifTestPrefix, "[STIF_LOG] ");
+_LIT8( KStifEntryPrefix8, ">>> %S" );
+_LIT8( KStifExitPrefix8, "<<< %S" );
+
+const TInt KMaxLogLineLength = 512;
+
+#define TRACE_INFO( p ) { Trace p; }
+#define TRACE_FUNC_ENTRY { TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ ); Trace( KStifEntryPrefix8, &ptr8 ); }
+#define TRACE_FUNC_EXIT { TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ ); Trace( KStifExitPrefix8, &ptr8 ); }
+
+void CUsbWatcherTest::Trace(TRefByValue<const TDesC8> aFmt, ...)
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TOverflowTruncate8 overflow;
+
+ RBuf8 buf8;
+ RBuf8 bufStifLog8;
+
+ buf8.Create( KMaxLogLineLength );
+ buf8.Append( KStifTestPrefix8 );
+ buf8.AppendFormatList( aFmt, list, &overflow );
+ bufStifLog8.Create( KMaxLogLineLength );
+ bufStifLog8.AppendFormatList( aFmt, list, &overflow );
+
+ RBuf16 buf16;
+ RBuf16 bufStifLog16;
+
+ buf16.Create( KMaxLogLineLength );
+ buf16.Copy( buf8 );
+ bufStifLog16.Create( KMaxLogLineLength );
+ bufStifLog16.Copy( bufStifLog8 );
+
+ RDebug::Print( buf16 );
+ iLog->Log( bufStifLog16 );
+ buf8.Close();
+ bufStifLog8.Close();
+ buf16.Close();
+ bufStifLog16.Close();
+ };
+
+void CUsbWatcherTest::Trace(TRefByValue<const TDesC16> aFmt, ...)
+ {
+ VA_LIST list;
+ VA_START(list,aFmt);
+ TOverflowTruncate16 overflow;
+
+ RBuf16 buf;
+ RBuf16 bufStifLog;
+
+ buf.Create( KMaxLogLineLength );
+ buf.Append( KStifTestPrefix );
+ buf.AppendFormatList( aFmt, list, &overflow );
+ bufStifLog.Create( KMaxLogLineLength );
+ bufStifLog.AppendFormatList( aFmt, list, &overflow );
+
+ RDebug::Print( buf );
+ iLog->Log( bufStifLog );
+ buf.Close();
+ bufStifLog.Close();
+ };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/inc/testdebug.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 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 TESTDEBUG_H_
+#define TESTDEBUG_H_
+
+// INCLUDES
+#include <e32debug.h>
+#include <e32def.h>
+
+// CONSTANTS
+_LIT8(KStifTestPrefix8, "[STIF_LOG] ");
+_LIT( KStifTestPrefix, "[STIF_LOG] ");
+_LIT8( KStifEntryPrefix8, ">>> %S" );
+_LIT8( KStifExitPrefix8, "<<< %S" );
+
+const TInt KMaxLogLineLength = 512;
+typedef TBuf8< KMaxLogLineLength > TLogBuf8;
+typedef TBuf16< KMaxLogLineLength > TLogBuf16;
+
+// CLASS DECLARATION
+NONSHARABLE_CLASS( TTestLogger )
+ {
+public:
+ static inline TLogBuf16 CreateLogBuf( TRefByValue<const TDesC8> aFmt, ... );
+ static inline TLogBuf16 CreateLogBuf( TRefByValue<const TDesC16> aFmt, ... );
+ static inline void Trace( CStifLogger& aLog, TLogBuf16 aLogBuf );
+ };
+
+// MACROS
+#define TRACE( p ) {\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( _L( p ) );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_INFO( p, args... ) {\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( _L( p ), args );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_FUNC_ENTRY {\
+ TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ );\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( KStifEntryPrefix8, &ptr8 );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_FUNC_EXIT {\
+ TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ );\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( KStifExitPrefix8, &ptr8 );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+
+#include "testdebug.inl"
+
+#endif /* TESTDEBUG_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/inc/testdebug.inl Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32debug.h>
+
+NONSHARABLE_CLASS( TOverflowTruncate8 ) : public TDes8Overflow
+ {
+public:
+ void Overflow( TDes8& /*aDes*/ ) {}
+ };
+
+NONSHARABLE_CLASS( TOverflowTruncate16 ) : public TDes16Overflow
+ {
+public:
+ void Overflow( TDes16& /*aDes*/ ) {}
+ };
+
+TLogBuf16 TTestLogger::CreateLogBuf( TRefByValue<const TDesC8> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TOverflowTruncate8 overflow;
+ TLogBuf8 buf8;
+ TLogBuf16 buf16;
+ buf8.AppendFormatList( aFmt, list, &overflow );
+ buf16.Copy( buf8 );
+ return buf16;
+ };
+
+TLogBuf16 TTestLogger::CreateLogBuf( TRefByValue<const TDesC16> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TOverflowTruncate16 overflow;
+ TLogBuf16 buf16;
+ buf16.AppendFormatList( aFmt, list, &overflow );
+ return buf16;
+ };
+
+void TTestLogger::Trace( CStifLogger& aLog, TLogBuf16 aLogBuf )
+ {
+ RBuf16 buf;
+ RBuf16 bufStifLog;
+
+ buf.Create( KMaxLogLineLength );
+ buf.Append( KStifTestPrefix );
+ buf.Append( aLogBuf );
+ bufStifLog.Create( KMaxLogLineLength );
+ bufStifLog.Append( aLogBuf );
+
+ RDebug::Print( buf );
+ aLog.Log( bufStifLog );
+ buf.Close();
+ bufStifLog.Close();
+ };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/init/UsbWatcherTest_ats.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,232 @@
+# Copyright (c) 2010 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: Installation file for STIF
+#
+
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= E:/Testing/Logs/
+TestReportFileName= UsbWatcherTest_TestReport.log
+
+TestReportFormat= TXT # Possible values: TXT or HTML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbWatcherTestUsbWatcherTestUsbWatcherTest
+# Modules might have initialisation file, specified as
+# IniFile= c:/testframework/YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:/testframework/NormalCases.txt
+# TestCaseFile= c:/testframework/SmokeCases.txt
+# TestCaseFile= c:/testframework/ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= TestScripter
+TestCaseFile= E:/testing/conf/UsbWatcherTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbWatcherTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbWatcherTest used initialization file
+#IniFile= c:/testframework/init.txt
+
+#TestModuleUsbWatcherTest used configuration file(s)
+#TestCaseFile= c:/testframework/testcases1.cfg
+#TestCaseFile= c:/testframework/testcases2.cfg
+#TestCaseFile= c:/testframework/manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:/LOGS/TestFramework/' and in code is defined
+# Logger's path 'D://LOGS//Module//' with those definition the path
+# will be 'C:/LOGS/TestFramework/LOGS/Module/'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:/LOGS/TestFramework/
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:/LOGS/TestFramework/
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/init/UsbWatcherTest_phone.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,233 @@
+# Copyright (c) 2010 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: Installation file for STIF
+#
+
+
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= c:\logs\testframework\TemplateScriptUsbWatcherTest\
+TestReportFileName= UsbWatcherTest_TestReport.log
+
+TestReportFormat= TXT # Possible values: TXT or HTML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbWatcherTestUsbWatcherTestUsbWatcherTest
+# Modules might have initialisation file, specified as
+# IniFile= c:/testframework/YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:/testframework/NormalCases.txt
+# TestCaseFile= c:/testframework/SmokeCases.txt
+# TestCaseFile= c:/testframework/ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= TestScripter
+TestCaseFile= c:\testframework\UsbWatcherTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbWatcherTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbWatcherTest used initialization file
+#IniFile= c:/testframework/init.txt
+
+#TestModuleUsbWatcherTest used configuration file(s)
+#TestCaseFile= c:/testframework/testcases1.cfg
+#TestCaseFile= c:/testframework/testcases2.cfg
+#TestCaseFile= c:/testframework/manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:/LOGS/TestFramework/' and in code is defined
+# Logger's path 'D://LOGS//Module//' with those definition the path
+# will be 'C:/LOGS/TestFramework/LOGS/Module/'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:/LOGS/TestFramework/
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:/LOGS/TestFramework/
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/src/UsbWatcherTest.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,326 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+// INCLUDE FILES
+#include <Stiftestinterface.h>
+#include "UsbWatcherTest.h"
+#include <SettingServerClient.h>
+#include "testdebug.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbWatcherTest::CUsbWatcherTest
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CUsbWatcherTest::CUsbWatcherTest(
+ CTestModuleIf& aTestModuleIf ):
+ CScriptBase( aTestModuleIf )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbWatcherTest::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CUsbWatcherTest::ConstructL()
+ {
+ //Read logger settings to check whether test case name is to be
+ //appended to log file name.
+ RSettingServer settingServer;
+ TInt ret = settingServer.Connect();
+ if(ret != KErrNone)
+ {
+ User::Leave(ret);
+ }
+ // Struct to StifLogger settigs.
+ TLoggerSettings loggerSettings;
+ // Parse StifLogger defaults from STIF initialization file.
+ ret = settingServer.GetLoggerSettings( loggerSettings );
+ if( ret != KErrNone )
+ {
+ User::Leave( ret );
+ }
+ // Close Setting server session
+ settingServer.Close();
+
+ TFileName logFileName;
+
+ if( loggerSettings.iAddTestCaseTitle )
+ {
+ TName title;
+ TestModuleIf().GetTestCaseTitleL( title );
+ logFileName.Format( KUsbWatcherTestLogFileWithTitle, &title );
+ }
+ else
+ {
+ logFileName.Copy( KUsbWatcherTestLogFile );
+ }
+
+ iLog = CStifLogger::NewL( KUsbWatcherTestLogPath,
+ logFileName,
+ CStifLogger::ETxt,
+ CStifLogger::EFile,
+ EFalse );
+
+ SendTestClassVersion();
+ TestConstructL();
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbWatcherTest::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CUsbWatcherTest* CUsbWatcherTest::NewL(
+ CTestModuleIf& aTestModuleIf )
+ {
+ CUsbWatcherTest* self = new (ELeave) CUsbWatcherTest( aTestModuleIf );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// Destructor
+CUsbWatcherTest::~CUsbWatcherTest()
+ {
+
+ // Delete resources allocated from test methods
+ TestDelete();
+
+ // Delete logger
+ delete iLog;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbWatcherTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+
+TInt CUsbWatcherTest::RunMethodL(
+ CStifItemParser& aItem )
+ {
+ return ExecuteTestBlock( aItem );
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbWatcherTest::ExecuteTestBlock
+// -----------------------------------------------------------------------------
+
+TInt CUsbWatcherTest::ExecuteTestBlock( CStifItemParser& aItem )
+ {
+ TRACE_FUNC_ENTRY
+ iItem = &aItem;
+ TInt res;
+ TUsbWatcherTestResult testResult = ETestCaseFailed;
+
+ res = iItem -> GetString( _L( "tester" ), iTestBlockParams.iTestBlockName );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "Getting test block name failed with: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+ TRACE_INFO( "Test block name: %S", &iTestBlockParams.iTestBlockName )
+
+ TRACE( "Extracting test block parameters..." )
+ TRAP( res, TestBlocksInfoL() );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "Extracting parameters failed: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+ if ( !iTestBlockFound )
+ {
+ TRACE( "Test block not found!" )
+ TRACE_FUNC_EXIT
+ return KErrNotFound;
+ }
+ TRACE( "Extracting parameters successful" )
+
+ TRAP( res, ( this ->*iTestBlockFunction )( iTestBlockParams, testResult ) );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "ExecuteTestBlockL error: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+
+ STIF_ASSERT_EQUALS( ETestCasePassed, testResult );
+ TRACE( "Test block passed!" );
+ TRACE_FUNC_EXIT
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbWatcherTest::GetTestBlockParamL
+// -----------------------------------------------------------------------------
+
+void CUsbWatcherTest::GetTestBlockParamL( TGetTestBlockParamOperation aOperation, TTestBlockParamName aParamName )
+ {
+ switch( aOperation )
+ {
+ case eGetString:
+ {
+ switch ( aParamName )
+ {
+ case eTestOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption1 ) );
+ break;
+ }
+ case eTestOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption2 ) );
+ break;
+ }
+ case eTestOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ break;
+ }
+ }
+ break;
+ }
+ case eGetInt:
+ {
+ switch ( aParamName )
+ {
+ case eTestIntOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption1 ) );
+ break;
+ }
+ case eTestIntOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption2 ) );
+ break;
+ }
+ case eTestIntOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ break;
+ }
+ }
+ break;
+ }
+ case eGetChar:
+ {
+ switch ( aParamName )
+ {
+ case eTestCharOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption1 ) );
+ break;
+ }
+ case eTestCharOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption2 ) );
+ break;
+ }
+ case eTestCharOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ }
+ }
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ }
+ }
+ }
+
+//-----------------------------------------------------------------------------
+// CUsbWatcherTest::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CUsbWatcherTest::SendTestClassVersion()
+ {
+ TVersion moduleVersion;
+ moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+ moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+ moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+
+ TFileName moduleName;
+ moduleName = _L("UsbWatcherTest.dll");
+
+ TBool newVersionOfMethod = ETrue;
+ TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL(
+ CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+ {
+
+ return ( CScriptBase* ) CUsbWatcherTest::NewL( aTestModuleIf );
+
+ }
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/src/UsbWatcherTestBlocks.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,1126 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include "UsbWatcherTest.h"
+#include "testdebug.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbWatcherTest::TestConstructL
+// Construct here all test resources for test methods.
+// Called from ConstructL.
+// -----------------------------------------------------------------------------
+
+void CUsbWatcherTest::TestConstructL()
+ {
+ TRACE_FUNC_ENTRY
+
+ iStubber = CStubber::NewL();
+
+ iWatcher = new ( ELeave ) RUsbWatcher();
+ iCenRep = CRepository::NewL( KCRUidUsbWatcher );
+ STIF_LOG( "Usb man initialization" );
+ iUsbMan = new ( ELeave ) RUsb();
+ User::LeaveIfError( iUsbMan -> Connect() );
+ User::LeaveIfError( BackupPersonalitySetting() );
+
+ TRACE_FUNC_EXIT
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbWatcherTest::TestDelete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+
+void CUsbWatcherTest::TestDelete()
+ {
+ TRACE_FUNC_ENTRY
+
+ if ( RestorePersonalitySetting() != KErrNone )
+ STIF_LOG( "Warning: personality restore failed" );
+
+ delete iWatcher;
+ iWatcher = NULL;
+
+ delete iCenRep;
+ iCenRep = NULL;
+
+ iUsbMan -> Close();
+ delete iUsbMan;
+ iUsbMan = NULL;
+
+ delete iStubber;
+ iStubber = NULL;
+
+ TRACE_FUNC_EXIT
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbWatcherTest::TestBlocksInfoL
+// Add new test block parameter entries below
+// -----------------------------------------------------------------------------
+
+void CUsbWatcherTest::TestBlocksInfoL()
+ {
+
+ TESTENTRY( "ExampleTestL", CUsbWatcherTest::ExampleTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ TESTPARAM( eGetInt, eTestIntOption1 )
+ TESTPARAM( eGetChar, eTestCharOption1 )
+ }
+
+ TESTENTRY( "InitializationTest", CUsbWatcherTest::InitializationTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "PersonalityManagementTest", CUsbWatcherTest::PersonalityManagementTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ }
+
+ TESTENTRY( "PersonalitySwitchTest", CUsbWatcherTest::PersonalitySwitchTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+
+ TESTENTRY( "BranchTest", CUsbWatcherTest::BranchTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ }
+
+// Add test block methods implementation here
+// -----------------------------------------------------------------------------
+// CUsbWatcherTest::ExampleTestL
+// -----------------------------------------------------------------------------
+
+void CUsbWatcherTest::ExampleTestL( TUsbWatcherTestBlockParams& aParams, TUsbWatcherTestResult& aTestResult )
+ {
+ TRACE_FUNC_ENTRY
+
+ //iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ if ( !aParams.iTestOption1.Compare( _L( "API" ) ) )
+ {
+ TRACE_INFO( "Api test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Api test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Api test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Api test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else if ( !aParams.iTestOption1.Compare( _L( "MODULE" ) ) )
+ {
+ TRACE_INFO( "Module test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Module test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Module test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Module test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else if ( !aParams.iTestOption1.Compare( _L( "BRANCH" ) ) )
+ {
+ TRACE_INFO( "Branch test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Branch test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Branch test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Branch test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else
+ {
+ TRACE( "Invalid test parameter" )
+ TRACE_FUNC_EXIT
+ User::Leave( KErrNotFound );
+ }
+
+ aTestResult = ETestCasePassed;
+ TRACE_FUNC_EXIT
+ }
+
+
+// Add other member functions implementation here
+
+// -----------------------------------------------------------------------------
+// CUSBWatcherApiTest::InitializationTest
+// -----------------------------------------------------------------------------
+
+void CUsbWatcherTest::InitializationTestL( TUsbWatcherTestBlockParams& aParams,
+ TUsbWatcherTestResult& aTestResult )
+ {
+ TInt res;
+ TPtrC testOptionName( aParams.iTestOption1 );
+
+ if ( !testOptionName.Compare( _L( "VERSION" ) ) )
+ {
+ TRACE( "Test option: VERSION" );
+ TVersion returnedVersion;
+ TVersion expectedVersion( KUsbWatcherSrvMajorVersionNumber,
+ KUsbWatcherSrvMinorVersionNumber,
+ KUsbWatcherSrvBuildVersionNumber );
+ TRACE( " >Version" );
+ returnedVersion = iWatcher -> Version();
+ TRACE( " <Version" );
+ if( expectedVersion.iMajor != returnedVersion.iMajor )
+ User::Leave(KErrNotFound);
+ if( expectedVersion.iMinor != returnedVersion.iMinor )
+ User::Leave(KErrNotFound);
+ if( expectedVersion.iBuild != returnedVersion.iBuild )
+ User::Leave(KErrNotFound);
+ }
+ else if ( !testOptionName.Compare( _L( "SINGLE_CONN" ) ) )
+ {
+ TRACE( "Test option: SINGLE_CONN" );
+ TRACE( ">Connect" );
+ res = iWatcher -> Connect();
+ TRACE( " <Connect" );
+ TRACE_INFO( "USB watcher connection value: %d, expected: %d", res, KErrNone );
+ User::LeaveIfError( res );
+ }
+ else
+ {
+ TRACE( "Test option: not supported" );
+ User::Leave( KErrNotFound );
+ }
+
+ aTestResult = ETestCasePassed;
+ }
+
+// -----------------------------------------------------------------------------
+// CUSBWatcherApiTest::PersonalityManagementTest
+// -----------------------------------------------------------------------------
+
+void CUsbWatcherTest::PersonalityManagementTestL( TUsbWatcherTestBlockParams& aParams,
+ TUsbWatcherTestResult& aTestResult )
+ {
+ TInt res;
+ TInt newPersonalityId;
+ TPtrC testOptionName( aParams.iTestOption2 );
+ TPtrC usbPersonalityName( aParams.iTestOption1 );
+ TInt currentPersonalityId;
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetPersonalityProperty, 0, 0, _L8( "stub" ) ) );
+
+ res = iUsbMan -> GetCurrentPersonalityId( currentPersonalityId );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "GetCurrentPersonalityId failed with value: %d", res );
+ User::Leave(res);
+ }
+
+ res = GetPersonalityIdFromString( usbPersonalityName, newPersonalityId );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "GetPersonalityIdFromString failed with value: %d", res );
+ User::Leave(res);
+ }
+
+ TRACE( " >Connect" );
+ res = iWatcher -> Connect();
+ TRACE( " <Connect" );
+ TRACE_INFO( "USB watcher connection value: %d, expected: %d", res, KErrNone );
+ User::LeaveIfError( res );
+
+ if ( !testOptionName.Compare( _L( "SET_PERSONALITY" ) ) && newPersonalityId == KUsbPersonalityIdPCSuiteMTP )
+ {
+ TRequestStatus status;
+ TInt setPersonalityId;
+
+ if ( currentPersonalityId != newPersonalityId )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ }
+
+ res = iUsbMan -> GetCurrentPersonalityId( currentPersonalityId );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( status, KUsbPersonalityIdMS, EFalse, EFalse );
+ User::WaitForRequest( status );
+ TRACE( " <SetPersonality" );
+ TRACE_INFO( "Set initial test personality value: %d", status.Int() );
+ res = iCenRep -> Get( KUsbWatcherPersonality, setPersonalityId );
+ TRACE_INFO( "Set initial test personality value: %d, personality ID: %d", status.Int(), setPersonalityId );
+ User::LeaveIfError( status.Int() );
+ if( KUsbPersonalityIdMS != setPersonalityId )
+ User::Leave(KErrNotFound);
+ }
+ else
+ {
+ TRequestStatus status;
+ TInt setPersonalityId;
+
+ if ( currentPersonalityId != newPersonalityId )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ }
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( status, KUsbPersonalityIdPCSuiteMTP, EFalse, EFalse );
+ User::WaitForRequest( status );
+ TRACE( " <SetPersonality" );
+ res = iCenRep -> Get( KUsbWatcherPersonality, setPersonalityId );
+ TRACE_INFO( "Set initial test personality value: %d, personality ID: %d", status.Int(), setPersonalityId );
+ User::LeaveIfError( status.Int() );
+ if( KUsbPersonalityIdPCSuiteMTP != setPersonalityId )
+ User::Leave(KErrNotFound);
+ }
+
+ if ( !testOptionName.Compare( _L( "SET_PERSONALITY" ) ) )
+ {
+ TRACE( "Test option: SET_PERSONALITY" );
+ aTestResult = SetPersonalityTest( newPersonalityId, ETrue );
+ }
+ else if ( !testOptionName.Compare( _L( "CANCEL_SET_PERSONALITY" ) ) )
+ {
+ TRACE( "Test option: CANCEL_SET_PERSONALITY" );
+ aTestResult = CancelSetPersonalityTest( newPersonalityId, ETrue );
+ }
+ else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY" ) ) )
+ {
+ TRACE( "Test option: SET_PREVIOUS_PERSONALITY" );
+ aTestResult = SetPreviousPersonalityTest( newPersonalityId, ETrue );
+ }
+ else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY_ON_DISC" ) ) )
+ {
+ TRACE( "Test option: SET_PREVIOUS_PERSONALITY_ON_DISC" );
+ aTestResult = SetPreviousPersonalityOnDiscTest( newPersonalityId, ETrue );
+ }
+ else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY_SYNC" ) ) )
+ {
+ TRACE( "Test option: SET_PREVIOUS_PERSONALITY_SYNC" );
+ aTestResult = SetPreviousPersonalitySyncTest( newPersonalityId, ETrue );
+ }
+ else if ( !testOptionName.Compare( _L( "CANCEL_SET_PREVIOUS_PERSONALITY" ) ) )
+ {
+ TRACE( "Test option: CANCEL_SET_PREVIOUS_PERSONALITY" );
+ aTestResult = CancelSetPreviousPersonalityTest( newPersonalityId, ETrue );
+ }
+ else if ( !testOptionName.Compare( _L( "SET_PERSONALITY_DISC" ) ) )
+ {
+ TRACE( "Test option: SET_PERSONALITY_DISC" );
+ aTestResult = SetPersonalityTest( newPersonalityId, EFalse );
+ }
+ else if ( !testOptionName.Compare( _L( "CANCEL_SET_PERSONALITY_DISC" ) ) )
+ {
+ TRACE( "Test option: CANCEL_SET_PERSONALITY_DISC" );
+ aTestResult = CancelSetPersonalityTest( newPersonalityId, EFalse );
+ }
+ else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY_DISC" ) ) )
+ {
+ TRACE( "Test option: SET_PREVIOUS_PERSONALITY_DISC" );
+ aTestResult = SetPreviousPersonalityTest( newPersonalityId, EFalse );
+ }
+ else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY_ON_DISC_DISC" ) ) )
+ {
+ TRACE( "Test option: SET_PREVIOUS_PERSONALITY_ON_DISC_DISC" );
+ aTestResult = SetPreviousPersonalityOnDiscTest( newPersonalityId, EFalse );
+ }
+ else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY_SYNC_DISC" ) ) )
+ {
+ TRACE( "Test option: SET_PREVIOUS_PERSONALITY_SYNC_DISC" );
+ aTestResult = SetPreviousPersonalitySyncTest( newPersonalityId, EFalse );
+ }
+ else if ( !testOptionName.Compare( _L( "CANCEL_SET_PREVIOUS_PERSONALITY_DISC" ) ) )
+ {
+ TRACE( "Test option: CANCEL_SET_PREVIOUS_PERSONALITY_DISC" );
+ aTestResult = CancelSetPreviousPersonalityTest( newPersonalityId, EFalse );
+ }
+ else if ( !testOptionName.Compare( _L( "SET_UNKNOWN_PERSONALITY" ) ) )
+ {
+ TRACE( "Test option: SET_UNKNOWN_PERSONALITY" );
+ aTestResult = SetUnknownPersonalityTest();
+ }
+ else if ( !testOptionName.Compare( _L( "INTERRUPT_PERSONALITY_SET" ) ) )
+ {
+ TRACE( "Test option: INTERRUPT_PERSONALITY_SET" );
+ aTestResult = InterruptPersonalitySetTest( newPersonalityId );
+ }
+ else
+ {
+ TRACE( "Test option: not supported" );
+ User::Leave(KErrNotFound);
+ }
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::SetPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected )
+ {
+ TRequestStatus stat;
+ TInt currentPersonalityId;
+ TInt res;
+
+ TRACE( "Checking test results:" );
+
+ if ( aCableConnected )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ }
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, aNewPersonalityId );
+
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId )
+ return ETestCaseFailed;
+
+ return ETestCasePassed;
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::CancelSetPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected )
+ {
+ TRequestStatus stat;
+ TInt previousPersonalityId;
+ TInt currentPersonalityId;
+ TInt res;
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Original personality ID: %d", previousPersonalityId );
+ if ( res != KErrNone )
+ return ETestCaseFailed;
+
+ TRACE( "Checking test results:" );
+
+ if ( aCableConnected )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetPersonalityProperty, 0, 0, _L8( "stub" ) ) );
+ }
+
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse );
+ TRACE( " >CancelSetPersonality" );
+ iWatcher -> CancelSetPersonality();
+ User::WaitForRequest( stat );
+ TRACE( " <CancelSetPersonality" );
+ TRACE_INFO("Cancel set personality request status: %d", stat.Int() );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d", currentPersonalityId );
+
+ if ( aCableConnected )
+ {
+ if ( stat.Int() != KErrCancel || res != KErrNone || currentPersonalityId != previousPersonalityId )
+ return ETestCaseFailed;
+ }
+ else
+ {
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId )
+ return ETestCaseFailed;
+ }
+
+ return ETestCasePassed;
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::SetPreviousPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected )
+ {
+ TRequestStatus stat;
+ TInt previousPersonalityId;
+ TInt currentPersonalityId;
+ TInt res;
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Original personality ID: %d", previousPersonalityId );
+ if ( res != KErrNone )
+ return ETestCaseFailed;
+
+ TRACE( " >SetPersonality" );
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, aNewPersonalityId );
+
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId )
+ return ETestCaseFailed;
+
+ TRACE( "Checking test results:" );
+
+ if ( aCableConnected )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ }
+
+ TRACE( " >SetPreviousPersonality" );
+ iWatcher -> SetPreviousPersonality( stat );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPreviousPersonality" );
+ TRACE_INFO("Set previous personality request status: %d, expected %d", stat.Int(), KErrNone );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, previousPersonalityId );
+
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != previousPersonalityId )
+ return ETestCaseFailed;
+
+ return ETestCasePassed;
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::SetPreviousPersonalityOnDiscTest( TInt aNewPersonalityId, TBool aCableConnected )
+ {
+ TRequestStatus stat;
+ TInt previousPersonalityId;
+ TInt currentPersonalityId;
+ TInt res;
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Original personality ID: %d", previousPersonalityId );
+ if ( res != KErrNone )
+ return ETestCaseFailed;
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+
+ if ( aCableConnected )
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+
+ TRACE( " >SetPreviousPersonalityOnDisconnect" );
+ iWatcher -> SetPreviousPersonalityOnDisconnect();
+ TRACE( " <SetPreviousPersonalityOnDisconnect" );
+
+ // disconnect cable here
+
+ TRACE( "Checking test results:" );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, aNewPersonalityId );
+
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId )
+ return ETestCaseFailed;
+
+ return ETestCasePassed;
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::SetPreviousPersonalitySyncTest( TInt aNewPersonalityId, TBool aCableConnected )
+ {
+ TRequestStatus stat;
+ TInt previousPersonalityId;
+ TInt currentPersonalityId;
+ TInt res;
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Original personality ID: %d", previousPersonalityId );
+ if ( res != KErrNone )
+ return ETestCaseFailed;
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, aNewPersonalityId );
+
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId )
+ return ETestCaseFailed;
+
+ TRACE( "Checking test results:" );
+
+ if ( aCableConnected )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ }
+
+ TRACE( " >SetPreviousPersonality" );
+ iWatcher -> SetPreviousPersonality();
+ TRACE( " <SetPreviousPersonality" );
+ TRACE("Set previous personality sync invoked" );
+
+ User::After( 10*1000*1000 );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, previousPersonalityId );
+
+ if ( res != KErrNone || currentPersonalityId != previousPersonalityId )
+ return ETestCaseFailed;
+
+ return ETestCasePassed;
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::CancelSetPreviousPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected )
+ {
+ TRequestStatus stat;
+ TInt previousPersonalityId;
+ TInt currentPersonalityId;
+ TInt res;
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Original personality ID: %d", previousPersonalityId );
+ if ( res != KErrNone )
+ return ETestCaseFailed;
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, aNewPersonalityId );
+
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId )
+ return ETestCaseFailed;
+
+ TRACE( "Checking test results:" );
+
+ if ( aCableConnected )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ }
+
+ TRACE( " >SetPreviousPersonality" );
+ iWatcher -> SetPreviousPersonality( stat );
+ TRACE( " >CancelSetPreviousPersonality" );
+ iWatcher -> CancelSetPreviousPersonality();
+ User::WaitForRequest( stat );
+ TRACE( " <CancelSetPreviousPersonality" );
+ TRACE_INFO("Cancel set previous personality request status: %d", stat.Int() );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d", currentPersonalityId );
+
+ if ( aCableConnected )
+ {
+ if ( stat.Int() != KErrCancel || res != KErrNone || currentPersonalityId != aNewPersonalityId )
+ return ETestCaseFailed;
+ }
+ else
+ {
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != previousPersonalityId )
+ return ETestCaseFailed;
+ }
+
+
+ return ETestCasePassed;
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::SetUnknownPersonalityTest()
+ {
+ TRequestStatus stat;
+ TInt unknownPersonalityId = 0xFFFF;
+
+ TRACE( "Checking test results:" );
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, unknownPersonalityId, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNotFound );
+
+ if ( stat.Int() != KErrNotFound )
+ return ETestCaseFailed;
+
+ return ETestCasePassed;
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::InterruptPersonalitySetTest( TInt aNewPersonalityId )
+ {
+ TRequestStatus stat;
+ TRequestStatus secondStat;
+ TInt previousPersonalityId;
+ TInt currentPersonalityId;
+ TInt res;
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Original personality ID: %d", previousPersonalityId );
+ if ( res != KErrNone )
+ return ETestCaseFailed;
+
+ TRACE( "Checking test results:" );
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse );
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( secondStat, previousPersonalityId, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+ User::WaitForRequest( secondStat );
+ TRACE( " <SetPersonality" );
+
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+ TRACE_INFO("Interrupt set personality request status: %d, expected %d", secondStat.Int(), KErrNone );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, previousPersonalityId );
+
+ if ( stat.Int() != KErrNone || secondStat.Int() != KErrNone || res != KErrNone || currentPersonalityId != previousPersonalityId )
+ return ETestCaseFailed;
+
+ return ETestCasePassed;
+ }
+
+TInt CUsbWatcherTest::GetPersonalityIdFromString( TPtrC& aUsbPersonalityName, TInt& aUsbPersonalityId )
+ {
+ if ( !aUsbPersonalityName.Compare( _L( "PCSUITE" ) ) )
+ {
+ TRACE( "Test personality ID setting: PCSUITE" );
+ aUsbPersonalityId = KUsbPersonalityIdPCSuiteMTP;
+ }
+ else if ( !aUsbPersonalityName.Compare( _L( "MS" ) ) )
+ {
+ TRACE( "Test personality ID setting: MS" );
+ aUsbPersonalityId = KUsbPersonalityIdMS;
+ }
+ else if ( !aUsbPersonalityName.Compare( _L( "PTP" ) ) )
+ {
+ TRACE( "Test personality ID setting: PTP" );
+ aUsbPersonalityId = KUsbPersonalityIdPTP;
+ }
+ else if ( !aUsbPersonalityName.Compare( _L( "MTP" ) ) )
+ {
+ TRACE( "Test personality ID setting: MTP" );
+ aUsbPersonalityId = KUsbPersonalityIdMTP;
+ }
+ else if ( !aUsbPersonalityName.Compare( _L( "Modem" ) ) )
+ {
+ TRACE( "Test personality ID setting: Modem" );
+ aUsbPersonalityId = KUsbPersonalityIdModemInst;
+ }
+ else
+ {
+ TRACE( "Test personality ID setting: not supported" );
+ return KErrNotFound;
+ }
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUSBWatcherTest::PersonalitySwitchTest
+// -----------------------------------------------------------------------------
+
+void CUsbWatcherTest::PersonalitySwitchTestL( TUsbWatcherTestBlockParams& aParams,
+ TUsbWatcherTestResult& aTestResult )
+ {
+ TInt res;
+ TRequestStatus stat;
+ TPtrC testOptionName( aParams.iTestOption1 );
+ TInt currentPersonalityId;
+
+ res = iUsbMan -> GetCurrentPersonalityId( currentPersonalityId );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "GetCurrentPersonalityId failed with value: %d" , res );
+ User::Leave( res );
+ }
+
+ TRACE( " >Connect" );
+ res = iWatcher -> Connect();
+ TRACE( " <Connect" );
+ TRACE_INFO( "USB watcher connection value: %d, expected: %d" , res, KErrNone );
+ User::LeaveIfError( res );
+
+ if ( currentPersonalityId != KUsbPersonalityIdPCSuiteMTP )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ }
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, KUsbPersonalityIdPCSuiteMTP, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+
+ TRACE_INFO( "Set initial test personality value: %d" , stat.Int() );
+ User::LeaveIfError( stat.Int() );
+
+ if ( !testOptionName.Compare( _L( "FAST_SWITCH" ) ) )
+ {
+ TRACE( "Test option: FAST_SWITCH" );
+ aTestResult = FastPersonalitySwitchTest();
+ }
+ else if ( !testOptionName.Compare( _L( "DELAYED_SWITCH" ) ) )
+ {
+ TRACE( "Test option: DELAYED_SWITCH" );
+ aTestResult = DelayedPersonalitySwitchTest();
+ }
+ else
+ {
+ TRACE( "Test option: not supported" );
+ User::Leave(KErrNotFound);
+ }
+
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::FastPersonalitySwitchTest()
+ {
+ TInt res;
+ TInt testLoopCounter = 3;
+ TInt numberOfPersonalities = 4;
+ TInt currentPersonalityId;
+ TInt setPersonalityId;
+ TRequestStatus stat;
+
+ TRACE( "Checking test results:" );
+
+ for ( int i = 0; i< testLoopCounter; i++ )
+ {
+ currentPersonalityId = KUsbPersonalityIdMS;
+ for ( int j = 0; j< numberOfPersonalities; j++ )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, currentPersonalityId, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, setPersonalityId );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, setPersonalityId );
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != setPersonalityId )
+ return ETestCaseFailed;
+ currentPersonalityId++;
+ }
+ }
+ return ETestCasePassed;
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::DelayedPersonalitySwitchTest()
+ {
+ TInt res;
+ TInt numberOfPersonalities = 4;
+ TInt currentPersonalityId;
+ TInt setPersonalityId;
+ TRequestStatus stat;
+
+ TRACE( "Checking test results:" );
+ currentPersonalityId = KUsbPersonalityIdMS;
+
+ for ( int j = 0; j< numberOfPersonalities; j++ )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, currentPersonalityId, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, setPersonalityId );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, setPersonalityId );
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != setPersonalityId )
+ return ETestCaseFailed;
+ currentPersonalityId++;
+ User::After( 7000*1000 );
+ }
+ return ETestCasePassed;
+ }
+
+// -----------------------------------------------------------------------------
+// CUSBWatcherTest::BranchTest
+// -----------------------------------------------------------------------------
+
+void CUsbWatcherTest::BranchTestL( TUsbWatcherTestBlockParams& aParams,
+ TUsbWatcherTestResult& aTestResult )
+ {
+ TInt res;
+ TRequestStatus stat;
+ TPtrC testOptionName( aParams.iTestOption1 );
+ TInt currentPersonalityId;
+
+ res = iUsbMan -> GetCurrentPersonalityId( currentPersonalityId );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "GetCurrentPersonalityId failed with value: %d", res );
+ User::Leave( res );
+ }
+
+ TRACE( " >Connect" );
+ res = iWatcher -> Connect();
+ TRACE( " <Connect" );
+ TRACE_INFO( "USB watcher connection value: %d, expected: %d", res, KErrNone );
+ User::LeaveIfError( res );
+
+ if ( currentPersonalityId != KUsbPersonalityIdPCSuiteMTP )
+ {
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+ }
+
+ TRACE( "Initial SetPersonality" );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, KUsbPersonalityIdPCSuiteMTP, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+
+ TRACE_INFO( "Set initial test personality value: %d", stat.Int() );
+ User::LeaveIfError( stat.Int() );
+
+ if ( !testOptionName.Compare( _L( "SAME_PERSONALITY_SET" ) ) )
+ {
+ TRACE( "Test option: SAME_PERSONALITY_SET" );
+ aTestResult = SetSamePersonalityTest();
+ }
+ else if ( !testOptionName.Compare( _L( "NON_BLOCKING" ) ) )
+ {
+ TRACE( "Test option: NON_BLOCKING" );
+ aTestResult = SetPersonalityBlockingOn();
+ }
+ else if ( !testOptionName.Compare( _L( "FORCE_SWITCH" ) ) )
+ {
+ TRACE( "Test option: FORCE_SWITCH" );
+ aTestResult = SetPersonalityAskOnConnectionOff();
+ }
+ else
+ {
+ TRACE( "Test option: not supported" );
+ User::Leave( KErrNotFound );
+ }
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::SetSamePersonalityTest()
+ {
+ TRequestStatus stat;
+ TInt currentPersonalityId;
+ TInt res;
+
+ TRACE( "Checking test results:" );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, KUsbPersonalityIdPCSuiteMTP, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, KUsbPersonalityIdPCSuiteMTP );
+
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != KUsbPersonalityIdPCSuiteMTP )
+ return ETestCaseFailed;
+
+ return ETestCasePassed;
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::SetPersonalityBlockingOn()
+ {
+ TRequestStatus stat;
+ TInt currentPersonalityId;
+ TInt res;
+
+ TRACE( "Checking test results:" );
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, KUsbPersonalityIdMS, EFalse, ETrue );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, KUsbPersonalityIdMS );
+
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != KUsbPersonalityIdMS )
+ return ETestCaseFailed;
+
+ return ETestCasePassed;
+ }
+
+TUsbWatcherTestResult CUsbWatcherTest::SetPersonalityAskOnConnectionOff()
+ {
+ TRequestStatus stat;
+ TInt currentPersonalityId;
+ TInt res;
+
+ TRACE( "Checking test results:" );
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, KUsbPersonalityIdMS, ETrue, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+ TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone );
+
+ res = iCenRep -> Get( KUsbWatcherPersonality, currentPersonalityId );
+ TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone );
+ TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, KUsbPersonalityIdMS );
+
+ if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != KUsbPersonalityIdMS )
+ return ETestCaseFailed;
+
+ return ETestCasePassed;
+ }
+
+// -----------------------------------------------------------------------------
+// CUSBWatcherTest:: Other functions
+// -----------------------------------------------------------------------------
+
+TInt CUsbWatcherTest::BackupPersonalitySetting()
+ {
+ TRACE( "><Backup personality setting" )
+ return iUsbMan -> GetCurrentPersonalityId( iPersonalityIdBackup );
+ }
+
+TInt CUsbWatcherTest::RestorePersonalitySetting()
+ {
+ TRequestStatus stat;
+ TInt currentPersonalityId;
+
+ TRACE( ">Restore personality setting" )
+ TRACE( " >Close" );
+ iWatcher -> Close();
+ TRACE( " <Close" );
+
+ iUsbMan -> GetCurrentPersonalityId( currentPersonalityId );
+ if ( currentPersonalityId != iPersonalityIdBackup )
+ {
+ TRACE( " >Connect" );
+ iWatcher -> Connect();
+ TRACE( " <Connect" );
+
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) );
+ iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) );
+
+ TRACE( " >SetPersonality" );
+ iWatcher -> SetPersonality( stat, iPersonalityIdBackup, EFalse, EFalse );
+ User::WaitForRequest( stat );
+ TRACE( " <SetPersonality" );
+
+ TRACE( " >Close" );
+ iWatcher -> Close();
+ TRACE( " <Close" );
+ }
+
+ TRACE( "<Restore personality setting" )
+ return stat.Int();
+ }
+
+
+
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+// [End of File] - Do not remove
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/src/UsbWatcherTest_exe.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <e32svr.h>
+#include <StifTestInterface.h>
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// ================= OTHER EXPORTED FUNCTIONS =================================
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: -
+
+ Method: E32Main
+
+ Description:
+
+ Parameters: None
+
+ Return Values: TInt: Symbian error code
+
+ Errors/Exceptions: None
+
+ Status: Draft
+
+-------------------------------------------------------------------------------
+*/
+GLDEF_C TInt E32Main()
+ {
+ _LIT( KProcessMsgStart, "New process starting" );
+ RDebug::Print( KProcessMsgStart );
+
+
+ // This starts a new session that get capabilites that is used in
+ // UsbWatcherTest_exe.mmp file.
+ TInt r = StartSession();
+
+ _LIT( KProcessMsgEnd, "New process ends" );
+ RDebug::Print( KProcessMsgEnd );
+
+ return r;
+
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/Bmarm/UsbPersonalityPluginTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/Bwins/UsbPersonalityPluginTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/conf/UsbPersonalityPluginTest.cfg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+[StifSettings]
+CapsModifier = UsbPersonalityPluginTest.exe
+[EndStifSettings]
+
+
+// UsbPersonalityPluginTest Module - total ... tc
+
+// UsbPersonalityPluginTest Api Tests (... tc)
+
+[Test]
+title Initialization Test
+create UsbPersonalityPluginTest tester
+tester InitializationTestL API
+delete tester
+[Endtest]
+
+[Test]
+title Set Personality ID
+create UsbPersonalityPluginTest tester
+tester SetPersonalityTestL API MS
+delete tester
+[Endtest]
+
+[Test]
+title Show Query
+create UsbPersonalityPluginTest tester
+tester ShowQueryTestL API
+delete tester
+[Endtest]
+
+[Test]
+title Show Connection Note
+create UsbPersonalityPluginTest tester
+tester ShowConnectionNoteTestL API MTP
+delete tester
+[Endtest]
+
+[Test]
+title Create Mass Storage Plugin
+create UsbPersonalityPluginTest tester
+tester CreatePersonalityPluginTestL API MS
+delete tester
+[Endtest]
+
+[Test]
+title Create PC Suite Plugin
+create UsbPersonalityPluginTest tester
+tester CreatePersonalityPluginTestL API PCS
+delete tester
+[Endtest]
+
+[Test]
+title Create Media Transfer Plugin
+create UsbPersonalityPluginTest tester
+tester CreatePersonalityPluginTestL API MTP
+delete tester
+[Endtest]
+
+[Test]
+title Prepare Personality Start
+create UsbPersonalityPluginTest tester
+tester PreparePersonalityStartTestL API PCS
+delete tester
+[Endtest]
+
+[Test]
+title Finish Personality Start
+create UsbPersonalityPluginTest tester
+tester FinishPersonalityStartTestL API PCS
+delete tester
+[Endtest]
+
+[Test]
+title Prepare Personality Stop
+create UsbPersonalityPluginTest tester
+tester PreparePersonalityStopTestL API PCS
+delete tester
+[Endtest]
+
+[Test]
+title Finish Personality Stop
+create UsbPersonalityPluginTest tester
+tester FinishPersonalityStopTestL API PCS
+delete tester
+[Endtest]
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/eabi/UsbPersonalityPluginTestu.def Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,5 @@
+EXPORTS
+ _Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+ _ZTI33CUsbPersonalityPluginActiveObject @ 2 NONAME
+ _ZTV33CUsbPersonalityPluginActiveObject @ 3 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/group/UsbPersonalityPluginTest.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+#if defined(__S60_)
+ // To get the OSEXT_LAYER_SYSTEMINCLUDE-definition
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbPersonalityPluginTest.dll
+TARGETTYPE dll
+UID 0x1000008D 0x101FB3E3
+
+//CAPABILITY ALL -TCB
+CAPABILITY LocalServices ReadDeviceData NetworkControl WriteDeviceData DiskAdmin ReadUserData WriteUserData ProtServ
+
+DEFFILE UsbPersonalityPluginTest.def
+
+MW_LAYER_SYSTEMINCLUDE
+
+USERINCLUDE ../inc
+
+SOURCEPATH ../src
+SOURCE UsbPersonalityPluginTest.cpp
+SOURCE UsbPersonalityPluginTestBlocks.cpp UsbPersonalityPluginActiveObject.cpp
+
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+LIBRARY stiftestengine.lib
+LIBRARY usbman.lib
+LIBRARY usbpersonality.lib
+LIBRARY platformver.lib
+LIBRARY efsrv.lib
+LIBRARY ecom.lib
+
+LANG SC
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/group/UsbPersonalityPluginTest_ats.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,60 @@
+;
+; Copyright (c) 2010 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:
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 5.2
+[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"/epoc32/release/armv5/udeb/UsbPersonalityPluginTest.dll"-"c:/Sys/Bin/UsbPersonalityPluginTest.dll"
+"../init/UsbPersonalityPluginTest_ats.ini"-"e:/testing/init/UsbPersonalityPluginTest.ini"
+"../conf/UsbPersonalityPluginTest.cfg"-"e:/testing/conf/UsbPersonalityPluginTest.cfg"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/group/UsbPersonalityPluginTest_exe.mmp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This material, including documentation and any related computer
+* programs, is protected by copyright controlled by Nokia. All
+* rights are reserved. Copying, including reproducing, storing
+* adapting or translating, any or all of this material requires the
+* prior written consent of Nokia. This material also contains
+* confidential information which may not be disclosed to others
+* without the prior written consent of Nokia.
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#if defined(__S60_)
+ // To get the OS_LAYER_SYSTEMINCLUDE-definition
+ #include <platform_paths.hrh>
+#endif
+
+TARGET UsbPersonalityPluginTest.exe
+TARGETTYPE exe
+UID 0 0xEF4892C6
+
+/* Specify the capabilities according to your test environment */
+CAPABILITY LocalServices ReadDeviceData NetworkControl WriteDeviceData DiskAdmin ReadUserData WriteUserData ProtServ
+/* Remove comments and replace 0x00000000 with correct vendor id */
+// VENDORID 0x00000000
+/* Remove comments and replace 0x00000000 with correct secure id */
+// SECUREID 0x00000000
+
+MW_LAYER_SYSTEMINCLUDE
+SOURCEPATH ../src
+
+
+SOURCE UsbPersonalityPluginTest_exe.cpp
+
+/* Used libraries */
+LIBRARY euser.lib
+LIBRARY stiftestinterface.lib
+
+EPOCSTACKSIZE 40960
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/group/UsbPersonalityPluginTest_phone.pkg Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,62 @@
+;
+; Copyright (c) 2010 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:
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 5.2
+[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"/epoc32/release/armv5/urel/UsbPersonalityPluginTest.dll"-"c:/Sys/Bin/UsbPersonalityPluginTest.dll"
+"/epoc32/release/armv5/urel/UsbPersonalityPluginTest.exe"-"c:/Sys/Bin/UsbPersonalityPluginTest.exe"
+
+"../init/UsbPersonalityPluginTest_phone.ini"-"c:/testframework/testframework.ini"
+"../conf/UsbPersonalityPluginTest.cfg"-"c:/testframework/UsbPersonalityPluginTest.cfg"
+
+; Embedded SIS
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/group/bld.inf Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTEXPORTS
+
+PRJ_EXPORTS
+
+PRJ_TESTMMPFILES
+UsbPersonalityPluginTest.mmp
+UsbPersonalityPluginTest_exe.mmp
+
+PRJ_MMPFILES
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/group/build_sis_ats.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,20 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+
+call sbs -c armv5.test
+call makesis UsbPersonalityPluginTest_ats.pkg
+call signsis UsbPersonalityPluginTest_ats.sis UsbPersonalityPluginTest_ats.sisx x:\rd.cer x:\rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/group/build_sis_phone.bat Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,20 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+
+call sbs -c armv5.test
+call makesis UsbPersonalityPluginTest_phone.pkg
+call signsis UsbPersonalityPluginTest_phone.sis UsbPersonalityPluginTest_phone.sisx x:\rd.cer x:\rd-key.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/inc/UsbPersonalityPluginActiveObject.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2010 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 USBPERSONALITYPLUGINACTIVEOBJECT_H
+#define USBPERSONALITYPLUGINACTIVEOBJECT_H
+
+#include <e32base.h> // For CActive, link against: euser.lib
+#include <e32std.h> // For RTimer, link against: euser.lib
+
+#include <cusbpersonalityplugin.h>
+#include <tusbpersonalityparams.h>
+
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+
+
+class CUsbPersonalityPluginActiveObject : public CActive
+ {
+public:
+ // Cancel and destroy
+ ~CUsbPersonalityPluginActiveObject();
+
+ // Two-phased constructor.
+ static CUsbPersonalityPluginActiveObject* NewL( CUsbPersonalityPlugin*, CStifLogger*, TUsbPersonalityParams* );
+
+ // Two-phased constructor.
+ static CUsbPersonalityPluginActiveObject* NewLC( CUsbPersonalityPlugin*, CStifLogger*, TUsbPersonalityParams* );
+
+public:
+ // New functions
+ // Function for making the initial request
+ void PreparePersonalityStart( TRequestStatus& aStatus);
+
+ void FinishPersonalityStart( TRequestStatus& aStatus);
+
+ void PreparePersonalityStop( TRequestStatus& aStatus);
+
+ void FinishPersonalityStop( TRequestStatus& aStatus);
+
+ void ConfirmPersonalityUnload( TRequestStatus& aStatus);
+private:
+ // C++ constructor
+ CUsbPersonalityPluginActiveObject( CUsbPersonalityPlugin*, CStifLogger*, TUsbPersonalityParams* );
+
+ // Second-phase constructor
+ void ConstructL();
+
+private:
+ // From CActive
+ // Handle completion
+ void RunL();
+
+ // How to cancel me
+ void DoCancel();
+
+ // Override to handle leaves from RunL(). Default implementation causes
+ // the active scheduler to panic.
+ TInt RunError(TInt aError);
+
+private:
+
+private:
+ CUsbPersonalityPlugin* iPlugin;
+ CStifLogger* iLog;
+ TUsbPersonalityParams* iParams;
+ };
+
+#endif // USBPERSONALITYPLUGINACTIVEOBJECT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/inc/UsbPersonalityPluginTest.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,271 @@
+/*
+ * Copyright (c) 2010 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 USBPERSONALITYPLUGINTEST_H
+#define USBPERSONALITYPLUGINTEST_H
+// INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+#include <usbman.h>
+#include <cusbpersonalitynotifier.h>
+#include <cusbpersonalityplugin.h>
+#include <tusbpersonalityparams.h>
+#include <usbuinotif.h>
+#include "UsbPersonalityPluginActiveObject.h"
+
+// CONSTANTS
+// Logging path
+_LIT( KUsbPersonalityPluginTestLogPath, "\\logs\\testframework\\UsbPersonalityPluginTest\\" );
+// Logging path for ATS - for phone builds comment this line
+//_LIT( KUsbPersonalityPluginTestLogPath, "e:\\testing\\stiflogs\\" );
+// Log file
+_LIT( KUsbPersonalityPluginTestLogFile, "UsbPersonalityPluginTest.txt" );
+_LIT( KUsbPersonalityPluginTestLogFileWithTitle, "UsbPersonalityPluginTest_[%S].txt" );
+
+// MACROS
+#define TEST_CLASS_VERSION_MAJOR 0
+#define TEST_CLASS_VERSION_MINOR 0
+#define TEST_CLASS_VERSION_BUILD 0
+
+// Macros used to extract test block parameters
+#define TESTENTRY( A, B )\
+ if ( !iTestBlockParams.iTestBlockName.Compare( TPtrC( ( TText* ) L ##A ) ) )\
+ { iTestBlockFunction = &B; iTestBlockFound = ETrue; }\
+ if ( !iTestBlockParams.iTestBlockName.Compare( TPtrC( ( TText* ) L ##A ) ) )
+
+#define TESTPARAM( A, B )\
+ GetTestBlockParamL( ( TGetTestBlockParamOperation ) A, ( TTestBlockParamName ) B );
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// DATA TYPES
+
+// Enum type used to determine test block execution result
+enum TUsbPersonalityPluginTestResult
+ {
+ ETestCasePassed, ETestCaseFailed
+ };
+
+// Enum type indicating test block parameter which should be used to store
+// data extracted from test script
+enum TTestBlockParamName
+ {
+ eTestOption1,
+ eTestOption2,
+ eTestOption3,
+ eTestIntOption1,
+ eTestIntOption2,
+ eTestIntOption3,
+ eTestCharOption1,
+ eTestCharOption2,
+ eTestCharOption3
+ };
+
+// Enum type used to indicate which get parameter function should be used
+enum TGetTestBlockParamOperation
+ {
+ eGetString, eGetInt, eGetChar
+ };
+
+enum TUsbPersonalityIds
+ {
+ EMassStorage = 2, EMediaTransfer = 4, EPCSuite = 5
+ };
+// CLASS DECLARATION
+/**
+ * TUsbPersonalityPluginTestBlockParams test class for storing test block parameters.
+ */
+NONSHARABLE_CLASS( TUsbPersonalityPluginTestBlockParams )
+ {
+public:
+ TPtrC iTestBlockName;
+
+ TPtrC iTestOption1;
+ TPtrC iTestOption2;
+ TPtrC iTestOption3;
+
+ TInt iTestIntOption1;
+ TInt iTestIntOption2;
+ TInt iTestIntOption3;
+
+ TChar iTestCharOption1;
+ TChar iTestCharOption2;
+ TChar iTestCharOption3;
+ };
+
+/**
+ * CUsbPersonalityPluginTest test class for STIF Test Framework TestScripter.
+ */
+NONSHARABLE_CLASS( CUsbPersonalityPluginTest ) : public CScriptBase
+ {
+public:
+ // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CUsbPersonalityPluginTest* NewL(CTestModuleIf& aTestModuleIf);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUsbPersonalityPluginTest();
+
+public:
+ // New functions
+public:
+ // Functions from base classes
+
+ /**
+ * From CScriptBase Runs a script line.
+ * @since ?Series60_version
+ * @param aItem Script line containing method name and parameters
+ * @return Symbian OS error code
+ */
+ virtual TInt RunMethodL(CStifItemParser& aItem);
+
+protected:
+ // New functions
+protected:
+ // Functions from base classes
+private:
+
+ /**
+ * C++ default constructor.
+ */
+ CUsbPersonalityPluginTest(CTestModuleIf& aTestModuleIf);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Frees all resources allocated from test methods.
+ * @since ?Series60_version
+ */
+ void TestDelete();
+
+ /**
+ * Constructs all test resources for test methods.
+ */
+ void TestConstructL();
+
+ /**
+ * Extracts test block parameters from script file
+ */
+ void TestBlocksInfoL();
+
+ /**
+ * Executes test block
+ */
+ TInt ExecuteTestBlock(CStifItemParser& aItem);
+
+ /**
+ * Executes proper get parameter function indicated by its arguments
+ */
+ void GetTestBlockParamL(TGetTestBlockParamOperation aOperation,
+ TTestBlockParamName aParamName);
+
+ /**
+ * Method used to log version of test class
+ */
+ void SendTestClassVersion();
+
+ // ADD NEW METHOD DEC HERE
+ // [TestMethods] - Do not remove
+ void ExampleTestL(TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+ void InitializationTestL(TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+ void SetPersonalityTestL(TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+ void ShowNoteTestL(TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+ void ShowQueryTestL(TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+ void ShowConnectionNoteTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+ void CreatePersonalityPluginTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+ void PreparePersonalityStartTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+ void FinishPersonalityStartTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+ void PreparePersonalityStopTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+ void FinishPersonalityStopTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult);
+
+ TInt GetIdFromString(TPtrC aBuffer);
+ TUid GetUidFromId(TInt aId);
+
+ void InitializeTestObjectsL();
+ void DeleteTestObjects();
+
+public:
+ // Data
+protected:
+ // Data
+private:
+ // Data
+
+ // Member object used to store test block parameters
+ TUsbPersonalityPluginTestBlockParams iTestBlockParams;
+
+ // Used to indicate if test block with specified parameters exist
+ TBool iTestBlockFound;
+
+ // Function pointer used to call proper test block methods
+ void (CUsbPersonalityPluginTest::*iTestBlockFunction)(
+ TUsbPersonalityPluginTestBlockParams&,
+ TUsbPersonalityPluginTestResult&);
+
+ // Not own
+ CStifItemParser* iItem;
+
+ RUsb* iUsbMan;
+ CUsbPersonalityNotifier* iNotifier;
+ TUsbPersonalityParams* iParams;
+ CUsbPersonalityPlugin* iPlugin;
+ CUsbPersonalityPluginActiveObject* iActive;
+ TRequestStatus iRequestStatus;
+ // Reserved pointer for future extension
+ //TAny* iReserved;
+
+ // ADD NEW DATA DEC HERE
+
+
+public:
+ // Friend classes
+protected:
+ // Friend classes
+private:
+ // Friend classes
+
+ };
+#endif // USBPERSONALITYPLUGINTEST_H
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/inc/UsbPersonalityPluginTestDebug.inl Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32debug.h>
+
+NONSHARABLE_CLASS( TOverflowTruncate8 ) : public TDes8Overflow
+ {
+public:
+ void Overflow( TDes8& /*aDes*/ ) {}
+ };
+
+NONSHARABLE_CLASS( TOverflowTruncate16 ) : public TDes16Overflow
+ {
+public:
+ void Overflow( TDes16& /*aDes*/ ) {}
+ };
+
+_LIT8(KStifTestPrefix8, "[STIF_LOG] ");
+_LIT( KStifTestPrefix, "[STIF_LOG] ");
+_LIT8( KStifEntryPrefix8, ">>> %S" );
+_LIT8( KStifExitPrefix8, "<<< %S" );
+
+const TInt KMaxLogLineLength = 512;
+
+#define TRACE_INFO( p ) { Trace p; }
+#define TRACE_FUNC_ENTRY { TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ ); Trace( KStifEntryPrefix8, &ptr8 ); }
+#define TRACE_FUNC_EXIT { TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ ); Trace( KStifExitPrefix8, &ptr8 ); }
+
+void CUsbPersonalityPluginTest::Trace(TRefByValue<const TDesC8> aFmt, ...)
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TOverflowTruncate8 overflow;
+
+ RBuf8 buf8;
+ RBuf8 bufStifLog8;
+
+ buf8.Create( KMaxLogLineLength );
+ buf8.Append( KStifTestPrefix8 );
+ buf8.AppendFormatList( aFmt, list, &overflow );
+ bufStifLog8.Create( KMaxLogLineLength );
+ bufStifLog8.AppendFormatList( aFmt, list, &overflow );
+
+ RBuf16 buf16;
+ RBuf16 bufStifLog16;
+
+ buf16.Create( KMaxLogLineLength );
+ buf16.Copy( buf8 );
+ bufStifLog16.Create( KMaxLogLineLength );
+ bufStifLog16.Copy( bufStifLog8 );
+
+ RDebug::Print( buf16 );
+ iLog->Log( bufStifLog16 );
+ buf8.Close();
+ bufStifLog8.Close();
+ buf16.Close();
+ bufStifLog16.Close();
+ };
+
+void CUsbPersonalityPluginTest::Trace(TRefByValue<const TDesC16> aFmt, ...)
+ {
+ VA_LIST list;
+ VA_START(list,aFmt);
+ TOverflowTruncate16 overflow;
+
+ RBuf16 buf;
+ RBuf16 bufStifLog;
+
+ buf.Create( KMaxLogLineLength );
+ buf.Append( KStifTestPrefix );
+ buf.AppendFormatList( aFmt, list, &overflow );
+ bufStifLog.Create( KMaxLogLineLength );
+ bufStifLog.AppendFormatList( aFmt, list, &overflow );
+
+ RDebug::Print( buf );
+ iLog->Log( bufStifLog );
+ buf.Close();
+ bufStifLog.Close();
+ };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/inc/testdebug.h Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 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 TESTDEBUG_H_
+#define TESTDEBUG_H_
+
+// INCLUDES
+#include <e32debug.h>
+#include <e32def.h>
+
+// CONSTANTS
+_LIT8(KStifTestPrefix8, "[STIF_LOG] ");
+_LIT( KStifTestPrefix, "[STIF_LOG] ");
+_LIT8( KStifEntryPrefix8, ">>> %S" );
+_LIT8( KStifExitPrefix8, "<<< %S" );
+
+const TInt KMaxLogLineLength = 512;
+typedef TBuf8< KMaxLogLineLength > TLogBuf8;
+typedef TBuf16< KMaxLogLineLength > TLogBuf16;
+
+// CLASS DECLARATION
+NONSHARABLE_CLASS( TTestLogger )
+ {
+public:
+ static inline TLogBuf16 CreateLogBuf( TRefByValue<const TDesC8> aFmt, ... );
+ static inline TLogBuf16 CreateLogBuf( TRefByValue<const TDesC16> aFmt, ... );
+ static inline void Trace( CStifLogger& aLog, TLogBuf16 aLogBuf );
+ };
+
+// MACROS
+#define TRACE( p ) {\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( _L( p ) );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_INFO( p, args... ) {\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( _L( p ), args );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_FUNC_ENTRY {\
+ TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ );\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( KStifEntryPrefix8, &ptr8 );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+#define TRACE_FUNC_EXIT {\
+ TPtrC8 ptr8( ( TUint8* ) __FUNCTION__ );\
+ TLogBuf16 buf = TTestLogger::CreateLogBuf( KStifExitPrefix8, &ptr8 );\
+ TTestLogger::Trace( *iLog, buf );\
+ }
+
+#include "testdebug.inl"
+
+#endif /* TESTDEBUG_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/inc/testdebug.inl Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <e32debug.h>
+
+NONSHARABLE_CLASS( TOverflowTruncate8 ) : public TDes8Overflow
+ {
+public:
+ void Overflow( TDes8& /*aDes*/ ) {}
+ };
+
+NONSHARABLE_CLASS( TOverflowTruncate16 ) : public TDes16Overflow
+ {
+public:
+ void Overflow( TDes16& /*aDes*/ ) {}
+ };
+
+TLogBuf16 TTestLogger::CreateLogBuf( TRefByValue<const TDesC8> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TOverflowTruncate8 overflow;
+ TLogBuf8 buf8;
+ TLogBuf16 buf16;
+ buf8.AppendFormatList( aFmt, list, &overflow );
+ buf16.Copy( buf8 );
+ return buf16;
+ };
+
+TLogBuf16 TTestLogger::CreateLogBuf( TRefByValue<const TDesC16> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TOverflowTruncate16 overflow;
+ TLogBuf16 buf16;
+ buf16.AppendFormatList( aFmt, list, &overflow );
+ return buf16;
+ };
+
+void TTestLogger::Trace( CStifLogger& aLog, TLogBuf16 aLogBuf )
+ {
+ RBuf16 buf;
+ RBuf16 bufStifLog;
+
+ buf.Create( KMaxLogLineLength );
+ buf.Append( KStifTestPrefix );
+ buf.Append( aLogBuf );
+ bufStifLog.Create( KMaxLogLineLength );
+ bufStifLog.Append( aLogBuf );
+
+ RDebug::Print( buf );
+ aLog.Log( bufStifLog );
+ buf.Close();
+ bufStifLog.Close();
+ };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/init/UsbPersonalityPluginTest_ats.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,233 @@
+# Copyright (c) 2010 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:
+#
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+# + XML, Test report will be xml type, for example 'TestReport.xml'.
+# Note, that xml format is available only when output is set to FILE.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= e:\testing\logs\
+TestReportFileName= UsbPersonalityPluginTest_TestReport
+
+TestReportFormat= TXT # Possible values: TXT, HTML or XML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbPersonalityPluginTestUsbPersonalityPluginTestUsbPersonalityPluginTest
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= e:\testing\conf\UsbPersonalityPluginTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbPersonalityPluginTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbPersonalityPluginTest used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleUsbPersonalityPluginTest used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined
+# Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+# will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+#CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/init/UsbPersonalityPluginTest_phone.ini Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,234 @@
+# Copyright (c) 2010 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:
+#
+
+
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+# - Set Test Reporting mode. TestReportMode's possible values are:
+# + 'Summary': Summary of the tested test cases.
+# + 'Environment': Hardware and software info.
+# + 'TestCases': Test case report.
+# + 'FullReport': Set of all above ones.
+# + Example 'TestReportMode= Summary TestCases'
+#
+# - CreateTestReport setting controls report creation mode
+# + YES, Test report will created.
+# + NO, No Test report.
+#
+# - File path indicates the base path of the test report.
+# - File name indicates the name of the test report.
+#
+# - File format indicates the type of the test report.
+# + TXT, Test report file will be txt type, for example 'TestReport.txt'.
+# + HTML, Test report will be html type, for example 'TestReport.html'.
+# + XML, Test report will be xml type, for example 'TestReport.xml'.
+# Note, that xml format is available only when output is set to FILE.
+#
+# - File output indicates output source of the test report.
+# + FILE, Test report logging to file.
+# + RDEBUG, Test report logging to using rdebug.
+#
+# - File Creation Mode indicates test report overwriting if file exist.
+# + OVERWRITE, Overwrites if the Test report file exist.
+# + APPEND, Continue logging after the old Test report information if
+# report exist.
+# - Sets a device reset module's dll name(Reboot).
+# + If Nokia specific reset module is not available or it is not correct one
+# StifHWResetStub module may use as a template for user specific reset
+# module.
+# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment',
+ 'TestCases' or 'FullReport'
+
+CreateTestReport= YES # Possible values: YES or NO
+
+TestReportFilePath= c:\logs\testframework\UsbPersonalityPluginTest\
+TestReportFileName= testreport
+
+TestReportFormat= TXT # Possible values: TXT, HTML or XML
+TestReportOutput= FILE # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone # Possible values are:
+ # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+ # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+ # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+ # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES # Possible values: YES or NO
+#SeparateProcesses= YES # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= UsbPersonalityPluginTestUsbPersonalityPluginTestUsbPersonalityPluginTest
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= c:\testframework\UsbPersonalityPluginTest.cfg
+[End_Module]
+
+
+# Load testmoduleUsbPersonalityPluginTest, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleUsbPersonalityPluginTest used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleUsbPersonalityPluginTest used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# Hardware and emulator environment logging path and styles can
+# be configured from here to overwrite the Logger's implemented values.
+#
+# Settings description:
+# - Indicates option for creation log directory/directories. If log directory/directories
+# is/are not created by user they will make by software.
+# + YES, Create log directory/directories if not allready exist.
+# + NO, Log directory/directories not created. Only created one is used.
+#
+# - Overwrite emulator path setting.
+# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined
+# Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+# will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+# - Overwrite emulator's logging format.
+# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+# + HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+# - Overwrited emulator logging output source.
+# + FILE, Logging to file(s).
+# + RDEBUG, Logging to using rdebug(s).
+#
+# - Overwrite hardware path setting (Same description as above in emulator path).
+# - Overwrite hardware's logging format(Same description as above in emulator format).
+# - Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+# - File Creation Mode indicates file overwriting if file exist.
+# + OVERWRITE, Overwrites if file(s) exist.
+# + APPEND, Continue logging after the old logging information if file(s) exist.
+#
+# - Will thread id include to the log filename.
+# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+# + NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+# - Will time stamps include the to log file.
+# + YES, Time stamp added to each line in log file(s). Time stamp is
+# for example'12.Nov.2003 115958 LOGGING INFO'
+# + NO, No time stamp(s).
+#
+# - Will line breaks include to the log file.
+# + YES, Each logging event includes line break and next log event is in own line.
+# + NO, No line break(s).
+#
+# - Will event ranking include to the log file.
+# + YES, Event ranking number added to each line in log file(s). Ranking number
+# depends on environment's tics, for example(includes time stamp also)
+# '012 12.Nov.2003 115958 LOGGING INFO'
+# + NO, No event ranking.
+#
+# - Will write log file in unicode format.
+# + YES, Log file will be written in unicode format
+# + NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+#CreateLogDirectories= YES # Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML # Possible values: TXT or HTML
+#EmulatorOutput= FILE # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML # Possible values: TXT or HTML
+#HardwareOutput= FILE # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES # Possible values: YES or NO
+#WithTimeStamp= YES # Possible values: YES or NO
+#WithLineBreak= YES # Possible values: YES or NO
+#WithEventRanking= YES # Possible values: YES or NO
+
+#FileUnicode= YES # Possible values: YES or NO
+#AddTestCaseTitle= YES # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# If you want to use filter with ConsoleUI, simply remove comments
+# from section below and provide valid filter entries.
+# Each filter line has to start with "filter= " keyword.
+# Filter can contain special wildcard characters:
+# * which stands for none or any literal;
+# ? which stands for single character.
+# Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/src/UsbPersonalityPluginActiveObject.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2010 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:
+ *
+ */
+
+#include "UsbPersonalityPluginActiveObject.h"
+
+CUsbPersonalityPluginActiveObject::CUsbPersonalityPluginActiveObject( CUsbPersonalityPlugin* aPlugin, CStifLogger* aLog, TUsbPersonalityParams* aParams) : CActive( EPriorityStandard ) // Standard priority
+ {
+ iPlugin = aPlugin;
+ iLog = aLog;
+ iParams = aParams;
+ }
+
+CUsbPersonalityPluginActiveObject* CUsbPersonalityPluginActiveObject::NewLC(CUsbPersonalityPlugin* aPlugin, CStifLogger* aLog, TUsbPersonalityParams* aParams)
+ {
+ CUsbPersonalityPluginActiveObject* self =
+ new (ELeave) CUsbPersonalityPluginActiveObject( aPlugin, aLog, aParams);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+CUsbPersonalityPluginActiveObject* CUsbPersonalityPluginActiveObject::NewL(CUsbPersonalityPlugin* aPlugin, CStifLogger* aLog, TUsbPersonalityParams* aParams)
+ {
+ CUsbPersonalityPluginActiveObject* self =
+ CUsbPersonalityPluginActiveObject::NewLC( aPlugin, aLog, aParams);
+ CleanupStack::Pop(); // self;
+ return self;
+ }
+
+void CUsbPersonalityPluginActiveObject::ConstructL()
+ {
+ CActiveScheduler::Add(this); // Add to scheduler
+ }
+
+CUsbPersonalityPluginActiveObject::~CUsbPersonalityPluginActiveObject()
+ {
+ Cancel(); // Cancel any request, if outstanding
+ // Delete instance variables if any
+ }
+
+void CUsbPersonalityPluginActiveObject::DoCancel()
+ {
+ }
+
+void CUsbPersonalityPluginActiveObject::RunL()
+ {
+ CActiveScheduler::Stop();
+ }
+
+TInt CUsbPersonalityPluginActiveObject::RunError(TInt aError)
+ {
+ return aError;
+ }
+
+void CUsbPersonalityPluginActiveObject::PreparePersonalityStart( TRequestStatus& aStatus)
+ {
+ iPlugin->PreparePersonalityStart(aStatus);
+ RDebug::Printf( "prepare personality start, status: %d", aStatus.Int());
+
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CUsbPersonalityPluginActiveObject::FinishPersonalityStart( TRequestStatus& aStatus)
+ {
+ iPlugin->FinishPersonalityStart(aStatus);
+ RDebug::Printf( "finish personality start, status: %d", aStatus.Int());
+
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CUsbPersonalityPluginActiveObject::PreparePersonalityStop( TRequestStatus& aStatus)
+ {
+ iPlugin->PreparePersonalityStop(aStatus);
+ RDebug::Printf( "prepare personality start, status: %d", aStatus.Int());
+
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CUsbPersonalityPluginActiveObject::FinishPersonalityStop( TRequestStatus& aStatus)
+ {
+ iPlugin->FinishPersonalityStop(aStatus);
+ RDebug::Printf( "finish personality start, status: %d", aStatus.Int());
+
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CUsbPersonalityPluginActiveObject::ConfirmPersonalityUnload( TRequestStatus& aStatus)
+ {
+ iPlugin->ConfirmPersonalityUnload(aStatus);
+ RDebug::Printf( "confirm personality unload, status: %d", aStatus.Int());
+
+ iParams->PersonalityNotifier().CancelQuery(KQueriesNotifier);
+ SetActive();
+ CActiveScheduler::Start();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/src/UsbPersonalityPluginTest.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,326 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+// INCLUDE FILES
+#include <Stiftestinterface.h>
+#include "UsbPersonalityPluginTest.h"
+#include <SettingServerClient.h>
+#include "testdebug.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::CUsbPersonalityPluginTest
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CUsbPersonalityPluginTest::CUsbPersonalityPluginTest(
+ CTestModuleIf& aTestModuleIf ):
+ CScriptBase( aTestModuleIf )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CUsbPersonalityPluginTest::ConstructL()
+ {
+ //Read logger settings to check whether test case name is to be
+ //appended to log file name.
+ RSettingServer settingServer;
+ TInt ret = settingServer.Connect();
+ if(ret != KErrNone)
+ {
+ User::Leave(ret);
+ }
+ // Struct to StifLogger settigs.
+ TLoggerSettings loggerSettings;
+ // Parse StifLogger defaults from STIF initialization file.
+ ret = settingServer.GetLoggerSettings( loggerSettings );
+ if( ret != KErrNone )
+ {
+ User::Leave( ret );
+ }
+ // Close Setting server session
+ settingServer.Close();
+
+ TFileName logFileName;
+
+ if( loggerSettings.iAddTestCaseTitle )
+ {
+ TName title;
+ TestModuleIf().GetTestCaseTitleL( title );
+ logFileName.Format( KUsbPersonalityPluginTestLogFileWithTitle, &title );
+ }
+ else
+ {
+ logFileName.Copy( KUsbPersonalityPluginTestLogFile );
+ }
+
+ iLog = CStifLogger::NewL( KUsbPersonalityPluginTestLogPath,
+ logFileName,
+ CStifLogger::ETxt,
+ CStifLogger::EFile,
+ EFalse );
+
+ SendTestClassVersion();
+ TestConstructL();
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CUsbPersonalityPluginTest* CUsbPersonalityPluginTest::NewL(
+ CTestModuleIf& aTestModuleIf )
+ {
+ CUsbPersonalityPluginTest* self = new (ELeave) CUsbPersonalityPluginTest( aTestModuleIf );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// Destructor
+CUsbPersonalityPluginTest::~CUsbPersonalityPluginTest()
+ {
+
+ // Delete resources allocated from test methods
+ TestDelete();
+
+ // Delete logger
+ delete iLog;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+
+TInt CUsbPersonalityPluginTest::RunMethodL(
+ CStifItemParser& aItem )
+ {
+ return ExecuteTestBlock( aItem );
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::ExecuteTestBlock
+// -----------------------------------------------------------------------------
+
+TInt CUsbPersonalityPluginTest::ExecuteTestBlock( CStifItemParser& aItem )
+ {
+ TRACE_FUNC_ENTRY
+ iItem = &aItem;
+ TInt res;
+ TUsbPersonalityPluginTestResult testResult;
+
+ res = iItem -> GetString( _L( "tester" ), iTestBlockParams.iTestBlockName );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "Getting test block name failed with: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+ TRACE_INFO( "Test block name: %S", &iTestBlockParams.iTestBlockName )
+
+ TRACE( "Extracting test block parameters..." )
+ TRAP( res, TestBlocksInfoL() );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "Extracting parameters failed: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+ if ( !iTestBlockFound )
+ {
+ TRACE( "Test block not found!" )
+ TRACE_FUNC_EXIT
+ return KErrNotFound;
+ }
+ TRACE( "Extracting parameters successful" )
+
+ TRAP( res, ( this ->*iTestBlockFunction )( iTestBlockParams, testResult ) );
+ if ( res != KErrNone )
+ {
+ TRACE_INFO( "ExecuteTestBlockL error: %d", res )
+ TRACE_FUNC_EXIT
+ return res;
+ }
+
+ STIF_ASSERT_EQUALS( ETestCasePassed, testResult );
+ TRACE( "Test block passed!" );
+ TRACE_FUNC_EXIT
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::GetTestBlockParamL
+// -----------------------------------------------------------------------------
+
+void CUsbPersonalityPluginTest::GetTestBlockParamL( TGetTestBlockParamOperation aOperation, TTestBlockParamName aParamName )
+ {
+ switch( aOperation )
+ {
+ case eGetString:
+ {
+ switch ( aParamName )
+ {
+ case eTestOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption1 ) );
+ break;
+ }
+ case eTestOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption2 ) );
+ break;
+ }
+ case eTestOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextString( iTestBlockParams.iTestOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ break;
+ }
+ }
+ break;
+ }
+ case eGetInt:
+ {
+ switch ( aParamName )
+ {
+ case eTestIntOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption1 ) );
+ break;
+ }
+ case eTestIntOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption2 ) );
+ break;
+ }
+ case eTestIntOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextInt( iTestBlockParams.iTestIntOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ break;
+ }
+ }
+ break;
+ }
+ case eGetChar:
+ {
+ switch ( aParamName )
+ {
+ case eTestCharOption1:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption1 ) );
+ break;
+ }
+ case eTestCharOption2:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption2 ) );
+ break;
+ }
+ case eTestCharOption3:
+ {
+ User::LeaveIfError( iItem -> GetNextChar( iTestBlockParams.iTestCharOption3 ) );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ }
+ }
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ }
+ }
+ }
+
+//-----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CUsbPersonalityPluginTest::SendTestClassVersion()
+ {
+ TVersion moduleVersion;
+ moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+ moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+ moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+
+ TFileName moduleName;
+ moduleName = _L("UsbPersonalityPluginTest.dll");
+
+ TBool newVersionOfMethod = ETrue;
+ TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL(
+ CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+ {
+
+ return ( CScriptBase* ) CUsbPersonalityPluginTest::NewL( aTestModuleIf );
+
+ }
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/src/UsbPersonalityPluginTestBlocks.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,508 @@
+/*
+ * Copyright (c) 2010 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:
+ *
+ */
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include "UsbPersonalityPluginTest.h"
+#include "testdebug.h"
+#include <ecom/ecom.h>
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+const TInt KIdPCSuite = 5;
+const TInt KIdMediaTransfer = 4;
+const TInt KIdMassStorage = 2;
+
+const TUid KUidPCSuite =
+ {
+ 0x102068DF
+ };
+const TUid KUidMediaTransfer =
+ {
+ 0x10282C70
+ };
+//const TUid KUidPCSuite2 =
+// {
+// 0x2000B5D2
+// };
+//const TUid KUidPhoneAsModem =
+// {
+// 0x20029E41
+// };
+const TUid KUidMassStorage =
+ {
+ 0x1020DF7B
+ };
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::TestConstructL
+// Construct here all test resources for test methods.
+// Called from ConstructL.
+// -----------------------------------------------------------------------------
+
+void CUsbPersonalityPluginTest::TestConstructL()
+ {
+ TRACE_FUNC_ENTRY
+
+ iUsbMan = new (ELeave) RUsb;
+ iUsbMan->Connect();
+ iNotifier = CUsbPersonalityNotifier::NewL();
+ iParams = new (ELeave) TUsbPersonalityParams(*iUsbMan, *iNotifier);
+
+ TRACE_FUNC_EXIT
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::TestDelete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+
+void CUsbPersonalityPluginTest::TestDelete()
+ {
+ TRACE_FUNC_ENTRY
+
+ if (iUsbMan)
+ {
+ iUsbMan->Close();
+ delete iUsbMan;
+ iUsbMan = NULL;
+ }
+ if (iNotifier)
+ {
+ delete iNotifier;
+ iNotifier = NULL;
+ }
+ if (iParams)
+ {
+ delete iParams;
+ iParams = NULL;
+ }
+ if (iPlugin)
+ {
+ delete iPlugin;
+ iPlugin = NULL;
+ }
+
+ REComSession::FinalClose();
+
+ TRACE_FUNC_EXIT
+ }
+
+// -----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::TestBlocksInfoL
+// Add new test block parameter entries below
+// -----------------------------------------------------------------------------
+
+void CUsbPersonalityPluginTest::TestBlocksInfoL()
+ {
+
+ TESTENTRY( "InitializationTestL", CUsbPersonalityPluginTest::InitializationTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "SetPersonalityTestL", CUsbPersonalityPluginTest::SetPersonalityTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ }
+ TESTENTRY( "ShowQueryTestL", CUsbPersonalityPluginTest::ShowQueryTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ }
+ TESTENTRY( "ShowConnectionNoteTestL", CUsbPersonalityPluginTest::ShowConnectionNoteTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ }
+ TESTENTRY( "CreatePersonalityPluginTestL", CUsbPersonalityPluginTest::CreatePersonalityPluginTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ }
+ TESTENTRY( "PreparePersonalityStartTestL", CUsbPersonalityPluginTest::PreparePersonalityStartTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ }
+ TESTENTRY( "FinishPersonalityStartTestL", CUsbPersonalityPluginTest::FinishPersonalityStartTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ }
+ TESTENTRY( "PreparePersonalityStopTestL", CUsbPersonalityPluginTest::PreparePersonalityStopTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ }
+ TESTENTRY( "FinishPersonalityStopTestL", CUsbPersonalityPluginTest::FinishPersonalityStopTestL )
+ {
+ TESTPARAM( eGetString, eTestOption1 )
+ TESTPARAM( eGetString, eTestOption2 )
+ }
+ }
+
+// Add test block methods implementation here
+// -----------------------------------------------------------------------------
+// CUsbPersonalityPluginTest::ExampleTestL
+// -----------------------------------------------------------------------------
+
+void CUsbPersonalityPluginTest::ExampleTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+
+ if (!aParams.iTestOption1.Compare(_L( "API" )))
+ {
+ TRACE_INFO( "Api test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Api test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Api test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Api test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else if (!aParams.iTestOption1.Compare(_L( "MODULE" )))
+ {
+ TRACE_INFO( "Module test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Module test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Module test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Module test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else if (!aParams.iTestOption1.Compare(_L( "BRANCH" )))
+ {
+ TRACE_INFO( "Branch test option: %S", &aParams.iTestOption1 )
+ TRACE_INFO( "Branch test sub-option: %S", &aParams.iTestOption2 )
+ TRACE_INFO( "Branch test int option: %d", aParams.iTestIntOption1 )
+ TRACE_INFO( "Branch test char option: %c", TText( aParams.iTestCharOption1 ) )
+ }
+ else
+ {
+ TRACE( "Invalid test parameter" )
+ TRACE_FUNC_EXIT
+ User::Leave(KErrNotFound);
+ }
+
+ aTestResult = ETestCasePassed;
+ TRACE_FUNC_EXIT
+ }
+
+// Add other member functions implementation here
+void CUsbPersonalityPluginTest::InitializeTestObjectsL()
+ {
+ iActive = CUsbPersonalityPluginActiveObject::NewL(iPlugin, iLog, iParams);
+ TRACE ( " test objects initialized " );
+ }
+
+void CUsbPersonalityPluginTest::DeleteTestObjects()
+ {
+ delete iActive;
+ iActive = NULL;
+ }
+
+void CUsbPersonalityPluginTest::InitializationTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+ aTestResult = ETestCaseFailed;
+
+ if (iNotifier)
+ {
+ aTestResult = ETestCasePassed;
+ }
+
+ TRACE_FUNC_EXIT
+ }
+
+void CUsbPersonalityPluginTest::SetPersonalityTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+ aTestResult = ETestCaseFailed;
+ TInt id = GetIdFromString(aParams.iTestOption2);
+ TRACE_INFO( " Set personality ID: %d", id );
+
+ iParams->SetPersonalityId(id);
+ if (iParams->PersonalityId() == id)
+ {
+ aTestResult = ETestCasePassed;
+ }
+
+ TRACE_FUNC_EXIT
+ }
+
+void CUsbPersonalityPluginTest::ShowQueryTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+ aTestResult = ETestCaseFailed;
+
+ TBuf8<8> iDummyBuf;
+
+ TUSBQueriesNotifierParamsPckg queryParams;
+ queryParams().iQuery = EUSBNotEnoughRam;
+
+ TInt res = iNotifier->ShowQuery(KQueriesNotifier, queryParams, iDummyBuf);
+ User::After(3000000);
+ TRACE_INFO( " Query show ret %d ", res )
+ if (res == KErrNone)
+ {
+ aTestResult = ETestCasePassed;
+ }
+
+ TRACE_FUNC_EXIT
+ }
+
+void CUsbPersonalityPluginTest::ShowConnectionNoteTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+ aTestResult = ETestCaseFailed;
+
+ TBuf8<8> iDummyBuf;
+
+ TUSBConnectionNotifierParamsPckg noteParams;
+// noteParams().iPersonalityId = personalityId;
+
+ TInt res = iNotifier->ShowQuery(KCableConnectedNotifierUid, noteParams,
+ iDummyBuf);
+ User::After(3000000);
+ TRACE_INFO( " Connection note show ret %d ", res )
+ if (res == KErrNone)
+ {
+ aTestResult = ETestCasePassed;
+ }
+
+ TRACE_FUNC_EXIT
+ }
+
+TInt CUsbPersonalityPluginTest::GetIdFromString(TPtrC aBuffer)
+ {
+
+ if (!aBuffer.Compare(_L("MS")))
+ {
+ TRACE( " mass storage " );
+ return KIdMassStorage;
+ }
+ else if (!aBuffer.Compare(_L("PCS")))
+ {
+ TRACE( " pc suite " );
+ return KIdPCSuite;
+ }
+ else if (!aBuffer.Compare(_L("MTP")))
+ {
+ TRACE( " media transfer " );
+ return KIdMediaTransfer;
+ }
+ else
+ {
+ TRACE( " not found " );
+ return 0;
+ }
+ }
+
+TUid CUsbPersonalityPluginTest::GetUidFromId(TInt aId)
+ {
+ switch (aId)
+ {
+ case KIdMassStorage:
+ return KUidMassStorage;
+ case KIdPCSuite:
+ return KUidPCSuite;
+ case KIdMediaTransfer:
+ return KUidMediaTransfer;
+ default:
+ return TUid::Uid(0x0);
+ }
+ }
+
+void CUsbPersonalityPluginTest::CreatePersonalityPluginTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+ aTestResult = ETestCaseFailed;
+
+ TInt id = GetIdFromString(aParams.iTestOption2);
+ TUid uid = GetUidFromId(id);
+
+ iPlugin = CUsbPersonalityPlugin::NewL(*iParams, uid);
+
+ if (iPlugin)
+ {
+ TRACE( " plugin created ")
+ aTestResult = ETestCasePassed;
+ }
+
+ TRACE_FUNC_EXIT
+ }
+
+void CUsbPersonalityPluginTest::PreparePersonalityStartTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+
+ aTestResult = ETestCaseFailed;
+
+ TInt id = GetIdFromString(aParams.iTestOption2);
+ TUid uid = GetUidFromId(id);
+ iPlugin = CUsbPersonalityPlugin::NewL(*iParams, uid);
+
+ InitializeTestObjectsL();
+
+ iActive->PreparePersonalityStart(iRequestStatus);
+
+ TRACE_INFO( "prepare personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ aTestResult = ETestCasePassed;
+ DeleteTestObjects();
+
+ TRACE_FUNC_EXIT
+ }
+
+void CUsbPersonalityPluginTest::FinishPersonalityStartTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+
+ aTestResult = ETestCaseFailed;
+
+ TInt id = GetIdFromString(aParams.iTestOption2);
+ TUid uid = GetUidFromId(id);
+ iPlugin = CUsbPersonalityPlugin::NewL(*iParams, uid);
+
+ InitializeTestObjectsL();
+
+ iActive->PreparePersonalityStart(iRequestStatus);
+ TRACE_INFO( "prepare personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ iActive->FinishPersonalityStart(iRequestStatus);
+ TRACE_INFO( "finish personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+
+ iActive->PreparePersonalityStop(iRequestStatus);
+ iActive->FinishPersonalityStart(iRequestStatus);
+ User::LeaveIfError(iRequestStatus.Int());
+
+ aTestResult = ETestCasePassed;
+
+ DeleteTestObjects();
+
+ TRACE_FUNC_EXIT
+ }
+
+void CUsbPersonalityPluginTest::PreparePersonalityStopTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+
+ aTestResult = ETestCaseFailed;
+
+ TInt id = GetIdFromString(aParams.iTestOption2);
+ TUid uid = GetUidFromId(id);
+ iPlugin = CUsbPersonalityPlugin::NewL(*iParams, uid);
+
+ InitializeTestObjectsL();
+
+ iActive->PreparePersonalityStart(iRequestStatus);
+ TRACE_INFO( "prepare personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ iActive->FinishPersonalityStart(iRequestStatus);
+ TRACE_INFO( "finish personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ iActive->PreparePersonalityStop(iRequestStatus);
+ TRACE_INFO( "prepare personality stop status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ aTestResult = ETestCasePassed;
+
+ DeleteTestObjects();
+
+ TRACE_FUNC_EXIT
+ }
+
+void CUsbPersonalityPluginTest::FinishPersonalityStopTestL(
+ TUsbPersonalityPluginTestBlockParams& aParams,
+ TUsbPersonalityPluginTestResult& aTestResult)
+ {
+ TRACE_FUNC_ENTRY
+
+ aTestResult = ETestCaseFailed;
+
+ TInt id = GetIdFromString(aParams.iTestOption2);
+ TUid uid = GetUidFromId(id);
+ iPlugin = CUsbPersonalityPlugin::NewL(*iParams, uid);
+
+ InitializeTestObjectsL();
+
+ iActive->PreparePersonalityStart(iRequestStatus);
+ TRACE_INFO( "prepare personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ iActive->FinishPersonalityStart(iRequestStatus);
+ TRACE_INFO( "finish personality start status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ iActive->PreparePersonalityStop(iRequestStatus);
+ TRACE_INFO( "prepare personality stop status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ iActive->FinishPersonalityStop(iRequestStatus);
+ TRACE_INFO( "finish personality stop status: %d, expected: %d", iRequestStatus.Int(), KErrNone );
+ User::LeaveIfError(iRequestStatus.Int());
+
+ aTestResult = ETestCasePassed;
+
+ DeleteTestObjects();
+
+ TRACE_FUNC_EXIT
+ }
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+// [End of File] - Do not remove
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbservices_plat/usb_personality_plugin_api/tsrc/usbpersonalitypluginapitest/src/UsbPersonalityPluginTest_exe.cpp Thu Aug 19 10:54:11 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This material, including documentation and any related computer
+* programs, is protected by copyright controlled by Nokia. All
+* rights are reserved. Copying, including reproducing, storing
+* adapting or translating, any or all of this material requires the
+* prior written consent of Nokia. This material also contains
+* confidential information which may not be disclosed to others
+* without the prior written consent of Nokia.
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <e32svr.h>
+#include <StifTestInterface.h>
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// ================= OTHER EXPORTED FUNCTIONS =================================
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: -
+
+ Method: E32Main
+
+ Description:
+
+ Parameters: None
+
+ Return Values: TInt: Symbian error code
+
+ Errors/Exceptions: None
+
+ Status: Draft
+
+-------------------------------------------------------------------------------
+*/
+GLDEF_C TInt E32Main()
+ {
+ _LIT( KProcessMsgStart, "New process starting" );
+ RDebug::Print( KProcessMsgStart );
+
+
+ // This starts a new session that get capabilites that is used in
+ // usbpersonalityplugintest_exe.mmp file.
+ TInt r = StartSession();
+
+ _LIT( KProcessMsgEnd, "New process ends" );
+ RDebug::Print( KProcessMsgEnd );
+
+ return r;
+
+ }
+
+// End of File