201025_03
authorhgs
Fri, 25 Jun 2010 13:19:39 +0800
changeset 26 f3a1ae528dee
parent 25 4ddb65515edd
child 27 2fefb5a2b416
201025_03
usbmgmt/usbmgr/conf/usbmanager.confml
usbmgmt/usbmgr/group/Usbman.iby
usbmgmt/usbmgr/group/Usbmanbin.iby
usbmgmt/usbmgr/group/Usbmanrsc.iby
usbmgmt/usbmgr/group/bld.inf
usbmgmt/usbmgr/usbman/client/SRC/RUsb.cpp
usbmgmt/usbmgr/usbman/server/INC/CPersonality.h
usbmgmt/usbmgr/usbman/server/INC/CPersonality.inl
usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h
usbmgmt/usbmgr/usbman/server/INC/CUsbSession.h
usbmgmt/usbmgr/usbman/server/INC/UsbSettings.h
usbmgmt/usbmgr/usbman/server/INC/UsbmanServerSecurityPolicy.h
usbmgmt/usbmgr/usbman/server/INC/usbmancenrepmanager.h
usbmgmt/usbmgr/usbman/server/INC/usbmanprivatecrkeys.h
usbmgmt/usbmgr/usbman/server/SRC/CPersonality.cpp
usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp
usbmgmt/usbmgr/usbman/server/SRC/CUsbSession.cpp
usbmgmt/usbmgr/usbman/server/SRC/usbman.rls
usbmgmt/usbmgr/usbman/server/SRC/usbman.rss
usbmgmt/usbmgr/usbman/server/SRC/usbman_01.rls
usbmgmt/usbmgr/usbman/server/SRC/usbman_02.rls
usbmgmt/usbmgr/usbman/server/SRC/usbman_03.rls
usbmgmt/usbmgr/usbman/server/SRC/usbman_10.rls
usbmgmt/usbmgr/usbman/server/SRC/usbmancenrepmanager.cpp
usbmgmt/usbmgr/usbman/server/SRC/usbmanlubbockobex.rss
usbmgmt/usbmgr/usbman/server/SRC/usbmanmtp.rss
usbmgmt/usbmgr/usbman/server/SRC/usbmanmtprndis.rss
usbmgmt/usbmgr/usbman/server/SRC/usbmanrndis.rss
usbmgmt/usbmgr/usbman/server/conf/usbmanager_101fe1db.crml
usbmgmt/usbmgr/usbman/server/data/demo_mcci_usbman.rh
usbmgmt/usbmgr/usbman/server/group/bld.inf
usbmgmt/usbmgr/usbman/server/group/usbsvrbase.mmp
usbmgmt/usbmgr/usbman/server/public/rusb.h
usbmgmt/usbmgr/usbman/server/public/usbman.rh
usbmgmt/usbmgrtest/t_charging_emu/src/tbatterycharging.cpp
Binary file usbmgmt/usbmgr/conf/usbmanager.confml has changed
--- a/usbmgmt/usbmgr/group/Usbman.iby	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/group/Usbman.iby	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -25,8 +25,140 @@
 #include <c32.iby>
 #include <ecom.iby>
 
-// Resources are in a separate file, for easier customisation
-#include <usbmanrsc.iby>
-#include <usbmanbin.iby>
+// If __USB_DEBUG__ is defined pull in debug versions of the
+// USB DLLs and Plugins regardless of the ROM type
+#ifdef __USB_DEBUG__
+define USB_DIR UDEB
+#define USB_PLUGIN ECOM_PLUGIN_UDEB
+#else
+define USB_DIR BUILD_DIR
+#define USB_PLUGIN ECOM_PLUGIN
+#endif
+
+
+// *** Check we have been given a sensible set of buildrom options
+#if defined (__OBEX_OVER_USB__) && (defined (__TEST_USB_ZLP__) || defined (__USBMAN_DUMMYCC__))
+#error Defining both OBEX over USB _and_ Zero Length Packet testing or dummy class controllers does not make sense.
+#endif
+
+// *** USBMAN.DLL is the client side. It is always included in the ROM,
+// *** whether USB is supported by the device or not, so that client
+// *** applications can link against it regardless.
+file=ABI_DIR\USB_DIR\usbman.dll			usbman.dll
+
+// The main backup registration file. Plug-ins should use its own backup registration file in order to back its perfered data.
+data=ZPRIVATE\101fe1db\backup_registration.xml	private\101fe1db\backup_registration.xml
+
+// *** USB logger. This is not dependent on EUSBC as it is used by 
+// *** usbman.dll. It compiles down to next to nothing when __FLOG_ACTIVE is 
+// *** undefined, and we cannot remove it altogether because things link 
+// *** against it.
+file=ABI_DIR\USB_DIR\usblogger.dll		usblogger.dll
+
+#if defined(_DEBUG) || defined (__USB_DEBUG__)
+#include "commsdebugutility.iby"
+#endif
+
+// *** Now for things which should only be included if the device supports
+// *** USB, to save ROM space...
+#if !defined(__USB) || !defined(EUSBC)
+REM Feature USB is not included in this ROM (usbman.iby)
+#else //defined(__USB) && defined(EUSBC)
+
+#include <usbacm.iby>
+
+#ifndef __OBEX_OVER_USB__
+  #ifndef __TEST_USB_ZLP__
+    #ifdef __EXAMPLE_OBEX_CC__
+      // *** OBEX Class Controller plugin. 
+      USB_PLUGIN(obexclasscontroller.dll,1027433a.rsc)
+      // *** All the files needed by Obex Class Controller
+      // *** The executable that the class controller links to
+      file=ABI_DIR\BUILD_DIR\classControllerServerSession.exe         sys\bin\classControllerServerSession.exe
+      // *** The dll that the class controller uses as a client 
+      file=ABI_DIR\BUILD_DIR\classControllerClientSession.dll         sys\bin\classControllerClientSession.dll
+    #endif //__EXAMPLE_OBEX_CC__	
+  #endif //__TEST_USB_ZLP__
+#endif //__OBEX_OVER_USB__
+
+// *** 'buildrom -D__USBMAN_DUMMYCC__' will use the dummy Class Controller
+// *** build of USBSVR for testing purposes.
+// *** Note: DummyCC never includes OTG code.
+#ifdef __USBMAN_DUMMYCC__
+#include <dummyccinifiles.iby>
+file=ABI_DIR\USB_DIR\t_usbman_dummycc.exe		usbsvr.exe
+#else
+//
+// Configuration of OTG or Client.
+//
+#if defined(SYMBIAN_ENABLE_USB_OTG_HOST)
+
+	#if defined(SYMBIAN_INCLUDE_USB_OTG_HOST)
+		REM Feature USB Host (and related OTG) is included in this ROM (usbman.iby)
+		file=ABI_DIR\USB_DIR\usbsvrotg.exe		usbsvr.exe
+		#include <fdf.iby>
+		REM Host Mass Storage binaries
+		#ifdef WITH_MASS_STORAGE
+			#include <usbhostmsmm.iby>
+			#include <msfdc.iby>
+		#endif
+	#else
+		REM Feature USB Host (and related OTG) is NOT included in this ROM (usbman.iby)
+		file=ABI_DIR\USB_DIR\usbsvr.exe			usbsvr.exe
+	#endif // SYMBIAN_INCLUDE_USB_OTG_HOST
+
+#else
+
+	REM SYMBIAN_ENABLE_USB_OTG_HOST is not defined - so we fall back to building in the 
+	REM non-OTG usbsvr.exe
+	file=ABI_DIR\USB_DIR\usbsvr.exe			usbsvr.exe
+
+#endif // SYMBIAN_ENABLE_USB_OTG_HOST
+
+#endif
+
+file=ABI_DIR\USB_DIR\usbclasscontroller.dll		usbclasscontroller.dll
+file=ABI_DIR\USB_DIR\usbmanextensionplugin.dll		usbmanextensionplugin.dll
+
+#ifdef WITH_REFERENCE_USB_CHARGING_PLUGIN
+// *** Reference battery charging plug-in
+#if defined(SYMBIAN_ENABLE_USB_OTG_HOST) && defined (SYMBIAN_INCLUDE_USB_OTG_HOST)
+USB_PLUGIN(usbbatterychargingpluginotg.dll,usbbatterychargingpluginotg.rsc)
+#else
+USB_PLUGIN(usbbatterychargingplugin.dll,usbbatterychargingplugin.rsc)
+#endif
+#endif
+
+// *** WHCM Class Controller - used for OBEX over USB.
+USB_PLUGIN(whcmclasscontroller.dll,101fbf23.rsc)
+
+// *** Mass Storage Class Controller.
+USB_PLUGIN(msclasscontroller.dll,10204bbb.rsc)
+data=ZPRIVATE\10204bbb\usbms.rsc	PRIVATE\101fe1db\usbms.rsc
+#ifdef WITH_MASS_STORAGE_EXAMPLE_APP
+file=ABI_DIR\USB_DIR\usbmsexampleapp.exe		usbmsexampleapp.exe
+#endif
+
+// *** OBEX Class Controller. This is test code, used for descriptor checking
+// *** only.
+// USB_PLUGIN(Obexclasscontroller.dll,101fbf27.rsc)
+
+#ifdef SYMBIAN_INCLUDE_USB_RNDIS
+// *** RNDIS Class Controller.
+
+#include <ether802.iby>
+
+USB_PLUGIN(rndisclasscontroller.dll, rndisclasscontroller.rsc)
+USB_PLUGIN(rndisproviders.dll, rndisproviders.rsc)
+
+// RNDIS IAP ID Backup registration file
+data=ZPRIVATE\101fe1db\backup_registration_rndis.xml  private\101fe1db\backup_registration_rndis.xml
+
+file=ABI_DIR\USB_DIR\rndispkt.drv        System\Libs\rndispkt.drv
+file=ABI_DIR\USB_DIR\rndismessages.dll	 System\Libs\rndismessages.dll
+file=ABI_DIR\USB_DIR\rndisagt.agt	 System\Libs\rndisagt.agt
+#endif  // SYMBIAN_INCLUDE_USB_RNDIS
+
+#endif // !defined(__USB) || !defined(EUSBC)
 
 #endif // __USBMAN_IBY__
--- a/usbmgmt/usbmgr/group/Usbmanbin.iby	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Universal Serial Bus Interface Manager Binaries
-*
-*/
-
-#ifndef __USBMANBIN_IBY__
-#define __USBMANBIN_IBY__
-
-// If __USB_DEBUG__ is defined pull in debug versions of the
-// USB DLLs and Plugins regardless of the ROM type
-#ifdef __USB_DEBUG__
-define USB_DIR UDEB
-#define USB_PLUGIN ECOM_PLUGIN_UDEB
-#else
-define USB_DIR BUILD_DIR
-#define USB_PLUGIN ECOM_PLUGIN
-#endif
-
-
-// *** Check we have been given a sensible set of buildrom options
-#if defined (__OBEX_OVER_USB__) && (defined (__TEST_USB_ZLP__) || defined (__USBMAN_DUMMYCC__))
-#error Defining both OBEX over USB _and_ Zero Length Packet testing or dummy class controllers does not make sense.
-#endif
-
-// *** USBMAN.DLL is the client side. It is always included in the ROM,
-// *** whether USB is supported by the device or not, so that client
-// *** applications can link against it regardless.
-file=ABI_DIR\USB_DIR\usbman.dll			usbman.dll
-
-// The main backup registration file. Plug-ins should use its own backup registration file in order to back its perfered data.
-data=ZPRIVATE\101fe1db\backup_registration.xml	private\101fe1db\backup_registration.xml
-
-// *** USB logger. This is not dependent on EUSBC as it is used by 
-// *** usbman.dll. It compiles down to next to nothing when __FLOG_ACTIVE is 
-// *** undefined, and we cannot remove it altogether because things link 
-// *** against it.
-file=ABI_DIR\USB_DIR\usblogger.dll		usblogger.dll
-
-#if defined(_DEBUG) || defined (__USB_DEBUG__)
-#include "commsdebugutility.iby"
-#endif
-
-// *** Now for things which should only be included if the device supports
-// *** USB, to save ROM space...
-#if !defined(__USB) || !defined(EUSBC)
-REM Feature USB is not included in this ROM (usbman.iby)
-#else //defined(__USB) && defined(EUSBC)
-
-#include <usbacm.iby>
-
-#ifndef __OBEX_OVER_USB__
-  #ifndef __TEST_USB_ZLP__
-    #ifdef __EXAMPLE_OBEX_CC__
-      // *** OBEX Class Controller plugin. 
-      USB_PLUGIN(obexclasscontroller.dll,1027433a.rsc)
-      // *** All the files needed by Obex Class Controller
-      // *** The executable that the class controller links to
-      file=ABI_DIR\BUILD_DIR\classControllerServerSession.exe         sys\bin\classControllerServerSession.exe
-      // *** The dll that the class controller uses as a client 
-      file=ABI_DIR\BUILD_DIR\classControllerClientSession.dll         sys\bin\classControllerClientSession.dll
-    #endif //__EXAMPLE_OBEX_CC__	
-  #endif //__TEST_USB_ZLP__
-#endif //__OBEX_OVER_USB__
-
-// *** 'buildrom -D__USBMAN_DUMMYCC__' will use the dummy Class Controller
-// *** build of USBSVR for testing purposes.
-// *** Note: DummyCC never includes OTG code.
-#ifdef __USBMAN_DUMMYCC__
-#include <dummyccinifiles.iby>
-file=ABI_DIR\USB_DIR\t_usbman_dummycc.exe		usbsvr.exe
-#else
-//
-// Configuration of OTG or Client.
-//
-#if defined(SYMBIAN_ENABLE_USB_OTG_HOST)
-
-	#if defined(SYMBIAN_INCLUDE_USB_OTG_HOST)
-		REM Feature USB Host (and related OTG) is included in this ROM (usbman.iby)
-		file=ABI_DIR\USB_DIR\usbsvrotg.exe		usbsvr.exe
-		#include <fdf.iby>
-		REM Host Mass Storage binaries
-		#ifdef WITH_MASS_STORAGE
-			#include <usbhostmsmm.iby>
-			#include <msfdc.iby>
-		#endif
-	#else
-		REM Feature USB Host (and related OTG) is NOT included in this ROM (usbman.iby)
-		file=ABI_DIR\USB_DIR\usbsvr.exe			usbsvr.exe
-	#endif // SYMBIAN_INCLUDE_USB_OTG_HOST
-
-#else
-
-	REM SYMBIAN_ENABLE_USB_OTG_HOST is not defined - so we fall back to building in the 
-	REM non-OTG usbsvr.exe
-	file=ABI_DIR\USB_DIR\usbsvr.exe			usbsvr.exe
-
-#endif // SYMBIAN_ENABLE_USB_OTG_HOST
-
-#endif
-
-file=ABI_DIR\USB_DIR\usbclasscontroller.dll		usbclasscontroller.dll
-file=ABI_DIR\USB_DIR\usbmanextensionplugin.dll		usbmanextensionplugin.dll
-
-#ifdef WITH_REFERENCE_USB_CHARGING_PLUGIN
-// *** Reference battery charging plug-in
-#if defined(SYMBIAN_ENABLE_USB_OTG_HOST) && defined (SYMBIAN_INCLUDE_USB_OTG_HOST)
-USB_PLUGIN(usbbatterychargingpluginotg.dll,usbbatterychargingpluginotg.rsc)
-#else
-USB_PLUGIN(usbbatterychargingplugin.dll,usbbatterychargingplugin.rsc)
-#endif
-#endif
-
-// *** WHCM Class Controller - used for OBEX over USB.
-USB_PLUGIN(whcmclasscontroller.dll,101fbf23.rsc)
-
-// *** Mass Storage Class Controller.
-USB_PLUGIN(msclasscontroller.dll,10204bbb.rsc)
-data=ZPRIVATE\10204bbb\usbms.rsc	PRIVATE\101fe1db\usbms.rsc
-#ifdef WITH_MASS_STORAGE_EXAMPLE_APP
-file=ABI_DIR\USB_DIR\usbmsexampleapp.exe		usbmsexampleapp.exe
-#endif
-
-// *** OBEX Class Controller. This is test code, used for descriptor checking
-// *** only.
-// USB_PLUGIN(Obexclasscontroller.dll,101fbf27.rsc)
-
-#ifdef SYMBIAN_INCLUDE_USB_RNDIS
-// *** RNDIS Class Controller.
-
-#include <ether802.iby>
-
-USB_PLUGIN(rndisclasscontroller.dll, rndisclasscontroller.rsc)
-USB_PLUGIN(rndisproviders.dll, rndisproviders.rsc)
-
-// RNDIS IAP ID Backup registration file
-data=ZPRIVATE\101fe1db\backup_registration_rndis.xml  private\101fe1db\backup_registration_rndis.xml
-
-file=ABI_DIR\USB_DIR\rndispkt.drv        System\Libs\rndispkt.drv
-file=ABI_DIR\USB_DIR\rndismessages.dll	 System\Libs\rndismessages.dll
-file=ABI_DIR\USB_DIR\rndisagt.agt	 System\Libs\rndisagt.agt
-#endif  // SYMBIAN_INCLUDE_USB_RNDIS
-
-#endif // !defined(__USB) || !defined(EUSBC)
-
-#endif // __USBMANBIN_IBY__
--- a/usbmgmt/usbmgr/group/Usbmanrsc.iby	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-
-/*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Universal Serial Bus Interface Manager Resources
-*
-*/
-
-#ifndef __USBMANRSC_IBY__
-#define __USBMANRSC_IBY__
-
-
-// *** Only include resource files if device supports USB
-#if !defined(__USB) || !defined(EUSBC)
-REM Feature USB is not included in this ROM (usbman.iby)
-#else  // defined(__USB) && defined(EUSBC)
-
-DEFINE __USBMAN_RSC_ZPATH__ ZPRIVATE\101fe1db
-DEFINE __USBMAN_RSC_PATH__  PRIVATE\101fe1db
-
-
-#ifdef __TEST_USB_ZLP__
-	// *** use the ZLP-configured resource file (PID and VID for the ACM CC are different)
-	data=__USBMAN_RSC_ZPATH__\usbmanzlp.rsc		__USBMAN_RSC_PATH__\usbman.rsc
-#else //__TEST_USB_ZLP__
-
-	#ifdef __EXAMPLE_OBEX_CC__
-		// *** 'buildrom -D__EXAMPLE_OBEX_CC__' will use example Obex class controller	
-		// *** The RSC file that was created when building the example source
-		data=__USBMAN_RSC_ZPATH__\obexusbman.rsc		__USBMAN_RSC_PATH__\usbman.rsc
-	#else //__EXAMPLE_OBEX_CC__
-		// *** This is the normal resource file..
-		#ifndef USB_EXCLUDE_DEFAULT_PERSONALITIES
-		  	#ifndef __MTP_PROTOCOL_SUPPORT
-		  		#ifdef SYMBIAN_INCLUDE_USB_RNDIS
-		  			// *** Normal resource file including RNDIS support but excluding MTP
-		  			data=__USBMAN_RSC_ZPATH__\usbmanrndis.rsc		__USBMAN_RSC_PATH__\usbman.rsc
-		  		#else
-		  			//	*** Normal resource file excluding MTP and RNDIS support
-		  			data=__USBMAN_RSC_ZPATH__\usbman.rsc		__USBMAN_RSC_PATH__\usbman.rsc
-		  		#endif // SYMBIAN_INCLUDE_USB_RNDIS
-			#else // defined(__MTP_PROTOCOL_SUPPORT)
-				#ifdef SYMBIAN_INCLUDE_USB_RNDIS
-					// *** Normal resource file including RNDIS and MTP support
-					data=__USBMAN_RSC_ZPATH__\usbmanmtprndis.rsc		__USBMAN_RSC_PATH__\usbman.rsc
-				#else
-					//	*** Normal resource file including MTP support but excluding RNDIS
-					data=__USBMAN_RSC_ZPATH__\usbmanmtp.rsc		__USBMAN_RSC_PATH__\usbman.rsc
-				#endif // SYMBIAN_INCLUDE_USB_RNDIS
-			#endif // __MTP_PROTOCOL_SUPPORT
-		#endif // USB_EXCLUDE_DEFAULT_PERSONALITIES
-	#endif //__EXAMPLE_OBEX_CC__	
-#endif //__TEST_USB_ZLP__
-
-#endif // !defined(__USB) || !defined(EUSBC)
-
-#endif // __USBMANRSC_IBY__
--- a/usbmgmt/usbmgr/group/bld.inf	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/group/bld.inf	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -33,8 +33,6 @@
 PRJ_EXPORTS
 usb.iby	/epoc32/rom/include/usb.iby
 Usbman.iby	/epoc32/rom/include/usbman.iby
