summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2017-09-17 09:48:52 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-09-17 09:58:11 -0700
commit90d73924c227bddd4be93d90df1d1d03c8716f81 (patch)
tree99eb52b449106874032f30aa090479bd8087be9d
parent26e610c3f409e771c4e0e7ba955db7f4155b8825 (diff)
downloadsubsurface-90d73924c227bddd4be93d90df1d1d03c8716f81.tar.gz
BLE: try to pick the correct descriptor to write to
The ordering on Mac appears to be random, but after looking through the various successful logs of BLE downloads, it seems we always wrote to the ClientCharacteristicConfiguration descriptor. So try to find that one first, and only grab the first descriptor in the list if we didn't find a ClientCharacteristicConfiguration descriptor. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--core/qt-ble.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/core/qt-ble.cpp b/core/qt-ble.cpp
index eca615fbe..92a78ae65 100644
--- a/core/qt-ble.cpp
+++ b/core/qt-ble.cpp
@@ -382,8 +382,19 @@ dc_status_t qt_ble_open(dc_custom_io_t *io, dc_context_t *context, const char *d
qDebug() << "Descriptor:" << d.name() << "uuid:" << d.uuid().toString();
if (!l.isEmpty()) {
- d = l.first();
- qDebug() << "now writing \"0x0100\" to the first descriptor";
+ bool foundCCC = false;
+ foreach (d, l) {
+ if (d.type() == QBluetoothUuid::ClientCharacteristicConfiguration) {
+ // pick the correct characteristic
+ foundCCC = true;
+ break;
+ }
+ }
+ if (!foundCCC)
+ // if we didn't find a ClientCharacteristicConfiguration, try the first one
+ d = l.first();
+
+ qDebug() << "now writing \"0x0100\" to the descriptor" << d.uuid().toString();
ble->preferredService()->writeDescriptor(d, QByteArray::fromHex("0100"));
}