- From: Paul Kotlov via GitHub <sysbot+gh@w3.org>
- Date: Wed, 02 May 2018 12:53:49 +0000
- To: public-web-bluetooth-log@w3.org
PaulKotlov has just created a new issue for https://github.com/WebBluetoothCG/web-bluetooth:
== ENABLE_NOTIFICATION_VALUE - Web Bluetooth API ==
Client Configuration Characteristic Descriptor (CCCD).
UUID - "00002902-0000-1000-8000-00805f9b34fb" / 'gatt.client_characteristic_configuration'.
To set CCCD in Java code for Android
we do:
` public static final byte[] ENABLE_NOTIFICATION_VALUE = {0x01, 0x00};
BluetoothGattDescriptor descriptor = characteristic.getDescriptor("00002902-0000-1000-8000-00805f9b34fb");
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
mBluetoothGatt.writeDescriptor(descriptor);
`
How can I perform a similar configuration in JavaScript code when using the Web Bluetooth API ?
My version in JavaScript:
` .then(descriptors => {
let queue = Promise.resolve();
descriptors.forEach(descriptor => {
switch (descriptor.uuid) {
case BluetoothUUID.getDescriptor('gatt.client_characteristic_configuration'):
queue = queue.then(_ => descriptor.readValue()).then(value => {
descriptorCache = descriptor;
});
...
var data = new Uint8Array([0x01, 0x00]);
descriptorCache.writeValue(data);
//descriptorCache.writeValue(new TextEncoder().encode(data));
`
fails with a security error :-(
Uncaught (in promise) DOMException: writeValue() called on blocklisted object marked exclude-writes.
https://webbluetoothcg.github.io/web-bluetooth/#attacks-on-devices
I understand the need for security.
But after all, a lot of devices require a presetting of the CCCD.
If I don't understand correctly then please forgive me.
I didn't find another way to resolve my issue.
Also this question is available here: https://stackoverflow.com/q/50097579/9720482
Please view or discuss this issue at https://github.com/WebBluetoothCG/web-bluetooth/issues/394 using your GitHub account
Received on Wednesday, 2 May 2018 12:53:54 UTC