-Usbmanbin.iby	/epoc32/rom/include/usbmanbin.iby
-Usbmanrsc.iby	/epoc32/rom/include/usbmanrsc.iby
 
 // ConfML Files
 ../conf/usbmanager.confml                OS_LAYER_EXPORTS_CONFML(usbmanager.confml)
--- a/usbmgmt/usbmgr/usbman/client/SRC/RUsb.cpp	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/client/SRC/RUsb.cpp	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -750,28 +750,12 @@
 	return SendReceive(EUsbRequestSession);
 	}
 
-EXPORT_C TInt RUsb::GetDetailedDescription(TInt aPersonalityId, HBufC*& aLocalizedPersonalityDescriptor)
+EXPORT_C TInt RUsb::GetDetailedDescription(TInt /*aPersonalityId*/, HBufC*& /*aLocalizedPersonalityDescriptor*/)
 	{
 	LOG_LINE
 	LOG_FUNC
-
- 	TInt ret = KErrNone;
-	// caller is responsible for freeing up memory allocated for aLocalizedPersonalityDescriptor
-	TRAP(ret, aLocalizedPersonalityDescriptor = HBufC::NewL(KUsbStringDescStringMaxSize));
-	if (ret == KErrNone)
-		{
-		TPtr ptr = aLocalizedPersonalityDescriptor->Des();
-		TIpcArgs ipcArgs(0, &ptr);
-		ipcArgs.Set(0, aPersonalityId);
-		ret = SendReceive(EUsbGetDetailedDescription, ipcArgs);
-		}
-	else
-		{
-		// just in case caller tries to free the memory before checking the return code
-		aLocalizedPersonalityDescriptor = NULL;
-		}
-
-	return ret; 
+	//This API has been deprecated
+	return KErrNotSupported; 
 	}
 
 EXPORT_C TInt RUsb::GetPersonalityProperty(TInt aPersonalityId, TUint32& aProperty)
--- a/usbmgmt/usbmgr/usbman/server/INC/CPersonality.h	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/INC/CPersonality.h	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -29,60 +29,102 @@
 #include <e32std.h>
 #include "CUsbDevice.h"
 
+
+/**
+ * The CPersonalityConfigurations class keep all information of the table
+ * "Configuration" of USB cenrep  
+ */
+
+NONSHARABLE_CLASS(CPersonalityConfigurations) : public CBase
+    {
+public:
+    /*USB Classes*/
+    class TUsbClasses
+         {
+     public:
+         TUid    iClassUid;
+         TInt    iFeatureId; // Indicates the class is configurable or not.
+         };
+public:
+    void  SetPersonalityId(TInt aPersonalityId);  
+    void  SetConfigId(TInt aConfigId);  
+    inline const RArray<CPersonalityConfigurations::TUsbClasses>& Classes() const;
+    void AppendClassesL(const TUsbClasses& aClasses );
+    ~CPersonalityConfigurations();
+    
+private: 
+    TInt                        iPersonalityId; /*Personality Id*/
+    TInt                        iConfigId; /*Configuration Id*/
+    RArray<TUsbClasses>         iClasses; /*Class array*/
+    };
+
 NONSHARABLE_CLASS(CPersonality) : public CBase
 	{
 public:
 	static CPersonality* NewL();
 	~CPersonality();
 
-	TInt PersonalityId() const;
-	const RArray<TUid>& SupportedClasses() const;
-	TInt ClassSupported(TUid aClassId) const;
-	const CUsbDevice::TUsbDeviceDescriptor& DeviceDescriptor() const; 	
-	CUsbDevice::TUsbDeviceDescriptor& DeviceDescriptor(); 	
-	const TDesC* Manufacturer() const;
-	const TDesC* Product() const;
-	const TDesC* Description() const;
-	TInt AddSupportedClasses(TUid aClassId);
-	void SetId(TInt aId);
-	void SetManufacturer(const TDesC* aManufacturer);
-	void SetProduct(const TDesC* aProduct);
-	void SetDescription(const TDesC* aDescription);
+	const RArray<CPersonalityConfigurations::TUsbClasses>& SupportedClasses() const;
+	TBool ClassSupported(TUid aClassId) const;
 	static TInt Compare(const TUid&  aFirst, const TUid& aSecond);
 
-	const TDesC* DetailedDescription() const;
-	void SetDetailedDescription(const TDesC* aDetailedDescription);
+	inline TInt Version() const;
+	void SetVersion(TInt version);
+	
+	inline TUint32 Property() const;
+    void SetProperty(TUint32 aProperty);
+    
+    inline TUint8 DeviceClass() const;
+    void SetDeviceClass(TUint8 aDeviceClass);    
+    
+    inline TUint8 DeviceSubClass() const;
+    void SetDeviceSubClass(TUint8 aDeviceSubClass);
 
-	TUint32 Property() const;
-	void SetProperty(TUint32 aProperty);
-	
-	TInt Version() const;
-	void SetVersion(TInt version);
+    inline TUint8 DeviceProtocol() const;
+    void SetDeviceProtocol(TUint8 aDeviceProtocol);    
+    
+    inline TUint8 NumConfigurations() const;
+    void SetNumConfigurations(TUint8 aNumConfigurations);     
+ 
+    inline TUint16 ProductId() const;
+    void SetProductId(TUint16 aProductId);    
+    
+    inline TInt FeatureId() const;
+    void SetFeatureId(TInt aFeatureId);       
+
+    inline TUint16 BcdDevice() const;
+    void SetBcdDevice(TUint16 aBcdDevice);    
+    
+    inline TInt PersonalityId() const;
+    void SetPersonalityId(TInt aPersonalityId);  
+    
+    inline const TDesC* Description() const;
+    void SetDescription(const TDesC* aDescription);  
+    
+    inline const RPointerArray<CPersonalityConfigurations>& PersonalityConfigs() const;
+    void AppendPersonalityConfigsL(const CPersonalityConfigurations *aPersonalityConfig );
     
 private:
 	CPersonality();
 	void ConstructL();
-
+ 
 private:
-	// personality id
-	TInt								iId;
-	// USB class ids
-	RArray<TUid>						iClassUids;
-	// textual description of manufacturer
-	HBufC*								iManufacturer;
-	// textual description of product	
-	HBufC*								iProduct;
-	// textual description of personality
-	HBufC*								iDescription;
-	// USB device descriptor struct	
-	CUsbDevice::TUsbDeviceDescriptor 	iDeviceDescriptor;
-	// detailed textual description of personality
-	HBufC*                              	iDetailedDescription;
-    
-	TInt                                	iVersion;
-	TUint32								iProperty;
+	TInt    iVersion;
+    TUint32 iProperty;	
+    TUint8  iDeviceClass;	
+    TUint8  iDeviceSubClass;
+    TUint8  iDeviceProtocol;
+    TUint8  iNumConfigurations;
+    TUint16 iProductId;
+    TInt    iFeatureId;
+    TUint16 iBcdDevice;
+    TInt    iPersonalityId;    // personality id
+    HBufC*   iDescription;     // Own this Personality's description
+    RPointerArray<CPersonalityConfigurations>   iPersonalityConfigs;  
 	};
 
+
+
 #include "CPersonality.inl"
 	
 #endif // __CPERSONALITY_H__
--- a/usbmgmt/usbmgr/usbman/server/INC/CPersonality.inl	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/INC/CPersonality.inl	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -28,79 +28,6 @@
 
 /**
  * @internalComponent
- * @return personality id
- */ 
-inline TInt CPersonality::PersonalityId() const
-	{
-	return iId;
-	}
-	
-/**
- * @internalComponent
- * @return supported class uids
- */
-inline const RArray<TUid>& CPersonality::SupportedClasses() const
-	{
-	return iClassUids;
-	}
-	
-/**
- * @internalComponent
- * @return a const reference to device descriptor
- */
-inline const CUsbDevice::TUsbDeviceDescriptor& CPersonality::DeviceDescriptor() const 	
-	{
-	return iDeviceDescriptor;
-	}
-
-/**
- * @internalComponent
- * @return a const reference to device descriptor
- */
-inline CUsbDevice::TUsbDeviceDescriptor& CPersonality::DeviceDescriptor() 	
-	{
-	return iDeviceDescriptor;
-	}
-
-/**
- * @internalComponent
- * @return a const pointer to manufacturer string
- */
-inline const TDesC* CPersonality::Manufacturer() const
-	{
-	return iManufacturer;
-	}
-	
-/** 
- * @internalComponent 
- * @return a const pointer to product string
- */
-inline const TDesC* CPersonality::Product() const
-	{
-	return iProduct;
-	}
-	
-/**
- * @internalComponent
- * @return a const pointer to description string
- */
-inline const TDesC* CPersonality::Description() const
-	{
-	return iDescription;
-	}
-
-/**
- * @internalComponent
- * @return a const pointer to detailed description string
- */
-inline const TDesC* CPersonality::DetailedDescription() const
-	{
-	return iDetailedDescription;
-	}
-
-
-/**
- * @internalComponent
  * @return version
  */ 
 inline TInt CPersonality::Version() const
@@ -116,5 +43,106 @@
 	{
 	return iProperty;
 	}
+
+/**
+ * @internalComponent
+ * @return the Device Class information
+ */
+inline TUint8 CPersonality::DeviceClass() const
+    {
+    return iDeviceClass;
+    }
+
+/**
+ * @internalComponent
+ * @return the Device Sub Class information
+ */
+inline TUint8 CPersonality::DeviceSubClass() const
+    {
+    return iDeviceSubClass;
+    }
+
+/**
+ * @internalComponent
+ * @return the Device Protocol information
+ */
+inline TUint8 CPersonality::DeviceProtocol() const
+    {
+    return iDeviceProtocol;
+    }
+
+/**
+ * @internalComponent
+ * @return the Configurations Number information
+ */
+inline TUint8 CPersonality::NumConfigurations() const
+    {
+    return iNumConfigurations;
+    }
+
+/**
+ * @internalComponent
+ * @return the Product Id information
+ */
+inline TUint16 CPersonality::ProductId() const
+    {
+    return iProductId;
+    }
+
+/**
+ * @internalComponent
+ * @return the Feature Id information
+ */
+inline TInt CPersonality::FeatureId() const
+    {
+    return iFeatureId;
+    }
+
+/**
+ * @internalComponent
+ * @return the Feature Id information
+ */
+inline TUint16 CPersonality::BcdDevice() const
+    {
+    return iBcdDevice;
+    }
+
+/**
+ * @internalComponent
+ * @return personality id
+ */ 
+inline TInt CPersonality::PersonalityId() const
+    {
+    return iPersonalityId;
+    }
+
+/**
+ * @internalComponent
+ * @return a const pointer to description string
+ */
+inline const TDesC* CPersonality::Description() const
+    {
+    return iDescription;
+    }
+
+/**
+ * @internalComponent
+ * @return a const pointer to Personality Configs
+ */
+inline const RPointerArray<CPersonalityConfigurations>& CPersonality::PersonalityConfigs() const
+    {
+    return iPersonalityConfigs;
+    }
+
+
+/**
+ * @internalComponent
+ * @return a const to Classes
+ */
+inline const RArray<CPersonalityConfigurations::TUsbClasses> & CPersonalityConfigurations::Classes() const
+    {
+    return iClasses;
+    }
+
 #endif // __PERSONALITY_INL__
 
--- a/usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -35,12 +35,16 @@
 #include <usb/usblogger.h>
 #include <musbmanextensionpluginobserver.h>
 
+
+
 class CUsbDeviceStateWatcher;
 class CUsbClassControllerBase;
 class CUsbServer;
 class MUsbDeviceNotify;
 class CPersonality;
 class CUsbmanExtensionPlugin;
+class CUsbManCenRepManager;
+
 
 const TUid KUidUsbPlugIns = {0x101fbf21};
 
