aboutsummaryrefslogtreecommitdiffstats
path: root/low-can-binding/can/signals.cpp
diff options
context:
space:
mode:
authorClément Bénier <clement.benier@iot.bzh>2019-11-15 11:20:34 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2020-01-09 14:40:41 +0100
commit6cc152447e74b1ce7fab6c7aa1f9b4e5e8232444 (patch)
tree2e4f9dd31136abd18e5c1c52c8bf2a0ec8921331 /low-can-binding/can/signals.cpp
parent03a4775eefeeba913f69d331e3930700a567c4c5 (diff)
sign: handle decode methods sign from can value
- add enumeration that represents the way of encoding: enum sign_t { UNSIGNED = 0, SIGN_BIT = 1, ONES_COMPLEMENT = 2, TWOS_COMPLEMENT = 3, SIGN_BIT_EXTERN = 4 }; - the function handle_sign allows to transform value if negative and return the sign of the value in order to be multiplied at the end ot the parcing Bug-AGL: SPEC-3021 Change-Id: I5766a286488170d930422474b4c4f3a8578ca726 Signed-off-by: Clément Bénier <clement.benier@iot.bzh> Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'low-can-binding/can/signals.cpp')
-rwxr-xr-xlow-can-binding/can/signals.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/low-can-binding/can/signals.cpp b/low-can-binding/can/signals.cpp
index 2b87dc6f..da8df988 100755
--- a/low-can-binding/can/signals.cpp
+++ b/low-can-binding/can/signals.cpp
@@ -46,7 +46,8 @@ signal_t::signal_t(
bool received,
std::pair<bool, int> multiplex,
bool is_big_endian,
- bool is_signed,
+ sign_t sign,
+ int32_t bit_sign_position,
std::string unit)
: parent_{nullptr},
generic_name_{ generic_name }
@@ -67,7 +68,8 @@ signal_t::signal_t(
, last_value_{.0f}
, multiplex_{multiplex}
, is_big_endian_{is_big_endian}
- , is_signed_{is_signed}
+ , sign_{sign}
+ , bit_sign_position_{bit_sign_position}
, unit_{unit}
{}
@@ -235,9 +237,14 @@ bool signal_t::get_is_big_endian() const
return is_big_endian_;
}
-bool signal_t::get_is_signed() const
+sign_t signal_t::get_sign() const
{
- return is_signed_;
+ return sign_;
+}
+
+int32_t signal_t::get_bit_sign_position() const
+{
+ return bit_sign_position_;
}
const std::string signal_t::get_unit() const