【问题标题】:Bluetooth Dual LE and Classic Mode Flags蓝牙双 LE 和经典模式标志
【发布时间】:2018-01-14 22:43:56
【问题描述】:

在 BLE 的广告部分,蓝牙 SIG 定义“标志”

其中有这些以及更多。

  • BR/EDR 不支持
  • 将 LE 和 BR/EDR 同步到同一设备(控制器)
  • 同时 LE 和 BR/EDR 到同一设备(主机)

我在不支持 GATT over BR/EDR 的 CSR 芯片组设计上遇到问题。

Apple 运行良好,因为它始终连接到 LE。

..但如果音频已经启动,Android 设备会持续尝试通过 BR/EDR 连接 GATT;因此失败,因为 CSR 无法处理 GATT 的 BR/EDR 传输。

我认为这些标志是问题的核心。

在 CSR 的演示代码中,他们没有设置“任何”上述标志。通过设置“不支持”标志,我在某些手机上的问题取得了有限的成功。

问题是另外两个标志。控制器/主机与其他 LE 术语有何关系。例如 Central/Peripheral 或更高版本的 Master/Slave。

我不知道为我的用例设置什么标志。欢迎提出任何建议?

【问题讨论】:

  • BR/EDR Not Supported 并没有真正的帮助。一旦 Android 注意到还有第二个频道,它似乎就会忽略它。

标签: bluetooth bluetooth-lowenergy


【解决方案1】:

您可以对所有 LE 操作使用静态随机地址。这样一来,Android 设备就会认为它是与通过蓝牙经典通话时不同的设备,因为它使用公共 BD_ADDR。

或者,connectGatt 的一种变体采用 transport 参数,您可以将其设置为 TRANSPORT_LE 以强制通过 BLE 进行通信。

如果您的设备同时支持 BLE 和 BR/EDR,您应该设置这些标志:

BR/EDR Not Supported=0
Simultaneous LE and BR/EDR to Same Device Capable (Controller)=1
Simultaneous LE and BR/EDR to Same Device Capable (Host)=1

如果标志数据完全丢失,则等同于所有字段为零。

【讨论】:

  • 谢谢,我想了解“主机”和“控制器”部分在这种情况下的含义。
  • 通常您在外部芯片上有一个蓝牙控制器,然后是一台主机(您已将芯片插入主机)。我认为这个想法是第一个标志(控制器)是蓝牙芯片本身是否支持两者,第二个标志是主机上的软件是否支持同时处理。
  • 可能是老了,但是如果BR/EDR not supported bit设置为0,基本上就表示确实支持BR/EDR了? @埃米尔
  • 是的,因为反转逻辑。
猜你喜欢
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
相关资源
最近更新 更多