@@ -74,14 +78,24 @@
 		TUint8  iDeviceProtocol;
 		TUint8  iMaxPacketSize;
 		TUint16 iIdVendor;
-		TUint16	iIdProduct;
+		TUint16	iProductId;
 		TUint16	iBcdDevice;
 		TUint8  iManufacturer;
 		TUint8  iProduct;
 		TUint8  iSerialNumber;
 		TUint8  iNumConfigurations;
 		};
-
+		
+      /**
+       * See Central Repository
+       */
+      class TUsbDeviceConfiguration
+            {
+      public:
+            TUint16 iVendorId;
+            HBufC*  iManufacturerName;
+            HBufC*  iProductName;
+            };
 public:
 	static CUsbDevice* NewL(CUsbServer& aUsbServer);
 	virtual ~CUsbDevice();
@@ -115,6 +129,7 @@
 	void ReadPersonalitiesL();
 	void SetDefaultPersonalityL();
 	void LoadFallbackClassControllersL();
+	void ConvertUidsL(const TDesC& aStr, RArray<TUint>& aUidArray);
 	
 public: // From CActive
 	void RunL();
@@ -137,14 +152,12 @@
 
 private:
 	void SetDeviceDescriptorL();
-	void SetUsbDeviceSettingsL(TUsbDeviceDescriptor& aDeviceDescriptor);
 	void SetUsbDeviceSettingsDefaultsL(TUsbDeviceDescriptor& aDeviceDescriptor);
 	void SelectClassControllersL();
 	void SetCurrentPersonalityL(TInt aPersonalityId);
 	void SetUsbDeviceSettingsFromPersonalityL(CUsbDevice::TUsbDeviceDescriptor& aDeviceDescriptor);
 	void ResourceFileNameL(TFileName& aFileName);
 	void CreateClassControllersL(const RArray<TUid>& aClassUids);
-	void ConvertUidsL(const TDesC& aStr, RArray<TUint>& aUidArray);
 	TInt PowerUpAndConnect();	
 #ifdef __FLOG_ACTIVE
 	void PrintDescriptor(CUsbDevice::TUsbDeviceDescriptor& aDeviceDescriptor);
@@ -167,6 +180,8 @@
 	TBool iPersonalityCfged;
 	TBool iUdcSupportsCableDetectWhenUnpowered;
 	HBufC16* iDefaultSerialNumber;
+	CUsbManCenRepManager* iCenRepManager; // Own CenRepManager instance
+	TUsbDeviceConfiguration iDeviceConfiguration;
 	
 	REComSession* iEcom;	//	Not to be deleted, only closed!
 	};
--- a/usbmgmt/usbmgr/usbman/server/INC/CUsbSession.h	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/INC/CUsbSession.h	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -97,7 +97,6 @@
 	TInt GetSupportedClasses(const RMessage2& aMessage);
 	TInt GetPersonalityIds(const RMessage2& aMessage);
 	TInt GetDescription(const RMessage2& aMessage);
-	TInt GetDetailedDescription(const RMessage2& aMessage);         
 	TInt ClassSupported(const RMessage2& aMessage);
 	TInt GetPersonalityProperty(const RMessage2& aMessage);         
 
--- a/usbmgmt/usbmgr/usbman/server/INC/UsbSettings.h	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/INC/UsbSettings.h	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /**
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -50,16 +50,11 @@
 _LIT(KUsbDefaultSerialNumber, "0123456789");
 _LIT(KUsbDefaultConfig, "First and Last and Always");
 
-const TInt KUsbManagerResourceVersion = 0;
-const TInt KUsbManagerResourceVersionNew = 1;
-
-enum TUsbManagerResourceVersion
+enum TUsbManagerSupportedVersion
 	{
-	EUsbManagerResourceVersionOne = 1,
-	EUsbManagerResourceVersionTwo = 2,
-	EUsbManagerResourceVersionThree = 3
+    TUsbManagerSupportedVersionMin = 4,
+    TUsbManagerSupportedVersionFour = 4,        
+    TUsbManagerSupportedVersionMax = 4
 	};
 
-_LIT(KUsbManagerResource, "z:\\private\\101fe1db\\usbman.rsc");
-
 #endif // __USBSETTINGS_H__
--- a/usbmgmt/usbmgr/usbman/server/INC/UsbmanServerSecurityPolicy.h	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/INC/UsbmanServerSecurityPolicy.h	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -105,7 +105,6 @@
                             /** EUsbGetOtgDescriptor */
 				 			/** EUsbDbgAlloc */
 							/** EUsbRequestSession */
-                            /** EUsbGetDetailedDescription */
 							/** EUsbGetPersonalityProperty */
 
 	CPolicyServer::ENotSupported, /** EUsbGetPersonalityProperty + 1 to KMaxTInt */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/usbman/server/INC/usbmancenrepmanager.h	Fri Jun 25 13:19:39 2010 +0800
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+*
+*/
+
+/**
+ @file
+*/
+
+#ifndef USBMANCENREPMANAGER_H
+#define USBMANCENREPMANAGER_H
+
+#include <e32base.h>
+
+class CRepository;
+class CPersonality;
+class TUsbDeviceDescriptor;
+class CUsbDevice;
+
+/** Helper class for tasks related to central repository. It reads settings from
+ *  appropriate cenrep keys */
+NONSHARABLE_CLASS( CUsbManCenRepManager ) : public CBase
+{
+	public:
+
+        /** Two-phased constructor. */
+        static CUsbManCenRepManager* NewL(CUsbDevice& aUsbDevice);
+
+        /** Destructor. */
+        virtual ~CUsbManCenRepManager();
+        
+        void ReadPersonalitiesL(RPointerArray<CPersonality>& aPersonalities);
+
+        void ReadDeviceConfigurationL(CUsbDevice::TUsbDeviceConfiguration& aDeviceConfig);
+
+	private:
+		CUsbManCenRepManager(CUsbDevice& aUsbDevice);
+		
+		void ConstructL();
+		
+        void CheckSignatureL();
+		
+		void ReadConfigurationsForPersonalityL(TInt aPersonalityId, CPersonality& aPersonality);
+
+		HBufC* ReadStringKeyLC( TUint32 aKeyId );
+	    TInt   ReadKeyL ( TUint32 aKeyId );
+
+        TBool IsClassConfigurableL(TUint aClassId, TInt& aFeatureId);
+		TBool IsFeatureSupportedL(TInt aFeatureId);
+
+	private:
+	    /** Own repository instance */
+		CRepository* 			iRepository;
+        /**reference to CUsbDevice*/
+        CUsbDevice& iUsbDevice;
+        /*the USB Configuratiron signature*/
+        TInt iSignature;
+};
+
+#endif /*USBMANCENREPMANAGER_H*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/usbman/server/INC/usbmanprivatecrkeys.h	Fri Jun 25 13:19:39 2010 +0800
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef USBMANPRIVATECRKEYS_H
+#define USBMANPRIVATECRKEYS_H
+
+const TUid KCRUidUSBManagerConfiguration = { 0x101fe1db };
+
+// Keys for USB configuration format
+const TUint32 KUsbManConfigSign           = 0;
+
+const TUint32 KUsbManDevicePartialKey = 0x00010000;
+const TUint32 KUsbManDeviceCountIndexKey = 0x0001ff00;
+
+const TUint32 KUsbManDeviceConfigurationsPartialKey = 0x00020000;
+const TUint32 KUsbManDeviceConfigurationsCountIndexKey = 0x0002ff00;
+
+const TUint32 KUsbManDevicePersonalitiesPartialKey = 0x00030000;
+const TUint32 KUsbManDevicePersonalitiesCountIndexKey = 0x0003ff00;
+
+const TUint32 KUsbManDeviceConfigurableClassesPartialKey = 0x00040000;
+const TUint32 KUsbManDeviceConfigurableClassesCountIndexKey = 0x0004ff00;
+
+const TUint32 KUsbManConfigKeyMask = 0x00FFFF00; 
+const TUint32 KUsbManConfigIndexMask = 0x0000FF00;
+const TUint32 KUsbManConfigFieldMask = 0x000000FF; 
+const TUint32 KUsbManConfigFirstEntryMask = 0x00FF00FF;
+
+const TUint32 KUsbManPersonalitiesOffset = 8;
+
+const TInt KUsbManFeatureNotConfigurable = -1;
+
+//Device
+const TUint32 KUsbManDeviceVendorIdKey = 0x00000000;
+const TUint32 KUsbManDeviceManufacturerNameKey = 0x00000001;
+const TUint32 KUsbManDeviceProductNameKey = 0x00000002;
+
+//Configurations
+const TUint32 KUsbManDeviceConfigurationsPersonalityIdKey = 0x00000000;
+const TUint32 KUsbManDeviceConfigurationsIdKey = 0x00000001;
+const TUint32 KUsbManDeviceConfigurationsClassUidsKey = 0x00000002;
+const TUint32 KUsbManDeviceConfigurationsKeyCountVersionFour = 3; //Key count of each configuration.
+
+//Personalities
+const TUint32 KUsbManDevicePersonalitiesDeviceClassKey = 0x00000000;
+const TUint32 KUsbManDevicePersonalitiesDeviceSubClassKey = 0x00000001;
+const TUint32 KUsbManDevicePersonalitiesProtocolKey = 0x00000002;
+const TUint32 KUsbManDevicePersonalitiesNumConfigKey = 0x00000003;
+const TUint32 KUsbManDevicePersonalitiesProductIdKey = 0x00000004;
+const TUint32 KUsbManDevicePersonalitiesBcdDeviceKey = 0x00000005;
+const TUint32 KUsbManDevicePersonalitiesFeatureIdKey = 0x00000006;
+const TUint32 KUsbManDevicePersonalitiesPersonalityIdKey = 0x00000007;
+const TUint32 KUsbManDevicePersonalitiesPropertyKey = 0x00000008;
+const TUint32 KUsbManDevicePersonalitiesDescriptionKey = 0x00000009;
+
+//Configurable Classes
+const TUint32 KUsbManDeviceConfigurableClassesUidKey = 0x00000000;
+const TUint32 KUsbManDeviceConfigurableClassesFeatureIdKey = 0x00000001;
+
+#endif      // USBMANPRIVATECRKEYS_H
--- a/usbmgmt/usbmgr/usbman/server/SRC/CPersonality.cpp	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/SRC/CPersonality.cpp	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -21,13 +21,26 @@
  @internalAll
 */
 
+#include <usb/usblogger.h>
 #include "CPersonality.h"
-#include <usb/usblogger.h>
 
 #ifdef __FLOG_ACTIVE
 _LIT8(KLogComponent, "USBSVR");
 #endif
 
+// Panic category only used in debug builds
+#ifdef _DEBUG
+_LIT(KUsbPersonalityPanicCategory, "CUsbPersonality");
+#endif
+
+/**
+ * Panic codes for the USB Personality Class
+ */
+enum TUsbPersonalityPanic
+    {
+    EPersonalityConfigsArrayEmpty, 
+    };
+
 /**
  * Factory method. Constructs a CPersonality object. 
  *
@@ -45,20 +58,12 @@
 	}
 
 /**
- * Allocates max amount of memory for each of 3 strings
+ * Allocates max amount of memory for description string
  */	
 void CPersonality::ConstructL()
 	{
 	LOG_FUNC
-
-	iManufacturer 	= HBufC::NewLC(KUsbStringDescStringMaxSize);
-	CleanupStack::Pop();
-	iProduct	 	= HBufC::NewLC(KUsbStringDescStringMaxSize);
-	CleanupStack::Pop();
-	iDescription	= HBufC::NewLC(KUsbStringDescStringMaxSize);
-	CleanupStack::Pop();
-	iDetailedDescription    = HBufC::NewLC(KUsbStringDescStringMaxSize);
-	CleanupStack::Pop();
+	iDescription	= HBufC::NewL(KUsbStringDescStringMaxSize);
 	}
 	
 /**
@@ -74,61 +79,38 @@
 CPersonality::~CPersonality()
 	{
 	LOG_FUNC
-
-	iClassUids.Close();
-	delete iManufacturer;
-	delete iProduct;
+	iPersonalityConfigs.ResetAndDestroy();
 	delete iDescription;
-	delete iDetailedDescription;
-	}
-
-/**
- * @return the index of the first match or KErrNotFound
- */
-TInt CPersonality::ClassSupported(TUid aClassUid) const
-	{
-	TIdentityRelation<TUid> relation(CPersonality::Compare);
-	return iClassUids.Find(aClassUid, relation);
-	}
-
-/**
- * @return KErrNone or system wide error code
- */	
-TInt CPersonality::AddSupportedClasses(TUid aClassUid)
-	{
-	return iClassUids.Append(aClassUid);
 	}
 
 /**
- * Sets personality id
+ * @return supported class uids
  */
-void CPersonality::SetId(TInt aId)
-	{
-	iId = aId;
-	}
+const RArray<CPersonalityConfigurations::TUsbClasses>& CPersonality::SupportedClasses() const
+    {
+    //we only support configuration 0 now
+    __ASSERT_DEBUG( iPersonalityConfigs.Count() != 0, _USB_PANIC(KUsbPersonalityPanicCategory, EPersonalityConfigsArrayEmpty) );
+    return iPersonalityConfigs[0]->Classes();
+    }
 
 /**
- * Sets manufacturer textual description
- */	
-void CPersonality::SetManufacturer(const TDesC* aManufacturer)
+ * @return ETrue if this class is supported  
+ * otherwise return EFalse
+ */
+TBool CPersonality::ClassSupported(TUid aClassUid) const
 	{
-	iManufacturer->Des().Copy(*aManufacturer);
-	}
-
-/**
- * Sets product textual description
- */	
-void CPersonality::SetProduct(const TDesC* aProduct)
-	{
-	iProduct->Des().Copy(*aProduct);
-	}
-
-/**
- * Sets personality textual description
- */
-void CPersonality::SetDescription(const TDesC* aDescription)
-	{
-	iDescription->Des().Copy((*aDescription).Left(KUsbStringDescStringMaxSize-1));
+    //we only support configuration 0 now
+    __ASSERT_DEBUG( iPersonalityConfigs.Count() != 0, _USB_PANIC(KUsbPersonalityPanicCategory, EPersonalityConfigsArrayEmpty) );
+    const RArray<CPersonalityConfigurations::TUsbClasses> &classes = iPersonalityConfigs[0]->Classes();
+    TInt classesCount = classes.Count();
+    for(TInt classesIndex = 0; classesIndex < classesCount; ++classesIndex)
+        {
+        if(aClassUid == classes[classesIndex].iClassUid)
+            {
+            return ETrue;
+            }
+        }
+    return EFalse;
 	}
 
 /**
@@ -142,14 +124,6 @@
 	};
 
 /**
- * Sets detailed personality textual description
- */
-void CPersonality::SetDetailedDescription(const TDesC* aDetailedDescription)
-	{
-	iDetailedDescription->Des().Copy((*aDetailedDescription).Left(KUsbStringDescStringMaxSize-1));
-	}
-
-/**
  * Sets version
  */
 void CPersonality::SetVersion(TInt aVersion)
@@ -164,3 +138,117 @@
 	{
 	iProperty = aProperty;
 	}
