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

我正在使用经典的configuration文件(HFP,A2DP,AVRCP)开发带有蓝牙function的立体声耳机,正如人们所期望的伊纳立体声耳机一样。 不过,我想为iOS部署一个远程控制应用程序,并将其同时用于其他经典链接,但是我在devise中使用的双模式芯片组并不像我预期的那样运行;

耳机被设置为外设,让iOS设备充当中心。 因此,外围设备广告其BLE服务(与我的具体的128位UUID),都是好的。 我可以从任何中央浏览外设,但只有当我没有连接经典configuration文件(例如,而不是streamaudio)。

我的设备似乎无法宣传BLE,而与HFP和/或A2DP连接! 不过,我已经看到相同芯片组的BLE中央显示器,扫描并连接到其他BLE外设,同时通过A2DPstream式传输audio。 然而,在该设置中,该设备作为A2DP接收器连接到iPhone,同时通过BLE扫描/连接到作为BLE外围设备的第三单元。 因此,不能将Classic和Smart Bluetooth技术点对点地连接到同一个设备上。

是否存在双模式限制,即在支持/连接到Bluetooth Classicconfiguration文件时不能充当外设? 那种情况下只支持中央模式?

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

UPDATE

新的答案添加。 我的道歉没有澄清/清理我以前的答案,直到现在 – 时间过得真快!

那么,在深入研究规范并试图更清楚地理解事情之后,我发现了我正在寻找的答案,即使我更愿意更乐观的答案…;(

不过,让我们来看看吧。 蓝牙规范为4.0(BLE)说,

双模式小配件不能充当BLE外围设备,并通过BR / EDR在“传统”蓝牙中仍可连接的情况下宣传其存在。

此外,我使用CSR8670双模芯片组的CSR源代码示例都performance得相同, 当连接任何传统BT链接时,作为外设的BLE广告被禁用。 相反,CSR源代码推动设备应该充当BLE中心,允许其他BLE外设单元进行广告和连接,所有stream媒体audio(充当A2DP接收器)都是完全可行的。

这从来没有包含我的设置,

  1. BLE中心比BLE外设消耗更多功率,而且我的设备需要节能
  2. 双模式“组合” – 将BR / EDR设备与BLE外设function相结合的问题刚刚转移到了手机上,由于我们不能期望苹果(或任何其他人)违反BLE规范,所以这种方法不会有任何改进。

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

再次,蓝牙技术联盟派上用场。

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

所以,总结一下; 如果您想要在两个双模蓝牙设备之间进行点对点设置,请使用BOTH Bluetooth Classicconfiguration文件和Bluetooth Smart服务/特性,您应该使用GATT over BR / EDR,这对于Apple设备是不可行的,但可能会受到Android的支持(不知道,最终还是会将应用程序移植到Android上,但不pipeAndroid对它不是什么大不了的事情,因为最坏的情况将意味着SPP的后退和一个简单的字节协议来完成工作我需要完成)。

就是这样。 希望我帮助过某个人)/ Markus

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

CSR芯片组双模和耳机开发的简短而清晰的答案很简单,就是它是早期SDK中的CSR蓝牙堆栈的一个限制。

蓝牙技术联盟从来不支持双模式作为外设,而通过传统的链接连接到同一个设备。 相反,它明确规范。 应该如何实现这种互操作性 – 但这并不意味着所有的BT堆栈实现都具有这种function。

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

我也在使用CSR8670器件。 它有它的工作。 BLE外设和audio。

您需要通过CSR使用ADK 4.0.0。

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

4.1允许这样的连接。

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

有几个条件,如连接间隔至less90毫秒强烈build议,所以你不要乱搞audio。

祝你好运!