diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-05-18 19:49:43 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-05-19 14:48:23 +0200 |
commit | 465001c7ef7479e7cfb7af7af180ed6419a5ab49 (patch) | |
tree | c0a842d5b9ab9c0c75972bc12b2903de5f46e311 /CAN-binder | |
parent | dd00a5553e42adb8a14470602e4f25c449287f7d (diff) |
Finish config parser retrieving device mapping.
Change-Id: Ia43f9c0edf09ff9a1c009f198bdad10a6b44b249
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'CAN-binder')
-rw-r--r-- | CAN-binder/low-can-binding/binding/low-can-hat.cpp | 1 | ||||
-rw-r--r-- | CAN-binder/low-can-binding/can/can-bus.cpp | 10 | ||||
-rw-r--r-- | CAN-binder/low-can-binding/can/can-bus.hpp | 4 | ||||
-rw-r--r-- | CAN-binder/low-can-binding/utils/config-parser.cpp | 7 | ||||
-rw-r--r-- | CAN-binder/low-can-binding/utils/config-parser.hpp | 2 |
5 files changed, 19 insertions, 5 deletions
diff --git a/CAN-binder/low-can-binding/binding/low-can-hat.cpp b/CAN-binder/low-can-binding/binding/low-can-hat.cpp index 747228e5..918625f6 100644 --- a/CAN-binder/low-can-binding/binding/low-can-hat.cpp +++ b/CAN-binder/low-can-binding/binding/low-can-hat.cpp @@ -68,6 +68,7 @@ extern "C" { can_bus_t& can_bus_manager = configuration_t::instance().get_can_bus_manager(); + can_bus_manager.set_can_devices(); can_bus_manager.start_threads(); /// Initialize Diagnostic manager that will handle obd2 requests. diff --git a/CAN-binder/low-can-binding/can/can-bus.cpp b/CAN-binder/low-can-binding/can/can-bus.cpp index 06338b4e..bd9cde77 100644 --- a/CAN-binder/low-can-binding/can/can-bus.cpp +++ b/CAN-binder/low-can-binding/can/can-bus.cpp @@ -294,9 +294,15 @@ void can_bus_t::push_new_vehicle_message(const openxc_VehicleMessage& v_msg) void can_bus_t::set_can_devices() { can_devices_ = conf_file_.get_devices_name(); + + if(can_devices_.empty()) + { + ERROR(binder_interface, "%s: No mapping found in config file: '%s'. Check it that it have a CANbus-mapping section.", + __FUNCTION__, conf_file_.filepath().c_str()); + } } -int can_bus_t::get_can_device_index(std::string bus_name) const +int can_bus_t::get_can_device_index(const std::string& bus_name) const { int i = 0; for(const auto& d: can_devices_) @@ -308,7 +314,7 @@ int can_bus_t::get_can_device_index(std::string bus_name) const return i; } -std::string can_bus_t::get_can_device_name(std::string id_name) const +const std::string can_bus_t::get_can_device_name(const std::string& id_name) const { std::string ret; for(const auto& d: can_devices_) diff --git a/CAN-binder/low-can-binding/can/can-bus.hpp b/CAN-binder/low-can-binding/can/can-bus.hpp index c300c7f4..1efd2049 100644 --- a/CAN-binder/low-can-binding/can/can-bus.hpp +++ b/CAN-binder/low-can-binding/can/can-bus.hpp @@ -75,8 +75,8 @@ public: can_bus_t(can_bus_t&&); void set_can_devices(); - int get_can_device_index(std::string bus_name) const; - std::string get_can_device_name(std::string id_name) const; + int get_can_device_index(const std::string& bus_name) const; + const std::string get_can_device_name(const 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 6f699169..3f338121 100644 --- a/CAN-binder/low-can-binding/utils/config-parser.cpp +++ b/CAN-binder/low-can-binding/utils/config-parser.cpp @@ -23,11 +23,16 @@ namespace utils { /// @brief constructor using path to file config_parser_t::config_parser_t(std::string conf_file) - : config_content_{} + : filepath_{conf_file}, config_content_{} { config_content_.read_file(conf_file); } + const std::string& config_parser_t::filepath() const + { + return filepath_; + } + /// @brief read the conf_file_ and parse it into an INIReader object /// to search into later. bool config_parser_t::check_conf() diff --git a/CAN-binder/low-can-binding/utils/config-parser.hpp b/CAN-binder/low-can-binding/utils/config-parser.hpp index ce032c9a..04531108 100644 --- a/CAN-binder/low-can-binding/utils/config-parser.hpp +++ b/CAN-binder/low-can-binding/utils/config-parser.hpp @@ -29,6 +29,7 @@ namespace utils class config_parser_t { private: + const std::string filepath_; /*!< filepath_ - Path to the config file*/ ini_config config_content_; /*!< config_content_ - Parsed content of INI file.*/ public: @@ -36,6 +37,7 @@ namespace utils config_parser_t(const config_parser_t&) = default; config_parser_t(std::string conf_file); + const std::string& filepath() const; bool check_conf(); const std::vector<std::pair<std::string, std::string> > get_devices_name(); }; |