+
+/**
+ * Sets DeviceClass
+ */
+void CPersonality::SetDeviceClass(TUint8 aDeviceClass)
+    {
+    iDeviceClass = aDeviceClass;
+    }
+
+/**
+ * Sets DeviceSubClass
+ */
+void CPersonality::SetDeviceSubClass(TUint8 aDeviceSubClass)
+    {
+    iDeviceSubClass = aDeviceSubClass;
+    }
+
+/**
+ * Sets DeviceProtocol
+ */
+void CPersonality::SetDeviceProtocol(TUint8 aDeviceProtocol)
+    {
+    iDeviceProtocol = aDeviceProtocol;
+    }
+
+/**
+ * Sets NumConfigurations
+ */
+void CPersonality::SetNumConfigurations(TUint8 aNumConfigurations)  
+    {
+    iNumConfigurations = aNumConfigurations;
+    }
+    
+/**
+ * Sets ProductId
+ */
+void CPersonality::SetProductId(TUint16 aProductId)
+    {
+    iProductId = aProductId;
+    }
+    
+/**
+ * Sets FeatureId
+ */
+void CPersonality::SetFeatureId(TInt aFeatureId)
+    {
+    iFeatureId = aFeatureId;
+    }
+  
+/**
+ * Sets BcdDevice
+ */
+void CPersonality::SetBcdDevice(TUint16 aBcdDevice)
+    {
+    iBcdDevice = aBcdDevice;
+    }
+
+/**
+ * Sets personality id
+ */
+void CPersonality::SetPersonalityId(TInt aPersonalityId)
+    {
+    iPersonalityId = aPersonalityId;
+    }
+
+/**
+ * Sets Description
+ */
+void CPersonality::SetDescription(const TDesC* aDescription)
+    {
+    iDescription->Des().Copy((*aDescription).Left(KUsbStringDescStringMaxSize-1));
+    }
+
+/**
+ * Append PersonalityConfig
+ */
+void CPersonality::AppendPersonalityConfigsL(const CPersonalityConfigurations *aPersonalityConfig )
+    {
+    iPersonalityConfigs.AppendL(aPersonalityConfig);
+    }
+
+/**
+ * Sets personality id
+ */
+void CPersonalityConfigurations::SetPersonalityId(TInt aPersonalityId)
+    {
+    iPersonalityId = aPersonalityId;
+    }
+
+/**
+ * Sets Config Id 
+ */
+void CPersonalityConfigurations::SetConfigId(TInt aConfigId)
+    {
+    iConfigId = aConfigId;
+    }
+
+
+/**
+ * Append PersonalityConfig
+ */
+void CPersonalityConfigurations::AppendClassesL(const TUsbClasses &aClasses )
+    {
+    iClasses.AppendL(aClasses);
+    }
+
+/**
+ * De-Constructor
+ */
+CPersonalityConfigurations::~CPersonalityConfigurations()
+    {
+    LOG_FUNC
+    iClasses.Close();
+    }
--- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -21,33 +21,32 @@
  @file
 */
 
-#include "CUsbDevice.h"
-#include "CUsbDeviceStateWatcher.h"
 #include <cusbclasscontrolleriterator.h>
-#include "MUsbDeviceNotify.h"
-#include "UsbSettings.h"
-#include "CUsbServer.h"
 #include <cusbclasscontrollerbase.h>
 #include <cusbclasscontrollerplugin.h>
-#include "UsbUtils.h"
 #include <cusbmanextensionplugin.h>
-
-#ifdef USE_DUMMY_CLASS_CONTROLLER
-#include "CUsbDummyClassController.h"
-#endif
-
 #include <bafl/sysutil.h>
 #include <usb/usblogger.h>
 #include <e32svr.h>
 #include <e32base.h>
 #include <e32std.h>
-#include <usbman.rsg>
 #include <f32file.h>
 #include <barsc.h>
 #include <barsread.h>
 #include <bautils.h>
 #include <e32property.h> //Publish & Subscribe header
+#ifdef USE_DUMMY_CLASS_CONTROLLER
+#include "CUsbDummyClassController.h"
+#endif
+#include "MUsbDeviceNotify.h"
+#include "UsbSettings.h"
+#include "CUsbServer.h"
+#include "UsbUtils.h"
+#include "CUsbDevice.h"
+#include "CUsbDeviceStateWatcher.h"
 #include "CPersonality.h"
+#include "usbmancenrepmanager.h"
+#include "usbmanprivatecrkeys.h"
 
 _LIT(KUsbLDDName, "eusbc"); //Name used in call to User::LoadLogicalDevice
 _LIT(KUsbLDDFreeName, "Usbc"); //Name used in call to User::FreeLogicalDevice
@@ -108,6 +107,11 @@
 	iSupportedClassUids.Close();
 
 	iExtensionPlugins.ResetAndDestroy();
+	
+	delete iCenRepManager;
+	
+	delete  iDeviceConfiguration.iManufacturerName;
+	delete  iDeviceConfiguration.iProductName;  
 
 	if(iEcom)
 		iEcom->Close();
@@ -165,8 +169,11 @@
 	iEcom = &(REComSession::OpenL());
 
 	iUsbClassControllerIterator = new(ELeave) CUsbClassControllerIterator(iSupportedClasses);
+	iCenRepManager = CUsbManCenRepManager::NewL(*this);
 
-#ifndef __OVER_DUMMYUSBDI__
+	iDeviceConfiguration.iManufacturerName   = HBufC::NewL(KUsbStringDescStringMaxSize);
+	iDeviceConfiguration.iProductName        = HBufC::NewL(KUsbStringDescStringMaxSize);
+#ifndef __OVER_DUMMYUSBDI__	
 #ifndef __WINS__
 	LOGTEXT(_L8("About to load LDD"));
 	TInt err = User::LoadLogicalDevice(KUsbLDDName);
@@ -787,7 +794,7 @@
 	LOGTEXT2(_L8("\tiMaxPacketSize is: 0x%02x"), aDeviceDescriptor.iMaxPacketSize);
 	
 	LOGTEXT2(_L8("\tVendorId is: 0x%04x"), aDeviceDescriptor.iIdVendor);
-	LOGTEXT2(_L8("\tProductId is: 0x%04x"), aDeviceDescriptor.iIdProduct);
+	LOGTEXT2(_L8("\tProductId is: 0x%04x"), aDeviceDescriptor.iProductId);
 	LOGTEXT2(_L8("\tBcdDevice is: 0x%04x"), aDeviceDescriptor.iBcdDevice);
 
 	LOGTEXT2(_L8("\tiManufacturer is: 0x%04x"), aDeviceDescriptor.iManufacturer);
@@ -839,7 +846,8 @@
 		}
 	else
 		{
-	SetUsbDeviceSettingsL(*deviceDescriptor);
+        LOGTEXT(_L8("USB configuration is not read"));
+        LEAVEL(KErrNotFound);
 		}
 	
 #ifndef __OVER_DUMMYUSBDI__
@@ -870,140 +878,7 @@
 	aDeviceDescriptor.iDeviceSubClass	= KUsbDefaultDeviceSubClass;
 	aDeviceDescriptor.iDeviceProtocol	= KUsbDefaultDeviceProtocol;
 	aDeviceDescriptor.iIdVendor			= KUsbDefaultVendorId;
-	aDeviceDescriptor.iIdProduct		= KUsbDefaultProductId;
-	}
-
-void CUsbDevice::SetUsbDeviceSettingsL(CUsbDevice::TUsbDeviceDescriptor& aDeviceDescriptor)
-/**
- * Configure the USB device, reading in the settings from a
- * resource file where possible.
- *
- * @param aDeviceDescriptor The device descriptor for the USB device
- */
-	{
-	LOG_FUNC
-
-	// First, use the default values
-	LOGTEXT(_L8("Setting default values for the configuration"));
-	SetUsbDeviceSettingsDefaultsL(aDeviceDescriptor);
-
-	// Now try to get the configuration from the resource file
-	RFs fs;
-	LEAVEIFERRORL(fs.Connect());
-	CleanupClosePushL(fs);
-
-	RResourceFile resource;
-	TRAPD(err, resource.OpenL(fs, KUsbManagerResource));
-	LOGTEXT2(_L8("Opened resource file with error %d"), err);
-
-	if (err != KErrNone)
-		{
-		LOGTEXT(_L8("Unable to open resource file: using default settings"));
-		CleanupStack::PopAndDestroy(&fs);
-		return;
-		}
-
-	CleanupClosePushL(resource);
-
-	resource.ConfirmSignatureL(KUsbManagerResourceVersion);
-
-	HBufC8* id = resource.AllocReadLC(USB_CONFIG);
-
-	// The format of the USB resource structure is:
-	//
-	//	STRUCT usb_configuration
-	//		{
-	//		WORD	vendorId		= 0x0e22;
-	//		WORD	productId		= 0x000b;
-	//		WORD	bcdDevice		= 0x0000;
-	//		LTEXT	manufacturer	= "Symbian Ltd.";
-	//		LTEXT	product			= "Symbian OS";
-	//		}
-	//
-	// Note that the resource must be read in this order!
-	
-	TResourceReader reader;
-	reader.SetBuffer(id);
-
-	aDeviceDescriptor.iIdVendor = static_cast<TUint16>(reader.ReadUint16());
-	aDeviceDescriptor.iIdProduct = static_cast<TUint16>(reader.ReadUint16());
-	aDeviceDescriptor.iBcdDevice = static_cast<TUint16>(reader.ReadUint16());
-
-	// Try to read device and manufacturer name from new SysUtil API
-	TPtrC16 sysUtilModelName;
-	TPtrC16 sysUtilManuName;
-	
-	// This method returns ownership.
-	CDeviceTypeInformation* deviceInfo = SysUtil::GetDeviceTypeInfoL();
-	CleanupStack::PushL(deviceInfo);
-	TInt gotSysUtilModelName = deviceInfo->GetModelName(sysUtilModelName);
-	TInt gotSysUtilManuName = deviceInfo->GetManufacturerName(sysUtilManuName);
-	
-	TPtrC manufacturerString = reader.ReadTPtrC();
-	TPtrC productString = reader.ReadTPtrC();
-	
-	// If we succesfully read the manufacturer or device name from SysUtil API
-	// then set these results, otherwise use the values defined in resource file
-#ifndef __OVER_DUMMYUSBDI__
-#ifndef __WINS__
-	if (gotSysUtilManuName == KErrNone)
-		{
-		LEAVEIFERRORL(iLdd.SetManufacturerStringDescriptor(sysUtilManuName));
-		}
-	else
-		{
-		LEAVEIFERRORL(iLdd.SetManufacturerStringDescriptor(manufacturerString));
-		}
-
-	if (gotSysUtilModelName == KErrNone)
-		{
-		LEAVEIFERRORL(iLdd.SetProductStringDescriptor(sysUtilModelName));
-		}
-	else
-		{
-		LEAVEIFERRORL(iLdd.SetProductStringDescriptor(productString));
-		}
-		
-#endif
-#endif // __OVER_DUMMYUSBDI__
-
-#ifdef __FLOG_ACTIVE
-	PrintDescriptor(aDeviceDescriptor);	
-	TBuf8<KUsbStringDescStringMaxSize> narrowString;
-	narrowString.Copy(manufacturerString);
-	LOGTEXT2(_L8("Manufacturer is: '%S'"), &narrowString);
-	narrowString.Copy(productString);
-	LOGTEXT2(_L8("Product is: '%S'"), &narrowString);
-#endif // __FLOG_ACTIVE
-
-#ifndef __OVER_DUMMYUSBDI__
-#ifndef __WINS__	
-	//Read the published serial number. The key is the UID KUidUsbmanServer = 0x101FE1DB
-	TBuf16<KUsbStringDescStringMaxSize> serNum;
-	TInt r = RProperty::Get(KUidSystemCategory,0x101FE1DB,serNum);
-	if(r==KErrNone)
-		{
-#ifdef __FLOG_ACTIVE
-		TBuf8<KUsbStringDescStringMaxSize> narrowString;
-		narrowString.Copy(serNum);
-		LOGTEXT2(_L8("Setting published SerialNumber: %S"), &narrowString);
-#endif // __FLOG_ACTIVE
-		//USB spec doesn't give any constraints on what constitutes a valid serial number.
-		//As long as it is a string descriptor it is valid.
-		LEAVEIFERRORL(iLdd.SetSerialNumberStringDescriptor(serNum));	
-		}
-#ifdef __FLOG_ACTIVE
-	else
-		{
-		LOGTEXT(_L8("SerialNumber has not been published"));	
-		}
-#endif // __FLOG_ACTIVE
-
-#endif
-#endif // __OVER_DUMMYUSBDI__
-
-
-	CleanupStack::PopAndDestroy(4, &fs); //  deviceInfo, id, resource, fs
+	aDeviceDescriptor.iProductId		= KUsbDefaultProductId;
 	}
 
 void CUsbDevice::SetUsbDeviceSettingsFromPersonalityL(CUsbDevice::TUsbDeviceDescriptor& aDeviceDescriptor)
@@ -1020,20 +895,19 @@
 	SetUsbDeviceSettingsDefaultsL(aDeviceDescriptor);
 
 	// Now try to get the configuration from the current personality
-	const CUsbDevice::TUsbDeviceDescriptor& deviceDes = iCurrentPersonality->DeviceDescriptor();
-	aDeviceDescriptor.iDeviceClass			= deviceDes.iDeviceClass;
-	aDeviceDescriptor.iDeviceSubClass		= deviceDes.iDeviceSubClass;
-	aDeviceDescriptor.iDeviceProtocol		= deviceDes.iDeviceProtocol;
-	aDeviceDescriptor.iIdVendor				= deviceDes.iIdVendor;
-	aDeviceDescriptor.iIdProduct			= deviceDes.iIdProduct;
-	aDeviceDescriptor.iBcdDevice			= deviceDes.iBcdDevice;
-	aDeviceDescriptor.iSerialNumber			= deviceDes.iSerialNumber;
-	aDeviceDescriptor.iNumConfigurations	= deviceDes.iNumConfigurations;
+    aDeviceDescriptor.iDeviceClass          = iCurrentPersonality->DeviceClass();
+    aDeviceDescriptor.iDeviceSubClass       = iCurrentPersonality->DeviceSubClass();
+    aDeviceDescriptor.iDeviceProtocol       = iCurrentPersonality->DeviceProtocol();
+    aDeviceDescriptor.iIdVendor             = iDeviceConfiguration.iVendorId;
+    aDeviceDescriptor.iProductId            = iCurrentPersonality->ProductId();
+    aDeviceDescriptor.iBcdDevice            = iCurrentPersonality->BcdDevice();
+    aDeviceDescriptor.iNumConfigurations    = iCurrentPersonality->NumConfigurations();	
+	
 
 #ifndef __OVER_DUMMYUSBDI__
 #ifndef __WINS__
-	LEAVEIFERRORL(iLdd.SetManufacturerStringDescriptor(*(iCurrentPersonality->Manufacturer())));
-	LEAVEIFERRORL(iLdd.SetProductStringDescriptor(*(iCurrentPersonality->Product())));
+	LEAVEIFERRORL(iLdd.SetManufacturerStringDescriptor(*(iDeviceConfiguration.iManufacturerName)));
+	LEAVEIFERRORL(iLdd.SetProductStringDescriptor(*(iDeviceConfiguration.iProductName)));
 
 	//Read the published serial number. The key is the UID KUidUsbmanServer = 0x101FE1DB
 	TBuf16<KUsbStringDescStringMaxSize> serNum;
