aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-05-18 19:49:43 +0200
committerRomain Forlot <romain.forlot@iot.bzh>2017-05-19 14:48:23 +0200
commit465001c7ef7479e7cfb7af7af180ed6419a5ab49 (patch)
treec0a842d5b9ab9c0c75972bc12b2903de5f46e311
parentdd00a5553e42adb8a14470602e4f25c449287f7d (diff)
Finish config parser retrieving device mapping.
Change-Id: Ia43f9c0edf09ff9a1c009f198bdad10a6b44b249 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
-rw-r--r--CAN-binder/low-can-binding/binding/low-can-hat.cpp1
-rw-r--r--CAN-binder/low-can-binding/can/can-bus.cpp10
-rw-r--r--CAN-binder/low-can-binding/can/can-bus.hpp4
-rw-r--r--CAN-binder/low-can-binding/utils/config-parser.cpp7
-rw-r--r--CAN-binder/low-can-binding/utils/config-parser.hpp2
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();
};