- std::shared_ptr<low_can_subscription_t> can_subscription(new low_can_subscription_t(event_filter, sig));
- int ret = subscribe_unsubscribe_signal(request, subscribe, can_subscription);
- if(ret < 0)
- return ret;
- rets++;
- DEBUG(binder_interface, "%s: Signal: %s subscribed", __FUNCTION__, sig->get_name().c_str());
+ 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());
+ }