跳过BLE服务发现

时间:2016-09-25 09:20:54

标签: android performance service bluetooth-lowenergy service-discovery

我正在尝试最小化BLE设备的总连接+写入时间。 BLE模块由我工作的公司开发,因此我已经了解设备的所有服务和特性。

到目前为止,连接时间+服务发现时间太长(大约800毫秒,要求最高为500毫秒)。我试图跳过服务发现,为此,我已经在代码中手动创建了特性和服务(使用反射来设置受保护的属性等),我可以在技术上"技术上" 34;通过服务发现。

问题是,如果我这样做,第一个数据包需要大约300毫秒,在服务发现的情况下,发现需要大约280毫秒,第一个数据包需要20毫秒,所以似乎执行服务发现无论如何,只是稍后,即使我不直接称呼它 - 我的假设是对的吗? 如果是这样,有没有办法绕过这个发现?

感谢任何帮助,到目前为止我无法在网上找到任何有用的信息,而那些300毫秒是批评。

1 个答案:

答案 0 :(得分:2)

即使您没有告诉它,Android也会进行服务发现。

您有三种选择:

  1. 绑定您的设备。然后android根本不会执行任何服务发现(第一个连接除外)。
  2. 优化您的GATT数据库。丢弃你不需要的特征和描述符,如果你有自定义服务,尽量合并尽可能多的特征等。
  3. 如果您拥有可以执行此操作的硬件,则优化链接层,就像您在同一连接事件(150 us)内响应每个GATT请求而不是在下一个连接事件中响应一样。从理论上讲,这应该可以将速度提高2倍。可能的例子是Nordic Semiconductor的nrf52。