27 #define __CPERSONALITY_H__ |
27 #define __CPERSONALITY_H__ |
28 |
28 |
29 #include <e32std.h> |
29 #include <e32std.h> |
30 #include "CUsbDevice.h" |
30 #include "CUsbDevice.h" |
31 |
31 |
|
32 |
|
33 /** |
|
34 * The CPersonalityConfigurations class keep all information of the table |
|
35 * "Configuration" of USB cenrep |
|
36 */ |
|
37 |
|
38 NONSHARABLE_CLASS(CPersonalityConfigurations) : public CBase |
|
39 { |
|
40 public: |
|
41 /*USB Classes*/ |
|
42 class TUsbClasses |
|
43 { |
|
44 public: |
|
45 TUid iClassUid; |
|
46 TInt iFeatureId; // Indicates the class is configurable or not. |
|
47 }; |
|
48 public: |
|
49 void SetPersonalityId(TInt aPersonalityId); |
|
50 void SetConfigId(TInt aConfigId); |
|
51 inline const RArray<CPersonalityConfigurations::TUsbClasses>& Classes() const; |
|
52 void AppendClassesL(const TUsbClasses& aClasses ); |
|
53 ~CPersonalityConfigurations(); |
|
54 |
|
55 private: |
|
56 TInt iPersonalityId; /*Personality Id*/ |
|
57 TInt iConfigId; /*Configuration Id*/ |
|
58 RArray<TUsbClasses> iClasses; /*Class array*/ |
|
59 }; |
|
60 |
32 NONSHARABLE_CLASS(CPersonality) : public CBase |
61 NONSHARABLE_CLASS(CPersonality) : public CBase |
33 { |
62 { |
34 public: |
63 public: |
35 static CPersonality* NewL(); |
64 static CPersonality* NewL(); |
36 ~CPersonality(); |
65 ~CPersonality(); |
37 |
66 |
38 TInt PersonalityId() const; |
67 const RArray<CPersonalityConfigurations::TUsbClasses>& SupportedClasses() const; |
39 const RArray<TUid>& SupportedClasses() const; |
68 TBool ClassSupported(TUid aClassId) const; |
40 TInt ClassSupported(TUid aClassId) const; |
|
41 const CUsbDevice::TUsbDeviceDescriptor& DeviceDescriptor() const; |
|
42 CUsbDevice::TUsbDeviceDescriptor& DeviceDescriptor(); |
|
43 const TDesC* Manufacturer() const; |
|
44 const TDesC* Product() const; |
|
45 const TDesC* Description() const; |
|
46 TInt AddSupportedClasses(TUid aClassId); |
|
47 void SetId(TInt aId); |
|
48 void SetManufacturer(const TDesC* aManufacturer); |
|
49 void SetProduct(const TDesC* aProduct); |
|
50 void SetDescription(const TDesC* aDescription); |
|
51 static TInt Compare(const TUid& aFirst, const TUid& aSecond); |
69 static TInt Compare(const TUid& aFirst, const TUid& aSecond); |
52 |
70 |
53 const TDesC* DetailedDescription() const; |
71 inline TInt Version() const; |
54 void SetDetailedDescription(const TDesC* aDetailedDescription); |
72 void SetVersion(TInt version); |
|
73 |
|
74 inline TUint32 Property() const; |
|
75 void SetProperty(TUint32 aProperty); |
|
76 |
|
77 inline TUint8 DeviceClass() const; |
|
78 void SetDeviceClass(TUint8 aDeviceClass); |
|
79 |
|
80 inline TUint8 DeviceSubClass() const; |
|
81 void SetDeviceSubClass(TUint8 aDeviceSubClass); |
55 |
82 |
56 TUint32 Property() const; |
83 inline TUint8 DeviceProtocol() const; |
57 void SetProperty(TUint32 aProperty); |
84 void SetDeviceProtocol(TUint8 aDeviceProtocol); |
58 |
85 |
59 TInt Version() const; |
86 inline TUint8 NumConfigurations() const; |
60 void SetVersion(TInt version); |
87 void SetNumConfigurations(TUint8 aNumConfigurations); |
|
88 |
|
89 inline TUint16 ProductId() const; |
|
90 void SetProductId(TUint16 aProductId); |
|
91 |
|
92 inline TInt FeatureId() const; |
|
93 void SetFeatureId(TInt aFeatureId); |
|
94 |
|
95 inline TUint16 BcdDevice() const; |
|
96 void SetBcdDevice(TUint16 aBcdDevice); |
|
97 |
|
98 inline TInt PersonalityId() const; |
|
99 void SetPersonalityId(TInt aPersonalityId); |
|
100 |
|
101 inline const TDesC* Description() const; |
|
102 void SetDescription(const TDesC* aDescription); |
|
103 |
|
104 inline const RPointerArray<CPersonalityConfigurations>& PersonalityConfigs() const; |
|
105 void AppendPersonalityConfigsL(const CPersonalityConfigurations *aPersonalityConfig ); |
61 |
106 |
62 private: |
107 private: |
63 CPersonality(); |
108 CPersonality(); |
64 void ConstructL(); |
109 void ConstructL(); |
|
110 |
|
111 private: |
|
112 TInt iVersion; |
|
113 TUint32 iProperty; |
|
114 TUint8 iDeviceClass; |
|
115 TUint8 iDeviceSubClass; |
|
116 TUint8 iDeviceProtocol; |
|
117 TUint8 iNumConfigurations; |
|
118 TUint16 iProductId; |
|
119 TInt iFeatureId; |
|
120 TUint16 iBcdDevice; |
|
121 TInt iPersonalityId; // personality id |
|
122 HBufC* iDescription; // Own this Personality's description |
|
123 RPointerArray<CPersonalityConfigurations> iPersonalityConfigs; |
|
124 }; |
65 |
125 |
66 private: |
126 |
67 // personality id |
|
68 TInt iId; |
|
69 // USB class ids |
|
70 RArray<TUid> iClassUids; |
|
71 // textual description of manufacturer |
|
72 HBufC* iManufacturer; |
|
73 // textual description of product |
|
74 HBufC* iProduct; |
|
75 // textual description of personality |
|
76 HBufC* iDescription; |
|
77 // USB device descriptor struct |
|
78 CUsbDevice::TUsbDeviceDescriptor iDeviceDescriptor; |
|
79 // detailed textual description of personality |
|
80 HBufC* iDetailedDescription; |
|
81 |
|
82 TInt iVersion; |
|
83 TUint32 iProperty; |
|
84 }; |
|
85 |
127 |
86 #include "CPersonality.inl" |
128 #include "CPersonality.inl" |
87 |
129 |
88 #endif // __CPERSONALITY_H__ |
130 #endif // __CPERSONALITY_H__ |
89 |
131 |