From 3d3fbfd56b476a1f36bfc9cabf5a21f981d06844 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Fri, 5 May 2017 18:35:53 +0200 Subject: [PATCH] Get back to device dedicated raw_socket Change-Id: Ibec47106f8510e92a017fc08aeb2eeaeef2884e5 Signed-off-by: Romain Forlot --- CAN-binder/low-can-binding/can/can-bus-dev.hpp | 4 ++-- CAN-binder/low-can-binding/can/can-signals.cpp | 11 +++++++++++ CAN-binder/low-can-binding/can/can-signals.hpp | 2 ++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CAN-binder/low-can-binding/can/can-bus-dev.hpp b/CAN-binder/low-can-binding/can/can-bus-dev.hpp index 2ddc1ff..973c8cf 100644 --- a/CAN-binder/low-can-binding/can/can-bus-dev.hpp +++ b/CAN-binder/low-can-binding/can/can-bus-dev.hpp @@ -34,9 +34,9 @@ class can_bus_dev_t { private: std::string device_name_; ///< a string identifier identitfying the linux CAN device. - utils::socketcan_raw_t can_socket_; + utils::socketcan_raw_t can_socket_; ///< can_socket_ - A Raw socket attached to a specified device - int index_; + int index_; ///< index_ - An index number, it's the index number to access this object using the can_devices_ map from can_bus_t class std::thread th_reading_; ///< Thread handling read the socket can device filling can_message_q_ queue of can_bus_t bool is_running_ = false; ///< boolean telling whether or not reading is running or not diff --git a/CAN-binder/low-can-binding/can/can-signals.cpp b/CAN-binder/low-can-binding/can/can-signals.cpp index 48c919d..c8098a5 100644 --- a/CAN-binder/low-can-binding/can/can-signals.cpp +++ b/CAN-binder/low-can-binding/can/can-signals.cpp @@ -235,3 +235,14 @@ int can_signal_t::create_rx_filter() return -1; } +can_message_format_t can_signal_t::read_socket() +{ + can_message_t msg; + can_bus_t& cbm = configuration_t::instance().get_can_bus_manager(); + socket_ >> msg; + std::lock_guard can_message_lock(cbm.get_can_message_mutex()); + { cbm.push_new_can_message(msg); } + cbm.get_new_can_message_cv().notify_one(); + + return msg.get_format(); +} \ No newline at end of file diff --git a/CAN-binder/low-can-binding/can/can-signals.hpp b/CAN-binder/low-can-binding/can/can-signals.hpp index f21cab4..8196c7e 100644 --- a/CAN-binder/low-can-binding/can/can-signals.hpp +++ b/CAN-binder/low-can-binding/can/can-signals.hpp @@ -157,5 +157,7 @@ public: void set_prefix(std::string val); void set_received(bool r); void set_last_value(float val); + int create_rx_filter(); + can_message_format_t read_socket(); }; \ No newline at end of file -- 2.16.6