summaryrefslogtreecommitdiffstats
path: root/parameter/ConfigurableDomain.h
diff options
context:
space:
mode:
authorPatrick Benavoli <patrickx.benavoli@intel.com>2011-10-24 18:50:03 +0200
committerDavid Wagner <david.wagner@intel.com>2014-02-10 17:14:57 +0100
commit63499d4763e42d76bfd39b79871f611381d2d164 (patch)
tree3f16d13707ec60a8ff2bb320ffce0a0e0cc6d91e /parameter/ConfigurableDomain.h
parentcfb64dd41410d363fe2e24faf6cd33c9e846b401 (diff)
downloadexternal_parameter-framework-63499d4763e42d76bfd39b79871f611381d2d164.zip
external_parameter-framework-63499d4763e42d76bfd39b79871f611381d2d164.tar.gz
external_parameter-framework-63499d4763e42d76bfd39b79871f611381d2d164.tar.bz2
parameter-framework: Sequence
BZ: 13152 - Introduced sequence notion in configurations: Sequences are configuration specific and are controlled from the Settings related XML files (order of settings appearance) as well as from the tuning interface (new commands available to set and get the sequence (setElementSequence / getElementSequence). Notes: - sequences will only matter for domains which new "SequenceAware" attribute is set to true (false by default). This attribute is also controlable through the tuning interface (setSequenceAware / getSequenceAware commands). - sequence unaware domain configurations will be applied before sequence aware ones. To allow for such functionality, the XML for settings format had to be reworked, leading to an unfortunate compatibility break. However, one benefit is that now a clear Settings section appears at the bottom of the domain description, which is easier to maintain than the previous structure where the settings appeared as sub-nodes of associated elements. Change-Id: Ic93552fd510ed8847f9c8e7d9d6164f7ea3c8c45 Signed-off-by: Patrick Benavoli <patrickx.benavoli@intel.com> Reviewed-on: http://android.intel.com:8080/22558 Reviewed-by: Centelles, Sylvain <sylvain.centelles@intel.com> Tested-by: Barthes, FabienX <fabienx.barthes@intel.com> Reviewed-by: buildbot <buildbot@intel.com> Tested-by: buildbot <buildbot@intel.com> Reviewed-on: http://android.intel.com:8080/26780 Reviewed-by: Barthes, FabienX <fabienx.barthes@intel.com>
Diffstat (limited to 'parameter/ConfigurableDomain.h')
-rw-r--r--parameter/ConfigurableDomain.h28
1 files changed, 22 insertions, 6 deletions
diff --git a/parameter/ConfigurableDomain.h b/parameter/ConfigurableDomain.h
index 0438009..87ed41c 100644
--- a/parameter/ConfigurableDomain.h
+++ b/parameter/ConfigurableDomain.h
@@ -34,6 +34,7 @@
#include "SyncerSet.h"
#include <list>
#include <set>
+#include <map>
class CConfigurableElement;
class CDomainConfiguration;
@@ -42,16 +43,23 @@ class CParameterBlackboard;
class CConfigurableDomain : public CBinarySerializableElement
{
typedef list<CConfigurableElement*>::const_iterator ConfigurableElementListIterator;
+ typedef map<const CConfigurableElement*, CSyncerSet*>::const_iterator ConfigurableElementToSyncerSetMapIterator;
public:
CConfigurableDomain(const string& strName);
virtual ~CConfigurableDomain();
+ // Sequence awareness
+ void setSequenceAwareness(bool bSequenceAware);
+ bool getSequenceAwareness() const;
+
// Configuration Management
bool createConfiguration(const string& strName, const CParameterBlackboard* pMainBlackboard, string& strError);
bool deleteConfiguration(const string& strName, string& strError);
bool renameConfiguration(const string& strName, const string& strNewName, string& strError);
bool restoreConfiguration(const string& strName, CParameterBlackboard* pMainBlackboard, bool bAutoSync, string& strError);
bool saveConfiguration(const string& strName, const CParameterBlackboard* pMainBlackboard, string& strError);
+ bool setElementSequence(const string& strName, const vector<string>& astrNewElementSequence, string& strError);
+ bool getElementSequence(const string& strName, string& strResult) const;
// Last applied configuration
string getLastAppliedConfigurationName() const;
@@ -71,7 +79,7 @@ public:
void validate(const CParameterBlackboard* pMainBlackboard);
// Configuration application if required
- void apply(CParameterBlackboard* pParameterBlackboard, CSyncerSet& syncerSet, bool bForced);
+ bool apply(CParameterBlackboard* pParameterBlackboard, CSyncerSet& syncerSet, bool bForced, string& strError) const;
// Return applicable configuration validity for given configurable element
bool isApplicableConfigurationValid(const CConfigurableElement* pConfigurableElement) const;
@@ -126,21 +134,29 @@ private:
// XML parsing
bool parseDomainConfigurations(const CXmlElement& xmlElement, CXmlSerializingContext& serializingContext);
bool parseConfigurableElements(const CXmlElement& xmlElement, CXmlSerializingContext& serializingContext);
- bool parseConfigurableElementConfigurations(const CConfigurableElement* pConfigurableElement, CXmlElement& xmlConfigurableElementElement, CXmlSerializingContext& serializingContext);
- bool serializeConfigurableElementConfiguration(CDomainConfiguration* pDomainConfiguration, const CConfigurableElement* pConfigurableElement, CXmlElement& xmlConfigurationSettingsElement, CXmlSerializingContext& serializingContext, bool bSerializeOut);
+ bool parseSettings(const CXmlElement& xmlElement, CXmlSerializingContext& serializingContext);
// XML composing
void composeDomainConfigurations(CXmlElement& xmlElement, CXmlSerializingContext& serializingContext) const;
- void composeConfigurableElements(CXmlElement& xmlElement, CXmlSerializingContext& serializingContext) const;
- void composeConfigurableElementConfigurations(const CConfigurableElement* pConfigurableElement, CXmlElement& xmlConfigurableElementElement, CXmlSerializingContext& serializingContext) const;
+ void composeConfigurableElements(CXmlElement& xmlElement) const;
+ void composeSettings(CXmlElement& xmlElement, CXmlSerializingContext& serializingContext) const;
+
+ // Syncer set retrieval from configurable element
+ CSyncerSet* getSyncerSet(const CConfigurableElement* pConfigurableElement) const;
// Configurable elements
list<CConfigurableElement*> _configurableElementList;
+ // Associated syncer sets
+ map<const CConfigurableElement*, CSyncerSet*> _configurableElementToSyncerSetMap;
+
+ // Sequence awareness
+ bool _bSequenceAware;
+
// Syncer set used to ensure propoer synchronization of restored configurable elements
CSyncerSet _syncerSet;
// Last applied configuration
- const CDomainConfiguration* _pLastAppliedConfiguration;
+ mutable const CDomainConfiguration* _pLastAppliedConfiguration;
};