[TEST REQUEST] Windows Bluetooth LE build

Dirk Hohndel dirk at hohndel.org
Sat Sep 29 15:14:52 PDT 2018


> On Sep 29, 2018, at 3:07 PM, Lubomir I. Ivanov <neolit123 at gmail.com> wrote:
> 
>> 
>> Interestingly enough, the two BLE dive computers I tried with are
>> both Shearwaters who AFAIK require random addresses. I don't
>> see, however, how that would cause the error pairing.
>> 
>> The third one (Suunto EON Steel) I couldn't figure out how to even
>> pair with Windows 10...
>> 
>> Still trying to figure out how to get the logging to work...
>> 
> 
> 
> Dirk notice that Steve is being able to discover the device, but then
> fails to connect:
> (screenshot).
> 
> from what i've understood on your end it fails finding the device in
> the list of BT(LE) devices nearby, so it fails in an earlier step?
> 

But Steve has a Petrel 2, right? And AFAIK the Petrel 2 will ALWAYS
switch to BT Classic if the computer supports that. So even though it
includes a BLE radio, that only seems to actually work when you connect
BLE only. And reading the sources I don't think that's what we do. We
seem to scan both at the same time.

Actually, this is a part of the sources that REALLY puzzles me...

    threadLE = new QThread;
    threadWorkerLE = new ThreadWorkerDeviceDiscovery;
    threadWorkerLE->moveToThread(threadLE);
    connect(threadWorkerLE, &ThreadWorkerDeviceDiscovery::discoveryCompleted, this, &QBluetoothDeviceDiscoveryAgentPrivate::completeLeDevicesDiscovery);
    connect(threadLE, &QThread::finished, threadWorkerLE, &ThreadWorkerDeviceDiscovery::deleteLater);
    connect(threadLE, &QThread::finished, threadLE, &QThread::deleteLater);
    threadLE->start();

    threadClassic = new QThread;
    threadWorkerClassic = new ThreadWorkerDeviceDiscovery;
    threadWorkerClassic->moveToThread(threadClassic);
    connect(threadWorkerClassic, &ThreadWorkerDeviceDiscovery::discoveryCompleted, this, &QBluetoothDeviceDiscoveryAgentPrivate::completeClassicDevicesDiscovery);
    connect(threadClassic, &QThread::finished, threadWorkerClassic, &ThreadWorkerDeviceDiscovery::deleteLater);
    connect(threadClassic, &QThread::finished, threadClassic, &QThread::deleteLater);
    threadClassic->start();

So this creates to ThreadWorkerDeviceDiscovery objects. How does the LE one know to scan for BLE only, and the Classic one to scan for Classic only?
I must be missing something obvious - but this just confuses me.

/D


More information about the subsurface mailing list