Get back to device dedicated raw_socket
authorRomain Forlot <romain.forlot@iot.bzh>
Fri, 5 May 2017 16:35:53 +0000 (18:35 +0200)
committerRomain Forlot <romain.forlot@iot.bzh>
Fri, 5 May 2017 16:42:30 +0000 (18:42 +0200)
Change-Id: Ibec47106f8510e92a017fc08aeb2eeaeef2884e5
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
CAN-binder/low-can-binding/can/can-bus-dev.hpp
CAN-binder/low-can-binding/can/can-signals.cpp
CAN-binder/low-can-binding/can/can-signals.hpp

index 2ddc1ff..973c8cf 100644 (file)
@@ -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
index 48c919d..c8098a5 100644 (file)
@@ -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<std::mutex> 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
index f21cab4..8196c7e 100644 (file)
@@ -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