diff options
author | Frédéric Boisnard <fredericx.boisnard@intel.com> | 2012-05-30 16:15:02 +0200 |
---|---|---|
committer | David Wagner <david.wagner@intel.com> | 2014-02-12 17:03:10 +0100 |
commit | 9620e44c6c7605bf589f60331eb5b05b71336853 (patch) | |
tree | 24de41296b6da730e70f1ced0ad633bb4a7c7da3 /parameter/AreaConfiguration.cpp | |
parent | 8b01852701d50869318663f568270f977d93dbdf (diff) | |
download | external_parameter-framework-9620e44c6c7605bf589f60331eb5b05b71336853.zip external_parameter-framework-9620e44c6c7605bf589f60331eb5b05b71336853.tar.gz external_parameter-framework-9620e44c6c7605bf589f60331eb5b05b71336853.tar.bz2 |
PFW: Fixed bug on BitParameterTypes
BZ: 44148
The save and restore operation would not work correctly when BitParameters
of a BitParameterBlock were used in more than a single Domain.
This patch aims to fixup this bug and introduces a new class: BitwiseAreaConfiguration.
Change-Id: I0aaccd57cf1cce33400f94a8879565171d283425
Orig-Change-Id: I7107f7db9f01cfff3c38cbac606a8c1e9bca8b5e
Signed-off-by: Frédéric Boisnard <fredericx.boisnard@intel.com>
Reviewed-on: http://android.intel.com:8080/58363
Reviewed-by: Mendi, EduardoX <eduardox.mendi@intel.com>
Tested-by: Mendi, EduardoX <eduardox.mendi@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'parameter/AreaConfiguration.cpp')
-rw-r--r-- | parameter/AreaConfiguration.cpp | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/parameter/AreaConfiguration.cpp b/parameter/AreaConfiguration.cpp index 2e8c63d..8d2368d 100644 --- a/parameter/AreaConfiguration.cpp +++ b/parameter/AreaConfiguration.cpp @@ -41,10 +41,17 @@ CAreaConfiguration::CAreaConfiguration(const CConfigurableElement* pConfigurable _blackboard.setSize(_pConfigurableElement->getFootPrint()); } +CAreaConfiguration::CAreaConfiguration(const CConfigurableElement* pConfigurableElement, const CSyncerSet* pSyncerSet, uint32_t uiSize) + : _pConfigurableElement(pConfigurableElement), _pSyncerSet(pSyncerSet), _bValid(false) +{ + // Size blackboard + _blackboard.setSize(uiSize); +} + // Save data from current void CAreaConfiguration::save(const CParameterBlackboard* pMainBlackboard) { - pMainBlackboard->saveTo(&_blackboard, _pConfigurableElement->getOffset()); + copyFrom(pMainBlackboard, _pConfigurableElement->getOffset()); } // Apply data to current @@ -52,7 +59,7 @@ bool CAreaConfiguration::restore(CParameterBlackboard* pMainBlackboard, bool bSy { assert(_bValid); - pMainBlackboard->restoreFrom(&_blackboard, _pConfigurableElement->getOffset()); + copyTo(pMainBlackboard, _pConfigurableElement->getOffset()); // Synchronize if required if (bSync) { @@ -131,23 +138,21 @@ const CConfigurableElement* CAreaConfiguration::getConfigurableElement() const return _pConfigurableElement; } -// Configuration merging (we assume from element is descendant of this) -void CAreaConfiguration::copyFromInner(const CAreaConfiguration* pFromAreaConfiguration) +void CAreaConfiguration::copyToOuter(CAreaConfiguration* pToAreaConfiguration) const { - assert(pFromAreaConfiguration->getConfigurableElement()->isDescendantOf(_pConfigurableElement)); + assert(_pConfigurableElement->isDescendantOf(pToAreaConfiguration->getConfigurableElement())); - _blackboard.restoreFrom(&pFromAreaConfiguration->_blackboard, pFromAreaConfiguration->getConfigurableElement()->getOffset() - _pConfigurableElement->getOffset()); + copyTo(&pToAreaConfiguration->_blackboard, _pConfigurableElement->getOffset() - pToAreaConfiguration->getConfigurableElement()->getOffset()); } -// Configuration splitting -void CAreaConfiguration::copyToInner(CAreaConfiguration* pToAreaConfiguration) const +void CAreaConfiguration::copyFromOuter(const CAreaConfiguration* pFromAreaConfiguration) { - assert(pToAreaConfiguration->getConfigurableElement()->isDescendantOf(_pConfigurableElement)); + assert(_pConfigurableElement->isDescendantOf(pFromAreaConfiguration->getConfigurableElement())); - _blackboard.saveTo(&pToAreaConfiguration->_blackboard, pToAreaConfiguration->getConfigurableElement()->getOffset() - _pConfigurableElement->getOffset()); + copyFrom(&pFromAreaConfiguration->_blackboard, _pConfigurableElement->getOffset() - pFromAreaConfiguration->getConfigurableElement()->getOffset()); // Inner becomes valid - pToAreaConfiguration->setValid(true); + setValid(true); } // Serialization @@ -175,4 +180,14 @@ void CAreaConfiguration::setValid(bool bValid) _bValid = bValid; } +// Blackboard copies +void CAreaConfiguration::copyTo(CParameterBlackboard* pToBlackboard, uint32_t uiOffset) const +{ + pToBlackboard->restoreFrom(&_blackboard, uiOffset); +} + +void CAreaConfiguration::copyFrom(const CParameterBlackboard* pFromBlackboard, uint32_t uiOffset) +{ + pFromBlackboard->saveTo(&_blackboard, uiOffset); +} |