Использование двух экземпляров Qt `QLowEnergyController` для подключения к двум устройствам BLE

Я хочу использовать Qt’s Bluetooth Low Energy для подключения к двум устройствам BLE.

  • ОПЕРАЦИОННЫЕ СИСТЕМЫ: Arch Linux 4.13.8
  • версия bluez: 5,47
  • BLE адаптер: Кембридж Силикон Радио, ООО Bluetooth Dongle (режим HCI)

Я использую есть два QLowEnergyControllers такие случаи:

controller0 = QLowEnergyController::createCentral(qBluetoothDeviceInfoBLE0, this));
controller1 = QLowEnergyController::createCentral(qBluetoothDeviceInfoBLE1, this));

Если тогда успешно соединиться с BLE0и после сигнала connected() я инициирую соединение с BLE1, Подключение к BLE0 будет прервано:

qt.bluetooth.bluez: Cannot connect due to pending active LE connections
qt.bluetooth.bluez: void QBluetoothSocketPrivate::_q_readNotify() 17 error: -1 "Software caused connection abort"

… и связь с BLE1 будет установлено успешно.

Что я нашел это описание в QLowEnergyControllers:

Важно отметить, что некоторые платформы, такие как BlueZ на основе
Linux не может поддерживать два подключенных экземпляра QLowEnergyController
к тому же удаленному устройству

Замечания: BLE0 а также BLE1 разные удаленные устройства.

Я также могу подтвердить, что подключение к тем же устройствам работает с моей версией bluez. Это также работает при использовании пакета noblejs Nojjs.

  1. Должно ли это работать, как я сделал это выше? (присоединиться BLE0и после BLE1)?
  2. Я думал об использовании второго адаптера, правильно ли, что QBluetooth может использовать только один адаптер (по умолчанию)?
  3. Может кто-нибудь придумать какой-нибудь обходной путь?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector