大家好,
我正在使用:
MCU:i.MX RT1176 EVKB;WiFi/蓝牙模块:村田 IW416
我想将 BLE wireless_uart_cm7 服务添加到
handsfree_ag_cm7 应用程序,以便该应用程序同时支持以下两项:
- 蓝牙经典版(HFP AG)
- BLE GATT(无线 UART)
在 BT_features.h 中,我注意到:
#ifndef CFG_CLASSIC #define BT_LE #endif
由于 CFG_CLASSIC 是在项目预处理器中定义的,因此 BT_LE 永远不会被定义。
已定义。
版本双模(经典+BLE)
设备的推荐方法是什么?使用 EdgeFast 蓝牙协议栈的应用程序?
是否应该移除 CFG_CLASSIC,或者是否有其他项目配置?
或者,也可以选择专为双模应用设计的版本选项?
是否有任何示例或应用笔记演示如何合并
handsfree_ag_cm7 与 wireless_uart_cm7 兼容?
亲爱的@Karthick_KL ,
您的整合方向是正确的。由于 HFP AG 是主要应用,`handsfree_ag_cm7` 应该保持为基础项目,并且应该将 BLE 无线 UART GATT 服务添加到该项目中。
`CFG_CLASSIC` 不应被移除,因为蓝牙经典 HFP AG 我的需要它。这个问题很可能是由`BT_features.h`中的示例项目特征选择逻辑引起的:
#ifndef CFG_CLASSIC
#define BT_LE
#endif
此逻辑使得 `BT_LE` 仅对非经典示例项目启用。它适用于单功能 SDK 示例,但对于自定义双模式应用程序来说不够用。
对于双模应用,该项目应保持启用经典/HFP AG 配置,并明确启用 BLE 主机/GATT 配置。换句话说,双模项目应该同时版本经典路径和 LE 路径。
一个可能的方向是引入项目级双模或 BLE 宏,例如 `CFG_BLE` 或 `CFG_DUAL_MODE`,并更新功能选择,以便即使定义了 `CFG_CLASSIC` 也可以启用 `BT_LE`。例如:
#如果已定义(CFG_BLE) || 已定义(CFG_DUAL_MODE) || 未定义(CFG_CLASSIC)
#define BT_LE
#endif
然后仅将无线 UART BLE 服务、广播数据、GATT 回调和 BLE 连接处理合并到 `handsfree_ag_cm7` 应用程序中。Bluetooth 协议栈初始化应保持单实例,HFP AG Classic 路径应保持不变。
我们目前还没有发现可以直接将 `handsfree_ag_cm7` 与 `wireless_uart_cm7` 合并的现成公共 SDK 示例或应用笔记。现有的公开示例分别演示了 `handsfree_ag` 和 `wireless_uart`,因此这应该被视为自定义的双模应用程序集成。
谢谢您!
此致,
卫东