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>
diff --git a/parameter/AreaConfiguration.h b/parameter/AreaConfiguration.h
index b5e7e4c..6afed71 100644
--- a/parameter/AreaConfiguration.h
+++ b/parameter/AreaConfiguration.h
@@ -64,10 +64,10 @@
     const CConfigurableElement* getConfigurableElement() const;
 
     // Configuration merging
-    void copyFromInner(const CAreaConfiguration* pFromAreaConfiguration);
+    virtual void copyToOuter(CAreaConfiguration* pToAreaConfiguration) const;
 
     // Configuration splitting
-    void copyToInner(CAreaConfiguration* pToAreaConfiguration) const;
+    virtual void copyFromOuter(const CAreaConfiguration* pFromAreaConfiguration);
 
     // XML configuration settings parsing/composing
     bool serializeXmlSettings(CXmlElement& xmlConfigurableElementSettingsElementContent, CConfigurationAccessContext& configurationAccessContext);
@@ -77,19 +77,29 @@
 
     // Data size
     uint32_t getSize() const;
+
+protected:
+    CAreaConfiguration(const CConfigurableElement* pConfigurableElement, const CSyncerSet* pSyncerSet, uint32_t uiSize);
+
 private:
+    // Blackboard copies
+    virtual void copyTo(CParameterBlackboard* pToBlackboard, uint32_t uiOffset) const;
+    virtual void copyFrom(const CParameterBlackboard* pFromBlackboard, uint32_t uiOffset);
+
     // Store validity
     void setValid(bool bValid);
 
+protected:
     // Associated configurable element
     const CConfigurableElement* _pConfigurableElement;
 
-    // Syncer set (required for immediate synchronization)
-    const CSyncerSet* _pSyncerSet;
-
     // Configurable element settings
     CParameterBlackboard _blackboard;
 
+private:
+    // Syncer set (required for immediate synchronization)
+    const CSyncerSet* _pSyncerSet;
+
     // Area configuration validity (invalid area configurations can't be restored)
     bool _bValid;
 };