From: Romain Forlot Date: Tue, 16 May 2017 13:14:42 +0000 (+0200) Subject: Be able to return index or can bus name. X-Git-Tag: 5.0.2~213 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=452ab62dae573efc3a2d5a5d97c2f10fca5f502d;p=apps%2Fagl-service-can-low-level.git Be able to return index or can bus name. Use a vector of string pair that map index on vector and pair map logical bus name with linux device name. Change-Id: I627e6f715f7466d835d8729e21d9e4198111c1fb Signed-off-by: Romain Forlot --- diff --git a/CAN-binder/low-can-binding/can/can-bus.hpp b/CAN-binder/low-can-binding/can/can-bus.hpp index 759a70f3..7fe6ebf3 100644 --- a/CAN-binder/low-can-binding/can/can-bus.hpp +++ b/CAN-binder/low-can-binding/can/can-bus.hpp @@ -69,12 +69,14 @@ private: std::mutex decoded_can_message_mutex_; ///< mutex protecting the vehicle_message_q_ queue. std::queue vehicle_message_q_; ///< queue that'll store openxc_VehicleMessage to pushed - static std::map> can_devices_; ///< Can device map containing all can_bus_dev_t objects initialized during init_can_dev function - + std::vector > can_devices_; public: can_bus_t(utils::config_parser_t conf_file); can_bus_t(can_bus_t&&); + void set_can_devices(); + int get_can_device_index(std::string bus_name) const; + const std::string get_can_device_name(std::string id_name) const; void start_threads(); void stop_threads(); diff --git a/CAN-binder/low-can-binding/utils/config-parser.cpp b/CAN-binder/low-can-binding/utils/config-parser.cpp index 9c81afb0..6f699169 100644 --- a/CAN-binder/low-can-binding/utils/config-parser.cpp +++ b/CAN-binder/low-can-binding/utils/config-parser.cpp @@ -47,14 +47,14 @@ namespace utils /// have to test the returned value. /// /// @return A const vector with string of linux CAN devices. - const std::vector config_parser_t::get_devices_name() + const std::vector > config_parser_t::get_devices_name() { - std::vector devices_name; + std::vector > devices_name; std::map bus_mapping = config_content_.get_keys("CANbus-mapping"); for(const auto& busIt : bus_mapping ) { - devices_name.push_back(busIt.second); + devices_name.push_back(std::make_pair(busIt.first, busIt.second)); } return devices_name; diff --git a/CAN-binder/low-can-binding/utils/config-parser.hpp b/CAN-binder/low-can-binding/utils/config-parser.hpp index 28a43419..ce032c9a 100644 --- a/CAN-binder/low-can-binding/utils/config-parser.hpp +++ b/CAN-binder/low-can-binding/utils/config-parser.hpp @@ -19,6 +19,7 @@ #include #include +#include #include "ini-config.hpp" namespace utils @@ -36,6 +37,6 @@ namespace utils config_parser_t(std::string conf_file); bool check_conf(); - const std::vector get_devices_name(); + const std::vector > get_devices_name(); }; } diff --git a/CAN-binder/low-can-binding/utils/openxc-utils.cpp b/CAN-binder/low-can-binding/utils/openxc-utils.cpp index 2cf03e41..286b2f53 100644 --- a/CAN-binder/low-can-binding/utils/openxc-utils.cpp +++ b/CAN-binder/low-can-binding/utils/openxc-utils.cpp @@ -40,9 +40,8 @@ openxc_VehicleMessage build_VehicleMessage(active_diagnostic_request_t* request, message.type = openxc_VehicleMessage_Type::openxc_VehicleMessage_Type_DIAGNOSTIC; message.has_diagnostic_response = true; message.diagnostic_response.has_bus = true; - message.diagnostic_response.bus = conf.get_can_bus_manager().get_can_device( - conf.get_diagnostic_manager().get_can_bus()) - ->get_index(); + message.diagnostic_response.bus = conf.get_can_bus_manager().get_can_device_index( + conf.get_diagnostic_manager().get_can_bus()); message.diagnostic_response.has_message_id = true; if(request->get_id() != OBD2_FUNCTIONAL_BROADCAST_ID)