0

我想知道在执行另一个命令之前是否需要等待来自服务器的命令已执行的响应,或者 BLE 堆栈是否可以在后台处理这个问题。

例如,我想写入一个特征,然后从中读取。我应该串联执行这些命令,还是应该在发送读取请求之前等待 onWriteRequest 回调方法触发?

如果对前一个问题是肯定的,BLE 堆栈将进行多少次重新发送尝试,以及在重新发送数据包之前等待响应多长时间?

4

1 回答 1

0

使用 GATT 协议,您一次只能进行一项未完成的操作。您必须等待响应,直到您可以发送下一个请求。因此,对于 Android,您必须等待 onCharacteristicWrite 直到您可以发送例如读取请求。我想在iOS上也是如此。

蓝牙堆栈将请求数据包发送到手机中的蓝牙控制器。然后,实现链路层的蓝牙控制器将在下一次机会(连接事件)时发送数据包。如果数据包未被确认,它将重新发送相同的数据包,直到被确认或链接超时(监督超时)。默认超时为 5 秒(在早期的 Android 版本中为 20 秒)。但是,外设可以通过发出连接参数更新请求来更改超时值。

于 2017-06-22T23:14:16.200 回答