kerneltest/e32test/resourceman/resourceman_psl/rescontrol_psl.cpp
branchRCL_3
changeset 44 3e88ff8f41d5
parent 43 c1f20ce4abcf
equal deleted inserted replaced
43:c1f20ce4abcf 44:3e88ff8f41d5
    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)