チームの皆さん、こんにちは。
私は以下を使用しています:
MCU:i.MX RT1176 EVKB WiFi/Bluetoothモジュール:村田IW416
BLEのwireless_uart_cm7サービスを
アプリケーションhandsfree_ag_cm7、アプリケーションが両方をサポートするようにします:
- Bluetooth Classic (HFP AG)
- BLE GATT(ワイヤレスUART)
BT_features.h では、私は以下の点に気づきました。
#ifndef CFG_CLASSIC #define BT_LE #endif
CFG_CLASSICはプロジェクトプリプロセッサで定義されているため、BT_LEは決して
定義済み。
デュアルモード(クラシック+BLE)を作るのに推奨される方法は何ですか?
EdgeFast Bluetoothスタックを使っているアプリケーションについて?
CFG_CLASSICを削除すべきでしょうか、それとも別のプロジェクト構成があるのでしょうか
それともデュアルモードアプリケーション向けのビルドオプションですか?
マージの方法を示す例やアプリケーションノートはありますか?
wireless_uart_cm7 handsfree_ag_cm7?
統合の方向性は正しいです。HFP AGが主なアプリケーションであるため、「handsfree_ag_cm7」はベースプロジェクトとして残され、BLEワイヤレスUART GATTサービスもこのプロジェクトに追加されるべきです。
`CFG_CLASSIC`はBluetooth Classic HFP AGプロファイルで必要とされるため、削除しないでください。この問題は、おそらくサンプルプロジェクトの機能選択ロジック(`BT_features.h`内)に起因していると考えられます。
#ifndef CFG_CLASSIC
#define BT_LE
#endif
このロジックにより、`BT_LE`は非クラシックのサンプルプロジェクトでのみ有効になります。単一機能SDKの例には適していますが、カスタムデュアルモードアプリケーションには十分ではありません。
デュアルモードアプリケーションの場合、プロジェクトはClassic/HFP AG構成を有効にし、BLEホスト/GATT構成も明示的に有効化すべきです。つまり、デュアルモードプロジェクトでは、クラシックパスとLEパスの両方を構築する必要があります。
一つの方向性としては、プロジェクトレベルのデュアルモードやBLEマクロ(例えば「CFG_BLE」や「CFG_DUAL_MODE」)を導入し、機能選択を更新して「CFG_CLASSIC」が定義されていても「BT_LE」を有効化できるようにすることです。例えば:
#if defined(CFG_BLE) || defined(CFG_DUAL_MODE) || !defined(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」を別々に示しているため、これはカスタムデュアルモードアプリケーション統合として扱うべきです。
よろしくお願いします!
よろしくお願いいたします。
維東