Subscribe using BCM RX_SETUP filter capabilities implemented.
authorRomain Forlot <romain.forlot@iot.bzh>
Tue, 25 Apr 2017 22:21:07 +0000 (00:21 +0200)
committerRomain Forlot <romain.forlot@iot.bzh>
Wed, 26 Apr 2017 23:03:34 +0000 (01:03 +0200)
Change-Id: I7462b5d0144987293376dab719d1cf4fa41406f2
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
CAN-binder/low-can-binding/low-can-binding.cpp

index 088b76f..e6af92c 100644 (file)
@@ -172,16 +172,18 @@ static int subscribe_unsubscribe_signals(struct afb_req request, bool subscribe,
 
        for(const auto& sig: signals.can_signals)
        {
-               ret = subscribe_unsubscribe_signal(request, subscribe, sig->get_name());
-               if(ret <= 0)
-                       return ret;
-               rets++;
-               DEBUG(binder_interface, "%s: signal: %s subscribed", __FUNCTION__, sig->get_name().c_str());
+               if(conf.get_can_bus_manager().create_rx_filter(*sig) <= 0 && 
+               subscribe_unsubscribe_signal(request, subscribe, sig->get_name()) <= 0)
+               {
+                       return -1;
+                       rets++;
+                       DEBUG(binder_interface, "%s: signal: %s subscribed", __FUNCTION__, sig->get_name().c_str());
+               }
        }
        return rets;
 }
 
-static const std::vector<std::string> parse_signals_from_request(struct afb_req request, bool subscribe)
+static const std::vector<std::string> parse_args_from_request(struct afb_req request, bool subscribe)
 {
        int i, n;
        std::vector<std::string> ret;