From e777f2d4f52e879405d3e5867174407794456da9 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Fri, 6 Jul 2018 14:38:02 +0200 Subject: Fix: correctly stop the binding. Automatically destroying C++ objects wasn't sufficient since it uses thread with locks that were waiting forever if there is no CAN bus activity. Now correctly wake-up the threads to ends them even if there without activity on the CAN bus. Change-Id: I69d74a34a8dbea4df7c8090aa47abf1c43133020 Signed-off-by: Romain Forlot --- low-can-binding/can/can-bus.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'low-can-binding/can/can-bus.cpp') diff --git a/low-can-binding/can/can-bus.cpp b/low-can-binding/can/can-bus.cpp index d773ad35..040cb5f8 100644 --- a/low-can-binding/can/can-bus.cpp +++ b/low-can-binding/can/can-bus.cpp @@ -33,6 +33,16 @@ #include "../utils/signals.hpp" #include "../utils/openxc-utils.hpp" +/// @brief Class destructor +/// +/// @param[in] conf_file - Stop threads and unlock them to correctly finish them +/// even without any activity on the CAN bus. +can_bus_t::~can_bus_t() +{ + stop_threads(); + new_can_message_cv_.notify_one(); +} + /// @brief Class constructor /// /// @param[in] conf_file - handle to the json configuration file. @@ -158,8 +168,8 @@ void can_bus_t::can_decode_message() } can_message_lock.lock(); } - new_decoded_can_message_.notify_one(); - can_message_lock.unlock(); + new_decoded_can_message_.notify_one(); + can_message_lock.unlock(); } } -- cgit 1.2.3-korg