Android 处理 BLE Blob 请求大约需要多长时间?
What is the approximate time taken by Android to serve a BLE Blob Request?
我正在使用 Blob 请求读取一个超过 23 字节的属性。我的应用程序的 MTU 是 23.I 可以在嗅探器中看到,要传输 512 个字节,它需要 24 个内部 blob 请求,增量偏移量为 22,服务器将数据发回给我。
在我的案例中,以 LightBlue 应用程序为中心,每个内部 Blob 请求大约需要 105 毫秒。
我不太了解 Android BLE 造成的这种内部碎片。
如果每个内部请求的 105 毫秒和读取 512 字节的 2.5 秒是由于内部机制造成的,有人可以确认我吗?
您观察的时机取决于多种因素,因此您的观察只是众多可能性中的一种。它也可以快一点,但也可以慢很多。
由于蓝牙radio是共享资源,其他应用也可以同时访问。接收器侧的无线电也可能有其他事情要做,从而改变时间延迟。最后但同样重要的是,通常还依赖于 2.4 GHz WLAN,因此,例如,同时在那里进行的数据传输也会对传输速度产生影响。
听起来很有道理。我猜您还没有更新连接间隔,因此使用默认值 ~52 毫秒。我还猜想您的远程设备未经过优化,无法在同一连接事件中响应读取 Blob 响应(必须在 150 微秒内完成)。因此,每个事务都将需要两个连接事件,最终会花费 105 毫秒。考虑增加 MTU、切换到通知或切换到 L2CAP CoC 以获得更高的吞吐量,以及使用 LE 数据长度扩展。否则只需降低连接间隔以增加每秒可以执行的事务数。
我正在使用 Blob 请求读取一个超过 23 字节的属性。我的应用程序的 MTU 是 23.I 可以在嗅探器中看到,要传输 512 个字节,它需要 24 个内部 blob 请求,增量偏移量为 22,服务器将数据发回给我。 在我的案例中,以 LightBlue 应用程序为中心,每个内部 Blob 请求大约需要 105 毫秒。 我不太了解 Android BLE 造成的这种内部碎片。 如果每个内部请求的 105 毫秒和读取 512 字节的 2.5 秒是由于内部机制造成的,有人可以确认我吗?
您观察的时机取决于多种因素,因此您的观察只是众多可能性中的一种。它也可以快一点,但也可以慢很多。
由于蓝牙radio是共享资源,其他应用也可以同时访问。接收器侧的无线电也可能有其他事情要做,从而改变时间延迟。最后但同样重要的是,通常还依赖于 2.4 GHz WLAN,因此,例如,同时在那里进行的数据传输也会对传输速度产生影响。
听起来很有道理。我猜您还没有更新连接间隔,因此使用默认值 ~52 毫秒。我还猜想您的远程设备未经过优化,无法在同一连接事件中响应读取 Blob 响应(必须在 150 微秒内完成)。因此,每个事务都将需要两个连接事件,最终会花费 105 毫秒。考虑增加 MTU、切换到通知或切换到 L2CAP CoC 以获得更高的吞吐量,以及使用 LE 数据长度扩展。否则只需降低连接间隔以增加每秒可以执行的事务数。