kerneltest/e32test/usbho/t_usbdi/src/testdeviceb.cpp
changeset 9 96e5fb8b040d
child 43 c1f20ce4abcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/usbho/t_usbdi/src/testdeviceb.cpp	Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,215 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testdeviceb.cpp
+// @internalComponent
+// 
+//
+
+#include "modelleddevices.h"
+#include "testinterfacesettingbase.h"
+#include "testinterfacebase.h"
+#include <e32test.h>
+
+namespace NUnitTesting_USBDI
+	{
+
+RUsbDeviceB::RUsbDeviceB()
+	{
+	}
+	
+RUsbDeviceB::RUsbDeviceB(CBaseTestCase* aTestCase):RUsbTestDevice(aTestCase)
+	{
+	LOG_FUNC	
+	}
+
+RUsbDeviceB::~RUsbDeviceB()
+	{
+	}
+
+
+void RUsbDeviceB::OpenL(const TDesC& aSerialNumber)
+	{
+	LOG_FUNC
+	
+	RUsbTestDevice::OpenL();
+	
+	// Device/Product information
+	SetUsbSpecification(0x0200); // Usb spec. 2.0
+	SetVendor(0x0E22);
+	SetProduct(0x0040,KTestDeviceB, KManufacturer, aSerialNumber);
+	SetClassCode(0xFF,0xFF,0xFF);
+	SetConfigurationString(KConfigurationString);
+		
+	// Establish the an interface
+	
+	TUsbcInterfaceInfoBuf interfaceSetting;
+	TBuf16<64> name(_L("interfaceSetting"));
+	interfaceSetting().iString = &name;
+	TUsbcEndpointInfo ep(KUsbEpTypeBulk,KUsbEpDirOut,64,0,0);
+	interfaceSetting().iEndpointData[0] = ep;
+	interfaceSetting().iEndpointData[1] = ep;
+	interfaceSetting().iEndpointData[2] = ep;
+	interfaceSetting().iTotalEndpointsUsed = 3;
+
+	TBuf8<75> cs_interfaceDescriptor;
+	cs_interfaceDescriptor.Fill(0xFF,cs_interfaceDescriptor.MaxLength());
+	cs_interfaceDescriptor[0] = 75;
+	cs_interfaceDescriptor[1] = KUsbDescType_CS_Interface;
+
+	TBuf8<75> cs_endpointDescriptor;
+	cs_endpointDescriptor.FillZ(cs_endpointDescriptor.MaxLength());
+	cs_endpointDescriptor[0] = 75;
+	cs_endpointDescriptor[1] = KUsbDescType_CS_Endpoint;
+
+
+	// Interface 0
+	
+	TInt err(iClientDriver.SetInterface(0,interfaceSetting));
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set interface setting 0",err);
+		User::Leave(err);
+		}
+		
+	// class-specific.....
+	
+	// .....interface
+	
+	err = iClientDriver.SetCSInterfaceDescriptorBlock(0,cs_interfaceDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific interface setting 0 descriptor",err);
+		User::Leave(err);
+		}
+
+	// .....endpoints
+	
+	err = iClientDriver.SetCSEndpointDescriptorBlock(0,1,cs_endpointDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific endpoint 1 descriptor on setting 0",err);
+		User::Leave(err);
+		}
+			
+	err = iClientDriver.SetCSEndpointDescriptorBlock(0,2,cs_endpointDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific endpoint 2 descriptor on setting 0",err);
+		User::Leave(err);
+		}	
+		
+	err = iClientDriver.SetCSEndpointDescriptorBlock(0,3,cs_endpointDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific endpoint 3 descriptor on setting 0",err);
+		User::Leave(err);
+		}
+	
+	// Interface 1
+	
+	err = iClientDriver.SetInterface(1,interfaceSetting);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set interface setting 1",err);
+		User::Leave(err);
+		}
+	
+	// class-specific......
+	
+	// ......interface
+	
+	err = iClientDriver.SetCSInterfaceDescriptorBlock(1,cs_interfaceDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific interface setting 1 descriptor",err);
+		User::Leave(err);
+		}
+
+	// .....endpoints
+		
+	err = iClientDriver.SetCSEndpointDescriptorBlock(1,1,cs_endpointDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific endpoint 1 descriptor on setting 1",err);
+		User::Leave(err);
+		}
+	
+	err = iClientDriver.SetCSEndpointDescriptorBlock(1,2,cs_endpointDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific endpoint 2 descriptor on setting 1",err);
+		User::Leave(err);
+		}
+		
+	err = iClientDriver.SetCSEndpointDescriptorBlock(1,3,cs_endpointDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific endpoint 3 descriptor on setting 1",err);
+		User::Leave(err);
+		}
+
+	// Interface 2
+
+	err = iClientDriver.SetInterface(2,interfaceSetting);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set interface setting 2",err);
+		User::Leave(err);
+		}
+
+	// class-specific......
+	
+	// ......interface	
+
+	err = iClientDriver.SetCSInterfaceDescriptorBlock(2,cs_interfaceDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific interface setting 2 descriptor",err);
+		User::Leave(err);
+		}
+
+	// ......endpoints		
+		
+	err = iClientDriver.SetCSEndpointDescriptorBlock(2,1,cs_endpointDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific endpoint 1 descriptor on setting 2",err);
+		User::Leave(err);
+		}
+	
+	err = iClientDriver.SetCSEndpointDescriptorBlock(2,2,cs_endpointDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific endpoint 2 descriptor on setting 2",err);
+		User::Leave(err);
+		}
+		
+	err = iClientDriver.SetCSEndpointDescriptorBlock(2,3,cs_endpointDescriptor);
+	if(err != KErrNone)
+		{
+		RDebug::Printf("<Error %d> Unable to set class-specific endpoint 3 descriptor on setting 2",err);
+		User::Leave(err);
+		}
+	}
+
+
+void RUsbDeviceB::OnStateChangeL(TUsbcDeviceState aNewState)
+	{
+	LOG_FUNC
+	}
+	
+	
+	}
+
+