From e2411259c39a880338bd2435e994c21268eb3e5c Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Thu, 9 Mar 2017 13:06:56 +0100 Subject: Add necessary to be able to initialize diagnostic manager shims. We have to conform to functions signatures from isotp-c to have it working. Change-Id: I429def66f54e53277e87aa99e66292cdb47c1c5f Signed-off-by: Romain Forlot --- src/diagnostic/diagnostic-manager.cpp | 15 +++++++++++++-- src/diagnostic/diagnostic-manager.hpp | 5 ++++- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'src/diagnostic') diff --git a/src/diagnostic/diagnostic-manager.cpp b/src/diagnostic/diagnostic-manager.cpp index b811eda..1feac97 100644 --- a/src/diagnostic/diagnostic-manager.cpp +++ b/src/diagnostic/diagnostic-manager.cpp @@ -17,7 +17,8 @@ #include "obd2/diagnostic-manager.hpp" -#include "low-can-binding.hpp" +#include "../configuration.hpp" +#include "../low-can-binding.hpp" diagnostic_manager_t::diagnostic_manager_t() {} @@ -26,6 +27,12 @@ diagnostic_manager_t::diagnostic_manager_t(can_bus_dev_t& bus) : bus_(&bus) {} +bool shims_send(const uint32_t arbitration_id, const uint8_t* data, const uint8_t size) +{ + can_bus_dev_t *can_bus_dev = config->get_diagnostic_manager().get_can_bus_dev(); + return can_bus_dev->shims_send(arbitration_id, data, size); +} + void diagnostic_manager_t::shims_logger(const char* m, ...) { DEBUG(binder_interface, "%s", m); @@ -34,6 +41,10 @@ void diagnostic_manager_t::shims_logger(const char* m, ...) void diagnostic_manager_t::shims_timer() {} +can_bus_dev_t* diagnostic_manager_t::get_can_bus_dev() +{ + return bus_; +} /** * @brief initialize shims used by UDS lib and set initialized_ to true. * It is needed before used the diagnostic manager fully because shims are @@ -41,6 +52,6 @@ void diagnostic_manager_t::shims_timer() */ void diagnostic_manager_t::init_diagnostic_shims() { - DiagnosticShims shims_ = diagnostic_init_shims(shims_logger, bus_.send_can_message, NULL); + DiagnosticShims shims_ = diagnostic_init_shims(shims_logger, shims_send, NULL); initialized_ = true; } \ No newline at end of file diff --git a/src/diagnostic/diagnostic-manager.hpp b/src/diagnostic/diagnostic-manager.hpp index aab233b..faf1eaf 100644 --- a/src/diagnostic/diagnostic-manager.hpp +++ b/src/diagnostic/diagnostic-manager.hpp @@ -20,7 +20,7 @@ #include #include "uds/uds.h" -#include "can/can-bus.hpp" +#include "can/can-bus-dev.hpp" #include "can/can-message.hpp" #include "obd2/active-diagnostic-request.hpp" @@ -39,6 +39,7 @@ */ class diagnostic_manager_t { protected: + static bool shims_send(const uint32_t arbitration_id, const uint8_t* data, const uint8_t size); static void shims_logger(const char* m, ...); static void shims_timer(); @@ -66,6 +67,8 @@ public: void init_diagnostic_shims(); + can_bus_dev_t* get_can_bus_dev(); + void checkSupportedPids(const active_diagnostic_request_t& request, const DiagnosticResponse& response, float parsedPayload); -- cgit 1.2.3-korg