diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-05-16 15:14:42 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-05-19 11:36:43 +0200 |
commit | 452ab62dae573efc3a2d5a5d97c2f10fca5f502d (patch) | |
tree | f19a21230fb54aa5c0d8e02f03af468afffbb01c | |
parent | c4f11994a1540576563819508d4148a0500db4b9 (diff) |
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 <romain.forlot@iot.bzh>
4 files changed, 11 insertions, 9 deletions
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 <openxc_VehicleMessage> vehicle_message_q_; ///< queue that'll store openxc_VehicleMessage to pushed - static std::map<std::string, std::shared_ptr<can_bus_dev_t>> can_devices_; ///< Can device map containing all can_bus_dev_t objects initialized during init_can_dev function - + std::vector<std::pair<std::string, std::string> > 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<std::string> config_parser_t::get_devices_name() + const std::vector<std::pair<std::string, std::string> > config_parser_t::get_devices_name() { - std::vector<std::string> devices_name; + std::vector<std::pair<std::string, std::string> > devices_name; std::map<std::string, std::string> 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 <string> #include <vector> +#include <utility> #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<std::string> get_devices_name(); + const std::vector<std::pair<std::string, std::string> > 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) |