diff -r 0008ccd16016 -r 13fbfa31d2ba kerneltest/e32test/usbho/t_usbdi/src/TestDeviceBase.cpp --- 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 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, " 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, " 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, " 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, " 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 deviceDescriptor; - TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor)); - if(err != KErrNone) - { - OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCLASSCODE, " 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, " Unable to set the device dsecriptor",err); - } - } - OstTraceFunctionExitExt( RUSBTESTDEVICE_SETCLASSCODE_EXIT, this, err ); - return err; - } + // Get Device descriptor + TBuf8 deviceDescriptor; + TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor)); + if(err != KErrNone) + { + OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCLASSCODE, " 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, " 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 deviceDescriptor; - TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor)); - if(err != KErrNone) - { - OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETUSBSPECIFICATION, " Unable to obtain device descriptor",err); - } - else - { - // Set bcdUSB - TUint8* p = reinterpret_cast(&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, " Unable to set the device dsecriptor",err); - } - } - OstTraceFunctionExitExt( RUSBTESTDEVICE_SETUSBSPECIFICATION_EXIT, this, err ); - return err; - } + // Get Device descriptor + TBuf8 deviceDescriptor; + TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor)); + if(err != KErrNone) + { + OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETUSBSPECIFICATION, " Unable to obtain device descriptor",err); + } + else + { + // Set bcdUSB + TUint8* p = reinterpret_cast(&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, " 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 deviceDescriptor; - TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor)); - if(err != KErrNone) - { - OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETVENDOR, " Unable to obtain device descriptor",err); - } - else - { - // Set VID - TUint8* p = reinterpret_cast(&aVendorId); - deviceDescriptor[KDevDescOffset_idVendor] = *p; - deviceDescriptor[KDevDescOffset_idVendor+1] = *(p+1); - - err = iClientDriver.SetDeviceDescriptor(deviceDescriptor); - if(err != KErrNone) - { - OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETVENDOR_DUP01, " Unable to set the device descriptor",err); - } - } - OstTraceFunctionExitExt( RUSBTESTDEVICE_SETVENDOR_EXIT, this, err ); - return err; - } + // Get Device descriptor + TBuf8 deviceDescriptor; + TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor)); + if(err != KErrNone) + { + OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETVENDOR, " Unable to obtain device descriptor",err); + } + else + { + // Set VID + TUint8* p = reinterpret_cast(&aVendorId); + deviceDescriptor[KDevDescOffset_idVendor] = *p; + deviceDescriptor[KDevDescOffset_idVendor+1] = *(p+1); + + err = iClientDriver.SetDeviceDescriptor(deviceDescriptor); + if(err != KErrNone) + { + OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETVENDOR_DUP01, " 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 deviceDescriptor; - TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor)); - if(err != KErrNone) - { - OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT, " Unable to obtain device descriptor",err); - } - else - { - // Set PID - TUint8* p = reinterpret_cast(&aProductId); - deviceDescriptor[KDevDescOffset_idProduct] = *p; - deviceDescriptor[KDevDescOffset_idProduct+1] = *(p+1); - - err = iClientDriver.SetDeviceDescriptor(deviceDescriptor); - if(err != KErrNone) - { - OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP01, " 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, " Unable to set product string descriptor",err); - OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP01, this, err ); - return err; - } + // Get Device descriptor + TBuf8 deviceDescriptor; + TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor)); + if(err != KErrNone) + { + OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT, " Unable to obtain device descriptor",err); + } + else + { + // Set PID + TUint8* p = reinterpret_cast(&aProductId); + deviceDescriptor[KDevDescOffset_idProduct] = *p; + deviceDescriptor[KDevDescOffset_idProduct+1] = *(p+1); + + err = iClientDriver.SetDeviceDescriptor(deviceDescriptor); + if(err != KErrNone) + { + OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP01, " 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, " 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, " 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, " 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, " 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, " 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, " 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, " 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, " 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, " 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, " Power Up Udc",err); - ReportError(err); - } - - if(iDeviceCaps().iConnect) - { - err = iClientDriver.DeviceConnectToHost(); - if(err != KErrNone) - { - OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT_DUP01, " 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, " Power Up Udc",err); + ReportError(err); + } + + if(iDeviceCaps().iConnect) + { + err = iClientDriver.DeviceConnectToHost(); + if(err != KErrNone) + { + OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT_DUP01, " 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, " 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, " 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, " 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, " 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(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(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, " 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(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(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, " 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, " 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, " 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; iStartEp0Reading(); - } - 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; iStartEp0Reading(); + } + 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; iStopEp0Reading(); - } - - // 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; iStopEp0Reading(); + } + + // 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 ); + } + - } - + } +