summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/qt-ble.cpp10
-rw-r--r--desktop-widgets/btdeviceselectiondialog.cpp9
2 files changed, 18 insertions, 1 deletions
diff --git a/core/qt-ble.cpp b/core/qt-ble.cpp
index 7a73c02f9..06adce63a 100644
--- a/core/qt-ble.cpp
+++ b/core/qt-ble.cpp
@@ -121,6 +121,16 @@ dc_status_t BLEObject::read(void* data, size_t size, size_t *actual)
dc_status_t qt_ble_open(dc_custom_io_t *io, dc_context_t *context, const char *devaddr)
{
+ /*
+ * LE-only devices get the "LE:" prepended by the scanning
+ * code, so that the rfcomm code can see they only do LE.
+ *
+ * We just skip that prefix (and it doesn't always exist,
+ * since the device may support both legacy BT and LE).
+ */
+ if (!strncmp(devaddr, "LE:", 3))
+ devaddr += 3;
+
QBluetoothAddress remoteDeviceAddress(devaddr);
// HACK ALERT! Qt 5.9 needs this for proper Bluez operation
diff --git a/desktop-widgets/btdeviceselectiondialog.cpp b/desktop-widgets/btdeviceselectiondialog.cpp
index 9a5e9ddab..2fa6b7679 100644
--- a/desktop-widgets/btdeviceselectiondialog.cpp
+++ b/desktop-widgets/btdeviceselectiondialog.cpp
@@ -420,7 +420,14 @@ void BtDeviceSelectionDialog::deviceDiscoveryError(QBluetoothDeviceDiscoveryAgen
QString BtDeviceSelectionDialog::getSelectedDeviceAddress()
{
if (selectedRemoteDeviceInfo) {
- return selectedRemoteDeviceInfo.data()->address().toString();
+ QBluetoothDeviceInfo *deviceInfo = selectedRemoteDeviceInfo.data();
+ QBluetoothDeviceInfo::CoreConfigurations flags;
+ QString prefix = "";
+
+ flags = deviceInfo->coreConfigurations();
+ if (flags == QBluetoothDeviceInfo::LowEnergyCoreConfiguration)
+ prefix = "LE:";
+ return prefix + deviceInfo->address().toString();
}
return QString();