+ if (sf.can_signals.empty() && sf.diagnostic_messages.empty())
+ NOTICE(binder_interface, "%s: No signal(s) found for %s.", __FUNCTION__, sig.first.c_str());
+ else
+ ok = subscribe_unsubscribe_signals(request, subscribe, sf);
+ }
+ NOTICE(binder_interface, "%s: Subscribed/unsubscribe correctly to %d/%d signal(s).", __FUNCTION__, ok, total);
+ return ok;
+}
+
+static int parse_filter(json_object* event, struct event_filter_t* event_filter)
+{
+ struct json_object *filter, *obj;
+ int ret = 0;
+
+ if (json_object_object_get_ex(event, "filter", &filter))
+ {
+ event_filter->frequency = -1.0;
+ event_filter->min = -1.0;
+ event_filter->max = -1.0;
+ if (json_object_object_get_ex(filter, "frequency", &obj)
+ && json_object_get_type(obj) == json_type_double)
+ {
+ event_filter->frequency = json_object_get_double(obj);
+ ret += 1;
+ }
+ if (json_object_object_get_ex(filter, "min", &obj)
+ && json_object_get_type(obj) == json_type_double)
+ {
+ event_filter->min = json_object_get_double(obj);
+ ret += 2;
+ }
+ if (json_object_object_get_ex(filter, "max", &obj)
+ && json_object_get_type(obj) == json_type_double)
+ {
+ event_filter->max = json_object_get_double(obj);
+ ret += 4;
+ }
+ }
+
+ return ret;
+}
+
+static const std::map<std::string, struct event_filter_t> parse_args_from_request(struct afb_req request)
+{
+ int i, n;
+ std::map<std::string, struct event_filter_t> ret;
+ struct json_object *args, *event, *x;
+ struct event_filter_t event_filter;
+