summaryrefslogtreecommitdiffstats
path: root/parameter/SubsystemObject.cpp
diff options
context:
space:
mode:
authorGuillaume Denneulin <guillaume.denneulin@intel.com>2014-01-10 14:58:42 +0100
committerDavid Wagner <david.wagner@intel.com>2014-02-12 17:04:19 +0100
commita6b01d2049a137932f303cdee554d8d2703d7af7 (patch)
tree1babc313169e1299f8e98d741df88046a12567dd /parameter/SubsystemObject.cpp
parent28119d8ec7d49b5fab310f08e6fc40c910e3bc8a (diff)
downloadexternal_parameter-framework-a6b01d2049a137932f303cdee554d8d2703d7af7.zip
external_parameter-framework-a6b01d2049a137932f303cdee554d8d2703d7af7.tar.gz
external_parameter-framework-a6b01d2049a137932f303cdee554d8d2703d7af7.tar.bz2
Add integer conversion that can take care of sign extension
BZ: 163707 When using signed integers of size 8 or 16, the bit of sign needs to be propagated if the API called by the plugin wait for "int" type Add the virtual toInteger function in CTypeElement for each parameter type to take care of conversion to "int". Specialize this function in the class CIntegerParameterType to take care of sign extension. Change-Id: I41183dccbcc21212299d1dde86b3ad4ba8432ce4 Signed-off-by: Guillaume Denneulin <guillaume.denneulin@intel.com>
Diffstat (limited to 'parameter/SubsystemObject.cpp')
-rwxr-xr-xparameter/SubsystemObject.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/parameter/SubsystemObject.cpp b/parameter/SubsystemObject.cpp
index eaf87aa..c8d4c1b 100755
--- a/parameter/SubsystemObject.cpp
+++ b/parameter/SubsystemObject.cpp
@@ -28,6 +28,7 @@
#include "ParameterBlackboard.h"
#include "ParameterAccessContext.h"
#include "MappingContext.h"
+#include "ParameterType.h"
#include <assert.h>
#include <stdlib.h>
#include <string.h>
@@ -82,6 +83,23 @@ string CSubsystemObject::asString(uint32_t uiValue)
return ostr.str();
}
+int CSubsystemObject::toPlainInteger(
+ const CInstanceConfigurableElement *instanceConfigurableElement,
+ int sizeOptimizedData)
+{
+ if (instanceConfigurableElement) {
+
+ // Get actual element type
+ const CTypeElement *typeElement =
+ static_cast<const CParameterType *>(instanceConfigurableElement->getTypeElement());
+
+ // Do the extension
+ return typeElement->toPlainInteger(sizeOptimizedData);
+ }
+
+ return sizeOptimizedData;
+}
+
// Default back synchronization
void CSubsystemObject::setDefaultValues(CParameterBlackboard& parameterBlackboard) const
{