14

我正在使用经典配置文件(HFP、A2DP、AVRCP)开发一款带蓝牙的立体声耳机,正如人们所期望的那样,Ina 立体声耳机。但是,我想为 iOS 部署一个远程控制应用程序,并将其同时用于其他经典链接,但我在设计中使用的双模芯片组的行为与我预期的不同;

耳机设置为外围设备,让 iOS 设备充当中央设备。因此,外围设备宣传其 BLE 服务(使用我特定的 128 位 UUID),一切都很好。我可以从任何中心浏览外围设备,但只有在我没有连接经典配置文件时(例如,没有流式传输音频)。

我的设备在与 HFP 和/或 A2DP 连接时似乎无法宣传 BLE!但是,我看到了相同芯片组作为 BLE 中心的演示,它扫描并连接到其他 BLE 外围设备,同时通过 A2DP 流式传输音频。但是,在该设置中,该设备充当连接到 iPhone 的 A2DP 接收器,同时通过 BLE 扫描/连接到充当 BLE 外围设备的第三单元。因此,不能将经典蓝牙和智能蓝牙点对点连接到同一设备。

在支持/连接到蓝牙经典配置文件时,是否存在不能充当外围设备的双模式约束?在那种情况下只支持中央模式?

仅供参考,我使用的是 CSR 的 8670 芯片组。

更新

添加了新答案。我很抱歉直到现在才澄清/清理我以前的答案——时间过得真快!

4

3 回答 3

13

好吧,在深入研究规格并试图更清楚地理解事物之后,我找到了我正在寻找的答案,即使我更愿意获得更乐观的答案......;(

不过,让我们开始吧;4.0(BLE)的蓝牙规范说;

双模设备不能充当 BLE 外围设备并宣传其存在,同时仍可使用 BR/EDR 在“经典”蓝牙中连接。

此外,我正在使用的 CSR8670 双模芯片组的 CSR 源代码示例都表现相同;当连接任何经典 BT 链路时,作为外围设备的 BLE 广告将被禁用。相反,CSR 源代码提倡该设备应充当 BLE 中心,从而允许其他 BLE 外围单元发布并连接到它,这在流式传输音频时完全可行(充当 A2DP 接收器)。

这根本不适合我的设置;

  1. BLE Central 比 BLE 外设耗电,我的设备需要节能
  2. 将 BR/EDR 设备与 BLE 外围功能相结合的双模式“组合”问题刚刚转移到手机上,这不会更好,因为我们不能指望 Apple(或其他任何人)违反 BLE 规范。

相反,推荐的方法是让我的立体声耳机完全跳过 BLE 并使用 GATT over BR/EDR,也称为通过“香草”做广告,这真的很有意义;我的意思是,我已经在两个设备之间设置了 ACL 链接,为什么我需要启动任何类型的发现机制?

再次,蓝牙 SIG 派上用场了。

https://developer.bluetooth.org/TechnologyOverview/Pages/GATT.aspx

GATT 和 ATT 不是特定于传输的,可以在 BR/EDR 和 LE 中使用。但是,GATT 和 ATT 必须在 LE 中实现,因为它用于发现服务

因此,SIG 对使用 BR/EDR 作为 GATT 的传输表示“是”,但问题却变成了;然后,我如何才能从我的 iOS 应用程序中访问连接的 BR/EDR 设备,典型的场景是使用 CBCentral 扫描、发现和连接到 CBPeripheral?答案很简单;你不能,因为 iOS 7.0 不(还?)支持 BR/EDR 的 GATT;

https://www.bluetooth.org/tpg/showDeclaration.cfm?3A000A5A005C5344535D5414403B0C0D0E2405022413010E57503F202A5A72

所以,总结一下;如果您想在两个双模蓝牙设备之间进行点对点设置,同时使用蓝牙经典配置文件和蓝牙智能服务/特性,您应该使用 GATT over BR/EDR,这对于 Apple 设备是不可行的,但可能会受到 Android 的支持(不知道,最终会将应用程序移植到 Android 上,但无论如何这对 Android 来说并不是什么大问题,因为最坏的情况将意味着回退到 SPP 和一个简单的字节协议来完成这项工作我需要完成)。

就是这样。希望我帮助过某人;)/马库斯

于 2014-04-14T13:34:32.160 回答
8

我想,只要你活着,你就会学习,而这个问题的答案并不是我之前声称的不受支持(基于我认为我知道的)。

对 CSR 芯片组上的双模和耳机开发的简短而明确的回答是,它是早期 SDK 上 CSR 蓝牙堆栈中的一个限制。

蓝牙 SIG 在通过经典链接连接到同一设备时,从未不支持充当外围设备的双模式。相反,它明确规范。应该如何实现这种互操作性——但这并不总是意味着所有的 BT 堆栈实现都具有这种功能。

因此; 使用来自 CSR 的最新开发工具和最新的蓝牙固件/堆栈已经解决了所有问题,并且双模现在已经完全得到支持,实际上我可以很好地补充,在 CSR8670/75 芯片组上得到支持。

于 2015-09-28T11:08:02.940 回答
4

我也在使用 CSR8670 设备。它有它的工作。BLE 外设和音频。

您需要使用 CSR 的 ADK 4.0.0。

蓝牙 4.1 和蓝牙 4.0 是不同的。你说的蓝牙4.0是对的,但是你的芯片可以做蓝牙4.1。

4.1 允许这样的连接。

我还在广告包中添加了“双模式”标志。

有一些条件,例如强烈建议至少 90 毫秒的连接间隔,这样您就不会弄乱音频。

祝你好运!

于 2015-10-16T04:44:12.287 回答