のBluetooth低エネルギー接続パラメータ管理は私が(特に接続間隔)をいくつかの特定の接続パラメータを使用する必要があるBLE周辺機器を持っているアンドロイド6にアンドロイド6.0マシュマロBLE:接続パラメータ
を変更しているようですBLE仕様で許容される最小接続間隔(つまり7,5ms)を使用したいと考えています。
Android SDKでは、BLE GAP Central(スマートフォン)側から選択することはできません。GAP接続後に、GAP周辺機器にL2CAP Connection Parameter Update Request
を送信するのが適切な方法です。私が要求
パラメータは次のとおり
- CONN間隔分:7,5ms
- スレーブ待ち時間:0
- 監視タイムアウト:2000ミリ秒
これは私がテストしたすべてのAndroid搭載端末(4.3から5.x)で期待通りに機能しました:L2CAP Connection Parameter Update Request
を送信した後、私のデバイスはL2CAP Connection Parameter Update Response
と0x0000(受け入れられた)とそれに続くLE Connection Update Complete event
を受け取り、要求された接続パラメータが十分に考慮されていることがわかります。 Nexus 9のタブレットでまたは2つの異なるNexus 5のデバイスと今
、すべてのAndroid 6.0.1を持つ、私はL2CAP Connection Parameter Update Request
は常に(私は0x0001に(拒否)とL2CAP Connection Parameter Update Response
を受ける)拒否されたことがわかります。その後、私はLE Connection Update Complete event
を受け取り、要求された接続パラメータが考慮されていないことがわかります。
私はPeripheral側で2つの異なる実装(ST MicroelectronicsのBlueNRGと1つ、Nordic SemiconductorのnRF52と1つ)でこれを試してきましたが、どちらも全く同じ結果でした。
次に、より多くのテストを行った後、私はconn interval maxを変更して、別のパラメータセットを試しました。 CONN間隔最大= 18.75ms、と
- を更新要求が15.00に間隔を設定して承認されたCONN間隔最大= 17.50ms、更新要求で
- を18.75msするために設定された間隔で受け入れられた。ここで私が見つけたものですMS と
- CONN間隔最大= 15.00msは、更新要求はCONN間隔最大= 13.75msで
- を15.00msする間隔セットで受け入れられた、更新要求はCONN間隔最大と
- を11.25msするために設定された間隔で受け入れられました= 11.25ms、更新要求は11.25msに設定された間隔で受け入れられました
- 他のconn間隔の最大値が11.25ms未満の場合、私は拒否されます。
したがって、Android 6のBLEスタックが接続パラメータを処理する方法が明らかに変化していることがわかります。しかし、それを確認するための情報や書類はないようです。
私の所見から、許容される最小接続間隔は11になったという結論に達しました。以前のAndroidバージョンで7.5msではなく25ms(実際には私のニーズに合っています)。しかし
...私はその最小値は、現在のバッテリレベルで、たとえばによっては、ダイナミックではない場合、私はいくつかの他の制約/ルールを欠落しているかいないよということを確認したいと思い、経験的にそれを見つけた何だろうLEペリフェラルがどのようにこのトピックを扱うべきかを明確にするためには、Apple's Bluetooth Design Guidelines(§3.6参照)に相当するものを持つことが大切です。
同じ問題を抱えている人や、Googleからのより役立つ情報を知っている人はいますか?
私はbtm_ble_api.hにそれを追加したい、BTM_BLE_CONN_INT_MIN [0x0006]とBTM_BLE_CONN_INT_MAX [0x0C80]の値が変更されていません。したがって、この拒否はおそらくl2c_ble.cでは起きていません。 – GPS