ペアリングして、waitForEvents でスリープしている時間の電流値、つまりアプリケーション的にはアイドル時の各OSごとの消費電流を測った。
というのも基本的に OSX でデバッグしていて殆ど他のOSで検証してなかったからです。
- OSX: 0.0054mA
- Windows 10: 0.8mA
- Android 5系: 0.185mA
なんでこんなに違うんだろうという結果でした。Windows で消費電流が多いのはうすうす気付いてたんですが、あまりにも多過ぎる。
OSドライバが Input Report を READ しまくってる? Notification による実装になっていないとか? よくわからない。slave latency を鬼のように増やしても消費に影響がほとんどないので、強制的に起こすようなパケットがめっちゃ送られていそう。さっぱりわからない。
コネクションまわりのパラメータは実装上、
- Max Connection Interval
- Min Connection Interval
- Slave Latency
- Connection Supervision Timeout
ぐらいしかなく、どれを変えても変化がない。PnP ID によって専用ドライバが呼ばれるとかがあるのだろうか? と思ったけど、よくわからない。
USB ベースのHIDで実装するとそういうことになってる可能性もないことはない気がする。しかし Microsoft自身も BLE キーボードは発売しているし、こんなことになるはずはないと思う。
BLE のパケットスニファができればもうすこし原因に近付けるかもしれないけど、流れてるパケットがわかっても対処方法が思いつくとは限らないのでやる気があまり沸いてない。というか既に割と飽きてるので OSX で問題ない挙動のために頑張るモチベーションがない……
BLE + HOGP でまともに動いているデバイスの service / characteristics / descriptor のダンプなどをお持ちのかたはお知らせください……
現状の BLE 接続の市販キーボード
市販のBluetoothキーボードの大半は 3.0 です。BLE にしてもそんな意味ないですしね。
- トップ
-
tech
-
BLE Nano (nRF51) HOGP で接続中のアイドル電流