summaryrefslogtreecommitdiffstats
path: root/parameter/ConfigurableDomains.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/ConfigurableDomains.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/ConfigurableDomains.cpp')
-rw-r--r--parameter/ConfigurableDomains.cpp26
1 files changed, 9 insertions, 17 deletions
diff --git a/parameter/ConfigurableDomains.cpp b/parameter/ConfigurableDomains.cpp
index a1bfb3c..fcfeb4d 100644
--- a/parameter/ConfigurableDomains.cpp
+++ b/parameter/ConfigurableDomains.cpp
@@ -61,17 +61,13 @@ void CConfigurableDomains::validate(const CParameterBlackboard* pMainBlackboard)
}
// Configuration application if required
-void CConfigurableDomains::apply(CParameterBlackboard* pParameterBlackboard, bool bForce) const
+void CConfigurableDomains::apply(CParameterBlackboard* pParameterBlackboard, CSyncerSet& syncerSet, bool bForce) const
{
-
CAutoLog autoLog(this, "Applying configurations");
- // Syncer set
- CSyncerSet syncerSet;
-
- // Delegate to domains
+ /// Delegate to domains
- // Start with sequence unaware domains
+ // Start with domains that can be synchronized all at once (with passed syncer set)
uint32_t uiChild;
uint32_t uiNbConfigurableDomains = getNbChildren();
@@ -79,23 +75,19 @@ void CConfigurableDomains::apply(CParameterBlackboard* pParameterBlackboard, boo
const CConfigurableDomain* pChildConfigurableDomain = static_cast<const CConfigurableDomain*>(getChild(uiChild));
- if (!pChildConfigurableDomain->getSequenceAwareness()) {
- // Apply sequence unaware domain
- pChildConfigurableDomain->apply(pParameterBlackboard, syncerSet, bForce);
- }
+ // Apply and collect syncers when relevant
+ pChildConfigurableDomain->apply(pParameterBlackboard, &syncerSet, bForce);
}
- // Synchronize sequence unaware domains
+ // Synchronize those collected syncers
syncerSet.sync(*pParameterBlackboard, false, NULL);
- // Then deal with sequence aware domains
+ // Then deal with domains that need to synchronize along apply
for (uiChild = 0; uiChild < uiNbConfigurableDomains; uiChild++) {
const CConfigurableDomain* pChildConfigurableDomain = static_cast<const CConfigurableDomain*>(getChild(uiChild));
- if (pChildConfigurableDomain->getSequenceAwareness()) {
- // Apply sequence aware domain
- pChildConfigurableDomain->apply(pParameterBlackboard, syncerSet, bForce);
- }
+ // Apply and synchronize when relevant
+ pChildConfigurableDomain->apply(pParameterBlackboard, NULL, bForce);
}
}