From cc76d9863d8f528d6299b8ecdbfc2f7f437ac5de Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Thu, 1 Jun 2017 13:48:19 +0200 Subject: [PATCH] Use UDS PID has key to record subscriptions can_signal_t use socket number but has for OBD2 diagnostic request there is only 1 socket to listen all response then we use PID has key to find the subscription later on the processing. Change-Id: I5f0554e1a4ac43e1046d9b7b7f9bb00d3a753562 Signed-off-by: Romain Forlot --- CAN-binder/low-can-binding/binding/low-can-cb.cpp | 4 +++- CAN-binder/low-can-binding/utils/socketcan-bcm.cpp | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CAN-binder/low-can-binding/binding/low-can-cb.cpp b/CAN-binder/low-can-binding/binding/low-can-cb.cpp index 6504acf7..245a9ce5 100644 --- a/CAN-binder/low-can-binding/binding/low-can-cb.cpp +++ b/CAN-binder/low-can-binding/binding/low-can-cb.cpp @@ -61,7 +61,9 @@ low_can_subscription_t::low_can_subscription_t(struct event_filter_t event_filte low_can_subscription_t::low_can_subscription_t(struct event_filter_t event_filter, std::shared_ptr diagnostic_message) : diagnostic_message_{diagnostic_message}, event_filter_{event_filter} -{} +{ + index_ = diagnostic_message->get_pid(); +} low_can_subscription_t::low_can_subscription_t( low_can_subscription_t&& s) : index_{s.index_}, diff --git a/CAN-binder/low-can-binding/utils/socketcan-bcm.cpp b/CAN-binder/low-can-binding/utils/socketcan-bcm.cpp index 1009a421..cd84a851 100644 --- a/CAN-binder/low-can-binding/utils/socketcan-bcm.cpp +++ b/CAN-binder/low-can-binding/utils/socketcan-bcm.cpp @@ -21,6 +21,8 @@ #include #include +#include "../binding/application.hpp" + namespace utils { /// @brief Connect the socket. @@ -90,7 +92,10 @@ namespace utils cm = ::can_message_t::convert_from_frame(msg.frames , nbytes-sizeof(struct bcm_msg_head), timestamp); - cm.set_sub_id((int)s.socket()); + if(application_t::instance().get_diagnostic_manager().is_diagnostic_response(cm)) + {cm.set_sub_id(msg.frames.data[2]);} + else + {cm.set_sub_id((int)s.socket());} return s; } -- 2.16.6