@@ -1171,15 +1045,17 @@
 	TInt personalityCount = iSupportedPersonalities.Count();
 	for (TInt i = 0; i < personalityCount; i++)
 		{
-		const RArray<TUid>& classUids = iSupportedPersonalities[i]->SupportedClasses();
-		TInt uidCount = classUids.Count();
+		const RArray<CPersonalityConfigurations::TUsbClasses>& classes = iSupportedPersonalities[i]->SupportedClasses();
+		TInt uidCount = classes.Count();
 		for (TInt j = 0; j < uidCount; j++)	
 			{
 			TInt ccCount = iSupportedClassUids.Count();
 			TInt k;
+		    LOGTEXT2(_L8("iSupportedClassUids Count = %d"),ccCount);
 			for (k = 0; k < ccCount; k++)
 				{
-				if (iSupportedClassUids[k] == classUids[j])
+                LOGTEXT5(_L8("iSupportedClassUids %d %x classes %d %x"), k, iSupportedClassUids[k].iUid, j, classes[j].iClassUid.iUid);
+				if (iSupportedClassUids[k] == classes[j].iClassUid)
 					{
 					break;
 					}
@@ -1204,6 +1080,7 @@
 */
 void CUsbDevice::ConvertUidsL(const TDesC& aStr, RArray<TUint>& aUidArray)	
 	{
+    LOG_FUNC
 	// Function assumes that aUIDs is empty
 	__ASSERT_DEBUG( aUidArray.Count() == 0, _USB_PANIC(KUsbDevicePanicCategory, EUidArrayNotEmpty) );
 
@@ -1228,214 +1105,36 @@
 	}
 
 void CUsbDevice::ReadPersonalitiesL()
-/**
- * Reads configured personalities from the resource file
- */
-	{
-	LOG_FUNC
-	iPersonalityCfged = EFalse;
-	// Now try to connect to file server
-	RFs fs;
-	LEAVEIFERRORL(fs.Connect());
-	CleanupClosePushL(fs);
-
-	TFileName resourceFileName;
-	ResourceFileNameL(resourceFileName);
-	RResourceFile resource;
-	TRAPD(err, resource.OpenL(fs, resourceFileName));
-	LOGTEXT2(_L8("Opened resource file with error %d"), err);
-
-	if (err != KErrNone)
-		{
-		LOGTEXT(_L8("Unable to open resource file"));
-		CleanupStack::PopAndDestroy(&fs);
-		return;
-		}
-
-	CleanupClosePushL(resource);
-
-	TInt resourceVersion = resource.SignatureL();
-	LOGTEXT2(_L8("Resource file signature is %d"), resourceVersion);
-	// Check for the version is valid(EUsbManagerResourceVersionOne, EUsbManagerResourceVersionTwo
-	// or EUsbManagerResourceVersionThree).
-	if(resourceVersion > EUsbManagerResourceVersionThree)
-		{
-		LOGTEXT2(_L8("Version of resource file is valid (>%d)"), EUsbManagerResourceVersionThree);
-		User::LeaveIfError(KErrNotSupported);
-		}
-	
-	resource.ConfirmSignatureL(resourceVersion);
-
-	HBufC8* personalityBuf = 0;
-	TRAPD(ret, personalityBuf = resource.AllocReadL(DEVICE_PERSONALITIES));
-	// If personalities resource is not found, swallow the error and return
-	// as no specified personalities is a valid configuration
-	if (ret == KErrNotFound)
-		{
-		LOGTEXT(_L8("Personalities are not configured"));
-		CleanupStack::PopAndDestroy(2, &fs); 
-		return;
-		}
-	// Otherwise leave noisily if the AllocRead fails
-	LEAVEIFERRORL(ret);
-	CleanupStack::PushL(personalityBuf);
-
-	// The format of the USB resource structure is:
-	//
-	// 	STRUCT PERSONALITY
-	//		{
-	// 		WORD	bcdDeviceClass;
-	// 		WORD	bcdDeviceSubClass;
-	//		WORD 	protocol;
-	//		WORD	numConfigurations;
-	//		WORD 	vendorId;
-	//		WORD 	productId;
-	//		WORD 	bcdDevice;
-	//		LTEXT 	manufacturer;
-	//		LTEXT 	product;
-	//		WORD 	id;					// personality id
-	//		LTEXT	class_uids;	
-	//		LTEXT 	description;		// personality description
-	//     	LTEXT   detailedDescription;  //detailed description. This is in version 2
-	//		LONG 	Property;
-	//		}
-	//
-	// Note that the resource must be read in this order!
-	
-	TResourceReader reader;
-	reader.SetBuffer(personalityBuf);
-
-	TUint16 personalityCount 	= static_cast<TUint16>(reader.ReadUint16());
-	
-	// Read the manufacturer and device name (product) here from SysUtil class
-	TPtrC16 sysUtilModelName;
-	TPtrC16 sysUtilManuName;
-
-	// This method returns ownership.
-	CDeviceTypeInformation* deviceInfo = SysUtil::GetDeviceTypeInfoL();
-	CleanupStack::PushL(deviceInfo);
-	TInt gotSysUtilModelName = deviceInfo->GetModelName(sysUtilModelName);
-	TInt gotSysUtilManuName = deviceInfo->GetManufacturerName(sysUtilManuName);
-	
-	for (TInt idx = 0; idx < personalityCount; idx++)
-		{
-		// read a personality 
-		TUint8 	bDeviceClass 		= static_cast<TUint8>(reader.ReadUint8());
-		TUint8 	bDeviceSubClass 	= static_cast<TUint8>(reader.ReadUint8());
-		TUint8 	protocol 			= static_cast<TUint8>(reader.ReadUint8());
-		TUint8 	numConfigurations	= static_cast<TUint8>(reader.ReadUint8());
-		TUint16 vendorId			= static_cast<TUint16>(reader.ReadUint16());
-		TUint16 productId			= static_cast<TUint16>(reader.ReadUint16());
-		TUint16 bcdDevice			= static_cast<TUint16>(reader.ReadUint16());
-		TPtrC	manufacturer		= reader.ReadTPtrC();
-		TPtrC	product				= reader.ReadTPtrC();
-		TUint16 id					= static_cast<TUint16>(reader.ReadUint16());
-		TPtrC	uidsStr				= reader.ReadTPtrC();
-		TPtrC 	description			= reader.ReadTPtrC();
-		
-		RArray<TUint> uids;
-		CleanupClosePushL(uids);
-		ConvertUidsL(uidsStr, uids);
-		// creates a CPersonality object
-		CPersonality* personality = CPersonality::NewL();
-		CleanupStack::PushL(personality);
-
-		personality->SetVersion(resourceVersion);
-		
-		// populates personality object
-		personality->SetId(id);
-		        
-		for (TInt uidIdx = 0; uidIdx < uids.Count(); uidIdx++)
-			{
-			LEAVEIFERRORL(personality->AddSupportedClasses(TUid::Uid(uids[uidIdx])));
-			}
-		
-		// gets a handle to iDeviceDescriptor of personality
-		CUsbDevice::TUsbDeviceDescriptor& dvceDes = personality->DeviceDescriptor();
-		if (gotSysUtilManuName == KErrNone)
-			{
-			personality->SetManufacturer(&sysUtilManuName);
-			}
-		else
-			{
-			personality->SetManufacturer(&manufacturer);
-			}
-			
-		if (gotSysUtilModelName == KErrNone)
-			{
-			personality->SetProduct(&sysUtilModelName);
-			}
-		else
-			{
-			personality->SetProduct(&product);
-			}
-			
-		personality->SetDescription(&description);
-		dvceDes.iDeviceClass = bDeviceClass;
-		dvceDes.iDeviceSubClass = bDeviceSubClass;
-		dvceDes.iDeviceProtocol = protocol;
-		dvceDes.iIdVendor = vendorId;
-		dvceDes.iIdProduct= productId;
-		dvceDes.iBcdDevice = bcdDevice;
-		dvceDes.iNumConfigurations = numConfigurations;
-		
-		//detailedDescription is only supported after EUsbManagerResourceVersionTwo
-		if(resourceVersion >= EUsbManagerResourceVersionTwo)
-			{
-			TPtrC   detailedDescription = reader.ReadTPtrC();        
-			personality->SetDetailedDescription(&detailedDescription);
-#ifdef __FLOG_ACTIVE
-			TBuf8<KUsbDescMaxSize_String> narrowLongBuf;
-			narrowLongBuf.Copy(detailedDescription);
-			LOGTEXT2(_L8("detailed description = '%S'"),        &narrowLongBuf);            
-#endif // __FLOG_ACTIVE
-			}
-
-		//Property is only supported after EUsbManagerResourceVersionThree
-		if(resourceVersion >= EUsbManagerResourceVersionThree)
-			{
-			TUint32 property			= static_cast<TUint32>(reader.ReadUint32());
-			personality->SetProperty(property);
-#ifdef __FLOG_ACTIVE
-		LOGTEXT2(_L8("property = %d\n"), 			property);
-#endif // __FLOG_ACTIVE
-			}
-		
-		// Append personality to iSupportedPersonalities
-		iSupportedPersonalities.AppendL(personality);
-		// Now pop off personality
-		CleanupStack::Pop(personality);
-#ifdef __FLOG_ACTIVE
-		// Debugging
-		LOGTEXT2(_L8("personalityCount = %d\n"), 	personalityCount);
-		LOGTEXT2(_L8("bDeviceClass = %d\n"), 		bDeviceClass);
-		LOGTEXT2(_L8("bDeviceSubClass = %d\n"), 	bDeviceSubClass);
-		LOGTEXT2(_L8("protocol = %d\n"), 			protocol);
-		LOGTEXT2(_L8("numConfigurations = %d\n"), 	numConfigurations);
-		LOGTEXT2(_L8("vendorId = %d\n"), 			vendorId);
-		LOGTEXT2(_L8("productId = %d\n"), 			productId);
-		LOGTEXT2(_L8("bcdDevice = %d\n"), 			bcdDevice);
-		TBuf8<KMaxName> narrowBuf;
-		narrowBuf.Copy(manufacturer);
-		LOGTEXT2(_L8("manufacturer = '%S'"), 		&narrowBuf);
-		narrowBuf.Copy(product);
-		LOGTEXT2(_L8("product = '%S'"), 			&narrowBuf);
-		LOGTEXT2(_L8("id = %d\n"), 					id);
-		LOGTEXT(_L8("ClassUids{"));
-		for (TInt k = 0; k < uids.Count(); k++)
-			{
-			LOGTEXT2(_L8("%d"), uids[k]);
-			}
-		LOGTEXT(_L8("}"));
-		narrowBuf.Copy(description);
-		LOGTEXT2(_L8("description = '%S'"), 		&narrowBuf);
-#endif // __FLOG_ACTIVE
-		CleanupStack::PopAndDestroy(&uids);	// close uid array		
-		}
-		
-	CleanupStack::PopAndDestroy(4, &fs); // deviceInfo, personalityBuf, resource, fs
-	iPersonalityCfged = ETrue;	
-	}
+    {    
+    LOG_FUNC
+    TPtrC16 sysUtilModelName;
+    TPtrC16 sysUtilManuName;
+    
+    iPersonalityCfged = EFalse;
+    
+    iCenRepManager->ReadDeviceConfigurationL(iDeviceConfiguration);
+    
+    iCenRepManager->ReadPersonalitiesL(iSupportedPersonalities);
+    
+    //update info for SetManufacturer & SetProduct
+    CDeviceTypeInformation* deviceInfo = SysUtil::GetDeviceTypeInfoL();
+    CleanupStack::PushL(deviceInfo);
+    TInt gotSysUtilModelName = deviceInfo->GetModelName(sysUtilModelName);
+    TInt gotSysUtilManuName = deviceInfo->GetManufacturerName(sysUtilManuName);
+    
+    //To overlap info 
+    if (gotSysUtilManuName == KErrNone)
+        {
+        iDeviceConfiguration.iManufacturerName->Des().Copy(sysUtilManuName); 
+        }
+        
+    if (gotSysUtilModelName == KErrNone)
+        {
+        iDeviceConfiguration.iProductName->Des().Copy(sysUtilModelName);
+        }
+    CleanupStack::PopAndDestroy(deviceInfo);
+    iPersonalityCfged = ETrue;
+    }
 	
 void CUsbDevice::SelectClassControllersL()
 /**
@@ -1443,8 +1142,19 @@
  */
 	{
 	LOG_FUNC
-
-	CreateClassControllersL(iCurrentPersonality->SupportedClasses());
+    const RArray<CPersonalityConfigurations::TUsbClasses>& classes = iCurrentPersonality->SupportedClasses();
+	RArray<TUid> classUids;
+	CleanupClosePushL( classUids ); 
+    TInt classCount = classes.Count();
+	for(TInt classIndex = 0; classIndex<classCount; ++classIndex)
+	    {
+        TUid uid = classes[classIndex].iClassUid;
+        classUids.AppendL(uid);
+	    }
+	
+	CreateClassControllersL(classUids);
+	
+    CleanupStack::PopAndDestroy( &classUids );
 	}
 #ifdef USE_DUMMY_CLASS_CONTROLLER	
 void CUsbDevice::CreateClassControllersL(const RArray<TUid>& /* aClassUids*/)
@@ -1489,7 +1199,6 @@
 
 	TInt smallestId = iSupportedPersonalities[0]->PersonalityId();
  	TInt count = iSupportedPersonalities.Count();
- 	
  	for (TInt i = 1; i < count; i++)
  		{
  		if(iSupportedPersonalities[i]->PersonalityId() < smallestId)
@@ -1497,7 +1206,7 @@
  			smallestId = iSupportedPersonalities[i]->PersonalityId();
  			}
  		}
-
+    
 	SetCurrentPersonalityL(smallestId);
 	SelectClassControllersL();
 	}
@@ -1516,44 +1225,6 @@
 	CreateClassControllersL(iSupportedClassUids);
  	}
  	
