Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android BLE Gatt Characteristic WRITE_TYPE_NO_RESPONSE not working

I have developed an Android app that connects to a CC2540 BLE peripheral.

When I do a Characteristic write of type no response (WRITE_TYPE_NO_RESPONSE), I still get the callback onCharacteristicWrite at the app level. Is this behavior correct?

I understand there is probably a low level acknowledgement that occurs between the Android device and the peripheral.

But the reason I am asking is because this is causing an issue where I can only send a write once I have received this callback, which is slowing things down in the app.

Any light on this behavior would be appreciated it.

Thanks,

like image 677
mikemeli Avatar asked Feb 15 '14 00:02

mikemeli


2 Answers

I did run into the same problem when I was trying to do some performance testing and found that when I used the WRITE_TYPE_DEFAULT specifically I stopped getting a response. There might be a bug with the android constants that is causing inverse behavior, but I am not quite not sure.

like image 130
Zomb Avatar answered Nov 04 '22 12:11

Zomb


you can only make 1 transfer at a time on the low level so you need a callback to tell when the stack is ready to send another command. If you try to send several after each other without waiting for the air-interface to be ready you can seriously crash the BLE stack! This was happening a lot on earlier iOS CoreBluetooth. If one app crashes the BLE Stack then the phone need a reset or Bluetooth must be turned off and on again to reset the stack. The callback just tells you that the stack has send a request over the air-interface, not that it was acknowledged by the recipient. For that you would use the other api which will make the BLE Stack re-transmit several times (depending on how the connection parameters has been negotiated).

It's stated clearly in the BLE specification that only 1 transfer can be made at a time.

If you just bang the API with write requ

like image 24
henrik Avatar answered Nov 04 '22 12:11

henrik