summaryrefslogtreecommitdiffstats
path: root/parameter/Subsystem.cpp
diff options
context:
space:
mode:
authorPatrick Benavoli <patrickx.benavoli@intel.com>2011-08-31 11:23:24 +0200
committerDavid Wagner <david.wagner@intel.com>2014-02-10 17:13:21 +0100
commit6ba361d96bc2581667b3400f87ff89fae6449e1f (patch)
treee72e959d7d4c3b0f0b6dc20ec4f07d957eae1a50 /parameter/Subsystem.cpp
parent68a912857707864bbaaff9808717813105072a6e (diff)
downloadexternal_parameter-framework-6ba361d96bc2581667b3400f87ff89fae6449e1f.zip
external_parameter-framework-6ba361d96bc2581667b3400f87ff89fae6449e1f.tar.gz
external_parameter-framework-6ba361d96bc2581667b3400f87ff89fae6449e1f.tar.bz2
parameter-framework: improvements and corrections
BZ: 6721 - Bug correction concerning selection criteria display (inclusive type) - Adapted XML format to allow for only on parameter to be associated to a domain - Removed unused files in parameter project Change-Id: I9f42d08ff8cb60354714fe3d6b0f0b321ad0a7bf Orig-Change-Id: I837e553070f5acf2d275082c986ba29433493e31 Signed-off-by: Patrick Benavoli <patrickx.benavoli@intel.com> Reviewed-on: http://android.intel.com:8080/16878 Reviewed-by: Mahe, Erwan <erwan.mahe@intel.com> Tested-by: Barthes, FabienX <fabienx.barthes@intel.com> Reviewed-by: buildbot <buildbot@intel.com> Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'parameter/Subsystem.cpp')
-rw-r--r--parameter/Subsystem.cpp44
1 files changed, 23 insertions, 21 deletions
diff --git a/parameter/Subsystem.cpp b/parameter/Subsystem.cpp
index a501f91..25da60a 100644
--- a/parameter/Subsystem.cpp
+++ b/parameter/Subsystem.cpp
@@ -125,12 +125,12 @@ bool CSubsystem::fromXml(const CXmlElement& xmlElement, CXmlSerializingContext&
}
// XML configuration settings parsing
-bool CSubsystem::serializeXmlSettings(CXmlElement& xmlConfigurableElementSettingsElement, CConfigurationAccessContext& configurationAccessContext) const
+bool CSubsystem::serializeXmlSettings(CXmlElement& xmlConfigurationSettingsElementContent, CConfigurationAccessContext& configurationAccessContext) const
{
// Fix Endianness
configurationAccessContext.setBigEndianSubsystem(_bBigEndian);
- return base::serializeXmlSettings(xmlConfigurableElementSettingsElement, configurationAccessContext);
+ return base::serializeXmlSettings(xmlConfigurationSettingsElementContent, configurationAccessContext);
}
@@ -208,7 +208,7 @@ void CSubsystem::addContextMappingKey(const string& strMappingKey)
}
// Subsystem object creator publication (strong reference)
-void CSubsystem::addSubsystemObjectCreator(CSubsystemObjectCreator* pSubsystemObjectCreator)
+void CSubsystem::addSubsystemObjectFactory(CSubsystemObjectCreator* pSubsystemObjectCreator)
{
_subsystemObjectCreatorArray.push_back(pSubsystemObjectCreator);
}
@@ -222,11 +222,11 @@ bool CSubsystem::handleMappingContext(const CInstanceConfigurableElement* pInsta
for (uiItem = 0; uiItem < _contextMappingKeyArray.size(); uiItem++) {
string strKey = _contextMappingKeyArray[uiItem];
- string strValue;
+ const string* pStrValue;
- if (pInstanceConfigurableElement->getMappingData(strKey, strValue)) {
+ if (pInstanceConfigurableElement->getMappingData(strKey, pStrValue)) {
// Assign item to context
- if (!context.setItem(uiItem, strValue)) {
+ if (!context.setItem(uiItem, pStrValue)) {
getMappingError(strError, strKey, "Already set", pInstanceConfigurableElement);
@@ -249,39 +249,41 @@ bool CSubsystem::handleSubsystemObjectCreation(CInstanceConfigurableElement* pIn
// Mapping key
string strKey = pSubsystemObjectCreator->getMappingKey();
// Object id
- string strId;
+ const string* pStrValue;
- if (pInstanceConfigurableElement->getMappingData(strKey, strId)) {
+ if (pInstanceConfigurableElement->getMappingData(strKey, pStrValue)) {
- // First check context consisteny
+ // First check context consistensy (required ancestors must have been set prior to object creation)
uint32_t uiAncestorKey;
uint32_t uiAncestorMask = pSubsystemObjectCreator->getAncestorMask();
- for (uiAncestorKey = 0; uiAncestorKey & uiAncestorMask; uiAncestorKey++) {
-
- string strAncestorKey = _subsystemObjectCreatorArray[uiAncestorKey]->getMappingKey();
+ for (uiAncestorKey = 0; uiAncestorKey < _contextMappingKeyArray.size(); uiAncestorKey++) {
+ if (!((1 << uiAncestorKey) & uiAncestorMask)) {
+ // Ancestor not required
+ continue;
+ }
+ // Check ancestor was provided
if (!context.iSet(uiAncestorKey)) {
- getMappingError(strError, strKey, strAncestorKey + " not set", pInstanceConfigurableElement);
+ getMappingError(strError, strKey, _contextMappingKeyArray[uiAncestorKey] + " not set", pInstanceConfigurableElement);
return false;
}
}
- // Do create object
- string strCreationError;
+ // Then check configurable element size is correct
+ if (pInstanceConfigurableElement->getFootPrint() > pSubsystemObjectCreator->getMaxConfigurableElementSize()) {
- CSubsystemObject* pSubsystemObject = pSubsystemObjectCreator->objectCreate(strId, pInstanceConfigurableElement, context, strCreationError);
+ string strSizeError = "Size should not exceed " + pInstanceConfigurableElement->getFootprintAsString();
- if (!pSubsystemObject) {
-
- getMappingError(strError, strKey, strCreationError, pInstanceConfigurableElement);
+ getMappingError(strError, strKey, strSizeError, pInstanceConfigurableElement);
return false;
}
- // Keep track of created object
- _subsystemObjectList.push_back(pSubsystemObject);
+
+ // Do create object and keep its track
+ _subsystemObjectList.push_back(pSubsystemObjectCreator->objectCreate(*pStrValue, pInstanceConfigurableElement, context));
// Done
return true;