好吧,在深入研究规格并试图更清楚地理解事物之后,我找到了我正在寻找的答案,即使我更愿意获得更乐观的答案......;(
不过,让我们开始吧;4.0(BLE)的蓝牙规范说;
双模设备不能充当 BLE 外围设备并宣传其存在,同时仍可使用 BR/EDR 在“经典”蓝牙中连接。
此外,我正在使用的 CSR8670 双模芯片组的 CSR 源代码示例都表现相同;当连接任何经典 BT 链路时,作为外围设备的 BLE 广告将被禁用。相反,CSR 源代码提倡该设备应充当 BLE 中心,从而允许其他 BLE 外围单元发布并连接到它,这在流式传输音频时完全可行(充当 A2DP 接收器)。
这根本不适合我的设置;
- BLE Central 比 BLE 外设耗电,我的设备需要节能
- 将 BR/EDR 设备与 BLE 外围功能相结合的双模式“组合”问题刚刚转移到手机上,这不会更好,因为我们不能指望 Apple(或其他任何人)违反 BLE 规范。
相反,推荐的方法是让我的立体声耳机完全跳过 BLE 并使用 GATT over 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 应用程序中访问该连接的 BR/EDR 设备,典型的场景是使用 CBCentral 扫描、发现和连接到 CBPeripheral?答案很简单;你不能,因为 iOS 7.0 不(还?)支持 BR/EDR 的 GATT;
https://www.bluetooth.org/tpg/showDeclaration.cfm?3A000A5A005C5344535D5414403B0C0D0E2405022413010E57503F202A5A72
所以,总结一下;如果您想在两个双模蓝牙设备之间进行点对点设置,同时使用蓝牙经典配置文件和蓝牙智能服务/特性,您应该使用 GATT over BR/EDR,这对于 Apple 设备是不可行的,但可能会受到 Android 的支持(不知道,最终会将应用程序移植到 Android 上,但无论如何这对 Android 来说并不是什么大问题,因为最坏的情况将意味着回退到 SPP 和一个简单的字节协议来完成这项工作我需要完成)。
就是这样。希望我帮助过某人;)/马库斯