From fe846f6698710163af5f2658cc90151259b09d0d Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Tue, 7 Mar 2017 15:35:37 +0100 Subject: Introducing diagnostic manager class. It will hold communication through uds-c lib allowing to communication with diagnostic protocol obd2. It is attached to can_bus_dev_t class 'cause it must regularly send CAN message through it. Change-Id: I2d9d8dfaca10e9865bf82b0ae83e65490ca982f8 Signed-off-by: Romain Forlot --- src/can/can-bus.cpp | 8 ++++---- src/can/can-bus.hpp | 10 +++++++--- 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'src/can') diff --git a/src/can/can-bus.cpp b/src/can/can-bus.cpp index 851f62a..034e0ac 100644 --- a/src/can/can-bus.cpp +++ b/src/can/can-bus.cpp @@ -31,6 +31,7 @@ #include "can/can-decoder.hpp" #include "utils/openxc-utils.hpp" +#include "obd2/diagnostic-manager.hpp" extern "C" { @@ -363,10 +364,9 @@ std::map> can_bus_t::get_can_devices * * @param const string representing the device name into the linux /dev tree */ -can_bus_dev_t::can_bus_dev_t(const std::string &dev_name) - : device_name_{dev_name}, can_socket_{-1} -{ -} +can_bus_dev_t::can_bus_dev_t(const std::string& dev_name) + : device_name_{dev_name}, can_socket_{-1}, diagnostic_manager_{diagnostic_manager_t(*this)} +{} /** * @brief Open the can socket and returning it diff --git a/src/can/can-bus.hpp b/src/can/can-bus.hpp index 0fa13b2..3f85b4e 100644 --- a/src/can/can-bus.hpp +++ b/src/can/can-bus.hpp @@ -27,6 +27,8 @@ #include "utils/timer.hpp" #include "can/can-signals.hpp" #include "can/can-message.hpp" +#include "obd2/diagnostic-manager.hpp" + #include "low-can-binding.hpp" // TODO actual max is 32 but dropped to 24 for memory considerations @@ -37,6 +39,7 @@ #define CAN_ACTIVE_TIMEOUT_S 30 class can_bus_dev_t; +class diagnostic_manager_t; /** * @class can_bus_t @@ -105,10 +108,12 @@ class can_bus_dev_t { int can_socket_; /*!< socket handler for the can device */ bool is_fdmode_on_; /*!< boolean telling if whether or not the can socket use fdmode. */ struct sockaddr_can txAddress_; /*!< internal member using to bind to the socket */ - + + diagnostic_manager_t diagnostic_manager_; /*!< diagnostic_manager_t diagnostic_manager_ - A diagnostic_manager_t object instance + * that will handle diagnostic obd2 protocol requests and responses.*/ + std::thread th_reading_; /*!< Thread handling read the socket can device filling can_message_q_ queue of can_bus_t */ bool is_running_; /*!< boolean telling whether or not reading is running or not */ - void can_reader(can_bus_t& can_bus); public: @@ -116,7 +121,6 @@ class can_bus_dev_t { int open(); int close(); - void start_reading(can_bus_t& can_bus); -- cgit 1.2.3-korg