kerneltest/e32test/device/t_usbapi.cpp
changeset 259 57b9594f5772
parent 152 657f875b013e
child 257 3e88ff8f41d5
equal deleted inserted replaced
247:d8d70de2bd36 259:57b9594f5772
     1 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "Eclipse Public License v1.0"
     4 // under the terms of the License "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
    49 #include <hal.h>
    49 #include <hal.h>
    50 #include <d32usbc.h>
    50 #include <d32usbc.h>
    51 #include <d32otgdi.h>
    51 #include <d32otgdi.h>
    52 
    52 
    53 #include "t_usblib.h"
    53 #include "t_usblib.h"
       
    54 #include "OstTraceDefinitions.h"
       
    55 #ifdef OST_TRACE_COMPILER_IN_USE
       
    56 #include "t_usbapiTraces.h"
       
    57 #endif
    54 
    58 
    55 
    59 
    56 // --- Local Top Level Variables
    60 // --- Local Top Level Variables
    57 
    61 
    58 static RTest test(_L("T_USBAPI"));
    62 static RTest test(_L("T_USBAPI"));
   108 	test(r == KErrNone);
   112 	test(r == KErrNone);
   109 	test.Printf(_L("Endpoint %d state: %s\n"), aEndpoint,
   113 	test.Printf(_L("Endpoint %d state: %s\n"), aEndpoint,
   110 				(ep_state == EEndpointStateNotStalled) ? _S("Not stalled") :
   114 				(ep_state == EEndpointStateNotStalled) ? _S("Not stalled") :
   111 				((ep_state == EEndpointStateStalled) ? _S("Stalled") :
   115 				((ep_state == EEndpointStateStalled) ? _S("Stalled") :
   112 				 _S("Unknown...")));
   116 				 _S("Unknown...")));
       
   117 	OstTraceExt2(TRACE_NORMAL, QUERYENDPOINTSTATE_QUERYENDPOINTSTATE, "Endpoint %d state: %s\n", aEndpoint,
       
   118 				(ep_state == EEndpointStateNotStalled) ? _L("Not stalled") :
       
   119 				((ep_state == EEndpointStateStalled) ? _L("Stalled") :
       
   120 				 _L("Unknown...")));
   113 	return ep_state;
   121 	return ep_state;
   114 	}
   122 	}
   115 
   123 
   116 
   124 
   117 // --- Class CActiveKeypressNotifier
   125 // --- Class CActiveKeypressNotifier
   240 	// On an OTG device we have to start the OTG driver, otherwise the Client
   248 	// On an OTG device we have to start the OTG driver, otherwise the Client
   241 	// stack will remain disabled forever.
   249 	// stack will remain disabled forever.
   242 	if (gSupportsOtg)
   250 	if (gSupportsOtg)
   243 		{
   251 		{
   244 		test.Printf(_L("Running on OTG device: loading OTG driver\n"));
   252 		test.Printf(_L("Running on OTG device: loading OTG driver\n"));
       
   253 		OstTrace0(TRACE_NORMAL, OPENCHANNEL_OPENCHANNEL, "Running on OTG device: loading OTG driver\n");
   245 		test.Next(_L("Load OTG LDD"));
   254 		test.Next(_L("Load OTG LDD"));
   246 		r = User::LoadLogicalDevice(KOtgdiLddFilename);
   255 		r = User::LoadLogicalDevice(KOtgdiLddFilename);
   247 		test((r == KErrNone) || (r == KErrAlreadyExists));
   256 		test((r == KErrNone) || (r == KErrAlreadyExists));
   248 
   257 
   249 		test.Next(_L("Open OTG channel"));
   258 		test.Next(_L("Open OTG channel"));
   290 	test.Next(_L("Request DMA resource"));
   299 	test.Next(_L("Request DMA resource"));
   291 	const TInt dma = gPort.AllocateEndpointResource(EEndpoint1, EUsbcEndpointResourceDMA);
   300 	const TInt dma = gPort.AllocateEndpointResource(EEndpoint1, EUsbcEndpointResourceDMA);
   292 	TBool res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDMA);
   301 	TBool res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDMA);
   293 	test.Printf(_L("DMA on endpoint 1 %s\n"),
   302 	test.Printf(_L("DMA on endpoint 1 %s\n"),
   294 				res ? _S("now allocated") : _S("not allocated"));
   303 				res ? _S("now allocated") : _S("not allocated"));
       
   304 	OstTraceExt1(TRACE_NORMAL, TESTRESOURCEALLOCATIONV1_TESTRESOURCEALLOCATIONV1, "DMA on endpoint 1 %s\n",
       
   305 				res ? _L("now allocated") : _L("not allocated"));
   295 	if (dma == KErrNone)
   306 	if (dma == KErrNone)
   296 		// Only if DMA resource was successfully allocated should we expect truth here:
   307 		// Only if DMA resource was successfully allocated should we expect truth here:
   297 		test(res);
   308 		test(res);
   298 	else
   309 	else
   299 		test(!res);
   310 		test(!res);
   301 	test.Next(_L("Request Double Buffering resource"));
   312 	test.Next(_L("Request Double Buffering resource"));
   302 	const TInt db = gPort.AllocateEndpointResource(EEndpoint1, EUsbcEndpointResourceDoubleBuffering);
   313 	const TInt db = gPort.AllocateEndpointResource(EEndpoint1, EUsbcEndpointResourceDoubleBuffering);
   303 	res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDoubleBuffering);
   314 	res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDoubleBuffering);
   304 	test.Printf(_L("Double Buffering on endpoint 1 %s\n"),
   315 	test.Printf(_L("Double Buffering on endpoint 1 %s\n"),
   305 				res ? _S("now allocated") : _S("not allocated"));
   316 				res ? _S("now allocated") : _S("not allocated"));
       
   317 	OstTraceExt1(TRACE_NORMAL, TESTRESOURCEALLOCATIONV1_TESTRESOURCEALLOCATIONV1_DUP01, "Double Buffering on endpoint 1 %s\n",
       
   318 				res ? _L("now allocated") : _L("not allocated"));
   306 	if (db == KErrNone)
   319 	if (db == KErrNone)
   307 		// Only if DB resource was successfully allocated should we expect truth here:
   320 		// Only if DB resource was successfully allocated should we expect truth here:
   308 		test(res);
   321 		test(res);
   309 	else
   322 	else
   310 		test(!res);
   323 		test(!res);
   317 	else
   330 	else
   318 		test(r != KErrNone);
   331 		test(r != KErrNone);
   319 	res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDoubleBuffering);
   332 	res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDoubleBuffering);
   320 	test.Printf(_L("Double Buffering on endpoint 1 %s\n"),
   333 	test.Printf(_L("Double Buffering on endpoint 1 %s\n"),
   321 				res ? _S("still allocated") : _S("not (longer) allocated"));
   334 				res ? _S("still allocated") : _S("not (longer) allocated"));
       
   335 	OstTraceExt1(TRACE_NORMAL, TESTRESOURCEALLOCATIONV1_TESTRESOURCEALLOCATIONV1_DUP02, "Double Buffering on endpoint 1 %s\n",
       
   336 				res ? _L("still allocated") : _L("not (longer) allocated"));
   322 
   337 
   323 	test.Next(_L("Deallocate DMA resource"));
   338 	test.Next(_L("Deallocate DMA resource"));
   324 	r = gPort.DeAllocateEndpointResource(EEndpoint1, EUsbcEndpointResourceDMA);
   339 	r = gPort.DeAllocateEndpointResource(EEndpoint1, EUsbcEndpointResourceDMA);
   325 	// Whether DMA is dynamic or permanent - deallocation (if supported) should always return success:
   340 	// Whether DMA is dynamic or permanent - deallocation (if supported) should always return success:
   326 	if (dma == KErrNone)
   341 	if (dma == KErrNone)
   328 	else
   343 	else
   329 		test(r != KErrNone);
   344 		test(r != KErrNone);
   330 	res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDMA);
   345 	res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDMA);
   331 	test.Printf(_L("DMA on endpoint 1 %s\n"),
   346 	test.Printf(_L("DMA on endpoint 1 %s\n"),
   332 				res ? _S("still allocated") : _S("not (longer) allocated"));
   347 				res ? _S("still allocated") : _S("not (longer) allocated"));
       
   348 	OstTraceExt1(TRACE_NORMAL, TESTRESOURCEALLOCATIONV1_TESTRESOURCEALLOCATIONV1_DUP03, "DMA on endpoint 1 %s\n",
       
   349 				res ? _L("still allocated") : _L("not (longer) allocated"));
   333 
   350 
   334 	test.End();
   351 	test.End();
   335 	}
   352 	}
   336 
   353 
   337 
   354 
   349 	// Global variable - we'll need this value later
   366 	// Global variable - we'll need this value later
   350 	gSupportsHighSpeed = d_caps().iHighSpeed;
   367 	gSupportsHighSpeed = d_caps().iHighSpeed;
   351 	gSupportResouceAllocationV2 = (d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2);
   368 	gSupportResouceAllocationV2 = (d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2);
   352 	
   369 	
   353 	test.Printf(_L("### USB device capabilities:\n"));
   370 	test.Printf(_L("### USB device capabilities:\n"));
       
   371 	OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE, "### USB device capabilities:\n");
   354 	test.Printf(_L("Number of endpoints:                        %d\n"), n);
   372 	test.Printf(_L("Number of endpoints:                        %d\n"), n);
       
   373 	OstTrace1(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP01, "Number of endpoints:                        %d\n", n);
   355 	test.Printf(_L("Supports Software-Connect:                  %s\n"),
   374 	test.Printf(_L("Supports Software-Connect:                  %s\n"),
   356 				d_caps().iConnect ? _S("yes") : _S("no"));
   375 				d_caps().iConnect ? _S("yes") : _S("no"));
       
   376 	OstTraceExt1(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP02, "Supports Software-Connect:                  %s\n",
       
   377 				d_caps().iConnect ? _L("yes") : _L("no"));
   357 	test.Printf(_L("Device is Self-Powered:                     %s\n"),
   378 	test.Printf(_L("Device is Self-Powered:                     %s\n"),
   358 				d_caps().iSelfPowered ? _S("yes") : _S("no"));
   379 				d_caps().iSelfPowered ? _S("yes") : _S("no"));
       
   380 	OstTraceExt1(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP03, "Device is Self-Powered:                     %s\n",
       
   381 				d_caps().iSelfPowered ? _L("yes") : _L("no"));
   359 	test.Printf(_L("Supports Remote-Wakeup:                     %s\n"),
   382 	test.Printf(_L("Supports Remote-Wakeup:                     %s\n"),
   360 				d_caps().iRemoteWakeup ? _S("yes") : _S("no"));
   383 				d_caps().iRemoteWakeup ? _S("yes") : _S("no"));
       
   384 	OstTraceExt1(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP04, "Supports Remote-Wakeup:                     %s\n",
       
   385 				d_caps().iRemoteWakeup ? _L("yes") : _L("no"));
   361 	test.Printf(_L("Supports High-speed:                        %s\n"),
   386 	test.Printf(_L("Supports High-speed:                        %s\n"),
   362 				gSupportsHighSpeed ? _S("yes") : _S("no"));
   387 				gSupportsHighSpeed ? _S("yes") : _S("no"));
       
   388 	OstTraceExt1(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP05, "Supports High-speed:                        %s\n",
       
   389 				gSupportsHighSpeed ? _L("yes") : _L("no"));
   363 	test.Printf(_L("Supports OTG:                               %s\n"),
   390 	test.Printf(_L("Supports OTG:                               %s\n"),
   364 				gSupportsOtg ? _S("yes") : _S("no"));
   391 				gSupportsOtg ? _S("yes") : _S("no"));
       
   392 	OstTraceExt1(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP06, "Supports OTG:                               %s\n",
       
   393 				gSupportsOtg ? _L("yes") : _L("no"));
   365 	test.Printf(_L("Supports unpowered cable detection:         %s\n"),
   394 	test.Printf(_L("Supports unpowered cable detection:         %s\n"),
   366 				(d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_CableDetectWithoutPower) ?
   395 				(d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_CableDetectWithoutPower) ?
   367 				_S("yes") : _S("no"));
   396 				_S("yes") : _S("no"));
       
   397 	OstTraceExt1(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP07, "Supports unpowered cable detection:         %s\n",
       
   398 				(d_caps().iFeatureWord1 & KUsbDevCapsFeatureWord1_CableDetectWithoutPower) ?
       
   399 				_L("yes") : _L("no"));
   368 	test.Printf(_L("Supports endpoint resource alloc scheme V2: %s\n"),
   400 	test.Printf(_L("Supports endpoint resource alloc scheme V2: %s\n"),
   369 				gSupportResouceAllocationV2 ? _S("yes") : _S("no"));
   401 				gSupportResouceAllocationV2 ? _S("yes") : _S("no"));
       
   402 	OstTraceExt1(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP08, "Supports endpoint resource alloc scheme V2: %s\n",
       
   403 				gSupportResouceAllocationV2 ? _L("yes") : _L("no"));
   370 
   404 
   371 	test(n >= 2);
   405 	test(n >= 2);
   372 	test.Printf(_L("(Device has sufficient endpoints.)\n"));
   406 	test.Printf(_L("(Device has sufficient endpoints.)\n"));
       
   407 	OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP09, "(Device has sufficient endpoints.)\n");
   373 
   408 
   374 	// Endpoint caps
   409 	// Endpoint caps
   375 	test.Next(_L("Query USB endpoint caps"));
   410 	test.Next(_L("Query USB endpoint caps"));
   376 	TUsbcEndpointData data[KUsbcMaxEndpoints];
   411 	TUsbcEndpointData data[KUsbcMaxEndpoints];
   377 	TPtr8 dataptr(reinterpret_cast<TUint8*>(data), sizeof(data), sizeof(data));
   412 	TPtr8 dataptr(reinterpret_cast<TUint8*>(data), sizeof(data), sizeof(data));
   378 	r = gPort.EndpointCaps(dataptr);
   413 	r = gPort.EndpointCaps(dataptr);
   379 	test(r == KErrNone);
   414 	test(r == KErrNone);
   380 
   415 
   381 	test.Printf(_L("### USB device endpoint capabilities:\n"));
   416 	test.Printf(_L("### USB device endpoint capabilities:\n"));
       
   417 	OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP10, "### USB device endpoint capabilities:\n");
   382 	for (TInt i = 0; i < n; i++)
   418 	for (TInt i = 0; i < n; i++)
   383 		{
   419 		{
   384 		const TUsbcEndpointCaps* caps = &data[i].iCaps;
   420 		const TUsbcEndpointCaps* caps = &data[i].iCaps;
   385 		test.Printf(_L("Endpoint: SizeMask = 0x%08x TypeDirMask = 0x%08x\n"),
   421 		test.Printf(_L("Endpoint: SizeMask = 0x%08x TypeDirMask = 0x%08x\n"),
       
   422 					caps->iSizes, caps->iTypesAndDir);
       
   423 		OstTraceExt2(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP11, "Endpoint: SizeMask = 0x%08x TypeDirMask = 0x%08x\n",
   386 					caps->iSizes, caps->iTypesAndDir);
   424 					caps->iSizes, caps->iTypesAndDir);
   387 		if (caps->iHighBandwidth)
   425 		if (caps->iHighBandwidth)
   388 			{
   426 			{
   389 			test.Printf(_L("  (high-speed, high bandwidth endpoint)\n"));
   427 			test.Printf(_L("  (high-speed, high bandwidth endpoint)\n"));
       
   428 			OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP12, "  (high-speed, high bandwidth endpoint)\n");
   390 			// Must be HS Int or Iso ep
   429 			// Must be HS Int or Iso ep
   391 			test(gSupportsHighSpeed);
   430 			test(gSupportsHighSpeed);
   392 			test(caps->iTypesAndDir & (KUsbEpTypeIsochronous | KUsbEpTypeInterrupt));
   431 			test(caps->iTypesAndDir & (KUsbEpTypeIsochronous | KUsbEpTypeInterrupt));
   393 			}
   432 			}
   394 		}
   433 		}
   468 		test((r == KErrNone) || (r == KErrNotReady));
   507 		test((r == KErrNone) || (r == KErrNotReady));
   469 		}
   508 		}
   470 	if (gSupportsOtg && (r == KErrNotReady))
   509 	if (gSupportsOtg && (r == KErrNotReady))
   471 		{
   510 		{
   472 		test.Printf(_L("OTG device but not connected to Host, stopping subtest here.\n"));
   511 		test.Printf(_L("OTG device but not connected to Host, stopping subtest here.\n"));
       
   512 		OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP13, "OTG device but not connected to Host, stopping subtest here.\n");
   473 		test.End();
   513 		test.End();
   474 		return;
   514 		return;
   475 		}
   515 		}
   476 	// The board might be attached to a PC with HS controller, thus enabling us
   516 	// The board might be attached to a PC with HS controller, thus enabling us
   477 	// to test some HS-specific features. For that to work we have to connect
   517 	// to test some HS-specific features. For that to work we have to connect
   480 	test.Next(_L("Connecting to Host (1)"));
   520 	test.Next(_L("Connecting to Host (1)"));
   481 	r = gPort.DeviceConnectToHost();
   521 	r = gPort.DeviceConnectToHost();
   482 	test(r == KErrNone);
   522 	test(r == KErrNone);
   483  	// Suspend thread to let things get stable on the bus.
   523  	// Suspend thread to let things get stable on the bus.
   484 	test.Printf(_L("Waiting a short moment..."));
   524 	test.Printf(_L("Waiting a short moment..."));
       
   525 	OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP14, "Waiting a short moment...");
   485 	User::After(2000000);
   526 	User::After(2000000);
   486 	test.Printf(_L(" done.\n"));
   527 	test.Printf(_L(" done.\n"));
       
   528 	OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP15, " done.\n");
   487 
   529 
   488 	// Check the speed of the physical connection (if any).
   530 	// Check the speed of the physical connection (if any).
   489 	gUsingHighSpeed = gPort.CurrentlyUsingHighSpeed();
   531 	gUsingHighSpeed = gPort.CurrentlyUsingHighSpeed();
   490 	if (gUsingHighSpeed)
   532 	if (gUsingHighSpeed)
   491 		{
   533 		{
   492 		test(gSupportsHighSpeed);							// sane?
   534 		test(gSupportsHighSpeed);							// sane?
   493 		test.Printf(_L("---> USB High-speed Testing\n"));
   535 		test.Printf(_L("---> USB High-speed Testing\n"));
       
   536 		OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP16, "---> USB High-speed Testing\n");
   494 		}
   537 		}
   495 	else
   538 	else
   496 		{
   539 		{
   497 		test.Printf(_L("---> USB Full-speed Testing\n"));
   540 		test.Printf(_L("---> USB Full-speed Testing\n"));
       
   541 		OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP17, "---> USB Full-speed Testing\n");
   498 		}
   542 		}
   499 
   543 
   500 	// By pulling down the interface/connection and bringing them up again we
   544 	// By pulling down the interface/connection and bringing them up again we
   501 	// simulate a starting/stopping of the USB service by a control app.
   545 	// simulate a starting/stopping of the USB service by a control app.
   502 
   546 
   519 	r = gPort.SetInterface(0, ifc);
   563 	r = gPort.SetInterface(0, ifc);
   520 	test(r == KErrNone);
   564 	test(r == KErrNone);
   521 
   565 
   522  	// Suspend thread before connecting again.
   566  	// Suspend thread before connecting again.
   523 	test.Printf(_L("Waiting a short moment..."));
   567 	test.Printf(_L("Waiting a short moment..."));
       
   568 	OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP18, "Waiting a short moment...");
   524 	User::After(1000000);
   569 	User::After(1000000);
   525 	test.Printf(_L(" done.\n"));
   570 	test.Printf(_L(" done.\n"));
       
   571 	OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP19, " done.\n");
   526 
   572 
   527 	test.Next(_L("Powering up UDC (2)"));
   573 	test.Next(_L("Powering up UDC (2)"));
   528 	r = gPort.PowerUpUdc();
   574 	r = gPort.PowerUpUdc();
   529 	if (!gSupportsOtg)
   575 	if (!gSupportsOtg)
   530 		{
   576 		{
   535 		test((r == KErrNone) || (r == KErrNotReady));
   581 		test((r == KErrNone) || (r == KErrNotReady));
   536 		}
   582 		}
   537 	if (gSupportsOtg && (r == KErrNotReady))
   583 	if (gSupportsOtg && (r == KErrNotReady))
   538 		{
   584 		{
   539 		test.Printf(_L("OTG device but not connected to Host, stopping subtest here.\n"));
   585 		test.Printf(_L("OTG device but not connected to Host, stopping subtest here.\n"));
       
   586 		OstTrace0(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP20, "OTG device but not connected to Host, stopping subtest here.\n");
   540 		test.End();
   587 		test.End();
   541 		return;
   588 		return;
   542 		}
   589 		}
   543 
   590 
   544 	test.Next(_L("Connecting to Host (2)"));
   591 	test.Next(_L("Connecting to Host (2)"));
   551 		{
   598 		{
   552 			test.Next(_L("endpoint 1 resource allocation results(resource allocation V2)"));
   599 			test.Next(_L("endpoint 1 resource allocation results(resource allocation V2)"));
   553 			TBool res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDoubleBuffering);
   600 			TBool res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDoubleBuffering);
   554 			test.Printf(_L("Double Buffering on endpoint 1 %s\n"),
   601 			test.Printf(_L("Double Buffering on endpoint 1 %s\n"),
   555 						res ? _S("now allocated") : _S("not allocated"));
   602 						res ? _S("now allocated") : _S("not allocated"));
       
   603 			OstTraceExt1(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP21, "Double Buffering on endpoint 1 %s\n",
       
   604 						res ? _L("now allocated") : _L("not allocated"));
   556 
   605 
   557 			res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDMA);
   606 			res = gPort.QueryEndpointResourceUse(EEndpoint1, EUsbcEndpointResourceDMA);
   558 			test.Printf(_L("DMA on endpoint 1 %s\n"),
   607 			test.Printf(_L("DMA on endpoint 1 %s\n"),
   559 						res ? _S("still allocated") : _S("not allocated"));										
   608 						res ? _S("still allocated") : _S("not allocated"));										
       
   609 			OstTraceExt1(TRACE_NORMAL, SETUPINTERFACE_SETUPINTERFACE_DUP22, "DMA on endpoint 1 %s\n",
       
   610 						res ? _L("still allocated") : _L("not allocated"));										
   560 		}
   611 		}
   561 		
   612 		
   562 	test.End();
   613 	test.End();
   563 	}
   614 	}
   564 
   615 
   617 	test.Start(_L("Device_Qualifier Descriptor Manipulation"));
   668 	test.Start(_L("Device_Qualifier Descriptor Manipulation"));
   618 
   669 
   619 	if (!gSupportsHighSpeed)
   670 	if (!gSupportsHighSpeed)
   620 		{
   671 		{
   621 		test.Printf(_L("*** Not supported - skipping Device_Qualifier descriptor tests\n"));
   672 		test.Printf(_L("*** Not supported - skipping Device_Qualifier descriptor tests\n"));
       
   673 		OstTrace0(TRACE_NORMAL, TESTDEVICEQUALIFIERDESCRIPTOR_TESTDEVICEQUALIFIERDESCRIPTOR, "*** Not supported - skipping Device_Qualifier descriptor tests\n");
   622 		test.End();
   674 		test.End();
   623 		return;
   675 		return;
   624 		}
   676 		}
   625 
   677 
   626 	test.Next(_L("GetDeviceQualifierDescriptor()"));
   678 	test.Next(_L("GetDeviceQualifierDescriptor()"));
   698 	test.Start(_L("Other_Speed_Configuration Desc Manipulation"));
   750 	test.Start(_L("Other_Speed_Configuration Desc Manipulation"));
   699 
   751 
   700 	if (!gSupportsHighSpeed)
   752 	if (!gSupportsHighSpeed)
   701 		{
   753 		{
   702 		test.Printf(_L("*** Not supported - skipping Other_Speed_Configuration desc tests\n"));
   754 		test.Printf(_L("*** Not supported - skipping Other_Speed_Configuration desc tests\n"));
       
   755 		OstTrace0(TRACE_NORMAL, TESTOTHERSPEEDCONFIGURATIONDESCRIPTOR_TESTOTHERSPEEDCONFIGURATIONDESCRIPTOR, "*** Not supported - skipping Other_Speed_Configuration desc tests\n");
   703 		test.End();
   756 		test.End();
   704 		return;
   757 		return;
   705 		}
   758 		}
   706 
   759 
   707 	test.Next(_L("GetOtherSpeedConfigurationDescriptor()"));
   760 	test.Next(_L("GetOtherSpeedConfigurationDescriptor()"));
   835 	test.Start(_L("Alternate Interface Setting Manipulation"));
   888 	test.Start(_L("Alternate Interface Setting Manipulation"));
   836 
   889 
   837 	if (!SupportsAlternateInterfaces())
   890 	if (!SupportsAlternateInterfaces())
   838 		{
   891 		{
   839 		test.Printf(_L("*** Not supported - skipping alternate interface settings tests\n"));
   892 		test.Printf(_L("*** Not supported - skipping alternate interface settings tests\n"));
       
   893 		OstTrace0(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION, "*** Not supported - skipping alternate interface settings tests\n");
   840 		test.End();
   894 		test.End();
   841 		return;
   895 		return;
   842 		}
   896 		}
   843 
   897 
   844 	// Fetch endpoint data (again)
   898 	// Fetch endpoint data (again)
   880 			ifc().iEndpointData[ep_found].iDir  = KUsbEpDirIn;
   934 			ifc().iEndpointData[ep_found].iDir  = KUsbEpDirIn;
   881 			ifc().iEndpointData[ep_found].iSize = mps;
   935 			ifc().iEndpointData[ep_found].iSize = mps;
   882 			ifc().iEndpointData[ep_found].iInterval = 0x01;	// 2^(bInterval-1)ms, bInterval must be [1..16]
   936 			ifc().iEndpointData[ep_found].iInterval = 0x01;	// 2^(bInterval-1)ms, bInterval must be [1..16]
   883 			ifc().iEndpointData[ep_found].iInterval_Hs = 0x01; // same as for FS
   937 			ifc().iEndpointData[ep_found].iInterval_Hs = 0x01; // same as for FS
   884 			test.Printf(_L("ISO  IN  size = %4d (ep %d)\n"), mps, ep_found + 1);
   938 			test.Printf(_L("ISO  IN  size = %4d (ep %d)\n"), mps, ep_found + 1);
       
   939 			OstTraceExt2(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION_DUP01, "ISO  IN  size = %4d (ep %d)\n", mps, ep_found + 1);
   885 			foundIsoIN = ETrue;
   940 			foundIsoIN = ETrue;
   886 			if (++ep_found == 3)
   941 			if (++ep_found == 3)
   887 				break;
   942 				break;
   888 			}
   943 			}
   889 		else if (!foundIsoOUT &&
   944 		else if (!foundIsoOUT &&
   894 			ifc().iEndpointData[ep_found].iType = KUsbEpTypeIsochronous;
   949 			ifc().iEndpointData[ep_found].iType = KUsbEpTypeIsochronous;
   895 			ifc().iEndpointData[ep_found].iDir  = KUsbEpDirOut;
   950 			ifc().iEndpointData[ep_found].iDir  = KUsbEpDirOut;
   896 			ifc().iEndpointData[ep_found].iSize = mps;
   951 			ifc().iEndpointData[ep_found].iSize = mps;
   897 			ifc().iEndpointData[ep_found].iInterval = 0x01;	// 2^(bInterval-1)ms, bInterval must be [1..16]
   952 			ifc().iEndpointData[ep_found].iInterval = 0x01;	// 2^(bInterval-1)ms, bInterval must be [1..16]
   898 			test.Printf(_L("ISO  OUT size = %4d (ep %d)\n"), mps, ep_found + 1);
   953 			test.Printf(_L("ISO  OUT size = %4d (ep %d)\n"), mps, ep_found + 1);
       
   954 			OstTraceExt2(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION_DUP02, "ISO  OUT size = %4d (ep %d)\n", mps, ep_found + 1);
   899 			foundIsoOUT = ETrue;
   955 			foundIsoOUT = ETrue;
   900 			if (++ep_found == 3)
   956 			if (++ep_found == 3)
   901 				break;
   957 				break;
   902 			}
   958 			}
   903 		else if (!foundIntIN &&
   959 		else if (!foundIntIN &&
   910 			ifc().iEndpointData[ep_found].iSize  = mps;
   966 			ifc().iEndpointData[ep_found].iSize  = mps;
   911 			ifc().iEndpointData[ep_found].iInterval = 10;	// interval = 10ms, valid range [1..255]
   967 			ifc().iEndpointData[ep_found].iInterval = 10;	// interval = 10ms, valid range [1..255]
   912 			ifc().iEndpointData[ep_found].iInterval_Hs = 4;	// interval = 2^(bInterval-1)ms = 8ms
   968 			ifc().iEndpointData[ep_found].iInterval_Hs = 4;	// interval = 2^(bInterval-1)ms = 8ms
   913 			ifc().iEndpointData[ep_found].iExtra    = 2;	// 2 extra bytes for Audio Class EP descriptor
   969 			ifc().iEndpointData[ep_found].iExtra    = 2;	// 2 extra bytes for Audio Class EP descriptor
   914 			test.Printf(_L("INT  IN  size = %4d (ep %d)\n"), mps, ep_found + 1);
   970 			test.Printf(_L("INT  IN  size = %4d (ep %d)\n"), mps, ep_found + 1);
       
   971 			OstTraceExt2(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION_DUP03, "INT  IN  size = %4d (ep %d)\n", mps, ep_found + 1);
   915 			foundIntIN = ETrue;
   972 			foundIntIN = ETrue;
   916 			INT_IN_ep = ep_found + 1;
   973 			INT_IN_ep = ep_found + 1;
   917 			if (++ep_found == 3)
   974 			if (++ep_found == 3)
   918 				break;
   975 				break;
   919 			}
   976 			}
   930 			ifc().iEndpointData[ep_found].iType = KUsbEpTypeBulk;
   987 			ifc().iEndpointData[ep_found].iType = KUsbEpTypeBulk;
   931 			ifc().iEndpointData[ep_found].iDir = dir;
   988 			ifc().iEndpointData[ep_found].iDir = dir;
   932 			if (gUsingHighSpeed)
   989 			if (gUsingHighSpeed)
   933 				{
   990 				{
   934 				test.Printf(_L("Checking if correct Bulk packet size is reported in HS case\n"));
   991 				test.Printf(_L("Checking if correct Bulk packet size is reported in HS case\n"));
       
   992 				OstTrace0(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION_DUP04, "Checking if correct Bulk packet size is reported in HS case\n");
   935 				test(mps == KUsbEpSize512);					// sane?
   993 				test(mps == KUsbEpSize512);					// sane?
   936 				}
   994 				}
   937 			// The PSL should in any case also offer the 'legacy' FS size:
   995 			// The PSL should in any case also offer the 'legacy' FS size:
   938 			test(caps.iSizes & KUsbEpSize64);
   996 			test(caps.iSizes & KUsbEpSize64);
   939 			ifc().iEndpointData[ep_found].iSize = mps;
   997 			ifc().iEndpointData[ep_found].iSize = mps;
   940 			test.Printf(_L("BULK %s size = %4d (ep %d)\n"),
   998 			test.Printf(_L("BULK %s size = %4d (ep %d)\n"),
   941 						dir == KUsbEpDirIn ? _S("IN ") : _S("OUT"), mps, ep_found + 1);
   999 						dir == KUsbEpDirIn ? _S("IN ") : _S("OUT"), mps, ep_found + 1);
       
  1000 			OstTraceExt3(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION_DUP05, "BULK %S size = %4d (ep %d)\n",
       
  1001 						dir == KUsbEpDirIn ? _L("IN ") : _L("OUT"), mps, ep_found + 1);
   942 			if (++ep_found == 5)
  1002 			if (++ep_found == 5)
   943 				break;
  1003 				break;
   944 			}
  1004 			}
   945 		}
  1005 		}
   946 
  1006 
   947 	test.Printf(_L("Total: %d endpoints found for the alt. ifc setting\n"), ep_found);
  1007 	test.Printf(_L("Total: %d endpoints found for the alt. ifc setting\n"), ep_found);
       
  1008 	OstTrace1(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION_DUP06, "Total: %d endpoints found for the alt. ifc setting\n", ep_found);
   948 	if (ep_found < 3)
  1009 	if (ep_found < 3)
   949 		{
  1010 		{
   950 		test.Printf(_L("(3 endpoints are at least required. Skipping test...)\n"));
  1011 		test.Printf(_L("(3 endpoints are at least required. Skipping test...)\n"));
       
  1012 		OstTrace0(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION_DUP07, "(3 endpoints are at least required. Skipping test...)\n");
   951 		test.End();
  1013 		test.End();
   952 		return;
  1014 		return;
   953 		}
  1015 		}
   954 
  1016 
   955 	if (!foundIsoIN && !foundIsoOUT)
  1017 	if (!foundIsoIN && !foundIsoOUT)
   956 		{
  1018 		{
   957 		test.Printf(_L("(No Isochronous endpoints found)\n"));
  1019 		test.Printf(_L("(No Isochronous endpoints found)\n"));
       
  1020 		OstTrace0(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION_DUP08, "(No Isochronous endpoints found)\n");
   958 		}
  1021 		}
   959 
  1022 
   960 	if (!foundIntIN)
  1023 	if (!foundIntIN)
   961 		{
  1024 		{
   962 		test.Printf(_L("(No Interrupt endpoint found)\n"));
  1025 		test.Printf(_L("(No Interrupt endpoint found)\n"));
       
  1026 		OstTrace0(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION_DUP09, "(No Interrupt endpoint found)\n");
   963 		test.Printf(_L("Adjusting endpoint size for later test\n"));
  1027 		test.Printf(_L("Adjusting endpoint size for later test\n"));
       
  1028 		OstTrace0(TRACE_NORMAL, TESTALTERNATEINTERFACEMANIPULATION_TESTALTERNATEINTERFACEMANIPULATION_DUP10, "Adjusting endpoint size for later test\n");
   964 		// We want to make sure that at least one descriptor has the 2 extra bytes.
  1029 		// We want to make sure that at least one descriptor has the 2 extra bytes.
   965 		// It doesn't matter that this ep could be a Bulk one, or that the 2 Iso ep's might be missing -
  1030 		// It doesn't matter that this ep could be a Bulk one, or that the 2 Iso ep's might be missing -
   966 		// we just want to test some functionality and we're not going to use this interface in earnest.
  1031 		// we just want to test some functionality and we're not going to use this interface in earnest.
   967 		ifc().iEndpointData[2].iExtra = 2;					// 2 extra bytes for Audio Class Ep descriptor
  1032 		ifc().iEndpointData[2].iExtra = 2;					// 2 extra bytes for Audio Class Ep descriptor
   968 		INT_IN_ep = 3;										// pretend it's an INT ep
  1033 		INT_IN_ep = 3;										// pretend it's an INT ep
  1062 
  1127 
  1063 	test.Next(_L("Check endpoint max packet size"));
  1128 	test.Next(_L("Check endpoint max packet size"));
  1064 	const TUint16 ep_size = EpSize(descriptor[KEpDesc_PacketSizeOffset],
  1129 	const TUint16 ep_size = EpSize(descriptor[KEpDesc_PacketSizeOffset],
  1065 								   descriptor[KEpDesc_PacketSizeOffset+1]);
  1130 								   descriptor[KEpDesc_PacketSizeOffset+1]);
  1066 	test.Printf(_L(" Size: %d\n"), ep_size);
  1131 	test.Printf(_L(" Size: %d\n"), ep_size);
       
  1132 	OstTrace1(TRACE_NORMAL, TESTENDPOINTDESCRIPTOR_TESTENDPOINTDESCRIPTOR, " Size: %d\n", ep_size);
  1067 	if (gUsingHighSpeed)
  1133 	if (gUsingHighSpeed)
  1068 		{
  1134 		{
  1069 		// HS Bulk ep can only have one possible packet size.
  1135 		// HS Bulk ep can only have one possible packet size.
  1070 		test(ep_size == 512);
  1136 		test(ep_size == 512);
  1071 		}
  1137 		}
  1084 	test.Start(_L("Extended Endpoint Descriptor Manipulation"));
  1150 	test.Start(_L("Extended Endpoint Descriptor Manipulation"));
  1085 
  1151 
  1086 	if (!SupportsAlternateInterfaces())
  1152 	if (!SupportsAlternateInterfaces())
  1087 		{
  1153 		{
  1088 		test.Printf(_L("*** Not supported - skipping Extended Endpoint descriptor tests\n"));
  1154 		test.Printf(_L("*** Not supported - skipping Extended Endpoint descriptor tests\n"));
       
  1155 		OstTrace0(TRACE_NORMAL, TESTEXTENDEDENDPOINTDESCRIPTOR_TESTEXTENDEDENDPOINTDESCRIPTOR, "*** Not supported - skipping Extended Endpoint descriptor tests\n");
  1089 		test.End();
  1156 		test.End();
  1090 		return;
  1157 		return;
  1091 		}
  1158 		}
  1092 
  1159 
  1093 	// Extended Endpoint Descriptor manipulation (Audio class endpoint)
  1160 	// Extended Endpoint Descriptor manipulation (Audio class endpoint)
  1151 	test.Next(_L("GetStringDescriptorLangId()"));
  1218 	test.Next(_L("GetStringDescriptorLangId()"));
  1152 	TUint16 rd_langid_orig;
  1219 	TUint16 rd_langid_orig;
  1153 	TInt r = gPort.GetStringDescriptorLangId(rd_langid_orig);
  1220 	TInt r = gPort.GetStringDescriptorLangId(rd_langid_orig);
  1154 	test(r == KErrNone);
  1221 	test(r == KErrNone);
  1155 	test.Printf(_L("Original LANGID code: 0x%04X\n"), rd_langid_orig);
  1222 	test.Printf(_L("Original LANGID code: 0x%04X\n"), rd_langid_orig);
       
  1223 	OstTrace1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS, "Original LANGID code: 0x%04X\n", rd_langid_orig);
  1156 
  1224 
  1157 	test.Next(_L("SetStringDescriptorLangId()"));
  1225 	test.Next(_L("SetStringDescriptorLangId()"));
  1158 	TUint16 wr_langid = 0x0809;								// English (UK) Language ID
  1226 	TUint16 wr_langid = 0x0809;								// English (UK) Language ID
  1159 	if (wr_langid == rd_langid_orig)
  1227 	if (wr_langid == rd_langid_orig)
  1160 		wr_langid = 0x0444;									// Tatar Language ID
  1228 		wr_langid = 0x0444;									// Tatar Language ID
  1164 	test.Next(_L("GetStringDescriptorLangId()"));
  1232 	test.Next(_L("GetStringDescriptorLangId()"));
  1165 	TUint16 rd_langid;
  1233 	TUint16 rd_langid;
  1166 	r = gPort.GetStringDescriptorLangId(rd_langid);
  1234 	r = gPort.GetStringDescriptorLangId(rd_langid);
  1167 	test(r == KErrNone);
  1235 	test(r == KErrNone);
  1168 	test.Printf(_L("New LANGID code: 0x%04X\n"), rd_langid);
  1236 	test.Printf(_L("New LANGID code: 0x%04X\n"), rd_langid);
       
  1237 	OstTrace1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP01, "New LANGID code: 0x%04X\n", rd_langid);
  1169 
  1238 
  1170 	test.Next(_L("Compare LANGID codes"));
  1239 	test.Next(_L("Compare LANGID codes"));
  1171 	test(rd_langid == wr_langid);
  1240 	test(rd_langid == wr_langid);
  1172 
  1241 
  1173 	test.Next(_L("Restore original LANGID code"));
  1242 	test.Next(_L("Restore original LANGID code"));
  1187 	test(r == KErrNone || r == KErrNotFound);
  1256 	test(r == KErrNone || r == KErrNotFound);
  1188 	TBool restore_string;
  1257 	TBool restore_string;
  1189 	if (r == KErrNone)
  1258 	if (r == KErrNone)
  1190 		{
  1259 		{
  1191 		test.Printf(_L("Original Manufacturer string: \"%lS\"\n"), &rd_str_orig);
  1260 		test.Printf(_L("Original Manufacturer string: \"%lS\"\n"), &rd_str_orig);
       
  1261 		OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP02, "Original Manufacturer string: \"%lS\"\n", rd_str_orig);
  1192 		restore_string = ETrue;
  1262 		restore_string = ETrue;
  1193 		}
  1263 		}
  1194 	else
  1264 	else
  1195 		{
  1265 		{
  1196 		test.Printf(_L("No Manufacturer string set\n"));
  1266 		test.Printf(_L("No Manufacturer string set\n"));
       
  1267 		OstTrace0(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP03, "No Manufacturer string set\n");
  1197 		restore_string = EFalse;
  1268 		restore_string = EFalse;
  1198 		}
  1269 		}
  1199 
  1270 
  1200 	test.Next(_L("SetManufacturerStringDescriptor()"));
  1271 	test.Next(_L("SetManufacturerStringDescriptor()"));
  1201 	_LIT16(manufacturer, "Manufacturer Which Manufactures Devices");
  1272 	_LIT16(manufacturer, "Manufacturer Which Manufactures Devices");
  1206 	test.Next(_L("GetManufacturerStringDescriptor()"));
  1277 	test.Next(_L("GetManufacturerStringDescriptor()"));
  1207 	TBuf16<KUsbStringDescStringMaxSize / 2> rd_str;
  1278 	TBuf16<KUsbStringDescStringMaxSize / 2> rd_str;
  1208 	r = gPort.GetManufacturerStringDescriptor(rd_str);
  1279 	r = gPort.GetManufacturerStringDescriptor(rd_str);
  1209 	test(r == KErrNone);
  1280 	test(r == KErrNone);
  1210 	test.Printf(_L("New Manufacturer string: \"%lS\"\n"), &rd_str);
  1281 	test.Printf(_L("New Manufacturer string: \"%lS\"\n"), &rd_str);
       
  1282 	OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP04, "New Manufacturer string: \"%lS\"\n", rd_str);
  1211 
  1283 
  1212 	test.Next(_L("Compare Manufacturer strings"));
  1284 	test.Next(_L("Compare Manufacturer strings"));
  1213 	r = rd_str.Compare(wr_str);
  1285 	r = rd_str.Compare(wr_str);
  1214 	test(r == KErrNone);
  1286 	test(r == KErrNone);
  1215 
  1287 
  1223 	test.Next(_L("GetManufacturerStringDescriptor()"));
  1295 	test.Next(_L("GetManufacturerStringDescriptor()"));
  1224 	rd_str.FillZ(rd_str.MaxLength());
  1296 	rd_str.FillZ(rd_str.MaxLength());
  1225 	r = gPort.GetManufacturerStringDescriptor(rd_str);
  1297 	r = gPort.GetManufacturerStringDescriptor(rd_str);
  1226 	test(r == KErrNone);
  1298 	test(r == KErrNone);
  1227 	test.Printf(_L("New Manufacturer string: \"%lS\"\n"), &rd_str);
  1299 	test.Printf(_L("New Manufacturer string: \"%lS\"\n"), &rd_str);
       
  1300 	OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP05, "New Manufacturer string: \"%lS\"\n", rd_str);
  1228 
  1301 
  1229 	test.Next(_L("Compare Manufacturer strings"));
  1302 	test.Next(_L("Compare Manufacturer strings"));
  1230 	r = rd_str.Compare(wr_str);
  1303 	r = rd_str.Compare(wr_str);
  1231 	test(r == KErrNone);
  1304 	test(r == KErrNone);
  1232 
  1305 
  1256 	r = gPort.GetProductStringDescriptor(rd_str_orig);
  1329 	r = gPort.GetProductStringDescriptor(rd_str_orig);
  1257 	test(r == KErrNone || r == KErrNotFound);
  1330 	test(r == KErrNone || r == KErrNotFound);
  1258 	if (r == KErrNone)
  1331 	if (r == KErrNone)
  1259 		{
  1332 		{
  1260 		test.Printf(_L("Old Product string: \"%lS\"\n"), &rd_str_orig);
  1333 		test.Printf(_L("Old Product string: \"%lS\"\n"), &rd_str_orig);
       
  1334 		OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP06, "Old Product string: \"%lS\"\n", rd_str_orig);
  1261 		restore_string = ETrue;
  1335 		restore_string = ETrue;
  1262 		}
  1336 		}
  1263 	else
  1337 	else
  1264 		restore_string = EFalse;
  1338 		restore_string = EFalse;
  1265 
  1339 
  1273 	test.Next(_L("GetProductStringDescriptor()"));
  1347 	test.Next(_L("GetProductStringDescriptor()"));
  1274 	rd_str.FillZ(rd_str.MaxLength());
  1348 	rd_str.FillZ(rd_str.MaxLength());
  1275 	r = gPort.GetProductStringDescriptor(rd_str);
  1349 	r = gPort.GetProductStringDescriptor(rd_str);
  1276 	test(r == KErrNone);
  1350 	test(r == KErrNone);
  1277 	test.Printf(_L("New Product string: \"%lS\"\n"), &rd_str);
  1351 	test.Printf(_L("New Product string: \"%lS\"\n"), &rd_str);
       
  1352 	OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP07, "New Product string: \"%lS\"\n", rd_str);
  1278 
  1353 
  1279 	test.Next(_L("Compare Product strings"));
  1354 	test.Next(_L("Compare Product strings"));
  1280 	r = rd_str.Compare(wr_str);
  1355 	r = rd_str.Compare(wr_str);
  1281 	test(r == KErrNone);
  1356 	test(r == KErrNone);
  1282 
  1357 
  1290 	test.Next(_L("GetProductStringDescriptor()"));
  1365 	test.Next(_L("GetProductStringDescriptor()"));
  1291 	rd_str.FillZ(rd_str.MaxLength());
  1366 	rd_str.FillZ(rd_str.MaxLength());
  1292 	r = gPort.GetProductStringDescriptor(rd_str);
  1367 	r = gPort.GetProductStringDescriptor(rd_str);
  1293 	test(r == KErrNone);
  1368 	test(r == KErrNone);
  1294 	test.Printf(_L("New Product string: \"%lS\"\n"), &rd_str);
  1369 	test.Printf(_L("New Product string: \"%lS\"\n"), &rd_str);
       
  1370 	OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP08, "New Product string: \"%lS\"\n", rd_str);
  1295 
  1371 
  1296 	test.Next(_L("Compare Product strings"));
  1372 	test.Next(_L("Compare Product strings"));
  1297 	r = rd_str.Compare(wr_str);
  1373 	r = rd_str.Compare(wr_str);
  1298 	test(r == KErrNone);
  1374 	test(r == KErrNone);
  1299 
  1375 
  1323 	r = gPort.GetSerialNumberStringDescriptor(rd_str_orig);
  1399 	r = gPort.GetSerialNumberStringDescriptor(rd_str_orig);
  1324 	test(r == KErrNone || r == KErrNotFound);
  1400 	test(r == KErrNone || r == KErrNotFound);
  1325 	if (r == KErrNone)
  1401 	if (r == KErrNone)
  1326 		{
  1402 		{
  1327 		test.Printf(_L("Old Serial Number: \"%lS\"\n"), &rd_str_orig);
  1403 		test.Printf(_L("Old Serial Number: \"%lS\"\n"), &rd_str_orig);
       
  1404 		OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP09, "Old Serial Number: \"%lS\"\n", rd_str_orig);
  1328 		restore_string = ETrue;
  1405 		restore_string = ETrue;
  1329 		}
  1406 		}
  1330 	else
  1407 	else
  1331 		restore_string = EFalse;
  1408 		restore_string = EFalse;
  1332 
  1409 
  1340 	test.Next(_L("GetSerialNumberStringDescriptor()"));
  1417 	test.Next(_L("GetSerialNumberStringDescriptor()"));
  1341 	rd_str.FillZ(rd_str.MaxLength());
  1418 	rd_str.FillZ(rd_str.MaxLength());
  1342 	r = gPort.GetSerialNumberStringDescriptor(rd_str);
  1419 	r = gPort.GetSerialNumberStringDescriptor(rd_str);
  1343 	test(r == KErrNone);
  1420 	test(r == KErrNone);
  1344 	test.Printf(_L("New Serial Number: \"%lS\"\n"), &rd_str);
  1421 	test.Printf(_L("New Serial Number: \"%lS\"\n"), &rd_str);
       
  1422 	OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP10, "New Serial Number: \"%lS\"\n", rd_str);
  1345 
  1423 
  1346 	test.Next(_L("Compare Serial Number strings"));
  1424 	test.Next(_L("Compare Serial Number strings"));
  1347 	r = rd_str.Compare(wr_str);
  1425 	r = rd_str.Compare(wr_str);
  1348 	test(r == KErrNone);
  1426 	test(r == KErrNone);
  1349 
  1427 
  1357 	test.Next(_L("GetSerialNumberStringDescriptor()"));
  1435 	test.Next(_L("GetSerialNumberStringDescriptor()"));
  1358 	rd_str.FillZ(rd_str.MaxLength());
  1436 	rd_str.FillZ(rd_str.MaxLength());
  1359 	r = gPort.GetSerialNumberStringDescriptor(rd_str);
  1437 	r = gPort.GetSerialNumberStringDescriptor(rd_str);
  1360 	test(r == KErrNone);
  1438 	test(r == KErrNone);
  1361 	test.Printf(_L("New Serial Number: \"%lS\"\n"), &rd_str);
  1439 	test.Printf(_L("New Serial Number: \"%lS\"\n"), &rd_str);
       
  1440 	OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP11, "New Serial Number: \"%lS\"\n", rd_str);
  1362 
  1441 
  1363 	test.Next(_L("Compare Serial Number strings"));
  1442 	test.Next(_L("Compare Serial Number strings"));
  1364 	r = rd_str.Compare(wr_str);
  1443 	r = rd_str.Compare(wr_str);
  1365 	test(r == KErrNone);
  1444 	test(r == KErrNone);
  1366 
  1445 
  1390 	r = gPort.GetConfigurationStringDescriptor(rd_str_orig);
  1469 	r = gPort.GetConfigurationStringDescriptor(rd_str_orig);
  1391 	test(r == KErrNone || r == KErrNotFound);
  1470 	test(r == KErrNone || r == KErrNotFound);
  1392 	if (r == KErrNone)
  1471 	if (r == KErrNone)
  1393 		{
  1472 		{
  1394 		test.Printf(_L("Old Configuration string: \"%lS\"\n"), &rd_str_orig);
  1473 		test.Printf(_L("Old Configuration string: \"%lS\"\n"), &rd_str_orig);
       
  1474 		OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP12, "Old Configuration string: \"%lS\"\n", rd_str_orig);
  1395 		restore_string = ETrue;
  1475 		restore_string = ETrue;
  1396 		}
  1476 		}
  1397 	else
  1477 	else
  1398 		restore_string = EFalse;
  1478 		restore_string = EFalse;
  1399 
  1479 
  1407 	test.Next(_L("GetConfigurationStringDescriptor()"));
  1487 	test.Next(_L("GetConfigurationStringDescriptor()"));
  1408 	rd_str.FillZ(rd_str.MaxLength());
  1488 	rd_str.FillZ(rd_str.MaxLength());
  1409 	r = gPort.GetConfigurationStringDescriptor(rd_str);
  1489 	r = gPort.GetConfigurationStringDescriptor(rd_str);
  1410 	test(r == KErrNone);
  1490 	test(r == KErrNone);
  1411 	test.Printf(_L("New Configuration string: \"%lS\"\n"), &rd_str);
  1491 	test.Printf(_L("New Configuration string: \"%lS\"\n"), &rd_str);
       
  1492 	OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP13, "New Configuration string: \"%lS\"\n", rd_str);
  1412 
  1493 
  1413 	test.Next(_L("Compare Configuration strings"));
  1494 	test.Next(_L("Compare Configuration strings"));
  1414 	r = rd_str.Compare(wr_str);
  1495 	r = rd_str.Compare(wr_str);
  1415 	test(r == KErrNone);
  1496 	test(r == KErrNone);
  1416 
  1497 
  1424 	test.Next(_L("GetConfigurationStringDescriptor()"));
  1505 	test.Next(_L("GetConfigurationStringDescriptor()"));
  1425 	rd_str.FillZ(rd_str.MaxLength());
  1506 	rd_str.FillZ(rd_str.MaxLength());
  1426 	r = gPort.GetConfigurationStringDescriptor(rd_str);
  1507 	r = gPort.GetConfigurationStringDescriptor(rd_str);
  1427 	test(r == KErrNone);
  1508 	test(r == KErrNone);
  1428 	test.Printf(_L("New Configuration string: \"%lS\"\n"), &rd_str);
  1509 	test.Printf(_L("New Configuration string: \"%lS\"\n"), &rd_str);
       
  1510 	OstTraceExt1(TRACE_NORMAL, TESTSTANDARDSTRINGDESCRIPTORS_TESTSTANDARDSTRINGDESCRIPTORS_DUP14, "New Configuration string: \"%lS\"\n", rd_str);
  1429 
  1511 
  1430 	test.Next(_L("Compare Configuration strings"));
  1512 	test.Next(_L("Compare Configuration strings"));
  1431 	r = rd_str.Compare(wr_str);
  1513 	r = rd_str.Compare(wr_str);
  1432 	test(r == KErrNone);
  1514 	test(r == KErrNone);
  1433 
  1515 
  1487 
  1569 
  1488 	test.Next(_L("GetStringDescriptor() 1"));
  1570 	test.Next(_L("GetStringDescriptor() 1"));
  1489 	r = gPort.GetStringDescriptor(stridx1, rd_str);
  1571 	r = gPort.GetStringDescriptor(stridx1, rd_str);
  1490 	test(r == KErrNone);
  1572 	test(r == KErrNone);
  1491 	test.Printf(_L("New test string @ idx %d: \"%lS\"\n"), stridx1, &rd_str);
  1573 	test.Printf(_L("New test string @ idx %d: \"%lS\"\n"), stridx1, &rd_str);
       
  1574 	OstTraceExt2(TRACE_NORMAL, TESTARBITRARYSTRINGDESCRIPTORS_TESTARBITRARYSTRINGDESCRIPTORS, "New test string @ idx %d: \"%lS\"\n", stridx1, rd_str);
  1492 
  1575 
  1493 	test.Next(_L("Compare test strings 1"));
  1576 	test.Next(_L("Compare test strings 1"));
  1494 	r = rd_str.Compare(wr_str);
  1577 	r = rd_str.Compare(wr_str);
  1495 	test(r == KErrNone);
  1578 	test(r == KErrNone);
  1496 
  1579 
  1525 
  1608 
  1526 	test.Next(_L("GetStringDescriptor() 2"));
  1609 	test.Next(_L("GetStringDescriptor() 2"));
  1527 	r = gPort.GetStringDescriptor(stridx2, rd_str);
  1610 	r = gPort.GetStringDescriptor(stridx2, rd_str);
  1528 	test(r == KErrNone);
  1611 	test(r == KErrNone);
  1529 	test.Printf(_L("New test string @ idx %d: \"%lS\"\n"), stridx2, &rd_str);
  1612 	test.Printf(_L("New test string @ idx %d: \"%lS\"\n"), stridx2, &rd_str);
       
  1613 	OstTraceExt2(TRACE_NORMAL, TESTARBITRARYSTRINGDESCRIPTORS_TESTARBITRARYSTRINGDESCRIPTORS_DUP01, "New test string @ idx %d: \"%lS\"\n", stridx2, rd_str);
  1530 
  1614 
  1531 	test.Next(_L("Compare test strings 2"));
  1615 	test.Next(_L("Compare test strings 2"));
  1532 	r = rd_str.Compare(wr_str);
  1616 	r = rd_str.Compare(wr_str);
  1533 	test(r == KErrNone);
  1617 	test(r == KErrNone);
  1534 
  1618 
  1548 
  1632 
  1549 	test.Next(_L("GetStringDescriptor() 3"));
  1633 	test.Next(_L("GetStringDescriptor() 3"));
  1550 	r = gPort.GetStringDescriptor(stridx3, rd_str);
  1634 	r = gPort.GetStringDescriptor(stridx3, rd_str);
  1551 	test(r == KErrNone);
  1635 	test(r == KErrNone);
  1552 	test.Printf(_L("New test string @ idx %d: \"%lS\"\n"), stridx3, &rd_str);
  1636 	test.Printf(_L("New test string @ idx %d: \"%lS\"\n"), stridx3, &rd_str);
       
  1637 	OstTraceExt2(TRACE_NORMAL, TESTARBITRARYSTRINGDESCRIPTORS_TESTARBITRARYSTRINGDESCRIPTORS_DUP02, "New test string @ idx %d: \"%lS\"\n", stridx3, rd_str);
  1553 
  1638 
  1554 	test.Next(_L("Compare test strings 3"));
  1639 	test.Next(_L("Compare test strings 3"));
  1555 	r = rd_str.Compare(wr_str);
  1640 	r = rd_str.Compare(wr_str);
  1556 	test(r == KErrNone);
  1641 	test(r == KErrNone);
  1557 
  1642 
  1666 		TBool b_HnpEnable = (features & KUsbOtgAttr_B_HnpEnable) ? ETrue : EFalse;
  1751 		TBool b_HnpEnable = (features & KUsbOtgAttr_B_HnpEnable) ? ETrue : EFalse;
  1667 		TBool a_HnpSupport = (features & KUsbOtgAttr_A_HnpSupport) ? ETrue : EFalse;
  1752 		TBool a_HnpSupport = (features & KUsbOtgAttr_A_HnpSupport) ? ETrue : EFalse;
  1668 		TBool a_AltHnpSupport = (features & KUsbOtgAttr_A_AltHnpSupport) ? ETrue : EFalse;
  1753 		TBool a_AltHnpSupport = (features & KUsbOtgAttr_A_AltHnpSupport) ? ETrue : EFalse;
  1669 		test.Printf(_L("### OTG Features:\nB_HnpEnable(%d)\nA_HnpSupport(%d)\nA_Alt_HnpSupport(%d)\n"),
  1754 		test.Printf(_L("### OTG Features:\nB_HnpEnable(%d)\nA_HnpSupport(%d)\nA_Alt_HnpSupport(%d)\n"),
  1670 					b_HnpEnable, a_HnpSupport, a_AltHnpSupport);
  1755 					b_HnpEnable, a_HnpSupport, a_AltHnpSupport);
       
  1756 		OstTraceExt3(TRACE_NORMAL, TESTOTGEXTENSIONS_TESTOTGEXTENSIONS, "### OTG Features:\nB_HnpEnable(%d)\nA_HnpSupport(%d)\nA_Alt_HnpSupport(%d)\n",
       
  1757 					b_HnpEnable, a_HnpSupport, a_AltHnpSupport);
  1671 		}
  1758 		}
  1672 	else
  1759 	else
  1673 		{
  1760 		{
  1674 		test(r == KErrNotSupported);
  1761 		test(r == KErrNotSupported);
  1675 		test.Printf(_L("GetOtgFeatures() not supported\n"));
  1762 		test.Printf(_L("GetOtgFeatures() not supported\n"));
       
  1763 		OstTrace0(TRACE_NORMAL, TESTOTGEXTENSIONS_TESTOTGEXTENSIONS_DUP01, "GetOtgFeatures() not supported\n");
  1676 		}
  1764 		}
  1677 
  1765 
  1678 	test.End();
  1766 	test.End();
  1679 }
  1767 }
  1680 
  1768 
  1722 				break;
  1810 				break;
  1723 				}
  1811 				}
  1724 			if (good)
  1812 			if (good)
  1725 				{
  1813 				{
  1726 				test.Printf(_L("Ep0 supports %d bytes MaxPacketSize\n"), mpsize);
  1814 				test.Printf(_L("Ep0 supports %d bytes MaxPacketSize\n"), mpsize);
       
  1815 				OstTrace1(TRACE_NORMAL, TESTENDPOINT0MAXPACKETSIZES_TESTENDPOINT0MAXPACKETSIZES, "Ep0 supports %d bytes MaxPacketSize\n", mpsize);
  1727 				}
  1816 				}
  1728 			else
  1817 			else
  1729 				{
  1818 				{
  1730 				test.Printf(_L("Bad Ep0 size: 0x%08x, failure will occur\n"), bit);
  1819 				test.Printf(_L("Bad Ep0 size: 0x%08x, failure will occur\n"), bit);
       
  1820 				OstTrace1(TRACE_NORMAL, TESTENDPOINT0MAXPACKETSIZES_TESTENDPOINT0MAXPACKETSIZES_DUP01, "Bad Ep0 size: 0x%08x, failure will occur\n", bit);
  1731 				r = KErrGeneral;
  1821 				r = KErrGeneral;
  1732 				}
  1822 				}
  1733 			}
  1823 			}
  1734 		}
  1824 		}
  1735 	test(r == KErrNone);
  1825 	test(r == KErrNone);
  1769 	test(dev_status == KErrCancel || dev_status == KErrNone);
  1859 	test(dev_status == KErrCancel || dev_status == KErrNone);
  1770 	if (deviceState & KUsbAlternateSetting)
  1860 	if (deviceState & KUsbAlternateSetting)
  1771 		{
  1861 		{
  1772 		TUint setting = (deviceState & ~KUsbAlternateSetting);
  1862 		TUint setting = (deviceState & ~KUsbAlternateSetting);
  1773 		test.Printf(_L("Alternate setting change to setting %d - unexpected"), setting);
  1863 		test.Printf(_L("Alternate setting change to setting %d - unexpected"), setting);
       
  1864 		OstTrace1(TRACE_NORMAL, TESTALTERNATEDEVICESTATUSNOTIFY_TESTALTERNATEDEVICESTATUSNOTIFY, "Alternate setting change to setting %d - unexpected", setting);
  1774 		test(EFalse);
  1865 		test(EFalse);
  1775 		}
  1866 		}
  1776 	else
  1867 	else
  1777 		{
  1868 		{
  1778 		switch (deviceState)
  1869 		switch (deviceState)
  1779 			{
  1870 			{
  1780 		case EUsbcDeviceStateUndefined:
  1871 		case EUsbcDeviceStateUndefined:
  1781 			test.Printf(_L("TestAlternateDeviceStatusNotify: Undefined state\n"));
  1872 			test.Printf(_L("TestAlternateDeviceStatusNotify: Undefined state\n"));
       
  1873 			OstTrace0(TRACE_NORMAL, TESTALTERNATEDEVICESTATUSNOTIFY_TESTALTERNATEDEVICESTATUSNOTIFY_DUP01, "TestAlternateDeviceStatusNotify: Undefined state\n");
  1782 			break;
  1874 			break;
  1783 		case EUsbcDeviceStateAttached:
  1875 		case EUsbcDeviceStateAttached:
  1784 			test.Printf(_L("TestAlternateDeviceStatusNotify: Attached state\n"));
  1876 			test.Printf(_L("TestAlternateDeviceStatusNotify: Attached state\n"));
       
  1877 			OstTrace0(TRACE_NORMAL, TESTALTERNATEDEVICESTATUSNOTIFY_TESTALTERNATEDEVICESTATUSNOTIFY_DUP02, "TestAlternateDeviceStatusNotify: Attached state\n");
  1785 			break;
  1878 			break;
  1786 		case EUsbcDeviceStatePowered:
  1879 		case EUsbcDeviceStatePowered:
  1787 			test.Printf(_L("TestAlternateDeviceStatusNotify: Powered state\n"));
  1880 			test.Printf(_L("TestAlternateDeviceStatusNotify: Powered state\n"));
       
  1881 			OstTrace0(TRACE_NORMAL, TESTALTERNATEDEVICESTATUSNOTIFY_TESTALTERNATEDEVICESTATUSNOTIFY_DUP03, "TestAlternateDeviceStatusNotify: Powered state\n");
  1788 			break;
  1882 			break;
  1789 		case EUsbcDeviceStateDefault:
  1883 		case EUsbcDeviceStateDefault:
  1790 			test.Printf(_L("TestAlternateDeviceStatusNotify: Default state\n"));
  1884 			test.Printf(_L("TestAlternateDeviceStatusNotify: Default state\n"));
       
  1885 			OstTrace0(TRACE_NORMAL, TESTALTERNATEDEVICESTATUSNOTIFY_TESTALTERNATEDEVICESTATUSNOTIFY_DUP04, "TestAlternateDeviceStatusNotify: Default state\n");
  1791 			break;
  1886 			break;
  1792 		case EUsbcDeviceStateAddress:
  1887 		case EUsbcDeviceStateAddress:
  1793 			test.Printf(_L("TestAlternateDeviceStatusNotify: Address state\n"));
  1888 			test.Printf(_L("TestAlternateDeviceStatusNotify: Address state\n"));
       
  1889 			OstTrace0(TRACE_NORMAL, TESTALTERNATEDEVICESTATUSNOTIFY_TESTALTERNATEDEVICESTATUSNOTIFY_DUP05, "TestAlternateDeviceStatusNotify: Address state\n");
  1794 			break;
  1890 			break;
  1795 		case EUsbcDeviceStateConfigured:
  1891 		case EUsbcDeviceStateConfigured:
  1796 			test.Printf(_L("TestAlternateDeviceStatusNotify: Configured state\n"));
  1892 			test.Printf(_L("TestAlternateDeviceStatusNotify: Configured state\n"));
       
  1893 			OstTrace0(TRACE_NORMAL, TESTALTERNATEDEVICESTATUSNOTIFY_TESTALTERNATEDEVICESTATUSNOTIFY_DUP06, "TestAlternateDeviceStatusNotify: Configured state\n");
  1797 			break;
  1894 			break;
  1798 		case EUsbcDeviceStateSuspended:
  1895 		case EUsbcDeviceStateSuspended:
  1799 			test.Printf(_L("TestAlternateDeviceStatusNotify: Suspended state\n"));
  1896 			test.Printf(_L("TestAlternateDeviceStatusNotify: Suspended state\n"));
       
  1897 			OstTrace0(TRACE_NORMAL, TESTALTERNATEDEVICESTATUSNOTIFY_TESTALTERNATEDEVICESTATUSNOTIFY_DUP07, "TestAlternateDeviceStatusNotify: Suspended state\n");
  1800 			break;
  1898 			break;
  1801 		case EUsbcNoState:
  1899 		case EUsbcNoState:
  1802 			test.Printf(_L("TestAlternateDeviceStatusNotify: State buffering error\n"));
  1900 			test.Printf(_L("TestAlternateDeviceStatusNotify: State buffering error\n"));
       
  1901 			OstTrace0(TRACE_NORMAL, TESTALTERNATEDEVICESTATUSNOTIFY_TESTALTERNATEDEVICESTATUSNOTIFY_DUP08, "TestAlternateDeviceStatusNotify: State buffering error\n");
  1803 			test(EFalse);
  1902 			test(EFalse);
  1804 			break;
  1903 			break;
  1805 		default:
  1904 		default:
  1806 			test.Printf(_L("TestAlternateDeviceStatusNotify: Unknown state\n"));
  1905 			test.Printf(_L("TestAlternateDeviceStatusNotify: Unknown state\n"));
       
  1906 			OstTrace0(TRACE_NORMAL, TESTALTERNATEDEVICESTATUSNOTIFY_TESTALTERNATEDEVICESTATUSNOTIFY_DUP09, "TestAlternateDeviceStatusNotify: Unknown state\n");
  1807 			test(EFalse);
  1907 			test(EFalse);
  1808 			}
  1908 			}
  1809 		}
  1909 		}
  1810 
  1910 
  1811 	test.End();
  1911 	test.End();
  1832 	for (TInt i = 0; i <= 2; i++)
  1932 	for (TInt i = 0; i <= 2; i++)
  1833 		{
  1933 		{
  1834 		if ((epStateBitmap & (1 << i)) == EEndpointStateNotStalled)
  1934 		if ((epStateBitmap & (1 << i)) == EEndpointStateNotStalled)
  1835 			{
  1935 			{
  1836 			test.Printf(_L("EndpointStatusNotify: Ep %d NOT STALLED\n"), i);
  1936 			test.Printf(_L("EndpointStatusNotify: Ep %d NOT STALLED\n"), i);
       
  1937 			OstTrace1(TRACE_NORMAL, TESTENDPOINTSTATUSNOTIFY_TESTENDPOINTSTATUSNOTIFY, "EndpointStatusNotify: Ep %d NOT STALLED\n", i);
  1837 			}
  1938 			}
  1838 		else
  1939 		else
  1839 			{
  1940 			{
  1840 			test.Printf(_L("EndpointStatusNotify: Ep %d STALLED\n"), i);
  1941 			test.Printf(_L("EndpointStatusNotify: Ep %d STALLED\n"), i);
       
  1942 			OstTrace1(TRACE_NORMAL, TESTENDPOINTSTATUSNOTIFY_TESTENDPOINTSTATUSNOTIFY_DUP01, "EndpointStatusNotify: Ep %d STALLED\n", i);
  1841 			}
  1943 			}
  1842 		}
  1944 		}
  1843 
  1945 
  1844 	test.End();
  1946 	test.End();
  1845 	}
  1947 	}
  1864 	test(ret == KErrNone);
  1966 	test(ret == KErrNone);
  1865 
  1967 
  1866 	if( EUsbcDeviceStateUndefined==devstate )
  1968 	if( EUsbcDeviceStateUndefined==devstate )
  1867 		{
  1969 		{
  1868 		test.Printf( _L("Device not connected, state EUsbcDeviceStateUndefined.\n")  );
  1970 		test.Printf( _L("Device not connected, state EUsbcDeviceStateUndefined.\n")  );
       
  1971 		OstTrace0(TRACE_NORMAL, TESTENDPOINTSTALLSTATUS_TESTENDPOINTSTALLSTATUS, "Device not connected, state EUsbcDeviceStateUndefined.\n");
  1869 		test.Printf( _L("Skipping endpoint stall status tests.\n") );
  1972 		test.Printf( _L("Skipping endpoint stall status tests.\n") );
       
  1973 		OstTrace0(TRACE_NORMAL, TESTENDPOINTSTALLSTATUS_TESTENDPOINTSTALLSTATUS_DUP01, "Skipping endpoint stall status tests.\n");
  1870 		test.End();
  1974 		test.End();
  1871 		return;
  1975 		return;
  1872 		}
  1976 		}
  1873 #endif
  1977 #endif
  1874 
  1978 
  1875 	if (!SupportsEndpointStall())
  1979 	if (!SupportsEndpointStall())
  1876 		{
  1980 		{
  1877 		test.Printf(_L("*** Not supported - skipping endpoint stall status tests\n"));
  1981 		test.Printf(_L("*** Not supported - skipping endpoint stall status tests\n"));
       
  1982 		OstTrace0(TRACE_NORMAL, TESTENDPOINTSTALLSTATUS_TESTENDPOINTSTALLSTATUS_DUP02, "*** Not supported - skipping endpoint stall status tests\n");
  1878 		test.End();
  1983 		test.End();
  1879 		return;
  1984 		return;
  1880 		}
  1985 		}
  1881 
  1986 
  1882 	test.Next(_L("Endpoint stall status"));
  1987 	test.Next(_L("Endpoint stall status"));
  1958 			}
  2063 			}
  1959 		else
  2064 		else
  1960 			{
  2065 			{
  1961 			step = KEpilogue;
  2066 			step = KEpilogue;
  1962 			test.Printf(_L("*** Test platform does not support USB - skipping all tests\n"));
  2067 			test.Printf(_L("*** Test platform does not support USB - skipping all tests\n"));
       
  2068 			OstTrace0(TRACE_NORMAL, RUNTESTS_RUNTESTS, "*** Test platform does not support USB - skipping all tests\n");
  1963 			}
  2069 			}
  1964 		return ETrue;
  2070 		return ETrue;
  1965 	case KMain:
  2071 	case KMain:
  1966 		OpenChannel();
  2072 		OpenChannel();
  1967 		SetupInterface();
  2073 		SetupInterface();
  1983 			step = KEpilogue;
  2089 			step = KEpilogue;
  1984 			}
  2090 			}
  1985 		return ETrue;
  2091 		return ETrue;
  1986 	case KEpilogue:
  2092 	case KEpilogue:
  1987 		test.Printf(_L("USBAPI tests were run %.0f time(s)\n"), loops);
  2093 		test.Printf(_L("USBAPI tests were run %.0f time(s)\n"), loops);
       
  2094 		OstTraceExt1(TRACE_NORMAL, RUNTESTS_RUNTESTS_DUP01, "USBAPI tests were run %.0f time(s)\n", loops);
  1988 		// outermost test end
  2095 		// outermost test end
  1989 		test.End();
  2096 		test.End();
  1990 		CActiveScheduler::Stop();
  2097 		CActiveScheduler::Stop();
  1991 		return EFalse;
  2098 		return EFalse;
  1992 		}
  2099 		}