Mar*_*ord 12 bluetooth ios core-bluetooth bluetooth-lowenergy gatt
我正在使用经典配置文件(HFP,A2DP,AVRCP)开发带蓝牙的立体声耳机,就像人们期望的Ina立体声耳机一样.但是,我想为iOS部署一个远程控制应用程序,并将其同时用于其他经典链接,但我在设计中使用的双模芯片组并不像我期望的那样;
耳机设置为外围设备,让iOS设备充当中心.因此,外围设备通告其BLE服务(使用我特定的128位UUID)并且一切都很好.我可以从任何中心浏览外设,但只有当我没有连接经典配置文件时(例如,不流式传输音频).
在与HFP和/或A2DP连接时,我的设备似乎无法宣传BLE!但是,我看到同一芯片组的演示充当BLE中心,扫描并连接到其他BLE外设,同时通过A2DP传输音频.但是,在该设置中,设备充当连接到iPhone的A2DP接收器,同时通过BLE扫描/连接到充当BLE外围设备的第三个单元.因此,不能将经典和智能蓝牙与同一设备进行点对点.
是否存在双模式约束,在支持/连接Bluetooth Classic配置文件时,不能充当外设?那种情况下只支持中央模式吗?
仅供参考,我正在使用CSR的8670芯片组.
新的答案补充说.我很抱歉直到现在还没有澄清/清理我以前的答案 - 时光飞逝!
Mar*_*ord 12
好吧,在深入研究规格并试图更清楚地理解事物之后,我找到了我想要的答案,尽管我更倾向于更乐观的答案......;(
不过,让我们来看看; 蓝牙规范4.0(BLE)说;
双模式小工具不能充当BLE外设并宣传其存在,同时仍然可以使用BR/EDR在"经典"蓝牙中连接.
此外,我使用的CSR8670双模芯片组的CSR源代码示例表现相同; 当连接任何经典BT链路时,禁用作为外围设备的BLE广告.相反,CSR源代码促进设备应该充当BLE中心,允许其他BLE外围设备通告并连接到它,所有这些都可以在流式传输音频时充当(充当A2DP接收器).
这完全不适合我的设置;
相反,推荐的方法是让我的立体声耳机完全跳过BLE并使用GATT而不是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的应用程序,其中典型的场景是使用CBCentral进行扫描,发现并连接到一个CBPeripheral内连接BR/EDR设备?答案很简单; 你不能,因为iOS 7.0没有(但是?)支持GATT for BR/EDR;
所以,总结一下; 如果你想在两个双模蓝牙设备之间建立点对点设置,使用BOTH蓝牙经典配置文件和蓝牙智能服务/特性,你应该使用GATT over BR/EDR,这对Apple设备来说是不行的,但可能会得到Android的支持(不知道,最终会将应用程序移植到Android上,但不管它对Android来说不是什么大不了,因为最糟糕的情况将意味着回退到SPP和简单的字节协议来完成工作我需要完成)
就是这样.希望我帮助过某人;)/ Markus
我想,只要你活着,你就会学到,这个问题的答案并不是我之前所声称的不支持(基于我认为我所知道的).
对CSR芯片组进行双模式和耳机开发的简短而干净的答案就是它在早期SDK上的CSR蓝牙堆栈中的限制.
Bluetooth SIG从未通过经典链路连接到同一设备,从未支持双模作为外设.相反,它明确规范.应该如何进行这种互操作性 - 但这并不总是意味着所有BT-stack实现都具备这种功能.
因此,使用最新的devtools和CSR的最新蓝牙固件/堆栈已经解决了所有问题,双模现在已经完全,而且实际上我可能会很好地添加,支持CSR8670/75芯片组.
| 归档时间: |
|
| 查看次数: |
13605 次 |
| 最近记录: |