--- a/kerneltest/e32test/usbho/t_usbdi/src/TestDeviceBase.cpp Fri Sep 17 08:37:04 2010 +0300
+++ b/kerneltest/e32test/usbho/t_usbdi/src/TestDeviceBase.cpp Mon Oct 04 02:35:35 2010 +0300
@@ -32,61 +32,61 @@
#include <e32property.h>
namespace NUnitTesting_USBDI
- {
+ {
RUsbTestDevice::RUsbTestDevice()
-: iStateWatcher(NULL),
- iCurrentState(EUsbcDeviceStateUndefined),
- iDeviceEp0(NULL),
- iConnectTimer(NULL), iWakeupTimer(NULL),
- iAuxBuffer(NULL)
- {
- OstTraceFunctionEntry1( RUSBTESTDEVICE_RUSBTESTDEVICE_ENTRY, this );
- OstTraceFunctionExit1( RUSBTESTDEVICE_RUSBTESTDEVICE_EXIT, this );
- }
-
+: iStateWatcher(NULL),
+ iCurrentState(EUsbcDeviceStateUndefined),
+ iDeviceEp0(NULL),
+ iConnectTimer(NULL), iWakeupTimer(NULL),
+ iAuxBuffer(NULL)
+ {
+ OstTraceFunctionEntry1( RUSBTESTDEVICE_RUSBTESTDEVICE_ENTRY, this );
+ OstTraceFunctionExit1( RUSBTESTDEVICE_RUSBTESTDEVICE_EXIT, this );
+ }
+
RUsbTestDevice::RUsbTestDevice(CBaseTestCase* aTestCase)
-: iStateWatcher(NULL),
- iCurrentState(EUsbcDeviceStateUndefined),
- iDeviceEp0(NULL),
- iConnectTimer(NULL), iWakeupTimer(NULL),
- iAuxBuffer(NULL)
- {
- OstTraceFunctionEntryExt( RUSBTESTDEVICE_RUSBTESTDEVICE_ENTRY_DUP01, this );
- iTestCase = aTestCase;
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_RUSBTESTDEVICE, "iTestCase = %d", iTestCase);
- OstTraceFunctionExit1( RUSBTESTDEVICE_RUSBTESTDEVICE_EXIT_DUP01, this );
- }
-
+: iStateWatcher(NULL),
+ iCurrentState(EUsbcDeviceStateUndefined),
+ iDeviceEp0(NULL),
+ iConnectTimer(NULL), iWakeupTimer(NULL),
+ iAuxBuffer(NULL)
+ {
+ OstTraceFunctionEntryExt( RUSBTESTDEVICE_RUSBTESTDEVICE_ENTRY_DUP01, this );
+ iTestCase = aTestCase;
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_RUSBTESTDEVICE, "iTestCase = %d", iTestCase);
+ OstTraceFunctionExit1( RUSBTESTDEVICE_RUSBTESTDEVICE_EXIT_DUP01, this );
+ }
+
void RUsbTestDevice::ResetState()
- {
- OstTraceFunctionEntry1( RUSBTESTDEVICE_RESETSTATE_ENTRY, this );
- iCurrentState = EUsbcDeviceStateUndefined;
- OstTraceFunctionExit1( RUSBTESTDEVICE_RESETSTATE_EXIT, this );
- }
+ {
+ OstTraceFunctionEntry1( RUSBTESTDEVICE_RESETSTATE_ENTRY, this );
+ iCurrentState = EUsbcDeviceStateUndefined;
+ OstTraceFunctionExit1( RUSBTESTDEVICE_RESETSTATE_EXIT, this );
+ }
RUsbTestDevice::~RUsbTestDevice()
- {
- OstTraceFunctionEntry1( RUSBTESTDEVICE_RUSBTESTDEVICE_ENTRY_DUP02, this );
-
- OstTraceFunctionExit1( RUSBTESTDEVICE_RUSBTESTDEVICE_EXIT_DUP02, this );
- }
-
+ {
+ OstTraceFunctionEntry1( RUSBTESTDEVICE_RUSBTESTDEVICE_ENTRY_DUP02, this );
+
+ OstTraceFunctionExit1( RUSBTESTDEVICE_RUSBTESTDEVICE_EXIT_DUP02, this );
+ }
+
void RUsbTestDevice::Close()
- {
+ {
OstTraceFunctionEntry1( RUSBTESTDEVICE_CLOSE_ENTRY, this );
- delete iWakeupTimer;
- delete iConnectTimer;
- delete iDeviceEp0;
- delete iStateWatcher;
-
- iInterfaces.ResetAndDestroy();
+ delete iWakeupTimer;
+ delete iConnectTimer;
+ delete iDeviceEp0;
+ delete iStateWatcher;
+
+ iInterfaces.ResetAndDestroy();
- iClientDriver.Close();
-
- if(!iTestCase->IsHost()) // process only started in client rom
- {
+ iClientDriver.Close();
+
+ if(!iTestCase->IsHost()) // process only started in client rom
+ {
// create a publish/subscribe key to allow usbhost_usbman to be killed
// cleanly
static const TUid KWordOfDeathCat = {0x01066600};
@@ -97,637 +97,642 @@
{
OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_CLOSE, "Could not create the WordOfDeath P&S (%d)", r);
}
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_CLOSE_DUP01, "killing t_usbhost_usbman.exe");
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_CLOSE_DUP01, "killing t_usbhost_usbman.exe");
RProperty::Set(KWordOfDeathCat, KWordOfDeathKey, KErrAbort); // Send the word of death
User::After(1000000); //allow time for t_usbhost_usbman.exe to clean up
- }
- OstTraceFunctionExit1( RUSBTESTDEVICE_CLOSE_EXIT, this );
- }
+ }
+ OstTraceFunctionExit1( RUSBTESTDEVICE_CLOSE_EXIT, this );
+ }
void RUsbTestDevice::SubscribeToReports(TRequestStatus& aObserverStatus)
- {
- OstTraceFunctionEntryExt( RUSBTESTDEVICE_SUBSCRIBETOREPORTS_ENTRY, this );
-
- // Signal the request as pending
-
- iObserverStatus = &aObserverStatus;
- *iObserverStatus = KRequestPending;
- OstTraceFunctionExit1( RUSBTESTDEVICE_SUBSCRIBETOREPORTS_EXIT, this );
- }
+ {
+ OstTraceFunctionEntryExt( RUSBTESTDEVICE_SUBSCRIBETOREPORTS_ENTRY, this );
+
+ // Signal the request as pending
+
+ iObserverStatus = &aObserverStatus;
+ *iObserverStatus = KRequestPending;
+ OstTraceFunctionExit1( RUSBTESTDEVICE_SUBSCRIBETOREPORTS_EXIT, this );
+ }
void RUsbTestDevice::CancelSubscriptionToReports()
- {
- OstTraceFunctionEntry1( RUSBTESTDEVICE_CANCELSUBSCRIPTIONTOREPORTS_ENTRY, this );
-
- // Signal the request as cancelled
- User::RequestComplete(iObserverStatus,KErrCancel);
- OstTraceFunctionExit1( RUSBTESTDEVICE_CANCELSUBSCRIPTIONTOREPORTS_EXIT, this );
- }
-
-
+ {
+ OstTraceFunctionEntry1( RUSBTESTDEVICE_CANCELSUBSCRIPTIONTOREPORTS_ENTRY, this );
+
+ // Signal the request as cancelled
+ User::RequestComplete(iObserverStatus,KErrCancel);
+ OstTraceFunctionExit1( RUSBTESTDEVICE_CANCELSUBSCRIPTIONTOREPORTS_EXIT, this );
+ }
+
+
void RUsbTestDevice::OpenL()
- {
- OstTraceFunctionEntry1( RUSBTESTDEVICE_OPENL_ENTRY, this );
- TInt err = KErrNone;
-
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_OPENL, "starting t_usbhost_usbman.exe");
- TInt r = iOtgUsbMan.Create(_L("t_usbhost_usbman.exe"), _L("client"));
- gtest(r == KErrNone);
- iOtgUsbMan.Resume();
-
- User::After(1500000);
-
- // Open channel to driver
- err = iClientDriver.Open(0);
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP01, "<Error %d> Unable to open a channel to USB client driver",err);
- User::Leave(err);
- }
-
- // Hide bus from host while interfaces are being set up
- err = iClientDriver.DeviceDisconnectFromHost();
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP02, "<Error %d> unable to disconnect device from host",err);
- User::Leave(err);
- }
-
- // Create the client usb state watcher
- iStateWatcher = CUsbClientStateWatcher::NewL(iClientDriver,*this);
-
- // Create the Ep0 reader
- iDeviceEp0 = CDeviceEndpoint0::NewL(*this);
-
- // Create the timer for software connection/disconnection
- iConnectTimer = CSoftwareConnectTimer::NewL(*this);
-
- // Create the timer for remote wakeup events
- iWakeupTimer = CRemoteWakeupTimer::NewL(*this);
- _LIT8(KYes, "yes");
- _LIT8(KNo, "no");
- User::LeaveIfError(iClientDriver.DeviceCaps(iDeviceCaps));
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP03, "------ USB device capabilities -------");
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP04, "Number of endpoints: %d",iDeviceCaps().iTotalEndpoints);
- OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP05, "Supports Software-Connect: %s",iDeviceCaps().iConnect ? KYes() : KNo());
- OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP06, "Device is Self-Powered: %S",iDeviceCaps().iSelfPowered ? KYes() : KNo());
- OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP07, "Supports Remote-Wakeup: %S",iDeviceCaps().iRemoteWakeup ? KYes() : KNo());
- OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP08, "Supports High-speed: %S",iDeviceCaps().iHighSpeed ? KYes() : KNo());
- OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP09, "Supports unpowered cable detection: %S",(iDeviceCaps().iFeatureWord1 & KUsbDevCapsFeatureWord1_CableDetectWithoutPower) ? KYes() : KNo());
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP10, "--------------------------------------");
-
- OstTraceFunctionExit1( RUSBTESTDEVICE_OPENL_EXIT, this );
- }
+ {
+ OstTraceFunctionEntry1( RUSBTESTDEVICE_OPENL_ENTRY, this );
+ TInt err = KErrNone;
+
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_OPENL, "starting t_usbhost_usbman.exe");
+ TInt r = iOtgUsbMan.Create(_L("t_usbhost_usbman.exe"), _L("client"));
+ gtest(r == KErrNone);
+ iOtgUsbMan.Resume();
+
+ User::After(1500000);
+
+ // Open channel to driver
+ err = iClientDriver.Open(0);
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP01, "<Error %d> Unable to open a channel to USB client driver",err);
+ User::Leave(err);
+ }
+
+ // Hide bus from host while interfaces are being set up
+ err = iClientDriver.DeviceDisconnectFromHost();
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP02, "<Error %d> unable to disconnect device from host",err);
+ User::Leave(err);
+ }
+
+ // Create the client usb state watcher
+ iStateWatcher = CUsbClientStateWatcher::NewL(iClientDriver,*this);
+
+ // Create the Ep0 reader
+ iDeviceEp0 = CDeviceEndpoint0::NewL(*this);
+
+ // Create the timer for software connection/disconnection
+ iConnectTimer = CSoftwareConnectTimer::NewL(*this);
+
+ // Create the timer for remote wakeup events
+ iWakeupTimer = CRemoteWakeupTimer::NewL(*this);
+
+ User::LeaveIfError(iClientDriver.DeviceCaps(iDeviceCaps));
+
+#ifdef OST_TRACE_COMPILER_IN_USE
+ _LIT8(KYes, "yes");
+ _LIT8(KNo, "no");
+#endif
+
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP03, "------ USB device capabilities -------");
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP04, "Number of endpoints: %d",iDeviceCaps().iTotalEndpoints);
+ OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP05, "Supports Software-Connect: %s",iDeviceCaps().iConnect ? KYes() : KNo());
+ OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP06, "Device is Self-Powered: %S",iDeviceCaps().iSelfPowered ? KYes() : KNo());
+ OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP07, "Supports Remote-Wakeup: %S",iDeviceCaps().iRemoteWakeup ? KYes() : KNo());
+ OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP08, "Supports High-speed: %S",iDeviceCaps().iHighSpeed ? KYes() : KNo());
+ OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP09, "Supports unpowered cable detection: %S",(iDeviceCaps().iFeatureWord1 & KUsbDevCapsFeatureWord1_CableDetectWithoutPower) ? KYes() : KNo());
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP10, "--------------------------------------");
+
+ OstTraceFunctionExit1( RUSBTESTDEVICE_OPENL_EXIT, this );
+ }
TInt RUsbTestDevice::SetClassCode(TUint8 aClassCode,TUint8 aSubClassCode,TUint8 aDeviceProtocol)
- {
+ {
OstTraceFunctionEntryExt( RUSBTESTDEVICE_SETCLASSCODE_ENTRY, this );
- // Get Device descriptor
- TBuf8<KUsbDescSize_Device> deviceDescriptor;
- TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCLASSCODE, "<Error %d> Unable to obtain device descriptor",err);
- }
- else
- {
- deviceDescriptor[KDevDescOffset_bDeviceClass] = aClassCode;
- deviceDescriptor[KDevDescOffset_bDeviceSubClass] = aSubClassCode;
- deviceDescriptor[KDevDescOffset_bDeviceProtocol] = aDeviceProtocol;
-
- err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCLASSCODE_DUP01, "<Error %d> Unable to set the device dsecriptor",err);
- }
- }
- OstTraceFunctionExitExt( RUSBTESTDEVICE_SETCLASSCODE_EXIT, this, err );
- return err;
- }
+ // Get Device descriptor
+ TBuf8<KUsbDescSize_Device> deviceDescriptor;
+ TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCLASSCODE, "<Error %d> Unable to obtain device descriptor",err);
+ }
+ else
+ {
+ deviceDescriptor[KDevDescOffset_bDeviceClass] = aClassCode;
+ deviceDescriptor[KDevDescOffset_bDeviceSubClass] = aSubClassCode;
+ deviceDescriptor[KDevDescOffset_bDeviceProtocol] = aDeviceProtocol;
+
+ err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCLASSCODE_DUP01, "<Error %d> Unable to set the device dsecriptor",err);
+ }
+ }
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_SETCLASSCODE_EXIT, this, err );
+ return err;
+ }
TInt RUsbTestDevice::SetUsbSpecification(TUint16 aSpecification)
- {
+ {
OstTraceFunctionEntryExt( RUSBTESTDEVICE_SETUSBSPECIFICATION_ENTRY, this );
- // Get Device descriptor
- TBuf8<KUsbDescSize_Device> deviceDescriptor;
- TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETUSBSPECIFICATION, "<Error %d> Unable to obtain device descriptor",err);
- }
- else
- {
- // Set bcdUSB
- TUint8* p = reinterpret_cast<TUint8*>(&aSpecification);
- deviceDescriptor[KDevDescOffset_bcdUSB] = *p;
- deviceDescriptor[KDevDescOffset_bcdUSB+1] = *(p+1);
-
- // Symbian currently supports only devices with one configuration by selecting the configurations
- // that has the lowest power consumption
-
- deviceDescriptor[KDevDescOffset_bNumConfigurations] = 0x01;
-
- err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETUSBSPECIFICATION_DUP01, "<Error %d> Unable to set the device dsecriptor",err);
- }
- }
- OstTraceFunctionExitExt( RUSBTESTDEVICE_SETUSBSPECIFICATION_EXIT, this, err );
- return err;
- }
+ // Get Device descriptor
+ TBuf8<KUsbDescSize_Device> deviceDescriptor;
+ TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETUSBSPECIFICATION, "<Error %d> Unable to obtain device descriptor",err);
+ }
+ else
+ {
+ // Set bcdUSB
+ TUint8* p = reinterpret_cast<TUint8*>(&aSpecification);
+ deviceDescriptor[KDevDescOffset_bcdUSB] = *p;
+ deviceDescriptor[KDevDescOffset_bcdUSB+1] = *(p+1);
+
+ // Symbian currently supports only devices with one configuration by selecting the configurations
+ // that has the lowest power consumption
+
+ deviceDescriptor[KDevDescOffset_bNumConfigurations] = 0x01;
+
+ err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETUSBSPECIFICATION_DUP01, "<Error %d> Unable to set the device dsecriptor",err);
+ }
+ }
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_SETUSBSPECIFICATION_EXIT, this, err );
+ return err;
+ }
TInt RUsbTestDevice::SetVendor(TUint16 aVendorId)
- {
+ {
OstTraceFunctionEntryExt( RUSBTESTDEVICE_SETVENDOR_ENTRY, this );
- // Get Device descriptor
- TBuf8<KUsbDescSize_Device> deviceDescriptor;
- TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETVENDOR, "<Error %d> Unable to obtain device descriptor",err);
- }
- else
- {
- // Set VID
- TUint8* p = reinterpret_cast<TUint8*>(&aVendorId);
- deviceDescriptor[KDevDescOffset_idVendor] = *p;
- deviceDescriptor[KDevDescOffset_idVendor+1] = *(p+1);
-
- err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETVENDOR_DUP01, "<Error %d> Unable to set the device descriptor",err);
- }
- }
- OstTraceFunctionExitExt( RUSBTESTDEVICE_SETVENDOR_EXIT, this, err );
- return err;
- }
+ // Get Device descriptor
+ TBuf8<KUsbDescSize_Device> deviceDescriptor;
+ TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETVENDOR, "<Error %d> Unable to obtain device descriptor",err);
+ }
+ else
+ {
+ // Set VID
+ TUint8* p = reinterpret_cast<TUint8*>(&aVendorId);
+ deviceDescriptor[KDevDescOffset_idVendor] = *p;
+ deviceDescriptor[KDevDescOffset_idVendor+1] = *(p+1);
+
+ err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETVENDOR_DUP01, "<Error %d> Unable to set the device descriptor",err);
+ }
+ }
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_SETVENDOR_EXIT, this, err );
+ return err;
+ }
TInt RUsbTestDevice::SetProduct(TUint16 aProductId,const TDesC16& aProductString,
- const TDesC16& aManufacturerString,const TDesC16& aSerialNumberString)
- {
+ const TDesC16& aManufacturerString,const TDesC16& aSerialNumberString)
+ {
OstTraceFunctionEntryExt( RUSBTESTDEVICE_SETPRODUCT_ENTRY, this );
- // Get Device descriptor
- TBuf8<KUsbDescSize_Device> deviceDescriptor;
- TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT, "<Error %d> Unable to obtain device descriptor",err);
- }
- else
- {
- // Set PID
- TUint8* p = reinterpret_cast<TUint8*>(&aProductId);
- deviceDescriptor[KDevDescOffset_idProduct] = *p;
- deviceDescriptor[KDevDescOffset_idProduct+1] = *(p+1);
-
- err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP01, "<Error %d> Unable to set the device dsecriptor",err);
- OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT, this, err );
- return err;
- }
-
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP02, "Product Identity set");
-
- // Product string
- err = iClientDriver.SetProductStringDescriptor(aProductString);
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP03, "<Error %d> Unable to set product string descriptor",err);
- OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP01, this, err );
- return err;
- }
+ // Get Device descriptor
+ TBuf8<KUsbDescSize_Device> deviceDescriptor;
+ TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT, "<Error %d> Unable to obtain device descriptor",err);
+ }
+ else
+ {
+ // Set PID
+ TUint8* p = reinterpret_cast<TUint8*>(&aProductId);
+ deviceDescriptor[KDevDescOffset_idProduct] = *p;
+ deviceDescriptor[KDevDescOffset_idProduct+1] = *(p+1);
+
+ err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP01, "<Error %d> Unable to set the device dsecriptor",err);
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT, this, err );
+ return err;
+ }
+
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP02, "Product Identity set");
+
+ // Product string
+ err = iClientDriver.SetProductStringDescriptor(aProductString);
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP03, "<Error %d> Unable to set product string descriptor",err);
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP01, this, err );
+ return err;
+ }
- // Manufacturer string
- err = iClientDriver.SetManufacturerStringDescriptor(aManufacturerString);
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP04, "<Error %d> Unable to set the manufacturer string descriptor",err);
- OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP02, this, err );
- return err;
- }
-
- // Serial number string
- err = iClientDriver.SetSerialNumberStringDescriptor(aSerialNumberString);
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP05, "<Error %d> Unable to set the serial number string descriptor",err);
- OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP03, this, err );
- return err;
- }
- }
- OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP04, this, KErrNone );
- return KErrNone;
- }
+ // Manufacturer string
+ err = iClientDriver.SetManufacturerStringDescriptor(aManufacturerString);
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP04, "<Error %d> Unable to set the manufacturer string descriptor",err);
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP02, this, err );
+ return err;
+ }
+
+ // Serial number string
+ err = iClientDriver.SetSerialNumberStringDescriptor(aSerialNumberString);
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP05, "<Error %d> Unable to set the serial number string descriptor",err);
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP03, this, err );
+ return err;
+ }
+ }
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP04, this, KErrNone );
+ return KErrNone;
+ }
TInt RUsbTestDevice::SetConfigurationString(const TDesC16& aConfigString)
- {
+ {
OstTraceFunctionEntryExt( RUSBTESTDEVICE_SETCONFIGURATIONSTRING_ENTRY, this );
- TInt err(iClientDriver.SetConfigurationStringDescriptor(aConfigString));
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCONFIGURATIONSTRING, "<Error %d> Unable to set configuration string descriptor",err);
- }
- OstTraceFunctionExitExt( RUSBTESTDEVICE_SETCONFIGURATIONSTRING_EXIT, this, err );
- return err;
- }
+ TInt err(iClientDriver.SetConfigurationStringDescriptor(aConfigString));
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCONFIGURATIONSTRING, "<Error %d> Unable to set configuration string descriptor",err);
+ }
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_SETCONFIGURATIONSTRING_EXIT, this, err );
+ return err;
+ }
void RUsbTestDevice::AddInterface(CInterfaceBase* aInterface)
- {
- OstTraceFunctionEntryExt( RUSBTESTDEVICE_ADDINTERFACE_ENTRY, this );
-
- // Add the interface to the device
- TInt err = iInterfaces.Append(aInterface);
-
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_ADDINTERFACE, "<Error %d> Unable to add interface",err);
- return ReportError(err);
- }
- OstTraceFunctionExit1( RUSBTESTDEVICE_ADDINTERFACE_EXIT, this );
- }
+ {
+ OstTraceFunctionEntryExt( RUSBTESTDEVICE_ADDINTERFACE_ENTRY, this );
+
+ // Add the interface to the device
+ TInt err = iInterfaces.Append(aInterface);
+
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_ADDINTERFACE, "<Error %d> Unable to add interface",err);
+ return ReportError(err);
+ }
+ OstTraceFunctionExit1( RUSBTESTDEVICE_ADDINTERFACE_EXIT, this );
+ }
CInterfaceBase& RUsbTestDevice::Interface(TInt aIndex)
- {
- OstTraceFunctionEntryExt( RUSBTESTDEVICE_INTERFACE_ENTRY, this );
- OstTraceFunctionExit1( RUSBTESTDEVICE_INTERFACE_EXIT, this );
- return *iInterfaces[aIndex];
- }
+ {
+ OstTraceFunctionEntryExt( RUSBTESTDEVICE_INTERFACE_ENTRY, this );
+ OstTraceFunctionExit1( RUSBTESTDEVICE_INTERFACE_EXIT, this );
+ return *iInterfaces[aIndex];
+ }
void RUsbTestDevice::SoftwareConnect()
- {
- OstTraceFunctionEntry1( RUSBTESTDEVICE_SOFTWARECONNECT_ENTRY, this );
- TInt err(iClientDriver.PowerUpUdc());
- if((err != KErrNone) && (err != KErrNotReady))
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT, "<Error %d> Power Up Udc",err);
- ReportError(err);
- }
-
- if(iDeviceCaps().iConnect)
- {
- err = iClientDriver.DeviceConnectToHost();
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT_DUP01, "<Error %d> Unable to connect to the host",err);
- ReportError(err);
- }
- }
- else
- {
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT_DUP02, "Please connect device to Host");
- }
- OstTraceFunctionExit1( RUSBTESTDEVICE_SOFTWARECONNECT_EXIT, this );
- }
-
+ {
+ OstTraceFunctionEntry1( RUSBTESTDEVICE_SOFTWARECONNECT_ENTRY, this );
+ TInt err(iClientDriver.PowerUpUdc());
+ if((err != KErrNone) && (err != KErrNotReady))
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT, "<Error %d> Power Up Udc",err);
+ ReportError(err);
+ }
+
+ if(iDeviceCaps().iConnect)
+ {
+ err = iClientDriver.DeviceConnectToHost();
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT_DUP01, "<Error %d> Unable to connect to the host",err);
+ ReportError(err);
+ }
+ }
+ else
+ {
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT_DUP02, "Please connect device to Host");
+ }
+ OstTraceFunctionExit1( RUSBTESTDEVICE_SOFTWARECONNECT_EXIT, this );
+ }
+
void RUsbTestDevice::SoftwareDisconnect()
- {
- OstTraceFunctionEntry1( RUSBTESTDEVICE_SOFTWAREDISCONNECT_ENTRY, this );
-
- if(iDeviceCaps().iConnect)
- {
- TInt err(iClientDriver.DeviceDisconnectFromHost());
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWAREDISCONNECT, "<Error %d> Unable to disconnect from the host",err);
- ReportError(err);
- }
- }
- else
- {
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWAREDISCONNECT_DUP01, "Please disconnect device from Host");
- }
-
- OstTraceFunctionExit1( RUSBTESTDEVICE_SOFTWAREDISCONNECT_EXIT, this );
- }
+ {
+ OstTraceFunctionEntry1( RUSBTESTDEVICE_SOFTWAREDISCONNECT_ENTRY, this );
+
+ if(iDeviceCaps().iConnect)
+ {
+ TInt err(iClientDriver.DeviceDisconnectFromHost());
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWAREDISCONNECT, "<Error %d> Unable to disconnect from the host",err);
+ ReportError(err);
+ }
+ }
+ else
+ {
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWAREDISCONNECT_DUP01, "Please disconnect device from Host");
+ }
+
+ OstTraceFunctionExit1( RUSBTESTDEVICE_SOFTWAREDISCONNECT_EXIT, this );
+ }
void RUsbTestDevice::RemoteWakeup()
- {
- OstTraceFunctionEntry1( RUSBTESTDEVICE_REMOTEWAKEUP_ENTRY, this );
- if(iDeviceCaps().iConnect)
- {
- TInt err(iClientDriver.SignalRemoteWakeup());
- if(err != KErrNone)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_REMOTEWAKEUP, "<Error %d> Unable to perform a remote wakeup",err);
- ReportError(err);
- }
- }
- else
- {
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_REMOTEWAKEUP_DUP01, "remote wakeup not supported");
- }
- OstTraceFunctionExit1( RUSBTESTDEVICE_REMOTEWAKEUP_EXIT, this );
- }
+ {
+ OstTraceFunctionEntry1( RUSBTESTDEVICE_REMOTEWAKEUP_ENTRY, this );
+ if(iDeviceCaps().iConnect)
+ {
+ TInt err(iClientDriver.SignalRemoteWakeup());
+ if(err != KErrNone)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_REMOTEWAKEUP, "<Error %d> Unable to perform a remote wakeup",err);
+ ReportError(err);
+ }
+ }
+ else
+ {
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_REMOTEWAKEUP_DUP01, "remote wakeup not supported");
+ }
+ OstTraceFunctionExit1( RUSBTESTDEVICE_REMOTEWAKEUP_EXIT, this );
+ }
TInt RUsbTestDevice::ProcessRequestL(TUint8 aRequest,TUint16 aValue,TUint16 aIndex,
- TUint16 aDataReqLength,const TDesC8& aPayload)
- {
- OstTraceFunctionEntryExt( RUSBTESTDEVICE_PROCESSREQUESTL_ENTRY, this );
-
- if(aRequest == KVendorEmptyRequest)
- {
- // Handle an empty request (i.e. do nothing)
-
- AcknowledgeRequestReceived();
- }
- else if(aRequest == KVendorReconnectRequest)
- {
- // Handle a reconnect requests from the host
-
- AcknowledgeRequestReceived();
- iConnectTimer->SoftwareReConnect(aValue);
- }
- else if(aRequest == KVendorDisconnectDeviceAThenConnectDeviceCRequest)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL, "**aRequest == KVendorDisconnectDeviceAThenConnectDeviceCRequest, this = 0x%08x", this);
- // Handle a reconnect requests from the host
- AcknowledgeRequestReceived();
-
- SoftwareDisconnect();
- User::After(1000000);
- // connect device C now
- CUT_PBASE_T_USBDI_0486* iTestCaseT_USBDI_0486 = reinterpret_cast<CUT_PBASE_T_USBDI_0486*>(iTestCase);
- Close();
-
- User::After(3000000);
- iTestCaseT_USBDI_0486->TestDeviceC()->OpenL(KTestDeviceC_SN);
- // Connect the device to the host
- iTestCaseT_USBDI_0486->TestDeviceC()->SoftwareConnect();
- OstTraceFunctionExitExt( RUSBTESTDEVICE_PROCESSREQUESTL_EXIT, this, KErrAbort );
- return KErrAbort;
- }
- else if(aRequest == KVendorDisconnectDeviceCThenConnectDeviceARequest)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP01, "**aRequest == KVendorDisconnectDeviceCThenConnectDeviceARequest, this = 0x%08x", this);
- // Handle a reconnect requests from the host
- AcknowledgeRequestReceived();
-
- SoftwareDisconnect();
- User::After(1000000);
-
- // connect device A now
- CUT_PBASE_T_USBDI_0486* iTestCaseT_USBDI_0486 = reinterpret_cast<CUT_PBASE_T_USBDI_0486*>(iTestCase);
-
-
- Close();
- User::After(3000000);
- iTestCaseT_USBDI_0486->Cancel();
- iTestCaseT_USBDI_0486->HandleDeviceDConnection();
- iTestCaseT_USBDI_0486->TestDeviceD()->OpenL(iTestCaseT_USBDI_0486->TestCaseId());
-
- // Connect the device to the host
- iTestCaseT_USBDI_0486->TestDeviceD()->SoftwareConnect();
- OstTraceFunctionExitExt( RUSBTESTDEVICE_PROCESSREQUESTL_EXIT_DUP01, this, KErrAbort );
- return KErrAbort;
- }
- else if(aRequest == KVendorTestCasePassed)
- {
- // Test case has completed successfully
- // so report to client test case that host is happy
-
- AcknowledgeRequestReceived();
- ReportError(KErrNone);
- }
- else if(aRequest == KVendorTestCaseFailed)
- {
- // The test case has failed, so report to client test case
- // and display/log the error message
-
- AcknowledgeRequestReceived();
-
- HBufC16* msg = HBufC16::NewL(aPayload.Length());
- msg->Des().Copy(aPayload);
- OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP02, "<Host> Test case failed: %S",*msg);
- delete msg;
- msg = 0;
- ReportError(-aValue);
- }
- else if(aRequest == KVendorRemoteWakeupRequest)
- {
- // Handle a remote wakeup request
+ TUint16 aDataReqLength,const TDesC8& aPayload)
+ {
+ OstTraceFunctionEntryExt( RUSBTESTDEVICE_PROCESSREQUESTL_ENTRY, this );
+
+ if(aRequest == KVendorEmptyRequest)
+ {
+ // Handle an empty request (i.e. do nothing)
+
+ AcknowledgeRequestReceived();
+ }
+ else if(aRequest == KVendorReconnectRequest)
+ {
+ // Handle a reconnect requests from the host
+
+ AcknowledgeRequestReceived();
+ iConnectTimer->SoftwareReConnect(aValue);
+ }
+ else if(aRequest == KVendorDisconnectDeviceAThenConnectDeviceCRequest)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL, "**aRequest == KVendorDisconnectDeviceAThenConnectDeviceCRequest, this = 0x%08x", this);
+ // Handle a reconnect requests from the host
+ AcknowledgeRequestReceived();
+
+ SoftwareDisconnect();
+ User::After(1000000);
+ // connect device C now
+ CUT_PBASE_T_USBDI_0486* iTestCaseT_USBDI_0486 = reinterpret_cast<CUT_PBASE_T_USBDI_0486*>(iTestCase);
+ Close();
+
+ User::After(3000000);
+ iTestCaseT_USBDI_0486->TestDeviceC()->OpenL(KTestDeviceC_SN);
+ // Connect the device to the host
+ iTestCaseT_USBDI_0486->TestDeviceC()->SoftwareConnect();
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_PROCESSREQUESTL_EXIT, this, KErrAbort );
+ return KErrAbort;
+ }
+ else if(aRequest == KVendorDisconnectDeviceCThenConnectDeviceARequest)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP01, "**aRequest == KVendorDisconnectDeviceCThenConnectDeviceARequest, this = 0x%08x", this);
+ // Handle a reconnect requests from the host
+ AcknowledgeRequestReceived();
+
+ SoftwareDisconnect();
+ User::After(1000000);
+
+ // connect device A now
+ CUT_PBASE_T_USBDI_0486* iTestCaseT_USBDI_0486 = reinterpret_cast<CUT_PBASE_T_USBDI_0486*>(iTestCase);
+
+
+ Close();
+ User::After(3000000);
+ iTestCaseT_USBDI_0486->Cancel();
+ iTestCaseT_USBDI_0486->HandleDeviceDConnection();
+ iTestCaseT_USBDI_0486->TestDeviceD()->OpenL(iTestCaseT_USBDI_0486->TestCaseId());
+
+ // Connect the device to the host
+ iTestCaseT_USBDI_0486->TestDeviceD()->SoftwareConnect();
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_PROCESSREQUESTL_EXIT_DUP01, this, KErrAbort );
+ return KErrAbort;
+ }
+ else if(aRequest == KVendorTestCasePassed)
+ {
+ // Test case has completed successfully
+ // so report to client test case that host is happy
+
+ AcknowledgeRequestReceived();
+ ReportError(KErrNone);
+ }
+ else if(aRequest == KVendorTestCaseFailed)
+ {
+ // The test case has failed, so report to client test case
+ // and display/log the error message
+
+ AcknowledgeRequestReceived();
+
+ HBufC16* msg = HBufC16::NewL(aPayload.Length());
+ msg->Des().Copy(aPayload);
+ OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP02, "<Host> Test case failed: %S",*msg);
+ delete msg;
+ msg = 0;
+ ReportError(-aValue);
+ }
+ else if(aRequest == KVendorRemoteWakeupRequest)
+ {
+ // Handle a remote wakeup request
- AcknowledgeRequestReceived();
- iWakeupTimer->WakeUp(aValue);
- }
- else if(aRequest == KVendorPutPayloadRequest)
- {
- // Handle a payload request from the host
+ AcknowledgeRequestReceived();
+ iWakeupTimer->WakeUp(aValue);
+ }
+ else if(aRequest == KVendorPutPayloadRequest)
+ {
+ // Handle a payload request from the host
- AcknowledgeRequestReceived();
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP03, "Put payload");
- if(aPayload.Compare(_L8("DEADBEEF")) != 0)
- {
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP04, "<Error %d> Payload not as expected",KErrCorrupt);
- ReportError(KErrCorrupt);
- }
- }
- else if(aRequest == KVendorGetPayloadRequest)
- {
- // Handle a payload request to the host
+ AcknowledgeRequestReceived();
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP03, "Put payload");
+ if(aPayload.Compare(_L8("DEADBEEF")) != 0)
+ {
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP04, "<Error %d> Payload not as expected",KErrCorrupt);
+ ReportError(KErrCorrupt);
+ }
+ }
+ else if(aRequest == KVendorGetPayloadRequest)
+ {
+ // Handle a payload request to the host
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP05, "Get payload");
- __ASSERT_DEBUG(iAuxBuffer, User::Panic(_L("Trying to write non-allocated buffer"), KErrGeneral));
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP06, "iAuxBuffer = ....");
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP05, "Get payload");
+ __ASSERT_DEBUG(iAuxBuffer, User::Panic(_L("Trying to write non-allocated buffer"), KErrGeneral));
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP06, "iAuxBuffer = ....");
OstTraceData(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP56, "", iAuxBuffer->Ptr(), iAuxBuffer->Length());
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP07, "\n");
-
- //Perform synchronous write to EP0
- //This allows the subsequent 'Read' request to
- //take place
- TInt ret = iDeviceEp0->SendDataSynchronous(*iAuxBuffer);
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP08, "Write (from device callback) executed with error %d", ret);
- }
- else if(aRequest == KVendorUnrespondRequest)
- {
- // Do not acknowledge this request
-
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP09, "Unrespond request: continually NAK the host");
- }
- else if(aRequest == KVendorStallRequest)
- {
- // Stall the specified endpoint
-
- AcknowledgeRequestReceived();
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP10, "Stalling endpoint %d",aValue);
-
- }
- else
- {
- // Maybe forward to derived classes
- }
- OstTraceFunctionExitExt( RUSBTESTDEVICE_PROCESSREQUESTL_EXIT_DUP02, this, KErrNone );
- return KErrNone;
- }
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP07, "\n");
+
+ //Perform synchronous write to EP0
+ //This allows the subsequent 'Read' request to
+ //take place
+ TInt ret = iDeviceEp0->SendDataSynchronous(*iAuxBuffer);
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP08, "Write (from device callback) executed with error %d", ret);
+ }
+ else if(aRequest == KVendorUnrespondRequest)
+ {
+ // Do not acknowledge this request
+
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP09, "Unrespond request: continually NAK the host");
+ }
+ else if(aRequest == KVendorStallRequest)
+ {
+ // Stall the specified endpoint
+
+ AcknowledgeRequestReceived();
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP10, "Stalling endpoint %d",aValue);
+
+ }
+ else
+ {
+ // Maybe forward to derived classes
+ }
+ OstTraceFunctionExitExt( RUSBTESTDEVICE_PROCESSREQUESTL_EXIT_DUP02, this, KErrNone );
+ return KErrNone;
+ }
void RUsbTestDevice::StateChangeL(TUsbcDeviceState aNewState,TInt aChangeCompletionCode)
- {
- OstTraceFunctionEntryExt( RUSBTESTDEVICE_STATECHANGEL_ENTRY, this );
-
- OstTraceExt2(TRACE_NORMAL, RUSBTESTDEVICE_STATECHANGEL, "Client state change to %d err=%d",aNewState,aChangeCompletionCode);
-
- // Notify the test case of failed state change notification
-
- if(aChangeCompletionCode != KErrNone)
- {
- return ReportError(aChangeCompletionCode);
- }
-
- // Check the state change
-
- if(iCurrentState == EUsbcDeviceStateConfigured)
- {
- // Device is already in a fully configured state
-
- if(aNewState == EUsbcDeviceStateConfigured)
- {
- // Do nothing as this is the current state anyway
- }
- else
- {
- // The is a state change from EUsbcDeviceStateConfigured to aNewState
- // so stop reading from control ep0
-
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_STATECHANGEL_DUP01, "Ignoring control ep0");
-
- // Stop reading ep0 directed requests
-
- StopEp0Reading();
-
- // Update state
-
- iCurrentState = aNewState;
- }
- }
- else
- {
- // Device is not in a fully configured state
-
- if(aNewState == EUsbcDeviceStateConfigured)
- {
- // Device has now been placed into a fully configured state by the host
- // so start reading from control ep0
-
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_STATECHANGEL_DUP02, "Reading from control ep0");
-
- // Start reading ep0 directed requests
-
- StartEp0Reading();
-
- // Update state
-
- iCurrentState = aNewState;
- }
- else
- {
- // Just update the state
-
- iCurrentState = aNewState;
- }
- }
-
- // Forward the state change notification to derived classes
-
- OnStateChangeL(aNewState);
- OstTraceFunctionExit1( RUSBTESTDEVICE_STATECHANGEL_EXIT, this );
- }
-
+ {
+ OstTraceFunctionEntryExt( RUSBTESTDEVICE_STATECHANGEL_ENTRY, this );
+
+ OstTraceExt2(TRACE_NORMAL, RUSBTESTDEVICE_STATECHANGEL, "Client state change to %d err=%d",aNewState,aChangeCompletionCode);
+
+ // Notify the test case of failed state change notification
+
+ if(aChangeCompletionCode != KErrNone)
+ {
+ return ReportError(aChangeCompletionCode);
+ }
+
+ // Check the state change
+
+ if(iCurrentState == EUsbcDeviceStateConfigured)
+ {
+ // Device is already in a fully configured state
+
+ if(aNewState == EUsbcDeviceStateConfigured)
+ {
+ // Do nothing as this is the current state anyway
+ }
+ else
+ {
+ // The is a state change from EUsbcDeviceStateConfigured to aNewState
+ // so stop reading from control ep0
+
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_STATECHANGEL_DUP01, "Ignoring control ep0");
+
+ // Stop reading ep0 directed requests
+
+ StopEp0Reading();
+
+ // Update state
+
+ iCurrentState = aNewState;
+ }
+ }
+ else
+ {
+ // Device is not in a fully configured state
+
+ if(aNewState == EUsbcDeviceStateConfigured)
+ {
+ // Device has now been placed into a fully configured state by the host
+ // so start reading from control ep0
+
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_STATECHANGEL_DUP02, "Reading from control ep0");
+
+ // Start reading ep0 directed requests
+
+ StartEp0Reading();
+
+ // Update state
+
+ iCurrentState = aNewState;
+ }
+ else
+ {
+ // Just update the state
+
+ iCurrentState = aNewState;
+ }
+ }
+
+ // Forward the state change notification to derived classes
+
+ OnStateChangeL(aNewState);
+ OstTraceFunctionExit1( RUSBTESTDEVICE_STATECHANGEL_EXIT, this );
+ }
+
void RUsbTestDevice::StartEp0Reading()
- {
+ {
OstTraceFunctionEntry1( RUSBTESTDEVICE_STARTEP0READING_ENTRY, this );
- // Start reading device directed ep0 requests
-
- TInt err(iDeviceEp0->Start());
- if(err != KErrNone)
- {
- return ReportError(err);
- }
-
- // Start reading interface directed requests
-
- TInt interfaceCount(iInterfaces.Count());
- for(TInt i=0; i<interfaceCount; i++)
- {
- iInterfaces[i]->StartEp0Reading();
- }
- OstTraceFunctionExit1( RUSBTESTDEVICE_STARTEP0READING_EXIT, this );
- }
+ // Start reading device directed ep0 requests
+
+ TInt err(iDeviceEp0->Start());
+ if(err != KErrNone)
+ {
+ return ReportError(err);
+ }
+
+ // Start reading interface directed requests
+
+ TInt interfaceCount(iInterfaces.Count());
+ for(TInt i=0; i<interfaceCount; i++)
+ {
+ iInterfaces[i]->StartEp0Reading();
+ }
+ OstTraceFunctionExit1( RUSBTESTDEVICE_STARTEP0READING_EXIT, this );
+ }
void RUsbTestDevice::StopEp0Reading()
- {
+ {
OstTraceFunctionEntry1( RUSBTESTDEVICE_STOPEP0READING_ENTRY, this );
- // Stop reading interface directed requests
-
- TInt interfaceCount(iInterfaces.Count());
- for(TInt i=0; i<interfaceCount; i++)
- {
- iInterfaces[i]->StopEp0Reading();
- }
-
- // Stop reading device directed requests from ep0
-
- TInt err(iDeviceEp0->Stop());
- if(err != KErrNone)
- {
- return ReportError(err);
- }
- OstTraceFunctionExit1( RUSBTESTDEVICE_STOPEP0READING_EXIT, this );
- }
+ // Stop reading interface directed requests
+
+ TInt interfaceCount(iInterfaces.Count());
+ for(TInt i=0; i<interfaceCount; i++)
+ {
+ iInterfaces[i]->StopEp0Reading();
+ }
+
+ // Stop reading device directed requests from ep0
+
+ TInt err(iDeviceEp0->Stop());
+ if(err != KErrNone)
+ {
+ return ReportError(err);
+ }
+ OstTraceFunctionExit1( RUSBTESTDEVICE_STOPEP0READING_EXIT, this );
+ }
void RUsbTestDevice::AcknowledgeRequestReceived()
- {
- OstTraceFunctionEntry1( RUSBTESTDEVICE_ACKNOWLEDGEREQUESTRECEIVED_ENTRY, this );
-
- TInt err(iDeviceEp0->Reader().Acknowledge());
- OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_ACKNOWLEDGEREQUESTRECEIVED, "err = %d",err);
- if(err != KErrNone)
- {
- ReportError(err);
- }
- OstTraceFunctionExit1( RUSBTESTDEVICE_ACKNOWLEDGEREQUESTRECEIVED_EXIT, this );
- }
+ {
+ OstTraceFunctionEntry1( RUSBTESTDEVICE_ACKNOWLEDGEREQUESTRECEIVED_ENTRY, this );
+
+ TInt err(iDeviceEp0->Reader().Acknowledge());
+ OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_ACKNOWLEDGEREQUESTRECEIVED, "err = %d",err);
+ if(err != KErrNone)
+ {
+ ReportError(err);
+ }
+ OstTraceFunctionExit1( RUSBTESTDEVICE_ACKNOWLEDGEREQUESTRECEIVED_EXIT, this );
+ }
void RUsbTestDevice::ReportError(TInt aCompletionCode)
- {
- OstTraceFunctionEntryExt( RUSBTESTDEVICE_REPORTERROR_ENTRY, this );
- OstTraceExt3(TRACE_NORMAL, RUSBTESTDEVICE_REPORTERROR, "err or aCompletionCode = %d, observer status = %d, KRequestPending = %d",
- aCompletionCode, iObserverStatus->Int(), KRequestPending);
- if(*iObserverStatus == KRequestPending)
- {
- OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_REPORTERROR_DUP01, "In complete request");
- User::RequestComplete(iObserverStatus,aCompletionCode);
- }
- OstTraceFunctionExit1( RUSBTESTDEVICE_REPORTERROR_EXIT, this );
- }
-
+ {
+ OstTraceFunctionEntryExt( RUSBTESTDEVICE_REPORTERROR_ENTRY, this );
+ OstTraceExt3(TRACE_NORMAL, RUSBTESTDEVICE_REPORTERROR, "err or aCompletionCode = %d, observer status = %d, KRequestPending = %d",
+ aCompletionCode, iObserverStatus->Int(), KRequestPending);
+ if(*iObserverStatus == KRequestPending)
+ {
+ OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_REPORTERROR_DUP01, "In complete request");
+ User::RequestComplete(iObserverStatus,aCompletionCode);
+ }
+ OstTraceFunctionExit1( RUSBTESTDEVICE_REPORTERROR_EXIT, this );
+ }
+
- }
-
+ }
+