X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Fcan%2Fcan-signals.cpp;h=a9645567cb8de208a666c3e86178997be3f99da7;hb=e777f2d4f52e879405d3e5867174407794456da9;hp=6211fa1d3071ff5550228aae2addc70d1154cac9;hpb=a58d40b5ae336a54408201963b065ee049b43acd;p=apps%2Fagl-service-can-low-level.git diff --git a/low-can-binding/can/can-signals.cpp b/low-can-binding/can/can-signals.cpp index 6211fa1d..a9645567 100644 --- a/low-can-binding/can/can-signals.cpp +++ b/low-can-binding/can/can-signals.cpp @@ -19,15 +19,17 @@ #include "can-signals.hpp" -#include "../configuration.hpp" +#include "../binding/application.hpp" #include "../utils/signals.hpp" #include "can-decoder.hpp" +#include "can-message.hpp" +#include "can-bus.hpp" #include "../diagnostic/diagnostic-message.hpp" +#include "canutil/write.h" std::string can_signal_t::prefix_ = "messages"; -can_signal_t::can_signal_t(std::uint8_t message_set_id, - std::uint8_t message_id, +can_signal_t::can_signal_t( std::string generic_name, uint8_t bit_position, uint8_t bit_size, @@ -40,12 +42,11 @@ can_signal_t::can_signal_t(std::uint8_t message_set_id, bool force_send_changed, std::map states, bool writable, - SignalDecoder decoder, - SignalEncoder encoder, + signal_decoder decoder, + signal_encoder encoder, bool received) - : message_set_id_{ message_set_id } - , message_id_{ message_id } - , generic_name_{ generic_name } + : parent_{nullptr}, + generic_name_{ generic_name } , bit_position_{ bit_position } , bit_size_{ bit_size } , factor_{ factor } @@ -63,13 +64,12 @@ can_signal_t::can_signal_t(std::uint8_t message_set_id, , last_value_{.0f} {} - -const can_message_definition_t& can_signal_t::get_message() const +can_message_definition_t* can_signal_t::get_message() const { - return configuration_t::instance().get_can_message_definition(message_set_id_, message_id_); + return parent_; } -const std::string& can_signal_t::get_generic_name() const +const std::string can_signal_t::get_generic_name() const { return generic_name_; } @@ -79,7 +79,7 @@ const std::string can_signal_t::get_name() const return prefix_ + "." + generic_name_; } -const std::string& can_signal_t::get_prefix() const +const std::string can_signal_t::get_prefix() const { return prefix_; } @@ -107,7 +107,7 @@ float can_signal_t::get_offset() const float can_signal_t::get_min_value() const { return min_value_; -} +} float can_signal_t::get_max_value() const { @@ -141,6 +141,20 @@ const std::string can_signal_t::get_states(uint8_t value) return std::string(); } +uint64_t can_signal_t::get_states(const std::string& value) const +{ + uint64_t ret = -1; + for( const auto& state: states_) + { + if(state.second == value) + { + ret = (uint64_t)state.first; + break; + } + } + return ret; +} + size_t can_signal_t::get_state_count() const { return states_.size(); @@ -151,12 +165,12 @@ bool can_signal_t::get_writable() const return writable_; } -SignalDecoder& can_signal_t::get_decoder() +signal_decoder& can_signal_t::get_decoder() { return decoder_; } -SignalEncoder& can_signal_t::get_encoder() +signal_encoder& can_signal_t::get_encoder() { return encoder_; } @@ -165,11 +179,22 @@ bool can_signal_t::get_received() const { return received_; } + float can_signal_t::get_last_value() const { return last_value_; } +std::pair can_signal_t::get_last_value_with_timestamp() const +{ + return std::make_pair(last_value_, frequency_.get_last_tick()); +} + +void can_signal_t::set_parent(can_message_definition_t* parent) +{ + parent_ = parent; +} + void can_signal_t::set_prefix(std::string val) { prefix_ = val; @@ -184,3 +209,9 @@ void can_signal_t::set_last_value(float val) { last_value_ = val; } + +void can_signal_t::set_timestamp(uint64_t timestamp) +{ + frequency_.tick(timestamp); +} +