summaryrefslogtreecommitdiffstats
path: root/low-can-binding/can/can-bus.cpp
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2019-11-20 15:31:14 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2020-01-09 15:55:03 +0100
commit04b7efcdd1a8dfdf461c78d083aabee5445e54bd (patch)
treeccb146ebee3324b2e220430d476b1d9addaa451c /low-can-binding/can/can-bus.cpp
parent47322aceac11e3142af4339260a74ccfba675e17 (diff)
can-bus: Use configuration from JSON file
Use configuration from JSON file instead of the old INI file. Now all configuration files lies within the binding tree. Bug-AGL: SPEC-2988 Change-Id: Id986d19751db958ad5cf3b7f2b2c5443d4ceb062 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'low-can-binding/can/can-bus.cpp')
-rw-r--r--low-can-binding/can/can-bus.cpp44
1 files changed, 23 insertions, 21 deletions
diff --git a/low-can-binding/can/can-bus.cpp b/low-can-binding/can/can-bus.cpp
index ddf54918..cbe3cda7 100644
--- a/low-can-binding/can/can-bus.cpp
+++ b/low-can-binding/can/can-bus.cpp
@@ -44,12 +44,31 @@ can_bus_t::~can_bus_t()
}
/// @brief Class constructor
-///
-/// @param[in] conf_file - handle to the json configuration file.
-can_bus_t::can_bus_t(utils::config_parser_t conf_file)
- : conf_file_{conf_file}
+can_bus_t::can_bus_t()
{}
+/// @brief Fills the CAN device map member with value from device
+///
+/// @param[in] mapping configuration section.
+void can_bus_t::set_can_devices(json_object *mapping)
+{
+ if (! mapping)
+ {
+ AFB_ERROR("Can't initialize CAN buses with this empty mapping.");
+ return;
+ }
+
+ struct json_object_iterator it = json_object_iter_begin(mapping);
+ struct json_object_iterator end = json_object_iter_end(mapping);
+ while (! json_object_iter_equal(&it, &end)) {
+ can_devices_mapping_.push_back(std::make_pair(
+ json_object_iter_peek_name(&it),
+ json_object_get_string(json_object_iter_peek_value(&it))
+ ));
+ json_object_iter_next(&it);
+ }
+}
+
/// @brief Take a decoded message to determine if its value complies with the desired
/// filters.
///
@@ -303,23 +322,6 @@ void can_bus_t::push_new_vehicle_message(int subscription_id, const openxc_Vehic
vehicle_message_q_.push(std::make_pair(subscription_id, v_msg));
}
-/// @brief Fills the CAN device map member with value from device
-/// mapping configuration file read at initialization.
-void can_bus_t::set_can_devices()
-{
- if(conf_file_.check_conf())
- {
- can_devices_mapping_ = conf_file_.get_devices_name();
-
- if(can_devices_mapping_.empty())
- {
- AFB_ERROR("No mapping found in config file: '%s'. Check it that it have a CANbus-mapping section.",
- conf_file_.filepath().c_str());
- }
- }
-}
-
-
/// @brief Return the CAN device index from the map
/// map are sorted so index depend upon alphabetical sorting.
int can_bus_t::get_can_device_index(const std::string& bus_name) const