diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-06-01 13:48:19 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-06-01 18:40:13 +0200 |
commit | cc76d9863d8f528d6299b8ecdbfc2f7f437ac5de (patch) | |
tree | 8bc0cb6dd36bf021e5a5242d960cbc26018ba9e3 /CAN-binder/low-can-binding/utils | |
parent | e9b00c3af0c469726e32755715a69395ad1d3718 (diff) |
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 <romain.forlot@iot.bzh>
Diffstat (limited to 'CAN-binder/low-can-binding/utils')
-rw-r--r-- | CAN-binder/low-can-binding/utils/socketcan-bcm.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
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 <sys/ioctl.h> #include <fcntl.h> +#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; } |