summaryrefslogtreecommitdiffstats
path: root/parameter/ParameterMgr.cpp
diff options
context:
space:
mode:
authorGuillaume Denneulin <guillaume.denneulin@intel.com>2012-12-20 17:53:29 +0100
committerDavid Wagner <david.wagner@intel.com>2014-02-12 17:03:31 +0100
commitf2fd15a331fd3b5b63f0dc6f492651330adcedf9 (patch)
tree4176f855bf77467ed7d1519490bdce022bd1ea4d /parameter/ParameterMgr.cpp
parentace81f873b910493ab884dc5a6a38ba6ec3d56d3 (diff)
downloadexternal_parameter-framework-f2fd15a331fd3b5b63f0dc6f492651330adcedf9.zip
external_parameter-framework-f2fd15a331fd3b5b63f0dc6f492651330adcedf9.tar.gz
external_parameter-framework-f2fd15a331fd3b5b63f0dc6f492651330adcedf9.tar.bz2
PFW: Add resync mechanism if a subsystem needs resync
BZ: 76267 In the case of a hw subsystems reset, it's possible that its parameter managed by the PFW may not be aligned with the PFW blackboard. A re-synchronization mechanism is implemented to ensure that the subsystem is re-synchronized on the next configurations application. Change-Id: I032150955d25a7020cf494e69456897b4c157916 Signed-off-by: Guillaume Denneulin <guillaume.denneulin@intel.com> Reviewed-on: http://android.intel.com:8080/83015 Reviewed-by: Rocard, KevinX <kevinx.rocard@intel.com> Reviewed-by: Centelles, Sylvain <sylvain.centelles@intel.com> Tested-by: Dixon, CharlesX <charlesx.dixon@intel.com> Reviewed-by: cactus <cactus@intel.com> Tested-by: cactus <cactus@intel.com>
Diffstat (limited to 'parameter/ParameterMgr.cpp')
-rw-r--r--parameter/ParameterMgr.cpp31
1 files changed, 20 insertions, 11 deletions
diff --git a/parameter/ParameterMgr.cpp b/parameter/ParameterMgr.cpp
index 5244199..4116dbe 100644
--- a/parameter/ParameterMgr.cpp
+++ b/parameter/ParameterMgr.cpp
@@ -355,9 +355,8 @@ bool CParameterMgr::load(string& strError)
// We need to ensure all domains are valid
pConfigurableDomains->validate(_pMainParameterBlackboard);
- // Ensure application of currently selected configurations
- // Force-apply configurations
- pConfigurableDomains->apply(_pMainParameterBlackboard, true);
+ // At initialization, check subsystems that need resync
+ doApplyConfigurations(true);
// Start remote processor server if appropriate
return handleRemoteProcessingInterface(strError);
@@ -559,7 +558,7 @@ CSelectionCriterion* CParameterMgr::getSelectionCriterion(const string& strName)
return getSelectionCriteria()->getSelectionCriterion(strName);
}
-// Selection criteria changed event
+// Configuration application
void CParameterMgr::applyConfigurations()
{
CAutoLog autoLog(this, "Configuration application request");
@@ -570,11 +569,7 @@ void CParameterMgr::applyConfigurations()
if (!_bTuningModeIsOn) {
// Apply configuration(s)
- getConfigurableDomains()->apply(_pMainParameterBlackboard, false);
-
- // Reset the modified status of the current criteria to indicate that a new configuration has been applied
- getSelectionCriteria()->resetModifiedStatus();
-
+ doApplyConfigurations(false);
} else {
log_warning("Configurations were not applied because the TuningMode is on");
@@ -1335,7 +1330,7 @@ bool CParameterMgr::setTuningMode(bool bOn, string& strError)
// Ensure application of currently selected configurations
// Force-apply configurations
- getConfigurableDomains()->apply(_pMainParameterBlackboard, true);
+ doApplyConfigurations(true);
// Turn auto sync back on
_bAutoSyncOn = true;
@@ -1908,8 +1903,22 @@ const CConfigurableDomains* CParameterMgr::getConstConfigurableDomains() const
return static_cast<const CConfigurableDomains*>(getChild(EConfigurableDomains));
}
-/// GUI commands functions
+// Apply configurations
+void CParameterMgr::doApplyConfigurations(bool bForce)
+{
+ CSyncerSet syncerSet;
+ // Check subsystems that need resync
+ getSystemClass()->checkForSubsystemsToResync(syncerSet);
+
+ // Ensure application of currently selected configurations
+ getConfigurableDomains()->apply(_pMainParameterBlackboard, syncerSet, bForce);
+
+ // Reset the modified status of the current criteria to indicate that a new configuration has been applied
+ getSelectionCriteria()->resetModifiedStatus();
+}
+
+/// GUI commands functions
bool CParameterMgr::getDomainsXMLString(string& strResult, bool bWithSettings)
{