iOS蓝牙双模;同时将BLE(GATT)连接到已连接的BR/EDR(A2DP/HFP)立体声耳机



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

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

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

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

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

更新

新增答案。我很抱歉直到现在才澄清/澄清我之前的回答——时间过得很快!

好吧,在深入研究规范并试图更清楚地理解事情之后,我找到了我想要的答案,尽管我更喜欢更乐观的答案;(

尽管如此,还是让我们开始吧;蓝牙规范4.0(BLE)是这么说的;

双模小工具不能充当BLE外围设备并宣传其在"经典"蓝牙中使用BR/EDR。

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

这根本不适合我的设置,因为;

  1. BLE中央处理器比BLE外围设备耗电更多,我的设备需要节能
  2. 双模"组合"-将BR/EDR设备与BLE外围设备功能相结合的问题只是转移到了手机上,它不会更好地工作,因为我们不能指望苹果(或其他任何人)违反BLE规范

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

蓝牙SIG再次派上了用场;

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

GATT和ATT不是特定于运输的,可用于BR/EDR和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而不是BR/EDR,这对苹果设备来说是行不通的,但可能会得到安卓系统的支持(不知道,最终会将应用程序移植到安卓系统,但无论如何,这对安卓系统来说并不是什么大不了的事情,因为最坏的情况意味着要回退到SPP和一个简单的字节协议来完成我需要完成的工作)。

就是这样。希望我帮助过别人;)/Markus

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

CSR芯片组上的双模和耳机开发的简单明了的答案是,它是早期SDK上CSR蓝牙堆栈中的一个约束。

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

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

我也在使用CSR8670设备。它让它发挥作用。BLE外围设备和音频。

您需要通过CSR使用ADK 4.0.0。

蓝牙4.1和蓝牙4.0不同。对于你所说的蓝牙4.0是正确的,但你的芯片可以实现蓝牙4.1。

4.1允许这样的连接。

我还在广告包中添加了"双模"标志。

有一些条件,例如强烈建议连接间隔至少为90毫秒,这样你就不会干扰音频。

祝你好运!

最新更新