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