X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Fbinding%2Fapplication.cpp;h=4c9641c47217d6d428a6eb381ef806c20d5c6cd0;hb=d1c46ecb316453ea8d3cc0b148c35a816772532b;hp=c4da68ae8c4c9c0a12b1a4e9ae16c56db4028228;hpb=e1caf27db81e9897af7512a0b47e0783593833d5;p=apps%2Fagl-service-can-low-level.git diff --git a/low-can-binding/binding/application.cpp b/low-can-binding/binding/application.cpp index c4da68ae..4c9641c4 100644 --- a/low-can-binding/binding/application.cpp +++ b/low-can-binding/binding/application.cpp @@ -25,6 +25,11 @@ #define MICROSECONDS_IN_SECOND 1000000 #define ENGINE_VALUE_TIMEOUT 5 +application_t::application_t() + : can_bus_manager_{} + , message_set_{} +{} + /// @brief Return singleton instance of configuration object. application_t& application_t::instance() { @@ -54,37 +59,26 @@ uint8_t application_t::get_active_message_set() const 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); + set_parents(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(diagnostic_manager_.is_initialized()) { - if(old_msg_set->add_diagnostic_message(new_diag_msg) < 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; } } @@ -160,13 +154,9 @@ bool application_t::is_engine_on() if(sf.signals.front()->get_last_value_with_timestamp().first > 0 && std::difftime(std::time(nullptr), last_timestamp_in_s) < ENGINE_VALUE_TIMEOUT) - { engine_on = true; - } else - { AFB_NOTICE("is_engine_on: engine.speed CAN signal found, but engine seems off"); - } } else { @@ -180,13 +170,9 @@ bool application_t::is_engine_on() if(sf.diagnostic_messages.front()->get_last_value_with_timestamp().first > 0 && std::difftime(std::time(nullptr), last_timestamp_in_s) < ENGINE_VALUE_TIMEOUT) - { engine_on = true; - } else - { AFB_NOTICE("is_engine_on: engine.speed diagnostic message found, but engine seems off"); - } } else { @@ -196,6 +182,22 @@ bool application_t::is_engine_on() return engine_on; } +void application_t::set_parents(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); +} + #ifdef USE_FEATURE_J1939 std::shared_ptr application_t::get_socket_address_claiming() {