diff options
author | Arthur Guyader <arthur.guyader@iot.bzh> | 2019-11-07 14:16:16 +0100 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2020-01-09 10:43:00 +0100 |
commit | 8b3af0fccba13e4098590322975bbd475d3d4f9e (patch) | |
tree | 29333136c9bca78a421697c048fd5379b062da88 /low-can-binding/binding | |
parent | 4e1db7198dc91adce159abbea60667400569d38c (diff) |
controller: Prepare project ot use the Controller
Initialize an empty message_set to fill later when loading the Plugins
Add the required method to be able to add a message_set
Bug-AGL: SPEC-2988
Change-Id: I1dc784648f69832de8681184adaccbf5300f831d
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'low-can-binding/binding')
-rw-r--r-- | low-can-binding/binding/application-generated.cpp | 864 | ||||
-rw-r--r-- | low-can-binding/binding/application.cpp | 41 | ||||
-rw-r--r-- | low-can-binding/binding/application.hpp | 2 |
3 files changed, 43 insertions, 864 deletions
diff --git a/low-can-binding/binding/application-generated.cpp b/low-can-binding/binding/application-generated.cpp deleted file mode 100644 index edde0e24..00000000 --- a/low-can-binding/binding/application-generated.cpp +++ /dev/null @@ -1,864 +0,0 @@ -#include "application.hpp" -#include "../can/can-decoder.hpp" -#include "../can/can-encoder.hpp" - -application_t::application_t() - : can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}} - , message_set_{ - {std::make_shared<message_set_t>(message_set_t{0,"example", - { // beginning message_definition_ vector - {std::make_shared<message_definition_t>(message_definition_t{"ls",0x21,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.cruise.cancel",// generic_name - 52,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.cruise.distance",// generic_name - 55,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.cruise.enable",// generic_name - 48,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.cruise.limit",// generic_name - 54,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.cruise.resume",// generic_name - 49,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.horn",// generic_name - 56,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.info",// generic_name - 38,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.lane_departure_warning",// generic_name - 63,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.mode",// generic_name - 34,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.next",// generic_name - 36,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.phone.call",// generic_name - 47,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.phone.hangup",// generic_name - 46,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.previous",// generic_name - 32,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.voice",// generic_name - 45,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.volume.down",// generic_name - 35,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.volume.mute",// generic_name - 39,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "steering_wheel.volume.up",// generic_name - 33,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",8,4,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared<signal_t> (signal_t{ - "hvac.fan.speed",// generic_name - 32,// bit_position - 8,// bit_size - 23.5294f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - nullptr,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "hvac.temperature.left",// generic_name - 0,// bit_position - 8,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - nullptr,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "hvac.temperature.right",// generic_name - 8,// bit_position - 8,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - nullptr,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "hvac.temperature.average",// generic_name - 16,// bit_position - 8,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - nullptr,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared<signal_t> (signal_t{ - "engine.speed",// generic_name - 16,// bit_position - 16,// bit_size - 0.250000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - nullptr,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "fuel.level.low",// generic_name - 55,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "fuel.level",// generic_name - 8,// bit_position - 8,// bit_size - 0.392157f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - nullptr,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared<signal_t> (signal_t{ - "vehicle.average.speed",// generic_name - 0,// bit_position - 15,// bit_size - 0.0156250f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - false,// writable - nullptr,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared<signal_t> (signal_t{ - "engine.oil.temp",// generic_name - 16,// bit_position - 8,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - nullptr,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "engine.oil.temp.high",// generic_name - 7,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared<signal_t> (signal_t{ - "doors.boot.open",// generic_name - 47,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "doors.front_left.open",// generic_name - 43,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "doors.front_right.open",// generic_name - 44,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "doors.rear_left.open",// generic_name - 46,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "doors.rear_right.open",// generic_name - 45,// bit_position - 4,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared<signal_t> (signal_t{ - "windows.front_left.open",// generic_name - 43,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "windows.front_right.open",// generic_name - 44,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "windows.rear_left.open",// generic_name - 46,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared<signal_t> (signal_t{ - "windows.rear_right.open",// generic_name - 45,// bit_position - 4,// bit_size - 1.00000f,// factor - 0.00000f,// offset - 0,// min_value - 0,// max_value - frequency_clock_t(0.00000f),// frequency - true,// send_same - false,// force_send_changed - { - },// states - true,// writable - decoder_t::decode_boolean,// decoder - nullptr,// encoder - false,// received - std::make_pair<bool, int>(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry - - }, // end message_definition vector - { // beginning diagnostic_messages_ vector - - } // end diagnostic_messages_ vector - })} // end message_set entry - } // end message_set vector -{ - for(std::shared_ptr<message_set_t> cms: message_set_) - { - std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition(); - for(std::shared_ptr<message_definition_t> cmd : messages_definition) - { - cmd->set_parent(cms); - std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals(); - for(std::shared_ptr<signal_t> sig: signals) - { - sig->set_parent(cmd); - } - } - - std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages(); - for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages) - { - dm->set_parent(cms); - } - } - } - -const std::string application_t::get_diagnostic_bus() const -{ - return diagnostic_manager_.get_bus_device_name();; -} - - diff --git a/low-can-binding/binding/application.cpp b/low-can-binding/binding/application.cpp index d22633f9..bcb8d732 100644 --- a/low-can-binding/binding/application.cpp +++ b/low-can-binding/binding/application.cpp @@ -52,6 +52,47 @@ uint8_t application_t::get_active_message_set() const return active_message_set_; } +int application_t::add_message_set(std::shared_ptr<message_set_t> new_message_set) +{ + + vect_ptr_msg_def_t messages_definition = new_message_set->get_messages_definition(); + for(std::shared_ptr<message_definition_t> cmd : messages_definition) + { + cmd->set_parent(new_message_set); + std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals(); + for(std::shared_ptr<signal_t> sig: signals) + sig->set_parent(cmd); + } + + std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = new_message_set->get_diagnostic_messages(); + for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages) + dm->set_parent(new_message_set); + + for(auto old_msg_set : message_set_) + { + if(old_msg_set->get_index() == new_message_set->get_index()) + { + + for(auto new_msg_def : new_message_set->get_messages_definition()) + { + if(old_msg_set->add_message_definition(new_msg_def) < 0) + return -1; + } + + for(auto new_diag_msg : new_message_set->get_diagnostic_messages()) + { + if(old_msg_set->add_diagnostic_message(new_diag_msg) < 0) + return -1; + } + + return 0; + } + } + + message_set_.push_back(new_message_set); + return 0; +} + std::vector<std::shared_ptr<message_set_t> > application_t::get_message_set() { return message_set_; diff --git a/low-can-binding/binding/application.hpp b/low-can-binding/binding/application.hpp index 47a0e2f1..95f64cf3 100644 --- a/low-can-binding/binding/application.hpp +++ b/low-can-binding/binding/application.hpp @@ -71,6 +71,8 @@ class application_t uint8_t get_active_message_set() const; + int add_message_set(std::shared_ptr<message_set_t> new_message_set); + std::vector<std::shared_ptr<message_set_t> > get_message_set(); vect_ptr_signal_t get_all_signals(); |