扫描iPhone范围内的蓝牙设备需要多长时间?

时间:2009-05-08 00:05:04

标签: iphone bluetooth

我知道在3.0之前无法通过SDK访问iPhone蓝牙功能,但需要多长时间才能找到该区域的设备?是否取决于该地区的设备数量?如果范围内有大约5个设备,扫描发现所有设备的时间是<5秒还是> 30秒?

我知道有很多未知因素,但我正在尝试确定如果时间很短,我是否可以在启动时进行蓝牙扫描,或者我是否必须告诉用户它即将进行扫描而且可能会有很长的延迟。我无法在现实世界中测试这个,因为其他蓝牙设备不可用,但我试图了解它是如何设计的。

2 个答案:

答案 0 :(得分:19)

不确定API会让您做什么,但基于此的蓝牙主机控制器接口(HCI)命令是“查询命令”

这将让您在固定时间和/或固定数量的响应中查询设备。

我是蓝牙新手,不是专家,但是......

要从处于低功耗模式的蓝牙设备获得至少1个响应需要1.28秒,因此查询时间是该时段的倍数,最多为61.44秒(48个周期),因此时间范围是1(1.28秒)到48(61.44秒)。

可能有几个设备可以在一个1.28秒的时间内响应。

您还可以指定您接受的响应数(1..255)或0表示无限制,例如直到时间用完。

如果您找到了正在寻找的特定设备,也可以取消查询。

我的办公桌使用CSR蓝牙芯片进行了不科学的测试,蓝牙2.1 + EDR固件在芯片上运行查询,并通过芯片UART调试输出。每次调查10次并取平均结果:

  • 1个周期查询时间(1.28秒) yeilded平均10独特 蓝牙地址。
  • 5期调查 时间(6.4秒)产生平均值 23个独特的蓝牙地址。
  • 10 期间查询时间(12.8秒) 平均得出29个独特的 蓝牙地址。

我说'独特',实际上结果反复重复了很多相同的地址,但这可能是依赖于实现的,Apple API可能只返回唯一的地址。

然而,这并不代表“现实世界”,因为这里的大多数蓝牙设备(我的办公室)都没有处于低功耗模式。我想,我可以通过Class of Device过滤掉PC,笔记本电脑和测试套件。这将获得移动电话,可被发现的耳机等......

查询也可以与RSSI结合使用,以获得信号最强的设备,但它们可能不一定是最接近的设备。

对于您的场景,您可能希望根据设备的时间和数量进行查询,例如4 * 1.28秒或10台设备。

总结一下: 您可以进行查询的最短时间是1.28秒,可以得到10 +/-?该区域内的设备如果它们处于清醒状态并且靠近它们。

如果你有一个饱和的蓝牙环境或(微波炉进入同一个房间),可能需要更长的时间才能找到范围内的所有设备。

答案 1 :(得分:2)

我知道这是一个老问题,但我想我可能会为后来发现这个问题的人添加一些内容。

Simon Peverett所述,设备发现由蓝牙主机控制器接口执行的基础“查询命令”执行。在蓝牙规范V4.0第2卷第E部分第6.1.4节中,规范说:

  

当蓝牙设备启动一般查询时,查询状态   除非询问者收集到足够的答复,否则应持续TGAP(100)或更长时间   并确定提前中止查询状态。

在其他地方,TGAP(100)被解释为10.24秒,并被描述为蓝牙设备执行设备发现的时间跨度的推荐值。

换句话说,执行查询的最短时间的良好基线是10.24秒,或查询命令测量时间的1.28秒周期中的8个。