Subsurface-mobile with BT and BLE support [was Re: updates to libdc with ABI change]
Jan Mulder
jlmulder at xs4all.nl
Wed Jun 28 01:52:33 PDT 2017
On 28-06-17 07:19, Dirk Hohndel wrote:
> In the meantime, I'd love to hear success stories of people able to
> download from the dive computers on their phone or tablet.
>
> /D
Tested the -300 code. All self build, and Qt 5.9.0 from the Arch Linux
repos, so no specific update to 5.9.1.
1) desktop version: downloads OSTC3 over BT correctly.
2) mobile-on-desktop: downloads OSTC3 over BT correctly.
3) and it getting boring :-). True mobile on Android 7.1.2: downloads
OSTC3 over BT correctly.
In addition, I tried the LE: quirk on desktop, to see how far I would
get for OSTC3 over BLE. Below, the logging from the console.
Starting the thread 0
qt.bluetooth.bluez: Bluez 5 detected.
qt.bluetooth.bluez: Enabling GATT request timeout behavior 20000
qt_ble_open( 00:80:25:4A:0F:C3 )
qt.bluetooth.bluez: No settings found for peer device.
qt.bluetooth.bluez: HCI event triggered, type: e
qt.bluetooth.bluez: HCI event triggered, type: e
qt.bluetooth.bluez: HCI event triggered, type: e
qt.bluetooth.bluez: HCI event triggered, type: e
qt.bluetooth.bluez: HCI event triggered, type: f
qt.bluetooth.bluez: HCI event triggered, type: f
qt.bluetooth.bluez: HCI event triggered, type: f
qt.bluetooth.bluez: Current l2cp sec level: 1
qt.bluetooth.bluez: Exchanging MTU
connected to the controller for device 00:80:25:4A:0F:C3
.. discovering services
qt.bluetooth.bluez: Sending read_by_group_type request, startHandle: 1
endHandle: ffff 2800
qt.bluetooth.bluez: Received size: 3 data: "031700"
qt.bluetooth.bluez: Server MTU: 23 resulting mtu: 23
qt.bluetooth.bluez: Received size: 20 data:
"1106010005000018060006000118070009000a18"
qt.bluetooth.bluez: Found uuid: "{00001800-0000-1000-8000-00805f9b34fb}"
start handle: 1 end handle: 5
Found service "{00001800-0000-1000-8000-00805f9b34fb}"
.. ignoring standard service
qt.bluetooth.bluez: Found uuid: "{00001801-0000-1000-8000-00805f9b34fb}"
start handle: 6 end handle: 6
Found service "{00001801-0000-1000-8000-00805f9b34fb}"
.. ignoring standard service
qt.bluetooth.bluez: Found uuid: "{0000180a-0000-1000-8000-00805f9b34fb}"
start handle: 7 end handle: 9
Found service "{0000180a-0000-1000-8000-00805f9b34fb}"
.. ignoring standard service
qt.bluetooth.bluez: Sending read_by_group_type request, startHandle: a
endHandle: ffff 2800
qt.bluetooth.bluez: Received size: 8 data: "11060a001600fbfe"
qt.bluetooth.bluez: Found uuid: "{0000fefb-0000-1000-8000-00805f9b34fb}"
start handle: a end handle: 16
Found service "{0000fefb-0000-1000-8000-00805f9b34fb}"
.. ignoring standard service
qt.bluetooth.bluez: Sending read_by_group_type request, startHandle: 17
endHandle: ffff 2800
qt.bluetooth.bluez: Received size: 22 data:
"11141700ffff30303031565245534f495245544d5453"
qt.bluetooth.bluez: Found uuid: "{53544d54-4552-494f-5345-525631303030}"
start handle: 17 end handle: ffff
Found service "{53544d54-4552-494f-5345-525631303030}"
.. created service object QLowEnergyService(0x7fff5800b190)
qt.bluetooth.bluez: Sending read_by_type request, startHandle: 17
endHandle: ffff type: 2802 packet: "081700ffff0228"
qt.bluetooth.bluez: Sending read_by_group_type request, startHandle: 1
endHandle: ffff 2801
qt.bluetooth.bluez: Received size: 5 data: "010817000a"
qt.bluetooth.bluez: Error1: "no attribute in given range found" last
command: 8 handle: 17
qt.bluetooth.bluez: Sending read_by_type request, startHandle: 17
endHandle: ffff type: 2803 packet: "081700ffff0328"
qt.bluetooth.bluez: Received size: 5 data: "011001000a"
qt.bluetooth.bluez: Error1: "no attribute in given range found" last
command: 10 handle: 1
.. done discovering services
.. discovering details
qt.bluetooth.bluez: Received size: 23 data:
"09151800141900313030305620204e49545241554f5453"
qt.bluetooth.bluez: Found handle: 18 properties: QFlags(0x4|0x10) value
handle: 19 uuid: "{53544f55-4152-5449-4e20-205630303031}"
qt.bluetooth.bluez: Sending read_by_type request, startHandle: 19
endHandle: ffff type: 2803 packet: "081900ffff0328"
qt.bluetooth.bluez: Received size: 23 data:
"09151b00141c00313030305620204e494f4950474f5453"
qt.bluetooth.bluez: Found handle: 1b properties: QFlags(0x4|0x10) value
handle: 1c uuid: "{53544f47-5049-4f49-4e20-205630303031}"
qt.bluetooth.bluez: Sending read_by_type request, startHandle: 1c
endHandle: ffff type: 2803 packet: "081c00ffff0328"
qt.bluetooth.bluez: Received size: 23 data:
"09151e00081f00313030305620204c45535645444f5453"
qt.bluetooth.bluez: Found handle: 1e properties: QFlags(0x8) value
handle: 1f uuid: "{53544f44-4556-5345-4c20-205630303031}"
qt.bluetooth.bluez: Sending read_by_type request, startHandle: 1f
endHandle: ffff type: 2803 packet: "081f00ffff0328"
qt.bluetooth.bluez: Received size: 23 data:
"09152000182100313030305643444e41434f49544f5453"
qt.bluetooth.bluez: Found handle: 20 properties: QFlags(0x8|0x10) value
handle: 21 uuid: "{53544f54-494f-4341-4e44-435630303031}"
qt.bluetooth.bluez: Sending read_by_type request, startHandle: 21
endHandle: ffff type: 2803 packet: "082100ffff0328"
qt.bluetooth.bluez: Received size: 5 data: "010821000a"
qt.bluetooth.bluez: Error1: "no attribute in given range found" last
command: 8 handle: 21
qt.bluetooth.bluez: Reading all characteristic values for
"{53544d54-4552-494f-5345-525631303030}"
qt.bluetooth.bluez: Discovering descriptor values for
"{53544d54-4552-494f-5345-525631303030}"
qt.bluetooth.bluez: Sending find_info request (18, 1b, 1e, 20) 18
qt.bluetooth.bluez: Received size: 6 data: "050118000328"
qt.bluetooth.bluez: Suppressing primary/characteristic 2803
qt.bluetooth.bluez: Sending find_info request (18, 1b, 1e, 20) 19
qt.bluetooth.bluez: Received size: 20 data:
"05021900313030305620204e49545241554f5453"
qt.bluetooth.bluez: Suppressing char handle 19
qt.bluetooth.bluez: Sending find_info request (18, 1b, 1e, 20) 1a
qt.bluetooth.bluez: Received size: 6 data: "05011a000229"
qt.bluetooth.bluez: Descriptor found, uuid:
"{00002902-0000-1000-8000-00805f9b34fb}" descriptor handle: 1a
qt.bluetooth.bluez: Sending find_info request (1b, 1e, 20) 1b
qt.bluetooth.bluez: Received size: 6 data: "05011b000328"
qt.bluetooth.bluez: Suppressing primary/characteristic 2803
qt.bluetooth.bluez: Sending find_info request (1b, 1e, 20) 1c
qt.bluetooth.bluez: Received size: 20 data:
"05021c00313030305620204e494f4950474f5453"
qt.bluetooth.bluez: Suppressing char handle 1c
qt.bluetooth.bluez: Sending find_info request (1b, 1e, 20) 1d
qt.bluetooth.bluez: Received size: 6 data: "05011d000229"
qt.bluetooth.bluez: Descriptor found, uuid:
"{00002902-0000-1000-8000-00805f9b34fb}" descriptor handle: 1d
qt.bluetooth.bluez: Sending find_info request (1e, 20) 1e
qt.bluetooth.bluez: Received size: 6 data: "05011e000328"
qt.bluetooth.bluez: Suppressing primary/characteristic 2803
qt.bluetooth.bluez: Sending find_info request (1e, 20) 1f
qt.bluetooth.bluez: Received size: 20 data:
"05021f00313030305620204c45535645444f5453"
qt.bluetooth.bluez: Suppressing char handle 1f
qt.bluetooth.bluez: Sending find_info request (20) 20
qt.bluetooth.bluez: Received size: 6 data: "050120000328"
qt.bluetooth.bluez: Suppressing primary/characteristic 2803
qt.bluetooth.bluez: Sending find_info request (20) 21
qt.bluetooth.bluez: Received size: 20 data:
"05022100313030305643444e41434f49544f5453"
qt.bluetooth.bluez: Suppressing char handle 21
qt.bluetooth.bluez: Sending find_info request (20) 22
qt.bluetooth.bluez: Received size: 6 data: "050122000229"
qt.bluetooth.bluez: Descriptor found, uuid:
"{00002902-0000-1000-8000-00805f9b34fb}" descriptor handle: 22
qt.bluetooth.bluez: Sending find_info request (20) 23
qt.bluetooth.bluez: Received size: 5 data: "010423000a"
qt.bluetooth.bluez: Error1: "no attribute in given range found" last
command: 4 handle: 23
qt.bluetooth.bluez: Reading all descriptor values for
"{53544d54-4552-494f-5345-525631303030}"
qt.bluetooth.bluez: Received size: 3 data: "0b0000"
INFO: dc_deveice_open error value of 0
qt.bluetooth.bluez: Received size: 3 data: "0b0000"
qt.bluetooth.bluez: Received size: 3 data: "0b0000"
"{53544f55-4152-5449-4e20-205630303031}"
"{53544f47-5049-4f49-4e20-205630303031}"
"{53544f44-4556-5345-4c20-205630303031}"
"{53544f54-494f-4341-4e44-435630303031}"
.. enabling notifications
Descriptor list with 1 elements
Descriptor: "Client Characteristic Configuration" uuid:
"{00002902-0000-1000-8000-00805f9b34fb}"
now writing "0x0100" to the first descriptor
qt.bluetooth.bluez: Writing descriptor 22 (size: 5 )
qt.bluetooth.bluez: Writing characteristic 18 (size: 4 with response:
false signed: false )
qt.bluetooth.bluez: Received size: 5 data: "0112220005"
qt.bluetooth.bluez: Error1: "needs authentication - permissions" last
command: 12 handle: 22
qt.bluetooth.bluez: Requesting encrypted link
qt.bluetooth.bluez: Setting new l2cp sec level: 3
[10.865032] ERROR: Failed to receive the echo. [in
../../src/hw_ostc3.c:211 (hw_ostc3_transfer)]
[10.865069] ERROR: Failed to send the command. [in
../../src/hw_ostc3.c:417 (hw_ostc3_device_init_download)]
Finishing the thread Dive data import error dives downloaded 0
So, there is some communication, and with my very very limited knowledge
on BLE, it seems that the correct service is detected (Found service
"{53544d54-4552-494f-5345-525631303030}" and things finally seem to fail
with something encryption related? If needed, i can produce screendumps
from Nordic to see what BLE things are visible on the OSTC3, but I
suspect that most of the required data is in the log above.
Obviously, OSTC3 over BLE is not the most important capability, as it is
only needed for iOs users and Android users are perfectly served with
only BT, but it would still be nice to get it working.
--jan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20170628/a3cbd3bd/attachment-0001.html>
More information about the subsurface
mailing list