kerneltest/e32test/resourceman/resourceman_psl/rescontrol_psl.cpp
changeset 259 57b9594f5772
parent 90 947f0dc9f7a8
child 257 3e88ff8f41d5
child 269 d57b86b1867a
equal deleted inserted replaced
247:d8d70de2bd36 259:57b9594f5772
    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)