New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 831524 link

Starred by 1 user

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 3
Type: Feature

Blocking:
issue 672648



Sign in to add a comment

Implement BluetoothRemoteGattCharacteristic::WriteWithoutResponse on all supporting platforms

Project Member Reported by jdoerrie@chromium.org, Apr 11 2018

Issue description

https://crrev.com/c/1000859 introduces WriteWithoutResponse to BluetoothRemoteGattCharacteristic and implements it for macOS. However, other platforms provide the necessary APIs as well, and so we should try to implement WriteWithoutResponse on all supporting platforms.
 
Owner: jdoerrie@chromium.org
Status: Assigned (was: Untriaged)
From ortuno@ [1]:

"""
Remember how we implemented SetPowered()? We had a common implementation in the base class and a Impl method implemented in each platform. We should follow that pattern here and have WriteWithoutResponse() in the base class check if the characteristic is writeable without response and then call the WriteWithoutResponseImpl.
"""

[1] https://crrev.com/c/1000859/6/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm#221
Project Member

Comment 3 by bugdroid1@chromium.org, Apr 12 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a7786fe58397c2087caee44e80e3ac36bbee49b4

commit a7786fe58397c2087caee44e80e3ac36bbee49b4
Author: Jan Wilken Dörrie <jdoerrie@chromium.org>
Date: Thu Apr 12 12:31:05 2018

[bluetooth] Introduce WriteWithoutResponse()

This change introduces WriteWithoutResponse() on
BluetoothRemoteGattCharacteristic. In contrast to the regular
WriteRemoteCharacteristic() this method does not wait for a response
from the operating system. For now it is only implemented on Mac, where
it can result in a speedup of 8x for sending data
(see  https://crbug.com/808175#c9 ).

Bug:  808175 , 831524
Change-Id: If2012ac8e19d17fe218e273d8d0e300a2b06a19a
Reviewed-on: https://chromium-review.googlesource.com/1000859
Commit-Queue: Jan Wilken Dörrie <jdoerrie@chromium.org>
Reviewed-by: Giovanni Ortuño Urquidi <ortuno@chromium.org>
Reviewed-by: Conley Owens <cco3@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550157}
[modify] https://crrev.com/a7786fe58397c2087caee44e80e3ac36bbee49b4/device/bluetooth/bluetooth_remote_gatt_characteristic.cc
[modify] https://crrev.com/a7786fe58397c2087caee44e80e3ac36bbee49b4/device/bluetooth/bluetooth_remote_gatt_characteristic.h
[modify] https://crrev.com/a7786fe58397c2087caee44e80e3ac36bbee49b4/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.h
[modify] https://crrev.com/a7786fe58397c2087caee44e80e3ac36bbee49b4/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm
[modify] https://crrev.com/a7786fe58397c2087caee44e80e3ac36bbee49b4/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
[modify] https://crrev.com/a7786fe58397c2087caee44e80e3ac36bbee49b4/device/bluetooth/test/fake_remote_gatt_characteristic.cc
[modify] https://crrev.com/a7786fe58397c2087caee44e80e3ac36bbee49b4/device/bluetooth/test/fake_remote_gatt_characteristic.h
[modify] https://crrev.com/a7786fe58397c2087caee44e80e3ac36bbee49b4/device/fido/fido_ble_connection.cc

Blocking: 672648
Cc: jdoerrie@chromium.org
Labels: -Type-Bug OS-Android OS-Chrome OS-Linux OS-Mac OS-Windows Type-Feature
Owner: ----
Status: Available (was: Assigned)
jdoerrie@ is no longer working on this stuff. Support for WriteWithoutResponse() has been requested in the Web Bluetooth API[1]. It looks like every platform other than BlueZ supports an operation like this. An open question however is whether this operation should still be asynchronous. On macOS it looks like we don't get a callback when the write is sent to the device but on Windows it looks like we could (when calling WriteValueWithResultAndOptionsAsync()). On Android it is unclear.

[1]: https://github.com/WebBluetoothCG/web-bluetooth/issues/238

Sign in to add a comment