- float frequency = std::isnan(event_filter.frequency) ? sig->get_frequency() : event_filter.frequency;
-
- adr = diag_m.add_recurring_request(diag_req, sig->get_name().c_str(), false, sig->get_decoder(), sig->get_callback(), frequency);
- //TODO: Adding callback requesting ignition status: diag_req, sig.c_str(), false, diagnostic_message_t::decode_obd2_response, diagnostic_message_t::check_ignition_status, frequency);
+ if (s.find(sig->get_pid()) != s.end())
+ {
+ can_subscription = s[sig->get_pid()];
+ DEBUG(binder_interface, "%s: Signal: %s already subscribed. Adding a new subscription", __FUNCTION__, sig->get_name().c_str());
+ }
+ else
+ {
+ diag_m.add_recurring_request(diag_req, sig->get_name().c_str(), false, sig->get_decoder(), sig->get_callback(), frequency);
+ can_subscription = std::make_shared<low_can_subscription_t>(low_can_subscription_t(event_filter, sig));
+ DEBUG(binder_interface, "%s: Signal: %s subscribed", __FUNCTION__, sig->get_name().c_str());
+ }