summaryrefslogtreecommitdiffstats
path: root/parameter/ParameterType.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/ParameterType.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/ParameterType.cpp')
-rw-r--r--parameter/ParameterType.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/parameter/ParameterType.cpp b/parameter/ParameterType.cpp
index 9a23c40..054c5e8 100644
--- a/parameter/ParameterType.cpp
+++ b/parameter/ParameterType.cpp
@@ -95,3 +95,58 @@ CInstanceConfigurableElement* CParameterType::doInstantiate() const
}
}
+// Sign extension
+void CParameterType::signExtend(int32_t& iData) const
+{
+ uint32_t uiSizeInBits = _uiSize << 3;
+ uint32_t uiShift = 32 - uiSizeInBits;
+
+ if (uiShift) {
+
+ iData = (iData << uiShift) >> uiShift;
+ }
+}
+
+// Check data has no bit set outside available range
+bool CParameterType::isEncodable(uint32_t uiData) const
+{
+ uint32_t uiSizeInBits = _uiSize << 3;
+ uint32_t uiShift = 32 - uiSizeInBits;
+
+ if (uiShift) {
+
+ // Check high bits are clean
+ return !(uiData >> uiShift);
+ }
+
+ return true;
+}
+
+// Remove all bits set outside available range
+uint32_t CParameterType::makeEncodable(uint32_t uiData) const
+{
+ uint32_t uiSizeInBits = _uiSize << 3;
+
+ uint32_t uiMask = (1 << uiSizeInBits) - 1;
+
+ return uiData & uiMask;
+}
+
+// Check data is consistent with available range, with respect to its sign
+bool CParameterType::isConsistent(uint32_t uiData, bool bSigned) const
+{
+ uint32_t uiSizeInBits = _uiSize << 3;
+ uint32_t uiShift = 32 - uiSizeInBits;
+
+ if (uiShift) {
+
+ // Negative value?
+ bool bIsValueExpectedNegative = bSigned && (uiData & (1 << (uiShift - 1))) != 0;
+
+ // Check high bits are clean
+ return bIsValueExpectedNegative ? !(~uiData >> uiShift) : !(uiData >> uiShift);
+ }
+
+ return true;
+}
+