-void CUsbDevice::ResourceFileNameL(TFileName& aFileName)
-/**
- * Gets resource file name
- *
- * @param aFileName Descriptor to populate with resource file name
- */
- 	{
-	LOG_FUNC
-
-	RFs fs;
-	LEAVEIFERRORL(fs.Connect());
-	CleanupClosePushL(fs);
-
-#ifdef __WINS__
-	// If we are running in the emulator then read the resource file from system drive.
-	// This makes testing with different resource files easier.
-	_LIT(KPrivatePath, ":\\Private\\101fe1db\\");
-	aFileName.Append(RFs::GetSystemDriveChar()); //get the name of system drive
-	aFileName.Append(KPrivatePath);
-#else
- 	const TDriveNumber KResourceDrive = EDriveZ;
-
-	TDriveUnit driveUnit(KResourceDrive);
-	TDriveName drive=driveUnit.Name();
-	aFileName.Insert(0, drive);
-	// append private path
-	TPath privatePath;
-	fs.PrivatePath(privatePath);
-	aFileName.Append(privatePath);		
-#endif //WINS
-
-	// Find the nearest match of resource file for the chosen locale
-	aFileName.Append(_L("usbman.rsc"));
-	BaflUtils::NearestLanguageFile(fs, aFileName); // if a match is not found, usbman.rsc will be used
-
-	CleanupStack::PopAndDestroy(&fs);	// fs no longer needed
- 	}
-
 RDevUsbcClient& CUsbDevice::MuepoDoDevUsbcClient()
 /**
  * Inherited from MUsbmanExtensionPluginObserver - Function used by plugins to
--- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbSession.cpp	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbSession.cpp	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -518,9 +518,6 @@
 	case EUsbGetDescription:
 		ret = GetDescription(aMessage);
 		break;
-	case EUsbGetDetailedDescription:
-		ret = GetDetailedDescription(aMessage);
-		break;
 	case EUsbGetPersonalityProperty:
 		ret = GetPersonalityProperty(aMessage);
 		break;
@@ -1274,7 +1271,7 @@
 				{
 				if (j < KUsbMaxSupportedClasses + 1)
 					{
-					classUids[j] = personalities[i]->SupportedClasses()[j - 1].iUid;
+					classUids[j] = personalities[i]->SupportedClasses()[j - 1].iClassUid.iUid;
 					LOGTEXT3(_L8("\tclassUids[%d] = %d"), j, classUids[j]);
 					}
 				else
@@ -1375,36 +1372,6 @@
 	return KErrNotSupported;
 	}
 
-/**
- * Gets personality detailed description
- *
- * @internalComponent
- * @param   aMessage    Message received from the client
- * @return  Any error that occurred or KErrNone
- */
-TInt CUsbSession::GetDetailedDescription(const RMessage2& aMessage)
-	{
-	LOG_FUNC
-
- 	if (!iPersonalityCfged)
-		{
-		return KErrNotSupported;
-		}
-
-	TInt personalityId = aMessage.Int0();
-	const CPersonality* personality = iUsbServer->Device().GetPersonality(personalityId);
-    	if (personality)
-        	{
-        	if(personality->Version() < EUsbManagerResourceVersionTwo)
-            		{
-            		return KErrNotFound;
-            		}
-		return aMessage.Write(1, *(personality->DetailedDescription()));
-		}
-
-	// We should never reach here
-	return KErrNotSupported;
-	}
 
 /**
  * Gets personality property
@@ -1426,10 +1393,6 @@
 		const CPersonality* personality = iUsbServer->Device().GetPersonality(personalityId);
 		if (personality)
 			{
-			if(personality->Version() < EUsbManagerResourceVersionThree)
-				{
-				return KErrNotFound;
-				}
 			TPckg<TUint32> pckg(personality->Property());
 			return aMessage.Write(1, pckg);
 			}
@@ -1459,7 +1422,7 @@
 	const CPersonality* personality = iUsbServer->Device().GetPersonality(personalityId);
 	if (personality)
 		{
-		isSupported = (personality->ClassSupported(classUid) != KErrNotFound);
+		isSupported = personality->ClassSupported(classUid);
 		TPckg<TBool> pkg2(isSupported);
 		return aMessage.Write(2, pkg2);
 		}
--- a/usbmgmt/usbmgr/usbman/server/SRC/usbman.rls	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* @file
-* This file serves a template for the purpose of localization. The
-* content of this file shall be properly filled with unicode pertaining
-* to the configured language.
-* localized strings, US english
-*
-*/
-
-// personality one
-rls_string per_manufacturer1	"localized manufacturer"
-rls_string per_product1		"localized product description"
-rls_string per_description1	"localized personality description"
-rls_string per_detailedDescription1	"localized personality detailed description"
-
-// personality two
-rls_string per_manufacturer2	"localized manufacturer"
-rls_string per_product2		"localized product description"
-rls_string per_description2	"localized personality description"
-rls_string per_detailedDescription2	"localized personality detailed description"
--- a/usbmgmt/usbmgr/usbman/server/SRC/usbman.rss	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Resource file for usbman configuration.
-*
-*/
-
-/**
- @file
-*/
-
-NAME USBM
-
-#include <badef.rh>
-#include "usbman.rh"
-
-#ifdef LANGUAGE_01 			// UK English  
- 	#include "usbman_01.rls"	
-#elif LANGUAGE_02 	 		// French  
- 	#include "usbman_02.rls"	
-#elif defined LANGUAGE_03  		// German
- 	#include "usbman_03.rls"
-#elif defined LANGUAGE_10  		// US English
- 	#include "usbman_10.rls"
-#else					// default to UK English strings in usbman.rsc
- 	#include "usbman_01.rls"	
-#endif      
-
-RESOURCE BA_RSS_SIGNATURE
-	{
-	signature = 3;
-	}
-
-RESOURCE usb_configuration usb_config
-	{
-	}
-	
-		
-RESOURCE PERSONALITY_ARRAY device_personalities
-	{
-	personalities = 
-		{
-		PERSONALITY
-			{
-			bDeviceClass = 02;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x000b;
-			bcdDevice = 0;
-			manufacturer = per_manufacturer1;
-			product = per_product1;
-			id = 1;					
-			class_uids = "101FBF22";    			
-			description = per_description1;
-			detailedDescription = per_detailedDescription1;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 1;
-			bDeviceSubClass = 2;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x000c;
-			bcdDevice = 2;
-			manufacturer= per_manufacturer2;
-			product = per_product2;
-			id = 2;					
-			class_uids = "101fbf24";			
-			description = per_description2;
-			detailedDescription = per_detailedDescription2;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 0;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x1113;
-			bcdDevice = 0;
-			manufacturer = per_manufacturer3;
-			product = per_product3;
-			id = 3;					
-			class_uids = "10204bbc";			
-			description = per_description3;
-			detailedDescription = per_detailedDescription3;
-			property = 0x00000000;
-			}
-
-		// The productId's value of personalities to be implemented in the
-		// future should be > 0x1115, to avoid conflict with IDs used by
-		// other drivers or applications
-
-		};
-	}
-			
--- a/usbmgmt/usbmgr/usbman/server/SRC/usbman_01.rls	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* @file
-* Resource file for testing and example mass storage application
-* localized strings for UK English. A place holder only. The actual
-* strings however may not be UK English at all.
-*
-*/
-
-// personality one
-rls_string per_manufacturer1 	"Symbian"
-rls_string per_product1		"Symbian OS ACM"
-rls_string per_description1 	"Serial Emulation"
-rls_string per_detailedDescription1    	"Serial Emulation(detail)"
-
-// personality two
-rls_string per_manufacturer2 	"Symbian"
-rls_string per_product2		"Symbian OS WHCM"
-rls_string per_description2 	"Obex over USB"
-rls_string per_detailedDescription2    	"Obex over USB(detail)"
-
-// personality three
-rls_string per_manufacturer3 	"Symbian"
-rls_string per_product3		"Symbian OS MSCC"
-rls_string per_description3 	"USB Mass Storage"
-rls_string per_detailedDescription3    	"USB Mass Storage(detail)"
-
-// personality four
-rls_string per_manufacturer4 	"Symbian"
-rls_string per_product4		"Symbian OS MTP"
-rls_string per_description4 	"MTP over USB"
-rls_string per_detailedDescription4    	"MTP over USB(detail)"
-
-// personality five
-rls_string per_manufacturer5 	"Symbian"
-rls_string per_product5		"Symbian OS RNDIS"
-rls_string per_description5 	"IP over USB - RNDIS"
-rls_string per_detailedDescription5    	"IP over USB - RNDIS(detail)"
--- a/usbmgmt/usbmgr/usbman/server/SRC/usbman_02.rls	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* @file
-* This file serves a template for the purpose of localization. The
-* content of this file shall be properly filled with unicode pertaining
-* to the configured language.
-* localized strings for French. A place holder only. you know the 
-* following strings are not French
-*
-*/
-
-
-// personality one
-rls_string per_manufacturer1 	"Symbian"
-rls_string per_product1		"Symbian OS ACM"
-rls_string per_description1 	"Serial Emulation"
-rls_string per_detailedDescription1    	"Serial Emulation(detail)"
-
-// personality two
-rls_string per_manufacturer2 	"Symbian"
-rls_string per_product2		"Symbian OS WHCM"
-rls_string per_description2 	"Obex over USB"
-rls_string per_detailedDescription2     	"Obex over USB(detail)"
-
-// personality three
-rls_string per_manufacturer3 	"Symbian"
-rls_string per_product3		"Symbian OS MSCC"
-rls_string per_description3 	"USB Mass Storage"
-rls_string per_detailedDescription3   	"USB Mass Storage(detail)"
-
-// personality four
-rls_string per_manufacturer4 	"Symbian"
-rls_string per_product4		"Symbian OS MTP"
-rls_string per_description4 	"MTP over USB"
-rls_string per_detailedDescription4    	"MTP over USB(detail)"
-
-// personality five
-rls_string per_manufacturer5 	"Symbian"
-rls_string per_product5		"Symbian OS RNDIS"
-rls_string per_description5 	"IP over USB - RNDIS"
-rls_string per_detailedDescription5    	"IP over USB - RNDIS(detail)"
-
--- a/usbmgmt/usbmgr/usbman/server/SRC/usbman_03.rls	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* @file
-* This file serves a template for the purpose of localization. The
-* content of this file shall be properly filled with unicode pertaining
-* to the configured language.
-* localized strings for German. A place holder only. you know the 
-* following strings are not German
-*
-*/
-
-
-// personality one
-// personality one
-rls_string per_manufacturer1 	"Symbian"
-rls_string per_product1		"Symbian OS ACM"
-rls_string per_description1 	"Serial Emulation"
-rls_string per_detailedDescription1    	"Serial Emulation(detail)"
-
-// personality two
-rls_string per_manufacturer2 	"Symbian"
-rls_string per_product2		"Symbian OS WHCM"
-rls_string per_description2 	"Obex over USB"
-rls_string per_detailedDescription2     	"Obex over USB(detail)"
-
-// personality three
-rls_string per_manufacturer3 	"Symbian"
-rls_string per_product3		"Symbian OS MSCC"
-rls_string per_description3 	"USB Mass Storage"
-rls_string per_detailedDescription3    	"USB Mass Storage(detail)"
-
-// personality four
-rls_string per_manufacturer4 	"Symbian"
-rls_string per_product4		"Symbian OS MTP"
-rls_string per_description4 	"MTP over USB"
-rls_string per_detailedDescription4    	"MTP over USB(detail)"
-
-// personality five
-rls_string per_manufacturer5 	"Symbian"
-rls_string per_product5		"Symbian OS RNDIS"
-rls_string per_description5 	"IP over USB - RNDIS"
-rls_string per_detailedDescription5    	"IP over USB - RNDIS(detail)"
--- a/usbmgmt/usbmgr/usbman/server/SRC/usbman_10.rls	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* @file
-* This file serves a template for the purpose of localization. The
-* content of this file shall be properly filled with unicode pertaining
-* to the configured language.
-* localized strings, US english
-*
-*/
-
-
-// personality one
-rls_string per_manufacturer1 	"Symbian"
-rls_string per_product1		"Symbian OS ACM"
-rls_string per_description1 	"Serial Emulation"
-rls_string per_detailedDescription1    	"Serial Emulation(detail)"
-
-// personality two
-rls_string per_manufacturer2 	"Symbian"
-rls_string per_product2		"Symbian OS WHCM"
-rls_string per_description2 	"Obex over USB"
-rls_string per_detailedDescription2     	"Obex over USB(detail)"
-
-// personality three
-rls_string per_manufacturer3 	"Symbian"
-rls_string per_product3		"Symbian OS MSCC"
-rls_string per_description3 	"USB Mass Storage"
-rls_string per_detailedDescription3    	"USB Mass Storage(detail)"
-
-// personality four
-rls_string per_manufacturer4 	"Symbian"
-rls_string per_product4		"Symbian OS MTP"
-rls_string per_description4 	"MTP over USB"
-rls_string per_detailedDescription4    	"MTP over USB(detail)"
-
-// personality five
-rls_string per_manufacturer5 	"Symbian"
-rls_string per_product5		"Symbian OS RNDIS"
-rls_string per_description5 	"IP over USB - RNDIS"
-rls_string per_detailedDescription5   	"IP over USB - RNDIS(detail)"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/usbman/server/SRC/usbmancenrepmanager.cpp	Fri Jun 25 13:19:39 2010 +0800
@@ -0,0 +1,489 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implements a utility class which read information from Central Repository
+
+
+
+#include <centralrepository.h>
+#include <usb/usblogger.h>
+#ifdef SYMBIAN_FEATURE_MANAGER
+    #include <featureuids.h>
+    #include <featdiscovery.h>
+#endif
+#include "usbmanprivatecrkeys.h"
+#include "UsbSettings.h"
+#include "CPersonality.h"
+#include "usbmancenrepmanager.h"
+#include "CUsbDevice.h"
+
+
+#ifdef __FLOG_ACTIVE
+_LIT8(KLogComponent, "USBSVR");
+#endif
+ 
+_LIT(KUsbCenRepPanic, "UsbCenRep");
+
+/**
+ * Panic codes for the USB Central Repository Manager
+ */
+enum TUsbCenRepPanic
+    {
+    ECenRepObserverNotStopped = 0,
+    ECenRepObserverAlreadySet,
+    ECenRepConfigError,
+    ECenRepFeatureManagerError,
+    };
+
+// ---------------------------------------------------------------------------
+// Private consctruction   
+// ---------------------------------------------------------------------------
+//
+CUsbManCenRepManager::CUsbManCenRepManager(CUsbDevice& aUsbDevice)
+  : iUsbDevice( aUsbDevice )
+	{
+    LOG_FUNC
+	}
+
+// ---------------------------------------------------------------------------
+// The first phase construction   
+// ---------------------------------------------------------------------------
+//
+CUsbManCenRepManager* CUsbManCenRepManager::NewL(CUsbDevice& aUsbDevice)
+    {
+    LOG_STATIC_FUNC_ENTRY
+    CUsbManCenRepManager* self = new (ELeave) CUsbManCenRepManager(aUsbDevice);
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// The second phase construction   
+// ---------------------------------------------------------------------------
+//
+void CUsbManCenRepManager::ConstructL()
+    {
+    LOG_FUNC
+    // Open the Central Repository
+    iRepository = CRepository::NewL( KCRUidUSBManagerConfiguration );
+    CheckSignatureL();
+    }
+
+// ---------------------------------------------------------------------------
+// Deconstruction   
+// ---------------------------------------------------------------------------
+//
+CUsbManCenRepManager::~CUsbManCenRepManager()
+	{
+    LOG_FUNC
+    delete iRepository;
+	}
+
+// ---------------------------------------------------------------------------
+// Read specific Key whose value type is String   
+// ---------------------------------------------------------------------------
+//
+HBufC* CUsbManCenRepManager::ReadStringKeyLC( TUint32 aKeyId )
+	{
+    LOG_FUNC
+    HBufC* keyBuf = HBufC::NewLC( NCentralRepositoryConstants::KMaxUnicodeStringLength );
+    TPtr key = keyBuf->Des();
+
+    LEAVEIFERRORL( iRepository->Get( aKeyId, key ) );
+	LOGTEXT3(_L("LocSets: ReadStringKeyLC id: %x, val: %S"), aKeyId, &key ); 
+
+    return keyBuf;
+    }
+
+// ---------------------------------------------------------------------------
+// Read specific Key whose value type is TInt   
+// ---------------------------------------------------------------------------
+//
+TInt CUsbManCenRepManager::ReadKeyL( TUint32 aKeyId )
+    {
+    LOG_FUNC
+    TInt key;
+    
+    LEAVEIFERRORL( iRepository->Get( aKeyId, key ) );
+    LOGTEXT3(_L("LocSets: ReadKeyL id: 0x%x, val: 0x%x"), aKeyId, key); 
+
+    return key;
+    }
+
+// ---------------------------------------------------------------------------
+// Check wheather cenrep's version is supported by cenrep manager 
+// ---------------------------------------------------------------------------
+//
+void CUsbManCenRepManager::CheckSignatureL()
+    {
+    LOG_FUNC
+    iSignature = ReadKeyL( KUsbManConfigSign );
+    
+    if ( iSignature < TUsbManagerSupportedVersionMin ||
+            iSignature > TUsbManagerSupportedVersionMax )
+        {
+        LEAVEL(KErrNotSupported);
+        }    
+    }
+
+// ---------------------------------------------------------------------------
+// Read Device configuration table 
+// ---------------------------------------------------------------------------
+//
+void CUsbManCenRepManager::ReadDeviceConfigurationL(CUsbDevice::TUsbDeviceConfiguration& aDeviceConfig)
+    {
+    LOG_FUNC
+    //Only support version four right now.
+    __ASSERT_DEBUG( ( TUsbManagerSupportedVersionFour == iSignature ), _USB_PANIC( KUsbCenRepPanic, ECenRepConfigError ) );
+    
+    //Shall only have on device configuration setting.
+    TUint32 devConfigCount = ReadKeyL( KUsbManDeviceCountIndexKey );
+    __ASSERT_DEBUG( ( devConfigCount == 1 ), _USB_PANIC( KUsbCenRepPanic, ECenRepConfigError ) );
+        
+    RArray<TUint32> keyArray;
+    CleanupClosePushL( keyArray );
+    LEAVEIFERRORL( iRepository->FindL( KUsbManDevicePartialKey, KUsbManConfigKeyMask, keyArray ) );
+    
+    TInt keyCount = keyArray.Count();
+    LOGTEXT2( _L("CUsbManCenRepManager::ReadDeviceConfigurationL keyCount of device config = %d"), keyCount );
+    
+    //Get each extension type key value and store in iExtList array
+    for( TInt index = 0; index < keyCount; index++ )
+        {
+        TUint32 key = keyArray[index];
+        TUint32 fieldId = ( key & KUsbManConfigFieldMask );
+        LOGTEXT2( _L("CUsbManCenRepManager::ReadDeviceConfigurationL fieldId = %d"), fieldId );
+        if( fieldId == KUsbManDeviceVendorIdKey )
+            {
+            aDeviceConfig.iVendorId = ReadKeyL( key );
+            }
+        else if( fieldId == KUsbManDeviceManufacturerNameKey )
+            {
+            HBufC* manufacturer = ReadStringKeyLC( key );
+            TPtr manufacturerPtr = manufacturer->Des();
+            aDeviceConfig.iManufacturerName->Des().Copy( manufacturerPtr ); 
+            CleanupStack::PopAndDestroy( manufacturer );
+            }
+        else if( fieldId == KUsbManDeviceProductNameKey )
+            {
+            HBufC* product = ReadStringKeyLC( key );
+            TPtr productName = product->Des();
+            aDeviceConfig.iProductName->Des().Copy( productName ); 
+            CleanupStack::PopAndDestroy( product );
+            }
+        else
+            {
+            _USB_PANIC( KUsbCenRepPanic, ECenRepConfigError );
+            }
+        }
+    CleanupStack::PopAndDestroy( &keyArray );  
+    }
+
+
+// ---------------------------------------------------------------------------
+// Read personality table 
+// ---------------------------------------------------------------------------
+//
+void CUsbManCenRepManager::ReadPersonalitiesL(RPointerArray<CPersonality>& aPersonalities)
+	{
+	LOG_FUNC
+    
+	//Only support version four right now.
+	__ASSERT_DEBUG( ( TUsbManagerSupportedVersionFour == iSignature ), _USB_PANIC( KUsbCenRepPanic, ECenRepConfigError ) );
+	
+	// Get the personality count.
+	TUint32 personalityCount = ReadKeyL( KUsbManDevicePersonalitiesCountIndexKey );
+	LOGTEXT2( _L("CUsbManCenRepManager::ReadPersonalitiesL personalityCount = %d"), personalityCount );
+	
+	RArray<TUint32> keyArray;
+	CleanupClosePushL( keyArray ); 
+	
+
+	// Go through all personalities and store them.
+    for( TInt personalityIdx = 0; personalityIdx < personalityCount; personalityIdx++ )
+        {
+        CPersonality* personality = CPersonality::NewL();
+        CleanupStack::PushL( personality );
+        
+        // Find the keys belonging to the personality
+        TUint32 devicePersonalitiesKey = KUsbManDevicePersonalitiesPartialKey | ( personalityIdx << KUsbManPersonalitiesOffset );
+        LEAVEIFERRORL( iRepository->FindL( devicePersonalitiesKey, KUsbManConfigKeyMask, keyArray ) );
+        
+        TInt keyCount = keyArray.Count();
+        LOGTEXT2( _L("CUsbManCenRepManager::ReadPersonalitiesL keyCount of personality = %d"), keyCount );
+        
+        // Get each key value of the personality and store it.
+        for( TInt keyIdx = 0; keyIdx < keyCount; keyIdx++ )
+            {
+            TUint32 key = keyArray[keyIdx];
+            TUint32 fieldId = (key & KUsbManConfigFieldMask);
+            LOGTEXT2( _L("CUsbManCenRepManager::ReadPersonalitiesL key id of personality = %d"), fieldId );
+            switch( fieldId )
+                {
+                case KUsbManDevicePersonalitiesDeviceClassKey:
+                    personality->SetDeviceClass(ReadKeyL( key ));
+                    break;
+                case KUsbManDevicePersonalitiesDeviceSubClassKey:
+                    personality->SetDeviceSubClass(ReadKeyL( key ));
+                    break;
+                case KUsbManDevicePersonalitiesProtocolKey:
+                    personality->SetDeviceProtocol(ReadKeyL( key ));
+                    break;
+                case KUsbManDevicePersonalitiesNumConfigKey:
+                    personality->SetNumConfigurations(ReadKeyL( key ));
+                    break;
+                case KUsbManDevicePersonalitiesProductIdKey:
+                    personality->SetProductId(ReadKeyL( key ));
+                    break;
+                case KUsbManDevicePersonalitiesBcdDeviceKey:
+                    personality->SetBcdDevice(ReadKeyL( key ));
+                    break;
+                case KUsbManDevicePersonalitiesFeatureIdKey:
+                    personality->SetFeatureId(ReadKeyL( key ));
+                    break;
+                case KUsbManDevicePersonalitiesPersonalityIdKey:
+                    personality->SetPersonalityId(ReadKeyL( key ));
+                    ReadConfigurationsForPersonalityL( personality->PersonalityId(), *personality );
+                    break;
+                case KUsbManDevicePersonalitiesPropertyKey:
+                    personality->SetProperty(ReadKeyL( key ));
+                    break;
+                case KUsbManDevicePersonalitiesDescriptionKey:
+                    {
+                    HBufC* description;
+                    description = ReadStringKeyLC( key );
+                    personality->SetDescription( description );
+                    CleanupStack::PopAndDestroy( description );
+                    break;
+                    }
+                default:
+                    _USB_PANIC( KUsbCenRepPanic, ECenRepConfigError );
+                    break;
+                }
+            }
+        
+        personality->SetVersion(iSignature);
+        
+        //The following code is to check whether we support this personality. 
+        if(personality->FeatureId() != KUsbManFeatureNotConfigurable)
+            {
+            if(!IsFeatureSupportedL(personality->FeatureId()))
+                {
+                CleanupStack::PopAndDestroy(personality);
+                continue;           
+                }
+            }
+        
+        //The following code is to check whether we support this personality. It will not include:
+        //1)the personality which contains single class which is not supported
+        //2)the personality which contains multiple classes which are all not supported
+        TBool isPersonalitySupport = EFalse;
+        TInt configurationCount = personality->PersonalityConfigs().Count();
+        for(TInt configurationIdx = 0; configurationIdx < configurationCount; ++configurationIdx)
+            {
+            const RPointerArray<CPersonalityConfigurations>& personalityConfigs = personality->PersonalityConfigs();
+            CPersonalityConfigurations *personalityConfigurations = personalityConfigs[configurationIdx];
+            TInt classesCount = personalityConfigurations->Classes().Count();
+            if(0 != classesCount)
+                {
+                isPersonalitySupport = ETrue;
+                break;
+                }
+            }
+       
+        if(isPersonalitySupport)
+            {
+            LOGTEXT2( _L("CUsbManCenRepManager::ReadPersonalitiesL Personality ID: %d is supported"), personality->PersonalityId() );
+            aPersonalities.Append( personality );
+            CleanupStack::Pop( personality );
+            }
+        else
+            {
+            LOGTEXT2( _L("CUsbManCenRepManager::ReadPersonalitiesL Personality ID: %d is not supported"), personality->PersonalityId() );
+            CleanupStack::PopAndDestroy(personality);
+            }
+        }
+    CleanupStack::PopAndDestroy( &keyArray );  	
+    }
+
+// ---------------------------------------------------------------------------
+// Read configuration table for specific personality
+// ---------------------------------------------------------------------------
+//
+void CUsbManCenRepManager::ReadConfigurationsForPersonalityL(TInt aPersonalityId, CPersonality& aPersonality)
+    {
+    LOG_FUNC
+    RArray<TUint32> configArray;
+    CleanupClosePushL(configArray);
+ 
+    //Only support version four right now.
+    __ASSERT_DEBUG( ( TUsbManagerSupportedVersionFour == iSignature ), _USB_PANIC( KUsbCenRepPanic, ECenRepConfigError ) );
+    
+    LEAVEIFERRORL( iRepository->FindEqL( KUsbManDeviceConfigurationsPartialKey, KUsbManConfigFirstEntryMask, aPersonalityId, configArray ) );
+    
+    // Get the configuration count.
+    TUint32 configCount = configArray.Count();
+    TUint32 totalConfigCount = ReadKeyL( KUsbManDeviceConfigurationsCountIndexKey );
+
+    LOGTEXT4( _L("ReadConfigurationsForPersonalityL: aPersonalityId = %d total configCount = %d configArray.Count() = %d"), aPersonalityId, totalConfigCount, configArray.Count());
+    
+    //This is intend to handle one special case that key 0x2ff00's value
+    // equal our target personality id.
+    if(totalConfigCount == aPersonalityId)
+        {
+        --configCount;
+        }
+    
+    TInt keyCount = 0;
+    if(TUsbManagerSupportedVersionFour == iSignature)
+        {
+        keyCount = KUsbManDeviceConfigurationsKeyCountVersionFour;
+        }
+    
+    // Go through all configurations belonging to this personality 'aPersonalityId'
+    for ( TInt configIdx = 0; configIdx < configCount; configIdx++ )
+        {
+        CPersonalityConfigurations* config = new ( ELeave ) CPersonalityConfigurations;
+        CleanupStack::PushL( config );
+        TUint32 key = configArray[configIdx];
+
+        // Get each key value in the configuration and store it
+        for ( TInt keyIdx = 0; keyIdx < keyCount; keyIdx++ )
+            {
+            TUint32 fieldId = ( (key + keyIdx ) & KUsbManConfigFieldMask );
+            TInt keyValue = -1;
+            LOGTEXT4( _L("ReadConfigurationsForPersonalityL fieldId = %d configIdx = %d keyIdx = %d"), fieldId, configIdx, keyIdx );
+            
+            if(KUsbManDeviceConfigurationsPersonalityIdKey == fieldId)
+                {
+                TRAPD( err, keyValue = ReadKeyL( key + keyIdx ) );
+                if( err == KErrNone )
+                    {
+                    __ASSERT_DEBUG( ( keyValue == aPersonalityId ), _USB_PANIC( KUsbCenRepPanic, ECenRepConfigError ) );
+                    config->SetPersonalityId( keyValue );
+                    }
+                }
+            else if(KUsbManDeviceConfigurationsIdKey == fieldId)
+                {
+                TRAPD( err, keyValue = ReadKeyL( key + keyIdx ) );
+                if( err == KErrNone )
+                    {
+                    config->SetConfigId(keyValue);
+                    }
+                }
+            else if(KUsbManDeviceConfigurationsClassUidsKey == fieldId)
+                {
+                HBufC* keyValueBuf = ReadStringKeyLC( key + keyIdx );                
+                TPtr keyPtr = keyValueBuf->Des();
+                
+                RArray<TUint> classUids;
+                CleanupClosePushL( classUids );
+
+                iUsbDevice.ConvertUidsL( keyPtr, classUids );
+                TInt uidsCnt = classUids.Count();
+                 
+                // Get featureId of each class and store each class.
+                TInt featureId = KUsbManFeatureNotConfigurable;
+                CPersonalityConfigurations::TUsbClasses usbClass;                     
+                for ( TInt uidIdx = 0; uidIdx < uidsCnt; uidIdx++ )
+                    {
+                    usbClass.iClassUid = TUid::Uid( classUids[uidIdx] );
+                    usbClass.iFeatureId = featureId; // By default
+                    if ( IsClassConfigurableL( classUids[uidIdx], featureId ) )
+                        {                                
+                        usbClass.iFeatureId = featureId;
+                        if(IsFeatureSupportedL(featureId))
+                            {
+                            config->AppendClassesL( usbClass );
+                            }
+                        }
+                    else
+                        {
+                        config->AppendClassesL( usbClass );
+                        }
+                    }
+
+                CleanupStack::PopAndDestroy( &classUids ); // close uid array 
+                CleanupStack::PopAndDestroy( keyValueBuf );
+                }
+            else
+                {
+                _USB_PANIC( KUsbCenRepPanic, ECenRepConfigError );
+                }
+            }
+        aPersonality.AppendPersonalityConfigsL( config );
+
+        CleanupStack::Pop( config );
+        }
+
+    CleanupStack::PopAndDestroy( &configArray );     
+    }
+
+// ---------------------------------------------------------------------------
+// Check the class belonging to a personality configurable or not.
+// ---------------------------------------------------------------------------
+//
+TBool CUsbManCenRepManager::IsClassConfigurableL(TUint aClassId, TInt& aFeatureId)
+    {
+    LOG_FUNC
+    TBool classConfigurable = EFalse;
+    RArray<TUint32> keyArray;
+    CleanupClosePushL(keyArray);
+    
+    TInt err = iRepository->FindEqL( KUsbManDeviceConfigurableClassesPartialKey, KUsbManConfigFirstEntryMask, (TInt)aClassId, keyArray );
+    LOGTEXT3( _L("CUsbManCenRepManager::IsClassConfigurableL: aClassId = 0x%x err = %d "), aClassId, err);
+    switch ( err )
+        {
+        case KErrNotFound:
+            break;
+        case KErrNone:
+            {
+            __ASSERT_DEBUG( ( keyArray.Count() == 1 ), _USB_PANIC( KUsbCenRepPanic, ECenRepConfigError ) );
+            // The array size always is 1, so here using 0 as index.
+            aFeatureId = ReadKeyL( keyArray[0] | KUsbManDeviceConfigurableClassesFeatureIdKey );
+            classConfigurable = ETrue;
+            break;
+            }
+        default:
+            LEAVEL( err );
+            break;
+        }    
+    
+    CleanupStack::PopAndDestroy( &keyArray );     
+    return classConfigurable;
+    }
+
+// ---------------------------------------------------------------------------
+// Check the class belonging to a personality support or not.
+// ---------------------------------------------------------------------------
+//
+TBool CUsbManCenRepManager::IsFeatureSupportedL(TInt aFeatureId)
+    {
+    LOG_FUNC
+#ifdef SYMBIAN_FEATURE_MANAGER
+    if(CFeatureDiscovery::IsFeatureSupportedL(TUid::Uid(aFeatureId)))
+        {
+        LOGTEXT2( _L("CUsbManCenRepManager::IsFeatureSupportedL featureId = 0x%x supported"), aFeatureId );
+        return ETrue;
+        }
+    else
+        {
+        LOGTEXT2( _L("CUsbManCenRepManager::IsFeatureSupportedL featureId = 0x%x not supported"), aFeatureId );
+        return EFalse;
+        }
+#else
+    _USB_PANIC( KUsbCenRepPanic, ECenRepFeatureManagerError )
+#endif    
+    }
--- a/usbmgmt/usbmgr/usbman/server/SRC/usbmanlubbockobex.rss	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Resource file for usbman configuration.
-*
-*/
-
-/**
- @file
-*/
-
-NAME USBM
-
-#include <badef.rh>
-#include "usbman.rh"
-#ifdef LANGUAGE_01 			// UK English  
- 	#include "usbman_01.rls"	
-#elif LANGUAGE_02 	 		// French  
- 	#include "usbman_02.rls"	
-#elif defined LANGUAGE_03  		// German
- 	#include "usbman_03.rls"
-#elif defined LANGUAGE_10  		// US English
- 	#include "usbman_10.rls"
-#else					// default to UK English strings in usbman.rsc
- 	#include "usbman_01.rls"	
-#endif      
-
-RESOURCE BA_RSS_SIGNATURE
-	{
-	signature = 3;
-	}
-
-RESOURCE usb_configuration usb_config
-	{
-	}
-	
-		
-RESOURCE PERSONALITY_ARRAY device_personalities
-	{
-	personalities = 
-		{
-		PERSONALITY
-			{
-			bDeviceClass = 02;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x000b;
-			bcdDevice = 0;
-			manufacturer = per_manufacturer1;
-			product = per_product1;
-			id = 1;					
-			class_uids = "101FBF22";    			
-			description = per_description1;
-            		detailedDescription = per_detailedDescription1;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 1;
-			bDeviceSubClass = 2;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x000d;             // instead of 0x000c
-			bcdDevice = 2;
-			manufacturer= per_manufacturer2;
-			product = per_product2;
-			id = 2;					
-			class_uids = "101fbf24";			
-			description = per_description2;
-            		detailedDescription = per_detailedDescription2;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 0;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x1111;
-			bcdDevice = 0;
-			manufacturer = per_manufacturer3;
-			product = per_product3;
-			id = 3;					
-			class_uids = "10204bbc";			
-			description = per_description3;
-            		detailedDescription = per_detailedDescription3;
-			property = 0x00000000;
-			}
-
-		};
-	}
-
-
--- a/usbmgmt/usbmgr/usbman/server/SRC/usbmanmtp.rss	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Resource file for usbman configuration.
-*
-*/
-
-/**
- @file
-*/
-
-NAME USBM
-
-#include <badef.rh>
-#include "usbman.rh"
-
-#ifdef LANGUAGE_01 			// UK English  
- 	#include "usbman_01.rls"	
-#elif LANGUAGE_02 	 		// French  
- 	#include "usbman_02.rls"	
-#elif defined LANGUAGE_03  		// German
- 	#include "usbman_03.rls"
-#elif defined LANGUAGE_10  		// US English
- 	#include "usbman_10.rls"
-#else					// default to UK English strings in usbman.rsc
- 	#include "usbman_01.rls"	
-#endif      
-
-RESOURCE BA_RSS_SIGNATURE
-	{
-	signature = 3;
-	}
-
-RESOURCE usb_configuration usb_config
-	{
-	}
-	
-		
-RESOURCE PERSONALITY_ARRAY device_personalities
-	{
-	personalities = 
-		{
-		PERSONALITY
-			{
-			bDeviceClass = 02;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x000b;
-			bcdDevice = 0;
-			manufacturer = per_manufacturer1;
-			product = per_product1;
-			id = 1;					
-			class_uids = "101FBF22";    			
-			description = per_description1;
-			detailedDescription = per_detailedDescription1;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 1;
-			bDeviceSubClass = 2;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x000c;
-			bcdDevice = 2;
-			manufacturer= per_manufacturer2;
-			product = per_product2;
-			id = 2;					
-			class_uids = "101fbf24";			
-			description = per_description2;
-			detailedDescription = per_detailedDescription2;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 0;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x1113;
-			bcdDevice = 0;
-			manufacturer = per_manufacturer3;
-			product = per_product3;
-			id = 3;					
-			class_uids = "10204bbc";			
-			description = per_description3;
-			detailedDescription = per_detailedDescription3;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 0x00;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x1114;
-			bcdDevice = 0x0100;
-			manufacturer = per_manufacturer4;
-			product = per_product4;
-			id = 4;					
-			class_uids = "102827B3";			
-			description = per_description4;
-			detailedDescription = per_detailedDescription4;
-			property = 0x00000000;
-			}
-
-		// The productId's value of personalities to be implemented in the
-		// future should be > 0x1115, to avoid conflict with IDs used by
-		// other drivers or applications
-
-		};
-	}
-			
--- a/usbmgmt/usbmgr/usbman/server/SRC/usbmanmtprndis.rss	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Resource file for usbman configuration.
-*
-*/
-
-/** 
-@file
- */
-
-NAME USBM
-
-#include <badef.rh>
-#include "usbman.rh"
-
-#ifdef LANGUAGE_01 			// UK English  
- 	#include "usbman_01.rls"	
-#elif LANGUAGE_02 	 		// French  
- 	#include "usbman_02.rls"	
-#elif defined LANGUAGE_03  		// German
- 	#include "usbman_03.rls"
-#elif defined LANGUAGE_10  		// US English
- 	#include "usbman_10.rls"
-#else					// default to UK English strings in usbman.rsc
- 	#include "usbman_01.rls"	
-#endif      
-
-RESOURCE BA_RSS_SIGNATURE
-	{
-	signature = 3;
-	}
-
-RESOURCE usb_configuration usb_config
-	{
-	}
-	
-		
-RESOURCE PERSONALITY_ARRAY device_personalities
-	{
-	personalities = 
-		{
-		PERSONALITY
-			{
-			bDeviceClass = 02;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x000b;
-			bcdDevice = 0;
-			manufacturer = per_manufacturer1;
-			product = per_product1;
-			id = 1;					
-			class_uids = "101FBF22";    			
-			description = per_description1;
-			detailedDescription = per_detailedDescription1;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 1;
-			bDeviceSubClass = 2;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x000c;
-			bcdDevice = 2;
-			manufacturer= per_manufacturer2;
-			product = per_product2;
-			id = 2;					
-			class_uids = "101fbf24";			
-			description = per_description2;
-			detailedDescription = per_detailedDescription2;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 0;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x1113;
-			bcdDevice = 0;
-			manufacturer = per_manufacturer3;
-			product = per_product3;
-			id = 3;					
-			class_uids = "10204bbc";			
-			description = per_description3;
-			detailedDescription = per_detailedDescription3;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 0x00;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x1114;
-			bcdDevice = 0x0100;
-			manufacturer = per_manufacturer4;
-			product = per_product4;
-			id = 4;					
-			class_uids = "102827B3";			
-			description = per_description4;
-			detailedDescription = per_detailedDescription4;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 0x02;
-			bDeviceSubClass = 0x00;
-			protocol = 0x00;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x1115;
-			bcdDevice = 0x0100;
-			manufacturer = per_manufacturer5;
-			product =  per_product5;
-			id = 5;					
-			class_uids = "20013d2f";			
-			description = per_description5;
-			detailedDescription = per_detailedDescription5;
-			property = 0x00000000;
-			}			
-
-		// The productId's value of personalities to be implemented in the
-		// future should be > 0x1115, to avoid conflict with IDs used by
-		// other drivers or applications
-
-		};
-	}
-			
--- a/usbmgmt/usbmgr/usbman/server/SRC/usbmanrndis.rss	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Resource file for usbman configuration.
-*
-*/
-
-/** 
-@file
- */
-
-NAME USBM
-
-#include <badef.rh>
-#include "usbman.rh"
-
-#ifdef LANGUAGE_01 			// UK English  
- 	#include "usbman_01.rls"	
-#elif LANGUAGE_02 	 		// French  
- 	#include "usbman_02.rls"	
-#elif defined LANGUAGE_03  		// German
- 	#include "usbman_03.rls"
-#elif defined LANGUAGE_10  		// US English
- 	#include "usbman_10.rls"
-#else					// default to UK English strings in usbman.rsc
- 	#include "usbman_01.rls"	
-#endif      
-
-RESOURCE BA_RSS_SIGNATURE
-	{
-	signature = 3;
-	}
-
-RESOURCE usb_configuration usb_config
-	{
-	}
-	
-		
-RESOURCE PERSONALITY_ARRAY device_personalities
-	{
-	personalities = 
-		{
-		PERSONALITY
-			{
-			bDeviceClass = 02;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x000b;
-			bcdDevice = 0;
-			manufacturer = per_manufacturer1;
-			product = per_product1;
-			id = 1;					
-			class_uids = "101FBF22";    			
-			description = per_description1;
-			detailedDescription = per_detailedDescription1;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 1;
-			bDeviceSubClass = 2;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x000c;
-			bcdDevice = 2;
-			manufacturer= per_manufacturer2;
-			product = per_product2;
-			id = 2;					
-			class_uids = "101fbf24";			
-			description = per_description2;
-			detailedDescription = per_detailedDescription2;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 0;
-			bDeviceSubClass = 0;
-			protocol = 0;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x1113;
-			bcdDevice = 0;
-			manufacturer = per_manufacturer3;
-			product = per_product3;
-			id = 3;					
-			class_uids = "10204bbc";			
-			description = per_description3;
-			detailedDescription = per_detailedDescription3;
-			property = 0x00000000;
-			},
-		PERSONALITY
-			{
-			bDeviceClass = 0x02;
-			bDeviceSubClass = 0x00;
-			protocol = 0x00;
-			numConfigurations = 1;
-			vendorId = 0x0e22;
-			productId = 0x1115;
-			bcdDevice = 0x0100;
-			manufacturer = per_manufacturer5;
-			product =  per_product5;
-			id = 4;					
-			class_uids = "20013d2f";			
-			description = per_description5;
-			detailedDescription = per_detailedDescription5;
-			property = 0x00000000;
-			}
-
-		// The productId's value of personalities to be implemented in the
-		// future should be > 0x1115, to avoid conflict with IDs used by
-		// other drivers or applications
-
-		};
-	}
-			
Binary file usbmgmt/usbmgr/usbman/server/conf/usbmanager_101fe1db.crml has changed
--- a/usbmgmt/usbmgr/usbman/server/data/demo_mcci_usbman.rh	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Resource header for usbman configuration.
-* this file can be renamed usbman.rh and pasted to ser-comms\usb\usbman\inc
-*
-*/
-
-STRUCT usb_configuration
-	{
-	WORD	vendorId		= 0x040E;	//values matching demo mcci inf files on PC
-	WORD	productId		= 0xF10F;	// use those to have the symbian device using mcci drivers
-	WORD	bcdDevice		= 0x0000;
-	LTEXT	manufacturer	= "Symbian Ltd.";
-	LTEXT	product			= "Symbian OS";
-	}
--- a/usbmgmt/usbmgr/usbman/server/group/bld.inf	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/group/bld.inf	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -21,13 +21,13 @@
 PRJ_EXPORTS
 ../public/Usb_std.h						SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb_std.h)
 ../public/MUsbDeviceNotify.h			SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(musbdevicenotify.h)
