Is the native Android BLE implementation synchronous in nature?
I remember reading in the "Guide and Hint"-doc to the Samsung BLE API (archived page):
One of the most important concepts of the Samsung F/W and stack is its synchronous nature. That is, if we call for example,
writeCharacteristic
for a particular characteristic, if it returnstrue
, the next call to anyBluetoothGatt
orBluetoothGattServer
method should be done after theonCharacteristicRead
callback is received. This is because the stack is designed to support and process only one GATT call at a time, and if, for example, you callwriteCharacteristic
orreadCharacteristic
on any characteristic soon after the first one, it is ignored.
- Does that also apply to the native implementation of BLE introduced in Android 4.3?
- Samsung API also supports only one connected GATT device at a time. Has this changed in the native API?
Solution 1:
Samsung recently published a "migration"-document on the same page I linked in my question. They exactly answer my question while comparing the new native BLE API with the Samsung BLE API:
The synchronous nature of the stack and F/W hasn’t been affected. That is, if we call for example,
writeCharacteristic
for a particular characteristic, if it returns true, the next call to anyBluetoothGatt
orBluetoothGattServer
method should be done after theonCharacteristicRead
callback is received. This is because the stack is designed to support and process only one GATT call at a time, and if, for example, you callwriteCharacteristic
orreadCharacteristic
of anycharacteristic
soon after the first one, it is ignored.