Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp183878pxu; Tue, 6 Oct 2020 23:38:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy4nffOby9FXfk/YRNzClzF/pcPNy6HkrCAQh2aN8cQzcMsbIzUSo+BLZYh9cwq/cgsdBc9 X-Received: by 2002:a17:906:e116:: with SMTP id gj22mr1913417ejb.313.1602052716068; Tue, 06 Oct 2020 23:38:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602052716; cv=none; d=google.com; s=arc-20160816; b=JvgK0aXtlk9Cr8tzS81WKzaCce8QpKvPUBaAkGSEDUlGK5SZQtyX5EEfWvXc1BPdV+ H0vGOFX3lGkal7zADS7o50lTaWpg+pdTzVJvUABw/UGR+pPeDTlLappQAYV/rJ/RUPL3 oFr8ZGTYXoVkLDjLByLv4dn93LfXQ2XC41GLXRRO8hoUAA0eCR4svgpBcOlViJjTKHUv vhv6XKn+79tRuz/WdEv9/lwhWSGVQJy7u78tM7juaf/hGMqMgtkMRN8jMIPpv+a7CFyU GJbjN+6sD1BGwjV03wJXs28pTvN1SwScfSGXu/F6J4918ye6qyJPCmwSFZsga+DNi8pe un3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=Q1TXGHjvZJ2M687Tpx7iKyXIN4ruPxyXzbVf2itvGJU=; b=ecaRz2wbl3fHTXYIcHV05ftvPE+eluLIAI0w6N2wuzyvZgEiQIchalh0AeYfUSYqDl zTrCNYF+GBG67ItuX+L8M0kimeW8K6Rf9JdcXavk2GRx+Cc3Rg7hpYnhbYEQ6FSjPKPQ YgS5DtId9rIepivXLHwQ2A1kdQfMwCJlTLPMF5OHpNXy02URVPAoHdLhtuzz4DPU74EZ gtuboU/mkPFDBXUzVz4Bpf0MYSuXug59t9fOue9beqB7M0jJZVvbdtsIgroxJIknIlJv fg4K2uctde2SnWFFuleeeF1fm+i3BZ1xkZSxjKVzQ1vLHUh9q9sVMbZM8LxXgirOh4+9 BCNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=skXWPEOR; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u17si713734edd.286.2020.10.06.23.38.10; Tue, 06 Oct 2020 23:38:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=skXWPEOR; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726864AbgJGG0a (ORCPT + 99 others); Wed, 7 Oct 2020 02:26:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725970AbgJGG0a (ORCPT ); Wed, 7 Oct 2020 02:26:30 -0400 Received: from mail-oo1-xc43.google.com (mail-oo1-xc43.google.com [IPv6:2607:f8b0:4864:20::c43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1B50FC061755 for ; Tue, 6 Oct 2020 23:26:30 -0700 (PDT) Received: by mail-oo1-xc43.google.com with SMTP id w7so346012oow.7 for ; Tue, 06 Oct 2020 23:26:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Q1TXGHjvZJ2M687Tpx7iKyXIN4ruPxyXzbVf2itvGJU=; b=skXWPEORhyt4BvlKvmX+SeYY97+KGT0UX4zAQseWv52xaNEdsKauUZWZALuXmYFy/I 0bZBXt1jTe+q6lD9iDjdfavOgudr52lva9xRDwBLQNjfc7SS5ms3s6Xx6K0hnhMfZmOT Lamo5n1jFl/wHzRbPryJRCmuDeDmC7RuCInNkQDPurXNUJXUapGksPfOJmBGXfu9BPue kf0RUc9aQ27UzZlGOKln76XuvlZr9WX+iVx9miT87Ln4sCIMHgaP89X/B/WPAI/Cth9x A+5SYthNBnd7Nw+CQY107C2+u+wALXRlzDsWgzu6Fw5x1lZfttieAu0BDpmT7uavg6jk t+NQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Q1TXGHjvZJ2M687Tpx7iKyXIN4ruPxyXzbVf2itvGJU=; b=JEgVrCxqWknzmIeBCB+pcZfklkaNkbjHwiLW893t8fnP3hOatKD4SjIGgMZTMFQ9j4 N8r2S1D9OZn8dBnWzM082gRxl4DxVPfmD7OLCD6aYXk4lBstkO9ilZ/EcxSXUN7JIlrK JvMyqQ8fHismFWCi++Q3onIrg8cEZ0nKlMpJSK/8saTFe/wrr9BryXUsKPks3CgyMIXn AXKz7NRToCTrPB2E0zCgbo5ColAc1wSgFv19H/7LQhc09Ea8ZZyMIqU7bKajh72D9PPu wBXXDrwK1Jn2+8GkRktCwcN6TuE6otMnVcVJXot6RghEJdA/mp6ZEMk1/83VAjUzhZNx he7w== X-Gm-Message-State: AOAM531Ou5P3eXoJDw3O2BLycabWKhXnzfRpm4rCnXuM/CPf74G2LK0t pSU+wWv8vcAzwHOEAJQVr1K5LkhZcs1VO+MDD5s= X-Received: by 2002:a4a:a787:: with SMTP id l7mr1086427oom.63.1602051989330; Tue, 06 Oct 2020 23:26:29 -0700 (PDT) MIME-Version: 1.0 References: <20201006171333.BlueZ.v6.1.I2830b9c1212a64b062201ed9f2b71294f50ad22d@changeid> <20201006171333.BlueZ.v6.4.Ibbcb11712b613ef95c31b41207c3ea945c830018@changeid> In-Reply-To: <20201006171333.BlueZ.v6.4.Ibbcb11712b613ef95c31b41207c3ea945c830018@changeid> From: Luiz Augusto von Dentz Date: Tue, 6 Oct 2020 23:26:16 -0700 Message-ID: Subject: Re: [BlueZ PATCH v6 4/6] adv_monitor: Implement Add Adv Patterns Monitor cmd handler To: Miao-chen Chou Cc: Bluetooth Kernel Mailing List , Luiz Augusto von Dentz , Howard Chung , ChromeOS Bluetooth Upstreaming , Alain Michaud , Marcel Holtmann , Manish Mandlik Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Hi Miao, On Tue, Oct 6, 2020 at 5:17 PM Miao-chen Chou wrote: > > From: Howard Chung > > - Send the MGMT_OP command to kernel upon registration of a Adv patterns > monitor. > - Call Activate() or Release() to client depending on the reply from > kernel > > the call through syslog > > Reviewed-by: Alain Michaud > Reviewed-by: Miao-chen Chou > Reviewed-by: Manish Mandlik > --- > > (no changes since v1) > > src/adv_monitor.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 66 insertions(+), 1 deletion(-) > > diff --git a/src/adv_monitor.c b/src/adv_monitor.c > index fcb127cd4..582cc9a46 100644 > --- a/src/adv_monitor.c > +++ b/src/adv_monitor.c > @@ -588,11 +588,59 @@ done: > return monitor->state != MONITOR_STATE_FAILED; > } > > +/* Handles the callback of Add Adv Patterns Monitor command */ > +static void add_adv_patterns_monitor_cb(uint8_t status, uint16_t length, > + const void *param, void *user_data) > +{ > + const struct mgmt_rp_add_adv_patterns_monitor *rp = param; > + struct adv_monitor *monitor = user_data; > + uint16_t adapter_id = monitor->app->manager->adapter_id; > + > + if (status != MGMT_STATUS_SUCCESS || !param) { > + btd_error(adapter_id, "Failed to Add Adv Patterns Monitor " > + "with status 0x%02x", status); > + monitor_release(monitor, NULL); > + return; > + } > + > + if (length < sizeof(*rp)) { > + btd_error(adapter_id, "Wrong size of Add Adv Patterns Monitor " > + "response"); > + monitor_release(monitor, NULL); > + return; > + } > + > + monitor->state = MONITOR_STATE_HONORED; I would reword this state to ACTIVE instead of HONORED as it seems more consistent. > + DBG("Calling Activate() on Adv Monitor of owner %s at path %s", > + monitor->app->owner, monitor->path); > + > + g_dbus_proxy_method_call(monitor->proxy, "Activate", NULL, NULL, NULL, > + NULL); > + > + DBG("Adv Monitor with handle:0x%04x added", > + le16_to_cpu(rp->monitor_handle)); > +} > + > +static void monitor_copy_patterns(void *data, void *user_data) > +{ > + struct btd_adv_monitor_pattern *pattern = data; > + struct mgmt_cp_add_adv_monitor *cp = user_data; > + > + if (!pattern) > + return; > + > + memcpy(cp->patterns + cp->pattern_count, pattern, sizeof(*pattern)); > + cp->pattern_count++; > +} > + > /* Handles an Adv Monitor D-Bus proxy added event */ > static void monitor_proxy_added_cb(GDBusProxy *proxy, void *user_data) > { > struct adv_monitor *monitor; > struct adv_monitor_app *app = user_data; > + struct mgmt_cp_add_adv_monitor *cp = NULL; > + uint8_t pattern_count, cp_len; > uint16_t adapter_id = app->manager->adapter_id; > const char *path = g_dbus_proxy_get_path(proxy); > const char *iface = g_dbus_proxy_get_interface(proxy); > @@ -625,7 +673,24 @@ static void monitor_proxy_added_cb(GDBusProxy *proxy, void *user_data) > > queue_push_tail(app->monitors, monitor); > > + pattern_count = queue_length(monitor->patterns); > + cp_len = sizeof(struct mgmt_cp_add_adv_monitor) + > + pattern_count * sizeof(struct mgmt_adv_pattern); > + > + cp = malloc0(cp_len); > + queue_foreach(monitor->patterns, monitor_copy_patterns, cp); > + > + if (!mgmt_send(app->manager->mgmt, MGMT_OP_ADD_ADV_PATTERNS_MONITOR, > + adapter_id, cp_len, cp, add_adv_patterns_monitor_cb, > + monitor, NULL)) { > + error("Unable to send Add Adv Patterns Monitor command"); > + goto done; > + } > + > DBG("Adv Monitor allocated for the object at path %s", path); > + > +done: > + free(cp); > } > > /* Handles the removal of an Adv Monitor D-Bus proxy */ > @@ -1036,7 +1101,7 @@ static void adv_match_per_monitor(void *data, void *user_data) > struct adv_monitor *monitor = data; > struct adv_content_filter_info *info = user_data; > > - if (!monitor && monitor->state != MONITOR_STATE_HONORED) > + if (!monitor || monitor->state != MONITOR_STATE_HONORED) > return; > > /* Reset the intermediate matched status */ > -- > 2.26.2 > -- Luiz Augusto von Dentz