decoder: rework how to swap frame layout.
[apps/agl-service-can-low-level.git] / low-can-binding / can / signals.cpp
old mode 100644 (file)
new mode 100755 (executable)
index 3d26343..da8df98
@@ -30,8 +30,8 @@ std::string signal_t::prefix_ = "messages";
 
 signal_t::signal_t(
        std::string generic_name,
-       uint8_t bit_position,
-       uint8_t bit_size,
+       uint32_t bit_position,
+       uint32_t bit_size,
        float factor,
        float offset,
        float min_value,
@@ -44,9 +44,10 @@ signal_t::signal_t(
        signal_decoder decoder,
        signal_encoder encoder,
        bool received,
-       std::pair<bool,int> multiplex,
+       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,14 +68,15 @@ 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}
 {}
 
 signal_t::signal_t(
        std::string generic_name,
-       uint8_t bit_position,
-       uint8_t bit_size,
+       uint32_t bit_position,
+       uint32_t bit_size,
        float factor,
        float offset,
        float min_value,
@@ -119,12 +121,12 @@ const std::string signal_t::get_name() const
        return prefix_ + "." + generic_name_;
 }
 
-uint8_t signal_t::get_bit_position() const
+uint32_t signal_t::get_bit_position() const
 {
        return bit_position_;
 }
 
-uint8_t signal_t::get_bit_size() const
+uint32_t signal_t::get_bit_size() const
 {
        return bit_size_;
 }
@@ -220,6 +222,11 @@ void signal_t::set_timestamp(uint64_t timestamp)
        frequency_.tick(timestamp);
 }
 
+void signal_t::set_bit_position(uint32_t bit_position)
+{
+       bit_position_=bit_position;
+}
+
 std::pair<bool,int> signal_t::get_multiplex() const
 {
        return multiplex_;
@@ -230,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 sign_;
+}
+
+int32_t signal_t::get_bit_sign_position() const
 {
-       return is_signed_;
+       return bit_sign_position_;
 }
 
 const std::string signal_t::get_unit() const