繁体   English   中英

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

[英]iOS Bluetooth dual-mode; connect BLE (GATT) to an already connected BR/EDR (A2DP/HFP) stereo headset simultaneously

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

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

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

是否存在双模式约束,在支持/连接Bluetooth Classic配置文件时,不能充当外设? 那种情况下只支持中央模式吗?

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

UPDATE

新的答案补充说。 我很抱歉直到现在还没有澄清/清理我以前的答案 - 时光飞逝!

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

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

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

此外,我使用的CSR8670双模芯片组的CSR源代码示例表现相同; 当连接任何经典BT链路时,禁用作为外围设备的BLE广告。 相反,CSR源代码促进设备应该充当BLE中心,允许其他BLE外围设备通告并连接到它,所有这些都可以在流式传输音频时充当(充当A2DP接收器)。

这完全不适合我的设置;

  1. BLE中心比BLE外设消耗更多功率,我的设备需要节省能源
  2. 将BR / EDR设备与BLE外围功能相结合的双模“组合”问题恰好转移到手机上,由于我们不能指望Apple(或其他任何人)违反BLE规范,因此效果不会更好。

相反,推荐的方法是让我的立体声耳机完全跳过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;

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

所以,总结一下; 如果你想在两个双模蓝牙设备之间建立点对点设置,使用BOTH蓝牙经典配置文件和蓝牙智能服务/特性,你应该使用GATT over BR / EDR,这对Apple设备来说是不行的,但可能会得到Android的支持(不知道,最终会将应用程序移植到Android上,但不管它对Android来说不是什么大不了,因为最糟糕的情况将意味着回退到SPP和简单的字节协议来完成工作我需要完成)

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

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

对CSR芯片组进行双模式和耳机开发的简短而干净的答案就是它在早期SDK上的CSR蓝牙堆栈中的限制。

Bluetooth SIG从未通过经典链路连接到同一设备,从未支持双模作为外设。 相反,它明确规范。 应该如何进行这种互操作性 - 但这并不总是意味着所有BT-stack实现都具备这种功能。

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

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

您需要使用CSR的ADK 4.0.0。

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

4.1允许这样的连接。

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

有一些条件,例如强烈推荐的连接间隔至少90毫秒,所以你不要乱用音频。

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM