47 DSimulatedPowerResourceController *pC = (DSimulatedPowerResourceController *)ptr; |
47 DSimulatedPowerResourceController *pC = (DSimulatedPowerResourceController *)ptr; |
48 NKern::FSSignal((NFastSemaphore*)&pC->iEventFastSem); |
48 NKern::FSSignal((NFastSemaphore*)&pC->iEventFastSem); |
49 } |
49 } |
50 |
50 |
51 /** Constructor for simulated resource controller. */ |
51 /** Constructor for simulated resource controller. */ |
52 DSimulatedPowerResourceController::DSimulatedPowerResourceController():DPowerResourceController(),iStaticResourceCount(0), iEventDfc(EventDfcFunc, this) |
52 DSimulatedPowerResourceController::DSimulatedPowerResourceController() |
|
53 : iEventDfc(EventDfcFunc, this) |
53 { |
54 { |
54 Kern::Printf(">DSimulatedPowerResourceController"); |
55 Kern::Printf(">DSimulatedPowerResourceController"); |
55 } |
56 } |
56 |
57 |
57 /** Destructor for simulated resource controller. */ |
58 /** Destructor for simulated resource controller. */ |
58 DSimulatedPowerResourceController::~DSimulatedPowerResourceController() |
59 DSimulatedPowerResourceController::~DSimulatedPowerResourceController() |
59 { |
60 { |
60 Kern::Printf("DSimulatedPowerResourceController::~DSimulatedPowerResourceController()\n"); |
61 Kern::Printf(">~DSimulatedPowerResourceController()\n"); |
61 ((TDynamicDfcQue*)iDfcQ)->Destroy(); |
62 ((TDynamicDfcQue*)iDfcQ)->Destroy(); |
62 DStaticPowerResource *pR; |
63 delete iMsgQ; |
63 TUint c; |
64 |
64 for(c = 0; c < iStaticResourceCount; c++) |
65 SPowerResourceClientLevel *pCL = iClientLevelPool; |
65 { |
66 while(iClientLevelPool) //Find the starting position of array to delete |
66 pR = iResources[c]; |
67 { |
67 delete pR; |
68 if(iClientLevelPool < pCL) |
68 } |
69 pCL = iClientLevelPool; |
69 delete []iResources; |
70 iClientLevelPool = iClientLevelPool->iNextInList; |
|
71 } |
|
72 |
|
73 delete [] pCL; |
|
74 SPowerRequest *pReq = iRequestPool; |
|
75 while(iRequestPool) //Find the starting position of array to delete |
|
76 { |
|
77 if(iRequestPool < pReq) |
|
78 pReq = iRequestPool; |
|
79 iRequestPool = iRequestPool->iNext; |
|
80 } |
|
81 delete [] pReq; |
|
82 |
70 #ifdef PRM_ENABLE_EXTENDED_VERSION |
83 #ifdef PRM_ENABLE_EXTENDED_VERSION |
71 DStaticPowerResourceD* pDR; |
84 pCL = iResourceLevelPool; |
72 |
85 while(iResourceLevelPool) |
73 delete []iNodeArray; //Delete dependency nodes |
86 { |
74 for(c = 0; c < iStaticResDependencyCount; c++) |
87 if(iResourceLevelPool < pCL) |
75 { |
88 pCL = iResourceLevelPool; |
76 pDR = iDependencyResources[c]; |
89 iResourceLevelPool = iResourceLevelPool->iNextInList; |
77 delete pDR; |
90 } |
78 } |
91 //delete resource pool |
79 delete []iDependencyResources; |
92 delete [] pCL; |
|
93 delete iMsgQDependency; |
|
94 #endif |
|
95 |
|
96 iClientList.Delete(); |
|
97 iUserSideClientList.Delete(); |
|
98 iStaticResourceArray.ResetAndDestroy(); |
|
99 |
|
100 #ifdef PRM_ENABLE_EXTENDED_VERSION |
|
101 iCleanList.ResetAndDestroy(); |
|
102 iDynamicResourceList.Delete(); |
|
103 iDynamicResDependencyList.Delete(); |
|
104 delete [] iNodeArray; //Delete dependency nodes |
|
105 iStaticResDependencyArray.ResetAndDestroy(); |
80 #endif |
106 #endif |
81 } |
107 } |
82 |
108 |
83 #ifdef PRM_ENABLE_EXTENDED_VERSION |
109 #ifdef PRM_ENABLE_EXTENDED_VERSION |
84 //Function to return the controller pointer to use in extended psl file |
110 //Function to return the controller pointer to use in extended psl file |
272 return KErrNotSupported; |
298 return KErrNotSupported; |
273 return KErrNone; |
299 return KErrNone; |
274 } |
300 } |
275 |
301 |
276 //This registers all static resource with resource controller. This function is called by PIL |
302 //This registers all static resource with resource controller. This function is called by PIL |
277 TInt DSimulatedPowerResourceController::DoRegisterStaticResources(DStaticPowerResource**& aStaticResourceArray, TUint16& aStaticResourceCount) |
303 TInt DSimulatedPowerResourceController::DoRegisterStaticResources(RPointerArray <DStaticPowerResource> & aStaticResourceArray) |
278 { |
304 { |
279 Kern::Printf(">DSimulatedPowerResourceController::DoRegisterStaticResources"); |
305 Kern::Printf(">DSimulatedPowerResourceController::DoRegisterStaticResources"); |
280 aStaticResourceArray = (DStaticPowerResource**)new(DStaticPowerResource*[MAX_RESOURCE_COUNT]); |
306 |
281 if(!aStaticResourceArray) |
307 TBool error_occured = EFalse; |
282 return KErrNoMemory; |
308 TInt r = KErrNone; |
283 DStaticPowerResource* pR = NULL; |
|
284 |
309 |
285 //Create Binary Single Instantaneous Positive Resource |
310 //Create Binary Single Instantaneous Positive Resource |
286 pR = new DBSIGISPResource(); |
311 DStaticPowerResource* pR = new DBSIGISPResource(); |
287 if(!pR) |
312 if(!SafeAppend(aStaticResourceArray, pR)) |
288 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
313 error_occured = ETrue; |
289 aStaticResourceArray[iStaticResourceCount++] = pR; |
|
290 |
314 |
291 //Create Multilevel Single Instantaneous Positive Resource |
315 //Create Multilevel Single Instantaneous Positive Resource |
292 pR = new DMLSIGISPResource(); |
316 pR = new DMLSIGISPResource(); |
293 if(!pR) |
317 if(!SafeAppend(aStaticResourceArray, pR)) |
294 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
318 error_occured = ETrue; |
295 aStaticResourceArray[iStaticResourceCount++] = pR; |
|
296 |
319 |
297 //Create Binary Single Instantaneous Negative Resource |
320 //Create Binary Single Instantaneous Negative Resource |
298 pR = new DBSIGISNResource(); |
321 pR = new DBSIGISNResource(); |
299 if(!pR) |
322 if(!SafeAppend(aStaticResourceArray, pR)) |
300 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
323 error_occured = ETrue; |
301 aStaticResourceArray[iStaticResourceCount++] = pR; |
|
302 |
324 |
303 //Create Multilevel Single Instantaneous Negative Resource |
325 //Create Multilevel Single Instantaneous Negative Resource |
304 pR = new DMLSIGISNResource(); |
326 pR = new DMLSIGISNResource(); |
305 if(!pR) |
327 if(!SafeAppend(aStaticResourceArray, pR)) |
306 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
328 error_occured = ETrue; |
307 aStaticResourceArray[iStaticResourceCount++] = pR; |
329 |
308 |
330 //Create Binary Single Long latency Positive Resource |
309 //Create Binary Single Longlatency Positive Resource |
|
310 pR = new DBSLGLSPResource(); |
331 pR = new DBSLGLSPResource(); |
311 if(!pR) |
332 if(!SafeAppend(aStaticResourceArray, pR)) |
312 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
333 error_occured = ETrue; |
313 aStaticResourceArray[iStaticResourceCount++] = pR; |
334 |
314 |
335 //Create Multilevel Single Long latency Positive Resource |
315 //Create Multilevel Single Longlatency Positive Resource |
|
316 pR = new DMLSLGLSPResource(); |
336 pR = new DMLSLGLSPResource(); |
317 if(!pR) |
337 if(!SafeAppend(aStaticResourceArray, pR)) |
318 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
338 error_occured = ETrue; |
319 aStaticResourceArray[iStaticResourceCount++] = pR; |
339 |
320 |
340 //Create Binary Single Long latency Get & Instantaneous Set Negative Resource |
321 //Create Binary Single Longlatency Get & Instantaneous Set Negative Resource |
|
322 pR = new DBSLGISNResource(); |
341 pR = new DBSLGISNResource(); |
323 if(!pR) |
342 if(!SafeAppend(aStaticResourceArray, pR)) |
324 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
343 error_occured = ETrue; |
325 aStaticResourceArray[iStaticResourceCount++] = pR; |
344 |
326 |
345 //Create Multilevel Single Long latency Get & Instantaneous Set Negative Resource |
327 //Create Multilevel Single Longlatency Get & Instantaneous Set Negative Resource |
|
328 pR = new DMLSLGISNResource(); |
346 pR = new DMLSLGISNResource(); |
329 if(!pR) |
347 if(!SafeAppend(aStaticResourceArray, pR)) |
330 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
348 error_occured = ETrue; |
331 aStaticResourceArray[iStaticResourceCount++] = pR; |
349 |
332 |
350 //Create Binary Single Instantaneous Get & Long latency Set Positive Resource |
333 //Create Binary Single Instantaneous Get & Longlatency Set Positive Resource |
|
334 pR = new DBSIGLSPResource(); |
351 pR = new DBSIGLSPResource(); |
335 if(!pR) |
352 if(!SafeAppend(aStaticResourceArray, pR)) |
336 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
353 error_occured = ETrue; |
337 aStaticResourceArray[iStaticResourceCount++] = pR; |
354 |
338 |
355 //Create Multilevel Single Instantaneous Get & Long latency Set Positive Resource |
339 //Create Multilevel Single Instantaneous Get & Longlatency Set Positive Resource |
|
340 pR = new DMLSIGLSPResource(); |
356 pR = new DMLSIGLSPResource(); |
341 if(!pR) |
357 if(!SafeAppend(aStaticResourceArray, pR)) |
342 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
358 error_occured = ETrue; |
343 aStaticResourceArray[iStaticResourceCount++] = pR; |
|
344 |
359 |
345 //Create Binary SHared Instantaneous Positive Resource |
360 //Create Binary SHared Instantaneous Positive Resource |
346 pR = new DBSHIGISPResource(); |
361 pR = new DBSHIGISPResource(); |
347 if(!pR) |
362 if(!SafeAppend(aStaticResourceArray, pR)) |
348 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
363 error_occured = ETrue; |
349 aStaticResourceArray[iStaticResourceCount++] = pR; |
|
350 |
364 |
351 //Create Multilevel SHared Instantaneous Positive Resource |
365 //Create Multilevel SHared Instantaneous Positive Resource |
352 pR = new DMLSHIGISPResource(); |
366 pR = new DMLSHIGISPResource(); |
353 if(!pR) |
367 if(!SafeAppend(aStaticResourceArray, pR)) |
354 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
368 error_occured = ETrue; |
355 aStaticResourceArray[iStaticResourceCount++] = pR; |
|
356 |
369 |
357 //Create Binary SHared Instantaneous Negative Resource |
370 //Create Binary SHared Instantaneous Negative Resource |
358 pR = new DBSHIGISNResource(); |
371 pR = new DBSHIGISNResource(); |
359 if(!pR) |
372 if(!SafeAppend(aStaticResourceArray, pR)) |
360 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
373 error_occured = ETrue; |
361 aStaticResourceArray[iStaticResourceCount++] = pR; |
|
362 |
374 |
363 //Create Multilevel SHared Instantaneous Negative Resource |
375 //Create Multilevel SHared Instantaneous Negative Resource |
364 pR = new DMLSHIGISNResource(); |
376 pR = new DMLSHIGISNResource(); |
365 if(!pR) |
377 if(!SafeAppend(aStaticResourceArray, pR)) |
366 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
378 error_occured = ETrue; |
367 aStaticResourceArray[iStaticResourceCount++] = pR; |
379 |
368 |
380 //Create Binary SHared Long latency Positive Resource |
369 //Create Binary SHared Longlatency Positive Resource |
|
370 pR = new DBSHLGLSPResource(); |
381 pR = new DBSHLGLSPResource(); |
371 if(!pR) |
382 if(!SafeAppend(aStaticResourceArray, pR)) |
372 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
383 error_occured = ETrue; |
373 aStaticResourceArray[iStaticResourceCount++] = pR; |
384 |
374 |
385 //Create Multilevel SHared Long latency Positive Resource |
375 //Create Multilevel SHared Longlatency Positive Resource |
|
376 pR = new DMLSHLGLSPResource(); |
386 pR = new DMLSHLGLSPResource(); |
377 if(!pR) |
387 if(!SafeAppend(aStaticResourceArray, pR)) |
378 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
388 error_occured = ETrue; |
379 aStaticResourceArray[iStaticResourceCount++] = pR; |
389 |
380 |
390 //Create Binary SHared Long latency Get & Instantaneous Set Negative Resource |
381 //Create Binary SHared Longlatency Get & Instantaneous Set Negative Resource |
|
382 pR = new DBSHLGISNResource(); |
391 pR = new DBSHLGISNResource(); |
383 if(!pR) |
392 if(!SafeAppend(aStaticResourceArray, pR)) |
384 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
393 error_occured = ETrue; |
385 aStaticResourceArray[iStaticResourceCount++] = pR; |
394 |
386 |
395 //Create Multilevel SHared Long latency Get & Instantaneous Set Negative Resource |
387 //Create Multilevel SHared Longlatency Get & Instantaneous Set Negative Resource |
|
388 pR = new DMLSHLGISNResource(); |
396 pR = new DMLSHLGISNResource(); |
389 if(!pR) |
397 if(!SafeAppend(aStaticResourceArray, pR)) |
390 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
398 error_occured = ETrue; |
391 aStaticResourceArray[iStaticResourceCount++] = pR; |
|
392 |
399 |
393 //Create holes in resource array |
400 //Create holes in resource array |
394 aStaticResourceArray[iStaticResourceCount++] = NULL; |
401 if(aStaticResourceArray.Append(NULL) != KErrNone) |
395 aStaticResourceArray[iStaticResourceCount++] = NULL; |
402 error_occured = ETrue; |
396 //Create Binary SHared Instantaneous Get & Longlatency Set Positive Resource |
403 |
|
404 if(aStaticResourceArray.Append(NULL) != KErrNone) |
|
405 error_occured = ETrue; |
|
406 |
|
407 //Create Binary SHared Instantaneous Get & Long latency Set Positive Resource |
397 pR = new DBSHIGLSPResource(); |
408 pR = new DBSHIGLSPResource(); |
398 if(!pR) |
409 if(!SafeAppend(aStaticResourceArray, pR)) |
399 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
410 error_occured = ETrue; |
400 aStaticResourceArray[iStaticResourceCount++] = pR; |
411 |
401 |
412 //Create Multilevel SHared Instantaneous Get & Long latency Set Positive Resource |
402 //Create Multilevel SHared Instantaneous Get & Longlatency Set Positive Resource |
|
403 pR = new DMLSHIGLSPResource(); |
413 pR = new DMLSHIGLSPResource(); |
404 if(!pR) |
414 if(!SafeAppend(aStaticResourceArray, pR)) |
405 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
415 error_occured = ETrue; |
406 aStaticResourceArray[iStaticResourceCount++] = pR; |
416 |
407 |
417 //Create Binary shared Long latency get and set Custom Resource |
408 //Create Binary shared Longlatency get and set Custom Resource |
|
409 pR = new DBSHLGLSCResource(); |
418 pR = new DBSHLGLSCResource(); |
410 if(!pR) |
419 if(!SafeAppend(aStaticResourceArray, pR)) |
411 CLEAN_AND_RETURN(iStaticResourceCount, aStaticResourceArray, KErrNoMemory) |
420 error_occured = ETrue; |
412 aStaticResourceArray[iStaticResourceCount++] = pR; |
421 |
413 |
422 // the only error that could occur here is KErrNoMemory |
414 iResources = aStaticResourceArray; |
423 // clean-up if the error did occur |
415 |
424 if(error_occured) |
416 aStaticResourceCount = iStaticResourceCount; |
425 { |
417 return KErrNone; |
426 aStaticResourceArray.ResetAndDestroy(); |
|
427 r = KErrNoMemory; |
|
428 } |
|
429 return r; |
418 } |
430 } |
419 |
431 |
420 //Constructors of all resources |
432 //Constructors of all resources |
421 _LIT(KDBSIGISPResource, "SymbianSimulResource"); |
433 _LIT(KDBSIGISPResource, "SymbianSimulResource"); |
422 DBSIGISPResource::DBSIGISPResource() : DStaticPowerResource(KDBSIGISPResource, E_OFF), iMinLevel(0), iMaxLevel(1), iCurrentLevel(0) |
434 DBSIGISPResource::DBSIGISPResource() : DStaticPowerResource(KDBSIGISPResource, E_OFF), iMinLevel(0), iMaxLevel(1), iCurrentLevel(0) |