Update contrib.
1 // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // e32test/hcr/d_hcrsim.h
23 #include <drivers/hcr.h>
30 #define _ABS(x) (x > 0 ? x : -x)
32 // Device driver names
33 _LIT(KTestHcrRealOwn, "d_hcrext_own");
34 _LIT(KTestHcrSimOwn, "d_hcrsim_own");
35 _LIT(KTestHcrRealClient, "d_hcrext_client");
36 _LIT(KTestHcrSimClient, "d_hcrsim_client");
38 const TUint KTestBenchmarkNumberOfSettingsInCategory = 1001;
39 const HCR::TCategoryUid KTestBenchmarkCategoryId = 0x60000000;
41 // The following flags are used when calling InitExtension() in order to modify
42 // the behaviour of the test PSL.
43 enum TTestPslConfiguration {
44 // Make PSL return NULL when asked for the address of the Compiled Repository
45 ETestNullRepository = 0x1,
47 // Compiled Repository contains 0 element
48 ETestEmptyRepository = 0x2,
50 // PSL's IgnoreCoreImgRepository() returns ETrue when this is set
51 ETestIgnoreCoreImgRepository = 0x4,
53 // Use Corrupt Repository (not ordered)
54 ETestCorruptRepository1 = 0x8,
56 // Use Corrupt Repository (has duplicates)
57 ETestCorruptRepository2 = 0x10,
59 // Set Override Repository address to the Empty Compiled Repository
60 ETestEnableOverrideRepository = 0x20,
62 // Make PSL fail to create a variant object
63 ETestVariantObjectCreateFail = 0x40,
65 // Make PSL initialisation fail
66 ETestInitialisationFail = 0x80,
68 // Use bad repository with NULL ordered list
69 ETestNullOrderedList = 0x100,
71 // Make PSL return NULL when asked for the address of the Compiled Repository
72 // but return KErrNone
73 ETestNullRepositoryKErrNone = 0x200,
75 // GetCompiledRepositoryAddress return wrong error code
76 ETestBadErrorCode = 0x400,
79 class RHcrSimTestChannel : public RBusLogicalChannel
84 // HCR Published API's
86 EHcrFindNumSettingsInCategory,
87 EHcrFindSettingsCategory,
88 EHcrFindSettingsPattern,
106 // HCR Internal API's
108 EHcrSwitchRepository,
112 EHcrGetInitExtensionTestResults,
113 EHcrHasRepositoryInSmr,
114 EHcrBenchmarkGetSettingInt,
115 EHcrBenchmarkGetSettingArray,
116 EHcrBenchmarkGetSettingDes,
117 EHcrBenchmarkFindNumSettingsInCategory,
118 EHcrBenchmarkFindSettings,
119 EHcrBenchmarkGetTypeAndSize,
120 EHcrBenchmarkGetWordSettings,
123 #ifndef __KERNEL_MODE__
124 inline TInt Open(const TDesC& aLdd);
125 inline TInt GetLinAddr(const TSettingId& aId, TLinAddr& aValue);
126 inline TInt FindNumSettingsInCategory(TCategoryUid aCatUid);
127 inline TInt FindSettings(TCategoryUid aCatUid,
128 TInt aMaxNum, TElementId* aElIds, TSettingType* aTypes,
130 inline TInt FindSettings(TCategoryUid aCat, TInt aMaxNum,
131 TUint32 aMask, TUint32 aPattern, TElementId* aElIds,
132 TSettingType* aTypes, TUint16* aLens);
133 inline TInt GetTypeAndSize(const TSettingId& aId,
134 TSettingType& aType, TUint16& aLen);
135 inline TInt GetWordSettings(TInt aNum, const SSettingId aIds[],
136 TInt32 aValues[], TSettingType aTypes[],
138 inline TInt GetInt(const TSettingId& aId, TInt64& aValue);
139 inline TInt GetInt(const TSettingId& aId, TInt32& aValue);
140 inline TInt GetInt(const TSettingId& aId, TInt16& aValue);
141 inline TInt GetInt(const TSettingId& aId, TInt8& aValue);
142 inline TInt GetBool(const TSettingId& aId, TBool& aValue);
143 inline TInt GetData(const TSettingId& aId, TDes8& aValue);
144 inline TInt GetData(const TSettingId& aId, TUint16 aMaxLen,
145 TUint8* aValue, TUint16& aLen);
146 inline TInt GetUInt(const TSettingId& aId, TUint64& aValue);
147 inline TInt GetUInt(const TSettingId& aId, TUint32& aValue);
148 inline TInt GetUInt(const TSettingId& aId, TUint16& aValue);
149 inline TInt GetUInt(const TSettingId& aId, TUint8& aValue);
150 inline TInt GetArray(const TSettingId& aId, TUint16 aMaxLen,
151 TInt32* aValue, TUint16& aLen);
152 inline TInt GetArray(const TSettingId& aId, TUint16 aMaxLen,
153 TUint32* aValue, TUint16& aLen);
154 inline TInt GetString(const TSettingId& aId, TDes8& aValue);
155 inline TInt GetString(const TSettingId& aId, TUint16 aMaxLen,
156 TText8* aValue, TUint16& aLen);
157 inline TInt InitExtension(const TUint32 aFlags = 0);
158 inline TInt SwitchRepository(const TDesC8& aFileName, HCRInternal::TReposId aId);
159 inline TInt CheckIntegrity();
160 inline TInt GetInitExtensionTestResults(TInt& aLine, TInt& aError);
161 inline TInt HasRepositoryInSmr(TBool& aHasSmr, TBool& aHasSmrRep);
162 inline TInt BenchmarkGetSettingInt(const TSettingId& aId, TUint32& aTimeMs);
163 inline TInt BenchmarkGetSettingArray(const TSettingId& aId, TUint32& aTimeMs);
164 inline TInt BenchmarkGetSettingDes(const TSettingId& aId, TUint32& aTimeMs);
165 inline TInt BenchmarkFindNumSettingsInCategory(const TCategoryUid aCatUid, TUint32& aTimeMs);
166 inline TInt BenchmarkFindSettings(const TCategoryUid aCatUid, TUint32& aTimeMs);
167 inline TInt BenchmarkGetTypeAndSize(const TSettingId& aId, TUint32& aTimeMs);
168 inline TInt BenchmarkGetWordSettings(const TCategoryUid aCatUid, TUint32& aTimeMs);
169 #endif // __KERNEL_MODE__
172 #ifndef __KERNEL_MODE__
173 inline TInt RHcrSimTestChannel::Open(const TDesC& aLdd)
174 {return (DoCreate(aLdd, TVersion(1, 0, KE32BuildVersionNumber), KNullUnit, NULL, NULL, EOwnerThread));}
175 inline TInt RHcrSimTestChannel::GetLinAddr(const TSettingId& aId, TLinAddr& aValue)
176 {return DoControl(EHcrGetLinAddr, (TAny*) &aId, (TAny*) &aValue);}
177 inline TInt RHcrSimTestChannel::FindNumSettingsInCategory(TCategoryUid aCatUid)
178 {return DoControl(EHcrFindNumSettingsInCategory, (TAny*) aCatUid);}
179 inline TInt RHcrSimTestChannel::FindSettings(TCategoryUid aCatUid,
180 TInt aMaxNum, TElementId* aElIds, TSettingType* aTypes, TUint16* aLens)
183 args[0] = (TAny*) aCatUid;
184 args[1] = (TAny*) aMaxNum;
185 args[2] = 0; //It's not used
186 args[3] = (TAny*) aElIds;
187 args[4] = (TAny*) aTypes;
188 args[5] = (TAny*) aLens;
189 return DoControl(EHcrFindSettingsCategory, (TAny*) args);
191 inline TInt RHcrSimTestChannel::FindSettings(TCategoryUid aCat, TInt aMaxNum,
192 TUint32 aMask, TUint32 aPattern, TElementId* aElIds,
193 TSettingType* aTypes, TUint16* aLens)
196 args[0] = (TAny*) aCat;
197 args[1] = (TAny*) aMaxNum;
198 args[2] = (TAny*) aMask;
199 args[3] = (TAny*) aPattern;
200 args[4] = 0; //It's not used
201 args[5] = (TAny*) aElIds;
202 args[6] = (TAny*) aTypes;
203 args[7] = (TAny*) aLens;
204 return DoControl(EHcrFindSettingsPattern, (TAny*) args);
206 inline TInt RHcrSimTestChannel::GetTypeAndSize(const TSettingId& aId,
207 TSettingType& aType, TUint16& aLen)
210 args[0] = (TAny*) &aId;
211 args[1] = (TAny*) &aType;
212 args[2] = (TAny*) &aLen;
213 return DoControl(EHcrGetTypeAndSize, (TAny*) args);
215 inline TInt RHcrSimTestChannel::GetWordSettings(TInt aNum, const SSettingId aIds[],
216 TInt32 aValues[], TSettingType aTypes[],
220 args[0] = (TAny*) aNum;
221 args[1] = (TAny*) aIds;
222 args[2] = (TAny*) aValues;
223 args[3] = (TAny*) aTypes;
224 args[4] = (TAny*) aErrors;
225 return DoControl(EHcrGetWordSettings, (TAny*) args);
227 inline TInt RHcrSimTestChannel::GetInt(const TSettingId& aId, TInt64& aValue)
228 {return DoControl(EHcrGetInt64, (TAny*) &aId, (TAny*) &aValue);}
229 inline TInt RHcrSimTestChannel::GetInt(const TSettingId& aId, TInt32& aValue)
230 {return DoControl(EHcrGetInt32, (TAny*) &aId, (TAny*) &aValue);}
231 inline TInt RHcrSimTestChannel::GetInt(const TSettingId& aId, TInt16& aValue)
232 {return DoControl(EHcrGetInt16, (TAny*) &aId, (TAny*) &aValue);}
233 inline TInt RHcrSimTestChannel::GetInt(const TSettingId& aId, TInt8& aValue)
234 {return DoControl(EHcrGetInt8, (TAny*) &aId, (TAny*) &aValue);}
235 inline TInt RHcrSimTestChannel::GetBool(const TSettingId& aId, TBool& aValue)
236 {return DoControl(EHcrGetBool, (TAny*) &aId, (TAny*) &aValue);}
237 inline TInt RHcrSimTestChannel::GetData(const TSettingId& aId, TDes8& aValue)
238 {return DoControl(EHcrGetDataDes, (TAny*) &aId, (TAny*) &aValue);}
239 inline TInt RHcrSimTestChannel::GetData(const TSettingId& aId, TUint16 aMaxLen,
240 TUint8* aValue, TUint16& aLen)
243 args[0] = (TAny*) &aId;
244 args[1] = (TAny*) ((TUint) aMaxLen);
245 args[2] = (TAny*) aValue;
246 args[3] = (TAny*) &aLen;
247 return DoControl(EHcrGetDataArray, (TAny*) args);
249 inline TInt RHcrSimTestChannel::GetUInt(const TSettingId& aId, TUint64& aValue)
250 {return DoControl(EHcrGetUInt64, (TAny*) &aId, (TAny*) &aValue);}
251 inline TInt RHcrSimTestChannel::GetUInt(const TSettingId& aId, TUint32& aValue)
252 {return DoControl(EHcrGetUInt32, (TAny*) &aId, (TAny*) &aValue);}
253 inline TInt RHcrSimTestChannel::GetUInt(const TSettingId& aId, TUint16& aValue)
254 {return DoControl(EHcrGetUInt16, (TAny*) &aId, (TAny*) &aValue);}
255 inline TInt RHcrSimTestChannel::GetUInt(const TSettingId& aId, TUint8& aValue)
256 {return DoControl(EHcrGetUInt8, (TAny*) &aId, (TAny*) &aValue);}
257 inline TInt RHcrSimTestChannel::GetArray(const TSettingId& aId, TUint16 aMaxLen,
258 TInt32* aValue, TUint16& aLen)
261 args[0] = (TAny*) &aId;
262 args[1] = (TAny*) ((TUint) aMaxLen);
263 args[2] = (TAny*) aValue;
264 args[3] = (TAny*) &aLen;
265 return DoControl(EHcrGetArrayInt, (TAny*) args);
267 inline TInt RHcrSimTestChannel::GetArray(const TSettingId& aId, TUint16 aMaxLen,
268 TUint32* aValue, TUint16& aLen)
271 args[0] = (TAny*) &aId;
272 args[1] = (TAny*) ((TUint) aMaxLen);
273 args[2] = (TAny*) aValue;
274 args[3] = (TAny*) &aLen;
275 return DoControl(EHcrGetArrayUInt, (TAny*) args);
277 inline TInt RHcrSimTestChannel::GetString(const TSettingId& aId, TDes8& aValue)
278 {return DoControl(EHcrGetStringDes, (TAny*) &aId, (TAny*) &aValue);}
279 inline TInt RHcrSimTestChannel::GetString(const TSettingId& aId, TUint16 aMaxLen,
280 TText8* aValue, TUint16& aLen)
283 args[0] = (TAny*) &aId;
284 args[1] = (TAny*) ((TUint) aMaxLen);
285 args[2] = (TAny*) aValue;
286 args[3] = (TAny*) &aLen;
287 return DoControl(EHcrGetStringArray, (TAny*) args);
289 inline TInt RHcrSimTestChannel::InitExtension(const TUint32 aFlags)
290 {return DoControl(EHcrInitExtension, (TAny*) aFlags);}
291 inline TInt RHcrSimTestChannel::SwitchRepository(const TDesC8& aFileName, HCRInternal::TReposId aId)
292 {return DoControl(EHcrSwitchRepository, (TAny*) &aFileName, (TAny*) aId);}
293 inline TInt RHcrSimTestChannel::CheckIntegrity()
294 {return DoControl(EHcrCheckIntegrity);}
295 inline TInt RHcrSimTestChannel::GetInitExtensionTestResults(TInt& aLine, TInt& aError)
296 {return DoControl(EHcrGetInitExtensionTestResults, (TAny*) &aLine, (TAny*) &aError);}
297 inline TInt RHcrSimTestChannel::HasRepositoryInSmr(TBool& aHasSmr, TBool& aHasSmrRep)
298 {return DoControl(EHcrHasRepositoryInSmr, (TAny*) &aHasSmr, (TAny*) &aHasSmrRep);}
299 inline TInt RHcrSimTestChannel::BenchmarkGetSettingInt(const TSettingId& aId, TUint32& aTimeMs)
300 {return DoControl(EHcrBenchmarkGetSettingInt, (TAny*) &aId, (TAny*) &aTimeMs);}
301 inline TInt RHcrSimTestChannel::BenchmarkGetSettingArray(const TSettingId& aId, TUint32& aTimeMs)
302 {return DoControl(EHcrBenchmarkGetSettingArray, (TAny*) &aId, (TAny*) &aTimeMs);}
303 inline TInt RHcrSimTestChannel::BenchmarkGetSettingDes(const TSettingId& aId, TUint32& aTimeMs)
304 {return DoControl(EHcrBenchmarkGetSettingDes, (TAny*) &aId, (TAny*) &aTimeMs);}
305 inline TInt RHcrSimTestChannel::BenchmarkFindNumSettingsInCategory(const TCategoryUid aCatUid, TUint32& aTimeMs)
306 {return DoControl(EHcrBenchmarkFindNumSettingsInCategory, (TAny*) aCatUid, (TAny*) &aTimeMs);}
307 inline TInt RHcrSimTestChannel::BenchmarkFindSettings(const TCategoryUid aCatUid, TUint32& aTimeMs)
308 {return DoControl(EHcrBenchmarkFindSettings, (TAny*) aCatUid, (TAny*) &aTimeMs);}
309 inline TInt RHcrSimTestChannel::BenchmarkGetTypeAndSize(const TSettingId& aId, TUint32& aTimeMs)
310 {return DoControl(EHcrBenchmarkGetTypeAndSize, (TAny*) &aId, (TAny*) &aTimeMs);}
311 inline TInt RHcrSimTestChannel::BenchmarkGetWordSettings(const TCategoryUid aCatUid, TUint32& aTimeMs)
312 {return DoControl(EHcrBenchmarkGetWordSettings, (TAny*) aCatUid, (TAny*) &aTimeMs);}
313 #endif // __KERNEL_MODE__