wait_for_multiple_responses, decoder, callback, frequencyHz);
entry->set_handle(shims_, request);
- char request_string[128] = {0};
- diagnostic_request_to_string(&entry->get_handle()->request, request_string,
- sizeof(request_string));
-
- DEBUG(binder_interface, "add_recurring_request: Added recurring diagnostic request (freq: %f) on bus %s: %s",
- frequencyHz, bus_.c_str(), request_string);
+ //start_diagnostic_request(&shims_, entry->get_handle());
+ //char request_string[128] = {0};
+ //diagnostic_request_to_string(&entry->get_handle()->request, request_string,
+ // sizeof(request_string));
uint64_t usec;
- sd_event_now(afb_daemon_get_event_loop(binder_interface->daemon), CLOCK_MONOTONIC, &usec);
+ sd_event_now(afb_daemon_get_event_loop(binder_interface->daemon), CLOCK_BOOTTIME, &usec);
+ if(recurring_requests_.size() > 0)
+ {
+ DEBUG(binder_interface, "add_recurring_request: Added 100ms to usec to stagger sending requests");
+ usec += 100000;
+ }
+
+ DEBUG(binder_interface, "add_recurring_request: Added recurring diagnostic request (freq: %f) on bus %s at %ld. Event loop state: %d",
+ frequencyHz,
+ bus_.c_str(),
+ usec,
+ sd_event_get_state(afb_daemon_get_event_loop(binder_interface->daemon)));
+
if(sd_event_add_time(afb_daemon_get_event_loop(binder_interface->daemon), &source,
- CLOCK_MONOTONIC, usec, TIMERFD_ACCURACY, send_request, request) < 0)
+ CLOCK_BOOTTIME, usec, TIMERFD_ACCURACY, send_request, request) < 0)
{
ERROR(binder_interface, "add_recurring_request: Request fails to be schedule through event loop");
added = false;
int diagnostic_manager_t::reschedule_request(sd_event_source *s, uint64_t usec, active_diagnostic_request_t* adr)
{
- usec = usec + (uint64_t)(frequency_clock_t::frequency_to_period(adr->get_frequency_clock().get_frequency())*MICRO);
+ usec = usec + (uint64_t)(adr->get_frequency_clock().frequency_to_period());
DEBUG(binder_interface, "send_request: Event loop state: %d. usec: %ld", sd_event_get_state(afb_daemon_get_event_loop(binder_interface->daemon)), usec);
if(sd_event_source_set_time(s, usec) >= 0)
if(sd_event_source_set_enabled(s, SD_EVENT_ON) >= 0)
DiagnosticRequest* request = (DiagnosticRequest*)userdata;
active_diagnostic_request_t* adr = dm.find_recurring_request(request);
+ dm.cleanup_active_requests(false);
if(adr != nullptr && adr->get_can_bus_dev() == dm.get_can_bus_dev() && adr->should_send() &&
dm.clear_to_send(adr))
{
}
sd_event_source_unref(s);
- ERROR(binder_interface, "send_request: Something goes wrong when submitting a new request to the CAN bus");
+ NOTICE(binder_interface, "send_request: Request doesn't exist anymore. Canceling.'");
return -2;
}