[TEST REQUEST] Windows Bluetooth LE build
Jan Mulder
jlmulder at xs4all.nl
Mon Jun 11 06:18:48 PDT 2018
> On 10 June 2018 at 16:04, Lubomir I. Ivanov <neolit123 at gmail.com> wrote:
>>
>> BT classical mode works - i was able to download 10 dives, that
>> apparently already existed on the DC.
>> i need to debug the BLE response from the device.
>>
>
> status report:
> so sadly i'm observing a multitude of problems here with this DC
> (OSTC+) on Windows with BLE.
>
> 1) the native WINAPI does not have means to pair or connect to a BLE
> devices programatically, which means that the user has to find the
> devices using Control Panel methods and pair / connect to it manually.
> only at that point the GATT calls start working as the device services
> get mounted to virtual paths. Qt is also affected and i will discuss
> this with QtConnectivity.
>
> this has been the case since the BLE API release in Windows 8.1:
>
https://social.msdn.microsoft.com/Forums/en-US/65c9cf4e-e225-4fc3-8c2c-66cd2401d3ed/how-to-establish-a-connection-from-windows-8-pc-to-a-bluetooth-low-energy-device
>
> i found a comment that says that supposedly the Windows 10 "creator
> update" makes the GATT calls work without pairing, but i cannot
> confirm that as i have this ("whatever-")update installed.
>
> the weird thing is the "BLE explorer" application which is UWP based
> supports pairing and connection...to my understanding it uses C++
> calls that make it possible to pair / connect to a device and the same
> C++ calls are not available to non-UWP apps. i need to investigate
> this more.
>
> overall the state of BLE on Windows is quite poor according to users.
>
> i really need to see a report where a paired DC handles the GATT part.
> thus far the reports are only about DC not being paired (e.g. no mount
> paths).
>
> 2) so OSTC+ has a certain service with 4 WriteNoResponse
> characteristics (no READ, WRITE-ONLY) which is supposedly the service
> we have to use for communicating to the device. at least we assume
> that in Subsurface but i don't see a concrete reason for this
> assumption. we also assume that the first characteristic is the one we
> want to write the "0xBB" to.
>
> when i manually write the "0xBB" (INIT) command to the first
> characteristic the second characteristic becomes READ-ONLY and
> responds with 0x4D (READY) in "BLE explorer". i think the current
> BLE-Win32 stack in QtConnectivity does not handle that and the seconds
> characteristic remains WRITE-ONLY. this has to be discussed with
> QtConnectivity as well, i guess.
>
> 3) i don't think we handle 2) well in Subsurface.also i don't have
> information if the BLE code in Subsurface and the code in
> libdivecomputer works for OSTC+ on other OSes...
Subsurface and connected libdivecomputer did work perfectly with my
OSTC3 (which presents itself als OSTC Plus) some time ago. I even did
firmware upgrades over BLE (all on Linux). Just tested current master
for a normal download over BLE and that works (and it reminds me that I
do not like using BLE when classic BT is available (all Linux)).
> i know that writing to a WriteNoResponse characteristic would not
> trigger our BLEObject::characteristicWritten().
> BLEObject::characteristcStateChanged() also doesn't trigger.
>
> this obviously needs more debugging, but not sure when i'm going to
> have more time - maybe tomorrow.
> also, i'm very interested how many people will respond to the testing
> request...3, 10, 30?
I will try to fire up my Windows machine, to check what is happing there
in BLE context (but disclaimer: I'm far from a Windows developer).
--jan
More information about the subsurface
mailing list