X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Fdiagnostic%2Fdiagnostic-manager.cpp;h=9357883b9f9e192589a127c11cc1ed2e7826dfd0;hb=52daf5215513cb7378adebe4fa05bb3c50016793;hp=2b7fa9bacf8b02f1b43f8832e3ccc6b741054f31;hpb=368c69724971ec73ac47bd1072204cddcc888355;p=apps%2Fagl-service-can-low-level.git diff --git a/low-can-binding/diagnostic/diagnostic-manager.cpp b/low-can-binding/diagnostic/diagnostic-manager.cpp index 2b7fa9ba..9357883b 100644 --- a/low-can-binding/diagnostic/diagnostic-manager.cpp +++ b/low-can-binding/diagnostic/diagnostic-manager.cpp @@ -56,16 +56,24 @@ diagnostic_manager_t::~diagnostic_manager_t() /// /// this will initialize DiagnosticShims and cancel all active requests /// if there are any. -bool diagnostic_manager_t::initialize() +bool diagnostic_manager_t::initialize(std::string diagnostic_bus) { - // Mandatory to set the bus before intialize shims. - bus_ = application_t::instance().get_diagnostic_bus(); + if (! diagnostic_bus.empty()) + { + bus_ = diagnostic_bus; + init_diagnostic_shims(); + reset(); - init_diagnostic_shims(); - reset(); + AFB_DEBUG("Diagnostic Manager initialized"); + initialized_ = true; + return initialized_; + } + AFB_ERROR("Diagnostic Manager missing its bus name in the config"); + return initialized_; +} - initialized_ = true; - AFB_DEBUG("Diagnostic Manager initialized"); +bool diagnostic_manager_t::is_initialized() const +{ return initialized_; } @@ -113,6 +121,8 @@ bool diagnostic_manager_t::shims_send(const uint32_t arbitration_id, const uint8 bcm_msg.msg_head.can_id = arbitration_id; bcm_msg.msg_head.flags = SETTIMER|STARTTIMER|TX_CP_CAN_ID; bcm_msg.msg_head.count = 0; + bcm_msg.msg_head.ival1.tv_sec = 0; + bcm_msg.msg_head.ival1.tv_usec = 0; bcm_msg.msg_head.ival2.tv_sec = freq.tv_sec; bcm_msg.msg_head.ival2.tv_usec = freq.tv_usec; bcm_msg.msg_head.nframes = 1; @@ -256,7 +266,7 @@ active_diagnostic_request_t* diagnostic_manager_t::find_recurring_request(Diagno if(entry != nullptr) { if(diagnostic_request_equals(&entry->get_handle()->request, &request)) - {return entry;} + return entry; } } return nullptr; @@ -390,7 +400,7 @@ active_diagnostic_request_t* diagnostic_manager_t::add_recurring_request(Diagnos } } else - { AFB_DEBUG("Can't add request, one already exists with same key");} + AFB_DEBUG("Can't add request, one already exists with same key"); return entry; } @@ -409,9 +419,7 @@ openxc_VehicleMessage diagnostic_manager_t::relay_diagnostic_response(active_dia found_signals = utils::signals_manager_t::instance().find_signals(build_DynamicField((double) adr->get_pid())); if(adr->get_decoder() != nullptr) - { value = adr->get_decoder()(&response, value); - } if((response.success && adr->get_name().size()) > 0) { @@ -440,9 +448,7 @@ openxc_VehicleMessage diagnostic_manager_t::relay_diagnostic_response(active_dia } if(adr->get_callback() != nullptr) - { adr->get_callback()(adr, &response, value); - } // Reset the completed flag handle to make sure that it will be reprocessed the next time. adr->get_handle()->success = false;