-../public/usbman.rh						/epoc32/include/usbman.rh
 ../public/usberrors.h					SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usberrors.h)
 ../public/UsbClassUids.h				SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbclassuids.h)
 ../public/usbshared.h					SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/usbshared.h)
 ../public/usbotgdefs.h					SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbotgdefs.h)
 ../public/usbhostdefs.h					SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbhostdefs.h)
-./backup_registration.xml  			/epoc32/data/z/private/101fe1db/backup_registration.xml
+./backup_registration.xml  				/epoc32/data/z/private/101fe1db/backup_registration.xml
+../conf/usbmanager_101fe1db.crml 		OS_LAYER_EXPORTS_CRML(usbmanager_101fe1db.crml)
 
 PRJ_TESTEXPORTS
 
--- a/usbmgmt/usbmgr/usbman/server/group/usbsvrbase.mmp	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/group/usbsvrbase.mmp	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -37,43 +37,13 @@
 source			CUsbDeviceStateWatcher.cpp
 source			UsbUtils.cpp
 source			CPersonality.cpp
+source          usbmancenrepmanager.cpp
 
 userinclude		../INC
 userinclude		../public
 userinclude		../../../host/fdf/production/client/public
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
-lang			sc 01 02 03 10	// UK English, French, German, US English
-
-START RESOURCE usbman.rss
-TARGETPATH /private/101fe1db
-HEADER
-END
-
-#ifdef SYMBIAN_USB_RNDIS
-START RESOURCE usbmanrndis.rss
-TARGETPATH /private/101fe1db
-HEADER
-END
-#endif
-
-START RESOURCE usbmanmtp.rss
-TARGETPATH /private/101fe1db
-HEADER
-END
-
-#ifdef SYMBIAN_USB_RNDIS
-START RESOURCE usbmanmtprndis.rss
-TARGETPATH /private/101fe1db
-HEADER
-END
-#endif
-	
-START RESOURCE usbmanlubbockobex.rss
-TARGETPATH /private/101fe1db
-HEADER
-END
-
 library			euser.lib
 library			usbclasscontroller.lib
 library			ecom.lib
