usbmgmt/usbmgr/usbman/server/INC/CPersonality.h
branchRCL_3
changeset 15 f92a4f87e424
parent 0 c9bc50fca66e
child 16 012cc2ee6408
--- a/usbmgmt/usbmgr/usbman/server/INC/CPersonality.h	Thu Jul 15 20:42:20 2010 +0300
+++ b/usbmgmt/usbmgr/usbman/server/INC/CPersonality.h	Tue Aug 31 17:01:47 2010 +0300
@@ -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__