summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-05-16 15:14:42 +0200
committerRomain Forlot <romain.forlot@iot.bzh>2017-05-19 11:36:43 +0200
commit452ab62dae573efc3a2d5a5d97c2f10fca5f502d (patch)
treef19a21230fb54aa5c0d8e02f03af468afffbb01c
parentc4f11994a1540576563819508d4148a0500db4b9 (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>
-rw-r--r--CAN-binder/low-can-binding/can/can-bus.hpp6
-rw-r--r--CAN-binder/low-can-binding/utils/config-parser.cpp6
-rw-r--r--CAN-binder/low-can-binding/utils/config-parser.hpp3
-rw-r--r--CAN-binder/low-can-binding/utils/openxc-utils.cpp5
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)