@@ -81,5 +51,10 @@
 library			bafl.lib
 library			usbmanextensionplugin.lib
 library			sysutil.lib
+library         centralrepository.lib 
+
+#ifdef SYMBIAN_FEATURE_MANAGER
+library         featdiscovery.lib
+#endif
 
 #include <usb/usblogger.mmh>
--- a/usbmgmt/usbmgr/usbman/server/public/rusb.h	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/public/rusb.h	Fri Jun 25 13:19:39 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -85,7 +85,6 @@
 	EUsbGetOtgDescriptor,
 	EUsbDbgAlloc,
 	EUsbRequestSession,
-	EUsbGetDetailedDescription,
 	EUsbGetPersonalityProperty
 	};
 
--- a/usbmgmt/usbmgr/usbman/server/public/usbman.rh	Fri Jun 25 13:07:44 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Resource header for usbman configuration.
-*
-*/
-
-/**
- @file
- @publishedPartner
- @released
-*/
-
-STRUCT usb_configuration
-	{
-	/** 
-		vendorId is the 16-bit number that is assigned by USB-ORG.
-	 */
-	WORD	vendorId		= 0x0e22;
-
-	/** 
-		productId is a 16-bit number that is assigned by the licensee to 
-		uniquely identify this particular type of device.
-	 */
-	WORD	productId		= 0x000b;
-
-	/** 
-		bcdDevice may be optionally used during enumeration, this depends on 
-		the licensee's policy regarding device upgrades (new versions of a 
-		device may require to use new host driver files)
-	 */
-	WORD	bcdDevice		= 0x0000;
-
-	/** 
-		manufacturerString is displayed on the Windows screen during first 
-		enumeration of the device, and should identify the same company that 
-		owns the USB vendorId given above
-	 */
-	LTEXT	manufacturer	= "Symbian Ltd.";
-
-	/** 
-		productString is displayed on the Windows screen during first 
-		enumeration of the device, and should identify the same device that is 
-		implied by the productId given above
-	 */
-	LTEXT	product			= "Symbian OS";
-	}
-
-STRUCT PERSONALITY
-	{
-	/** 	Class code (assigned by the USB-IF). If this field is set to zero, each interface within 
-		a configuration specifies its own class information and the various interfaces operate independently. 
-
-		If this field is set to a value between 1 and FEH, the device supports different class
-		specifications on different interfaces and the interfaces may not operate independently.
-		This value identifies the class definition used for the aggregate interfaces.
-
-		If this field is set to FFH, the device class is vendor-specific. */
-	BYTE	bDeviceClass;
-
-	/** 	Subclass code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass field.
-		If the bDeviceClass field is set to zero, this field must also be set to zero.
-		If the bDeviceClass field is not set to FFH, all values are reserved for assignment by the USB-IF. */
-	BYTE	bDeviceSubClass;
-
-	/**	Protocol code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass and the
-		bDeviceSubClass fields. If a device supports class-specific protocols on a device basis as opposed to an 
-		interface basis, this code identifies the protocols that the device uses as defined by the specification of the device class.
-		If this field is set to zero, the device does not use class-specific protocols on a device basis. However, it may use 
-		classspecific protocols on an interface basis.
-		If this field is set to FFH, the device uses a vendor-specific protocol on a device basis. */
-	BYTE 	protocol;
-
-	/**	Number of possible configurations */
-	BYTE	numConfigurations;
-
-	/** vendorId is the 16-bit number that is assigned by USB-ORG. */
-	WORD 	vendorId;
-
-	/** productId is a 16-bit number that is assigned by the licensee to 
-	uniquely identify this particular personality as type of device . */
-	WORD 	productId;
-
-	/** 	bcdDevice may be optionally used during enumeration, this depends on 
-		the licensee's policy regarding device upgrades */
-	WORD 	bcdDevice;
-
-	/** 	manufacturerString is displayed on the Windows screen during first 
-		enumeration of the device, and should identify the same company that 
-		owns the USB vendorId given above */
-	LTEXT 	manufacturer;
-	
-	/** 	productString is displayed on the Windows screen during first 
-		enumeration of the device, and should identify the same device that is 
-		implied by the productId given above */
-	LTEXT 	product;
-
-	/**	personality id - UID which identified this personality */
-	WORD 	id;					 
-	
-	/**	list of Class Controllers UIDs associated with this personality.
-		UIDs shoud be provided as list of hexadecimal numbers separated by space or comma.
-		Note Do not provide leading 0x or any trailing characters!
-		Example "1Abc3422, 12345678  FE43bc33"
-		Incorrect example "1abc3422, 0x12345678," */
-	LTEXT	class_uids;			
-	
-	/** 	free text description of this personality. */
-	LTEXT 	description;
-
-	/**     free text detailed description of this personality. */
-	LTEXT   detailedDescription;
-
-	/**	personality property - the property of this personality */
-	LONG 	property;					 
-
-	}
-	
-STRUCT PERSONALITY_ARRAY
-	{
-	STRUCT	personalities[];	// STRUCT PERSONALITY
-	}	 
--- a/usbmgmt/usbmgrtest/t_charging_emu/src/tbatterycharging.cpp	Fri Jun 25 13:07:44 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_charging_emu/src/tbatterycharging.cpp	Fri Jun 25 13:19:39 2010 +0800
@@ -21,7 +21,6 @@
 #include <e32svr.h>
 #include <e32base.h>
 #include <e32std.h>
-#include <usbman.rsg>
 #include <f32file.h>
 #include <barsc.h>
 #include <barsread.h>
@@ -129,6 +128,7 @@
 	iPlugin = iExtensionPlugins[0];
 
 	iDummyLdd.Initialise();
+	//iRepository = CRepository::NewL(KUsbBatteryChargingCentralRepositoryUid);
 	User::LeaveIfError(iTimer.CreateLocal());
 	
 	DefinePropertyL(KBattChargWriteRepositoryUid, KBattChargWriteRepositoryKey,RProperty::EInt);
@@ -345,7 +345,7 @@
 
 TInt CDummyUsbDevice::GetNextLine()
 	{
-	TInt newLineOffset = (iPtr.Mid(iFileOffset)).Locate(13);
+	TInt newLineOffset = (iPtr.Mid(iFileOffset)).Locate(13);//Find(_L("\r\n"));
 	if (newLineOffset < 0)
 		{
 		return newLineOffset;
@@ -426,6 +426,7 @@
 			{
 			TInt err = WriteToRepositoryProperty(iCommandValue);
 			
+			//TInt err = iRepository->Set(KUsbBatteryChargingKeyEnabledUserSetting, iCommandValue);
 			iTest(err == KErrNone);
 			}
 			break;
@@ -481,6 +482,8 @@
 			TInt current;			
 			TInt err = GetChargingCurrentFromProperty(current);
 			
+			//TInt err = RProperty::Get(KPropertyUidUsbBatteryChargingCategory,
+			//	KPropertyUidUsbBatteryChargingChargingCurrent, current);
 			iTest(err == KErrNone);
 			iTest(current == iCheckValue);
 			}