X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Fcan%2Fcan-bus.cpp;h=d773ad35975a5e4b75b5aaa6ae13fa564b2687bd;hb=2eb313e5330dbfa1b6eab146b3698d8ffe054347;hp=71e784952b6ec2f868934b5c6331a1df3e943f46;hpb=e75bc1833664ec34852d38a46e133334c19ac58c;p=apps%2Fagl-service-can-low-level.git diff --git a/low-can-binding/can/can-bus.cpp b/low-can-binding/can/can-bus.cpp index 71e78495..d773ad35 100644 --- a/low-can-binding/can/can-bus.cpp +++ b/low-can-binding/can/can-bus.cpp @@ -40,10 +40,10 @@ can_bus_t::can_bus_t(utils::config_parser_t conf_file) : conf_file_{conf_file} {} -/// @brief Take a decoded message to determine if its value comply with the wanted -/// filtering values. +/// @brief Take a decoded message to determine if its value complies with the desired +/// filters. /// -/// @param[in] vehicle_message - A decoded message to analyze +/// @param[in] vehicle_message - The decoded message to be analyzed. /// @param[in] can_subscription - the subscription which will be notified depending /// on its filtering values. Filtering values are stored in the event_filtermember. /// @@ -53,10 +53,10 @@ bool can_bus_t::apply_filter(const openxc_VehicleMessage& vehicle_message, std:: bool send = false; if(is_valid(vehicle_message)) { - float min = std::isnan(can_subscription->get_min()) ? -INFINITY : can_subscription->get_min(); - float max = std::isnan(can_subscription->get_max()) ? INFINITY : can_subscription->get_max(); + float min = can_subscription->get_min(); + float max = can_subscription->get_max(); double value = get_numerical_from_DynamicField(vehicle_message); - send = (value < min && value > max) ? false : true; + send = (value < min || value > max) ? false : true; } return send; } @@ -83,7 +83,7 @@ void can_bus_t::process_can_signals(const can_message_t& can_message, std::mapget_event())) { bool send = true; - decoded_message = decoder_t::translateSignal(*sig->get_can_signal(), can_message, application_t::instance().get_all_can_signals(), &send); + decoded_message = decoder_t::translate_signal(*sig->get_can_signal(), can_message, &send); openxc_SimpleMessage s_message = build_SimpleMessage(sig->get_name(), decoded_message); vehicle_message = build_VehicleMessage(s_message, can_message.get_timestamp()); @@ -109,6 +109,8 @@ void can_bus_t::process_diagnostic_signals(diagnostic_manager_t& manager, const int subscription_id = can_message.get_sub_id(); openxc_VehicleMessage vehicle_message = manager.find_and_decode_adr(can_message); + if (can_message.get_timestamp()) + {vehicle_message.timestamp = can_message.get_timestamp();} if( (vehicle_message.has_simple_message && vehicle_message.simple_message.has_name) && s.find(subscription_id) != s.end() && afb_event_is_valid(s[subscription_id]->get_event())) { @@ -128,7 +130,7 @@ void can_bus_t::process_diagnostic_signals(diagnostic_manager_t& manager, const /// /// It will take from the can_message_q_ queue the next can message to process then it search /// about signal subscribed if there is a valid afb_event for it. We only decode signal for which a -/// subscription has been made. Can message will be decoded using translateSignal that will pass it to the +/// subscription has been made. Can message will be decoded using translate_signal that will pass it to the /// corresponding decoding function if there is one assigned for that signal. If not, it will be the default /// noopDecoder function that will operate on it. /// @@ -165,7 +167,6 @@ void can_bus_t::can_decode_message() /// which are events that has to be pushed. void can_bus_t::can_event_push() { - openxc_SimpleMessage s_message; json_object* jo; utils::signals_manager_t& sm = utils::signals_manager_t::instance(); @@ -180,11 +181,10 @@ void can_bus_t::can_event_push() { std::lock_guard subscribed_signals_lock(sm.get_subscribed_signals_mutex()); std::map >& s = sm.get_subscribed_signals(); - s_message = get_simple_message(v_message.second); if(s.find(v_message.first) != s.end() && afb_event_is_valid(s[v_message.first]->get_event())) { jo = json_object_new_object(); - jsonify_simple(s_message, jo); + jsonify_vehicle(v_message.second, jo); if(afb_event_push(s[v_message.first]->get_event(), jo) == 0) { if(v_message.second.has_diagnostic_response) @@ -297,9 +297,9 @@ void can_bus_t::set_can_devices() { if(conf_file_.check_conf()) { - can_devices_ = conf_file_.get_devices_name(); + can_devices_mapping_ = conf_file_.get_devices_name(); - if(can_devices_.empty()) + if(can_devices_mapping_.empty()) { AFB_ERROR("No mapping found in config file: '%s'. Check it that it have a CANbus-mapping section.", conf_file_.filepath().c_str()); @@ -313,7 +313,7 @@ void can_bus_t::set_can_devices() int can_bus_t::get_can_device_index(const std::string& bus_name) const { int i = 0; - for(const auto& d: can_devices_) + for(const auto& d: can_devices_mapping_) { if(d.first == bus_name) break; @@ -327,8 +327,8 @@ int can_bus_t::get_can_device_index(const std::string& bus_name) const /// general. const std::string can_bus_t::get_can_device_name(const std::string& id_name) const { - std::string ret; - for(const auto& d: can_devices_) + std::string ret = ""; + for(const auto& d: can_devices_mapping_) { if(d.first == id_name) {