You are currently viewing [BLE GATT] What’s the best way to chain several async requests using a BroadcastReceiver?

[BLE GATT] What’s the best way to chain several async requests using a BroadcastReceiver?

I have a BLE GATT service whose characteristic is set to indicate. When I write to the characteristic, the peripheral does some computation and indicates back a changed value – picked up by the BroadcastReceiver in a block looking something like this: private val gattUpdateReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val action = intent.action when { BLEConstants.ACTION_DATA_AVAILABLE.equals(action) -> { Log.i(TAG, "you got data!") //etc, you get the idea. I want to chain several writes to that characteristic together: write -> get updated value -> write2 -> get updated value -> write3 ... How do I do this so that I don’t get write -> write2 -> get updated value... out of order? The BroadcastReceiver doesn’t (and shouldn’t) know what data to be indicated back, so it can’t go “ah, I was just indicated XYZ so it’s time for write2()“.

submitted by /u/tofuwat
[link] [comments]