--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bsptemplate/asspandvariant/template_variant/inc/template_power.inl Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,148 @@
+// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// template\template_variant\inc\template_power.inl
+// Template Power Management Inline file
+// -/-/-/-/-/-/-/-/-/ class TTemplatePowerController /-/-/-/-/-/-/-/-/-/
+//
+//
+
+inline void TTemplatePowerController::RegisterPowerController(DTemplatePowerController* aPowerController)
+ {iPowerController = aPowerController;}
+
+//-/-/-/-/-/-/-/-/-/ class TemplateResourceManager /-/-/-/-/-/-/-/-/-/
+
+inline TemplateResourceManager::TSleepModes TemplateResourceManager::MapSleepMode(TInt aSleepPeriod)
+ {
+ //
+ // TO DO: (optional)
+ //
+ // Investigate what resources are On or Off, or used at what level and with the expected duration
+ // of Sleep map this to platform-specific Sleep mode
+ //
+ return Snooze;
+ }
+
+inline void TemplateResourceManager::Modify(TResource aResource, TBool aOnOff)
+ {
+ //
+ // TO DO: (optional)
+ //
+ // This function is used to modify non-shared binary resources
+ // The following is an EXAMPLE ONLY:
+ //
+ switch(aResource)
+ {
+ case SynchBinResourceUsedByZOnly:
+ NKern::Lock();
+ //
+ // TO DO: (optional)
+ //
+ // Modify hardware register bit or bits to switch the resource On or Off as defined by aOnOff
+ // If the resource is only accessed by a driver and not from an ISR, there's no need to stop
+ // preemption. If it can be accessed from an ISR need to disable/enable interrupts around it.
+ //
+ NKern::Unlock();
+ break;
+
+ case AsynchBinResourceUsedByZOnly:
+ //
+ // TO DO: (optional)
+ //
+ // Modify hardware register bit or bits to switch the resource On or Off as defined by aOnOff
+ // and then wait until it has been modified.
+ // If the waits is only a few uS you could consider spinning, If it is considerable larger then
+ // you may need to use Kern::PollingWait passing a polling function, a pointer to a owning
+ // object a poll period in milliseconds and a maximum number of attempts. This will sleep
+ // the driver thread so if your driver is multithreaded and the resource can be accessed
+ // from more than one thread you may need to lock accesses to it with a fast Mutex.
+ // The completion of the change may be indicated by an interrupt: you still need to guarantee
+ // that the resource is not accessed until the change takes place.
+ //
+ break;
+ default:
+ break;
+ }
+ }
+
+inline void TemplateResourceManager::ModifyToLevel(TResource aResource, TInt aLevel)
+ {
+ //
+ // TO DO: (optional)
+ //
+ // This function is used to modify non-shared multilevel resources
+ // The following is an EXAMPLE ONLY:
+ //
+ switch(aResource)
+ {
+ case SynchMlResourceUsedByXOnly:
+ NKern::Lock();
+ //
+ // TO DO: (optional)
+ //
+ // Modify hardware register bits to set the level of the resource to aLevel
+ // If the resource is only accessed by a driver and not from an ISR, there's no need to stop
+ // preemption. If it can be accessed from an ISR need to disable/enable interrupts around it.
+ //
+ NKern::Unlock();
+ break;
+
+ case AsynchMlResourceUsedByXOnly:
+ //
+ // TO DO: (optional)
+ //
+ // Modify hardware register bits to set the level of the resource to aLevel
+ // and then wait until it has been modified.
+ // If the waits is only a few uS you could consider spinning, If it is considerable larger then
+ // you may need to use Kern::PollingWait passing a polling function, a pointer to a owning
+ // object a poll period in milliseconds and a maximum number of attempts. This will sleep
+ // the driver thread so if your driver is multithreaded and the resource can be accessed
+ // from more than one thread you may need to lock accesses to it with a fast Mutex.
+ // The completion of the change may be indicated by an interrupt: you still need to guarantee
+ // that the resource is not accessed until the change takes place.
+ //
+ break;
+ default:
+ break;
+ }
+ }
+
+inline TBool TemplateResourceManager::GetResourceState(TResource aResource)
+ {
+ //
+ // TO DO: (optional)
+ //
+ // Read from hardware (or from follower variable) and return the state of non-shared binary resource
+ // EXAMPLE ONLY
+ //
+ return(EFalse);
+ }
+
+
+inline TUint TemplateResourceManager::GetResourceLevel(TResource aResource)
+ {
+ //
+ // TO DO: (optional)
+ //
+ // Read from hardware (or from follower variable) and return the level of non-shared multilevel resource
+ //
+ // EXAMPLE ONLY
+ //
+ return(0);
+ }
+
+inline SharedBinaryResource1* TemplateResourceManager::SharedBResource1()
+ {return &iSharedBResource1;}
+
+inline SharedMultilevelResource1* TemplateResourceManager::SharedMlResource1()
+ {return &iSharedMlResource1;}