mbox series

[BlueZ,v3,0/3] Add Advertisement Monitor Device Lost event

Message ID 20211013190035.1876237-1-mmandlik@google.com (mailing list archive)
Headers show
Series Add Advertisement Monitor Device Lost event | expand

Message

Manish Mandlik Oct. 13, 2021, 7 p.m. UTC
Hello Bt-Maintainers,

Bluetooth Advertisement Monitor API was introduced to support background
scanning and proximity detection based on the application specified RSSI
thresholds and content filters on LE advertisement packets.

To optimize the power consumption, the API offloads the content
filtering and RSSI tracking to the controller if the controller
offloading support is available. However, this monitoring is not
completely offloaded as the bluetoothd also handles RSSI thresholds and
timeouts in order to fulfill high/low thresholds/timeouts filtering with
D-bus clients.

There is further room to achieve better power optimization by supporting
the controller event HCI_VS_MSFT_LE_Monitor_Device_Event to fulfill true
monitor offloading. This is currently not supported as it was originally
desired to minimize the changes to the MGMT interface and reuse the
existing MGMT event - MGMT_EV_DEVICE_FOUND to pass advertisements to
bluetoothd and let bluetoothd handle the RSSI thresholds and timeouts in
order to fulfill the D-bus API requirements for the client.

This patch introduces a new MGMT event 'Device Lost' to indicate that
the controller has stopped tracking a particular device. There is no
need to send another event when the controller starts tracking a device
as 'Device Found' event is sent anyway.

Please let me know what you think about this or if you have any further
questions.

Thanks,
Manish.

Changes in v3:
- Discard changes to the Device Found event and notify bluetoothd only
  when the controller stops monitoring the device via new Device Lost
  event.
- Discard changes to the Device Found event and notify bluetoothd only
  when the controller stops monitoring the device via new Device Lost
  event.
- Fix indentation of the adv_monitor_device_lost_callback() name and
  it's arguments.

Changes in v2:
- Instead of creating a new 'Device Tracking' event, add a flag 'Device
  Tracked' in the existing 'Device Found' event and add a new 'Device
  Lost' event to indicate that the controller has stopped tracking that
  device.
- Instead of creating a new 'Device Tracking' event, add a flag 'Device
  Tracked' in the existing 'Device Found' event and add a new 'Device
  Lost' event to indicate that the controller has stopped tracking that
  device.
- Update function name adv_monitor_tracking_callback() to
  adv_monitor_device_lost_callback() as it will receive only Device Lost
  event.

Manish Mandlik (3):
  doc: Introduce the Adv Monitor Device Lost event
  lib: Add definition of the Adv Monitor Device Lost event
  adv_monitor: Receive the Device Lost event

 doc/mgmt-api.txt  | 26 +++++++++++++++++++++++++-
 lib/mgmt.h        |  7 +++++++
 src/adv_monitor.c | 25 +++++++++++++++++++++++++
 3 files changed, 57 insertions(+), 1 deletion(-)