我正在开发一个带有蓝牙的立体声耳机,使用经典的配置文件(HFP,A2DP,AVRCP),就像人们期望的那样。然而,我想为iOS部署一个远程控制应用程序,并同时将其用于其他经典链接,但我在设计中使用的双模芯片组的行为并不像我预期的那样;
头戴式耳机设置为外围设备,让iOS设备充当中央设备。因此,外围设备通告它的BLE服务(使用我的特定128位UUID),一切都是好的。我可以从任何中心浏览外围设备,但仅当我没有连接到经典配置文件时(例如,在没有流式音频的情况下)。
连接HFP和/或A2DP时,我的设备似乎无法播发BLE!然而,我已经看到了同一芯片组的演示,作为BLE中央,扫描和连接到其他BLE外围设备,同时通过A2DP流式音频。然而,在该设置中,该设备充当连接到iPhone A2DP信宿,同时通过BLE扫描/连接到充当BLE外围设备的第三单元。因此,不能将传统蓝牙和智能蓝牙的点对点连接到同一设备。
是否存在支持/连接到Bluetooth Classic profiles时不能充当外围设备的双模限制?在这种情况下只支持中央模式?
仅供参考,我使用的是CSR的8670芯片组。
更新
已添加新答案。我很抱歉直到现在才澄清/清理我之前的答案--时光飞逝!
发布于 2015-09-28 19:08:03
我想,只要你活着,你就会学习,这个问题的答案并不是我之前声称的不支持它(基于我认为我知道的东西)。
对于CSR芯片组上的双模和耳机开发,简单明了的回答是,它是早期SDK上的CSR蓝牙堆栈中的一个约束。
蓝牙SIG从不支持在通过传统链接连接到同一设备时充当外设的双模模式。相反,它清楚地说明了。应该如何实现这种互操作性--但这并不总是意味着所有BT堆栈实现都能够实现这样的功能。
因此,使用最新的devtools和CSR的最新蓝牙固件/堆栈已经解决了所有问题,双模式现在已经完全,实际上我可以很好地补充说,在CSR8670/75芯片组上支持。
发布于 2014-04-14 21:34:32
嗯,在深入研究规范并试图更清楚地理解事物之后,我找到了我正在寻找的答案,尽管我更喜欢更乐观的答案……;(
然而,让我们开始吧;蓝牙4.0规范(BLE)规定;
双模小工具不能充当BLE外围设备,并在仍可使用BR/EDR在“经典”蓝牙中连接的同时通告其存在。
此外,我正在使用的CSR8670双模芯片组的CSR源代码示例的所有行为都是相同的;当连接任何经典的BT链路时,作为外围设备的BLE广告都是禁用的。相反,CSR源代码建议设备应充当BLE中央设备,允许其他BLE外围设备通告并连接到它,所有这些都完全可以在流式传输音频时进行(充当A2DP接收器)。
这根本不适合我的设置,因为;
相反,推荐的方法是让我的立体声耳机完全跳过BLE,而使用GATT而不是BR/EDR,也称为通过"vanilla“进行广告,这真的很有意义;我的意思是,我已经在两个设备之间建立了ACL链接,为什么我需要踢开任何类型的发现机制?
再一次,蓝牙SIG派上用场;
https://developer.bluetooth.org/TechnologyOverview/Pages/GATT.aspx
ATT和
不是特定于传输的,可以在BR/EDR和LE中使用。但是,GATT和ATT必须在LE中实现,因为它们用于发现服务
因此,SIG同意使用BR/EDR作为关贸总协定的传输,但问题变成了:我如何在iOS-app中访问连接的BR/EDR设备,其中典型的场景是使用CBCentral扫描、发现并连接到CBPeripheral?答案很简单;你不能,因为iOS 7.0不能(还没有?)支持BR/EDR的GATT;
所以,总而言之,如果你想在两个使用蓝牙经典配置文件和蓝牙智能服务/特征的双模蓝牙设备之间进行点对点的设置,你应该使用GATT over BR/EDR,这对于苹果设备是不可行的,但可能会被Android支持(不知道最终会把应用程序移植到Android上,但无论如何这对Android来说不是什么大问题,因为最坏的情况将意味着我会退回到SPP和一个简单的字节协议来完成我需要完成的工作)。
就是这样。希望我已经帮助了某个人;) /Markus
发布于 2015-10-16 12:44:12
我也在使用CSR8670设备。它让它工作了。包括BLE外设和音频。
您需要通过CSR使用ADK 4.0.0。
蓝牙4.1和蓝牙4.0是不同的。你所说的蓝牙4.0是正确的,但是你的芯片可以支持蓝牙4.1。
4.1允许这样的连接。
我还在广告包中添加了“双模式”标志。
有几种情况,比如连接间隔至少为90毫秒,强烈建议您不要弄乱音频。
祝好运!
https://stackoverflow.com/questions/23056668
复制相似问题