From 5b992c19e04ccb3c4ba0b3314fd4152a9919d98c Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Thu, 1 Jun 2017 18:18:33 +0200 Subject: [PATCH] Implement minimum and maximum subscription filters Change-Id: I6b027cdb37e425e185b8d2278ae775f857ff96bc Signed-off-by: Romain Forlot --- CAN-binder/low-can-binding/can/can-bus.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CAN-binder/low-can-binding/can/can-bus.cpp b/CAN-binder/low-can-binding/can/can-bus.cpp index cc0a3d6..9ee649c 100644 --- a/CAN-binder/low-can-binding/can/can-bus.cpp +++ b/CAN-binder/low-can-binding/can/can-bus.cpp @@ -47,11 +47,15 @@ can_bus_t::can_bus_t(utils::config_parser_t conf_file) bool can_bus_t::apply_filter(const openxc_VehicleMessage& vehicle_message, std::shared_ptr can_subscription) { + bool send = false; if(is_valid(vehicle_message)) { - return true; + 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(); + double value = get_numerical_from_DynamicField(vehicle_message); + send = (value < min && value > max) ? false : true; } - return false; + return send; } /// @brief Will make the decoding operation on a classic CAN message. It will not -- 2.16.6