From: Manish Mandlik <mmandlik@google.com>
To: marcel@holtmann.org, luiz.dentz@gmail.com
Cc: linux-bluetooth@vger.kernel.org,
chromeos-bluetooth-upstreaming@chromium.org,
Manish Mandlik <mmandlik@google.com>
Subject: [BlueZ PATCH v4 3/3] adv_monitor: Receive the Device Found/Lost events
Date: Mon, 25 Oct 2021 12:18:11 -0700 [thread overview]
Message-ID: <20211025121343.BlueZ.v4.3.I68039747acc3c63f758278452889d6ed2bfff065@changeid> (raw)
In-Reply-To: <20211025191811.3575708-1-mmandlik@google.com>
This patch registers callback finctions to receive the Advertisement
Monitor Device Found and Device Lost events.
Test performed:
- verified by logs that the MSFT Monitor Device is received from the
controller and the bluetoothd is notified whenever the controller
starts/stops monitoring a device.
---
Changes in v4:
- Add Advertisement Monitor Device Found event.
Changes in v3:
- Fix indentation of the adv_monitor_device_lost_callback() name and
it's arguments.
Changes in v2:
- Update function name adv_monitor_tracking_callback() to
adv_monitor_device_lost_callback() as it will receive only Device Lost
event.
src/adv_monitor.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/src/adv_monitor.c b/src/adv_monitor.c
index 715ac5904..2aae5d372 100644
--- a/src/adv_monitor.c
+++ b/src/adv_monitor.c
@@ -1531,6 +1531,48 @@ static void adv_monitor_removed_callback(uint16_t index, uint16_t length,
ev->monitor_handle);
}
+/* Processes Adv Monitor Device Found event from kernel */
+static void adv_monitor_device_found_callback(uint16_t index, uint16_t length,
+ const void *param, void *user_data)
+{
+ struct btd_adv_monitor_manager *manager = user_data;
+ const struct mgmt_ev_adv_monitor_device_found *ev = param;
+ uint16_t handle = le16_to_cpu(ev->monitor_handle);
+ const uint16_t adapter_id = manager->adapter_id;
+ char addr[18];
+
+ if (length < sizeof(*ev)) {
+ btd_error(adapter_id,
+ "Wrong size of Adv Monitor Device Found event");
+ return;
+ }
+
+ ba2str(&ev->addr.bdaddr, addr);
+ DBG("Adv Monitor with handle 0x%04x started tracking the device %s",
+ handle, addr);
+}
+
+/* Processes Adv Monitor Device Lost event from kernel */
+static void adv_monitor_device_lost_callback(uint16_t index, uint16_t length,
+ const void *param, void *user_data)
+{
+ struct btd_adv_monitor_manager *manager = user_data;
+ const struct mgmt_ev_adv_monitor_device_lost *ev = param;
+ uint16_t handle = le16_to_cpu(ev->monitor_handle);
+ const uint16_t adapter_id = manager->adapter_id;
+ char addr[18];
+
+ if (length < sizeof(*ev)) {
+ btd_error(adapter_id,
+ "Wrong size of Adv Monitor Device Lost event");
+ return;
+ }
+
+ ba2str(&ev->addr.bdaddr, addr);
+ DBG("Adv Monitor with handle 0x%04x stopped tracking the device %s",
+ handle, addr);
+}
+
/* Allocates a manager object */
static struct btd_adv_monitor_manager *manager_new(
struct btd_adapter *adapter,
@@ -1555,6 +1597,14 @@ static struct btd_adv_monitor_manager *manager_new(
manager->adapter_id, adv_monitor_removed_callback,
manager, NULL);
+ mgmt_register(manager->mgmt, MGMT_EV_ADV_MONITOR_DEVICE_FOUND,
+ manager->adapter_id, adv_monitor_device_found_callback,
+ manager, NULL);
+
+ mgmt_register(manager->mgmt, MGMT_EV_ADV_MONITOR_DEVICE_LOST,
+ manager->adapter_id, adv_monitor_device_lost_callback,
+ manager, NULL);
+
return manager;
}
--
2.33.0.1079.g6e70778dc9-goog
prev parent reply other threads:[~2021-10-25 19:27 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-25 19:18 [BlueZ PATCH v4 0/3] Add Advertisement Monitor Device Found/Lost events Manish Mandlik
2021-10-25 19:18 ` [BlueZ PATCH v4 1/3] doc: Introduce the Adv " Manish Mandlik
2021-10-25 19:56 ` Add Advertisement " bluez.test.bot
2021-10-25 20:03 ` [BlueZ PATCH v4 1/3] doc: Introduce the Adv " Marcel Holtmann
[not found] ` <CAGPPCLBNN+Eg92=GnmbMBfngLEb=BL6sSkx7O19rYOydAkO8HA@mail.gmail.com>
2021-10-26 8:33 ` Marcel Holtmann
[not found] ` <CAGPPCLD+pYQtK8G303gr_F7xqTvuSXA+4FTRiVf0OzAEUrDgjw@mail.gmail.com>
2021-11-08 22:57 ` Luiz Augusto von Dentz
[not found] ` <CAGPPCLBAwp=64hysCeagLQDrwK5b7_nUGS73XB0eDgsGL7yAsQ@mail.gmail.com>
2021-11-09 6:31 ` Luiz Augusto von Dentz
2021-10-25 19:18 ` [BlueZ PATCH v4 2/3] lib: Add definitions of " Manish Mandlik
2021-10-25 19:18 ` Manish Mandlik [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211025121343.BlueZ.v4.3.I68039747acc3c63f758278452889d6ed2bfff065@changeid \
--to=mmandlik@google.com \
--cc=chromeos-bluetooth-upstreaming@chromium.org \
--cc=linux-bluetooth@vger.kernel.org \
--cc=luiz.dentz@gmail.com \
--cc=marcel@holtmann.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.