Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.8.0
-
None
Description
The documentation states that write without response can be used to send and won't generate a response from the remote device thus won't give you any sort of notification. From a protocol perspective this is complete tripe, the write is acknowledged at the radio layer, the application layer does not need to confirm it as with write requests.
The qt bluez file has this:
ATT_OP_WRITE_REQUEST = 0x12, //write characteristic with response ATT_OP_WRITE_RESPONSE = 0x13, ATT_OP_PREPARE_WRITE_REQUEST = 0x16, //write values longer than MTU-3 -> queueing ATT_OP_PREPARE_WRITE_RESPONSE = 0x17,
Presumably, 0x14 and 0x15 are the exact numbers that are needed for this.
The problem is that Qt provides absolutely no way to know when you can send more data i.e. the send queue is empty which every other device/SDK does provide, so you never know when to send more data. Ideally a signal should be raised when the send queue is empty, because it's write without response you don't know if the other side was able to deal with all the written data, and frankly you don't care, you just care that the radio received the data, and that is a fundamental BLE feature.