low-can-cb: improve readability
[apps/agl-service-can-low-level.git] / low-can-binding / can / signals.cpp
old mode 100644 (file)
new mode 100755 (executable)
index e843bed..28246a0
@@ -22,7 +22,6 @@
 #include "../binding/application.hpp"
 #include "../utils/signals.hpp"
 #include "can-decoder.hpp"
-#include "message/can-message.hpp"
 #include "can-bus.hpp"
 #include "../diagnostic/diagnostic-message.hpp"
 #include "canutil/write.h"
@@ -31,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,
@@ -45,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 }
@@ -68,14 +68,16 @@ 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}
+       ,bit_position_is_swapped_{false}
 {}
 
 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,
@@ -103,6 +105,7 @@ signal_t::signal_t(
        , decoder_{decoder}
        , encoder_{encoder}
        , received_{received}
+       , bit_position_is_swapped_{false}
 {}
 
 std::shared_ptr<message_definition_t> signal_t::get_message() const
@@ -120,12 +123,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_;
 }
@@ -162,7 +165,7 @@ uint64_t signal_t::get_states(const std::string& value) const
        uint64_t ret = -1;
        for( const auto& state: states_)
        {
-               if(state.second == value)
+               if(caseInsCompare(state.second, value))
                {
                        ret = (uint64_t)state.first;
                        break;
@@ -221,6 +224,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_;
@@ -231,12 +239,27 @@ 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
 {
        return unit_;
 }
+
+bool signal_t::bit_position_is_swapped() const
+{
+       return bit_position_is_swapped_;
+}
+
+void signal_t::bit_position_is_swapped_reverse()
+{
+       bit_position_is_swapped_ = !bit_position_is_swapped_;
+}