From 8b3af0fccba13e4098590322975bbd475d3d4f9e Mon Sep 17 00:00:00 2001 From: Arthur Guyader Date: Thu, 7 Nov 2019 14:16:16 +0100 Subject: 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 --- low-can-binding/binding/application-generated.cpp | 864 ---------------------- low-can-binding/binding/application.cpp | 41 + low-can-binding/binding/application.hpp | 2 + 3 files changed, 43 insertions(+), 864 deletions(-) delete mode 100644 low-can-binding/binding/application-generated.cpp (limited to 'low-can-binding/binding') 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{0,"example", - { // beginning message_definition_ vector - {std::make_shared(message_definition_t{"ls",0x21,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"ls",0x30,"",8,4,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"hs",0x3D9,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"hs",0x3E9,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"hs",0x4D1,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"hs",0x620,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"hs",0x799,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(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 cms: message_set_) - { - std::vector> messages_definition = cms->get_messages_definition(); - for(std::shared_ptr cmd : messages_definition) - { - cmd->set_parent(cms); - std::vector> signals = cmd->get_signals(); - for(std::shared_ptr sig: signals) - { - sig->set_parent(cmd); - } - } - - std::vector> diagnostic_messages = cms->get_diagnostic_messages(); - for(std::shared_ptr 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 new_message_set) +{ + + vect_ptr_msg_def_t messages_definition = new_message_set->get_messages_definition(); + for(std::shared_ptr cmd : messages_definition) + { + cmd->set_parent(new_message_set); + std::vector> signals = cmd->get_signals(); + for(std::shared_ptr sig: signals) + sig->set_parent(cmd); + } + + std::vector> diagnostic_messages = new_message_set->get_diagnostic_messages(); + for(std::shared_ptr 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 > 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 new_message_set); + std::vector > get_message_set(); vect_ptr_signal_t get_all_signals(); -- cgit 1.2.3-korg