summaryrefslogtreecommitdiffstats
path: root/src/can
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-03-07 15:35:37 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2017-03-16 17:09:03 +0100
commitfe846f6698710163af5f2658cc90151259b09d0d (patch)
tree31ffce196635301f05d9231cf653edd53e9dc773 /src/can
parent4d5b071ab451260ef9d3cbf393aca0992104b0d7 (diff)
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 <romain.forlot@iot.bzh>
Diffstat (limited to 'src/can')
-rw-r--r--src/can/can-bus.cpp8
-rw-r--r--src/can/can-bus.hpp10
2 files changed, 11 insertions, 7 deletions
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<std::string, std::shared_ptr<can_bus_dev_t>> 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);