diff options
Diffstat (limited to 'low-can-binding')
-rw-r--r-- | low-can-binding/can/can-bus.cpp | 14 | ||||
-rw-r--r-- | low-can-binding/can/can-bus.hpp | 1 |
2 files changed, 13 insertions, 2 deletions
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(); } } diff --git a/low-can-binding/can/can-bus.hpp b/low-can-binding/can/can-bus.hpp index 18782669..826d7c62 100644 --- a/low-can-binding/can/can-bus.hpp +++ b/low-can-binding/can/can-bus.hpp @@ -70,6 +70,7 @@ private: public: explicit can_bus_t(utils::config_parser_t conf_file); can_bus_t(can_bus_t&&); + ~can_bus_t(); void set_can_devices(); int get_can_device_index(const std::string& bus_name) const; |