Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@kaz399

2020年 Rust で使える Bluetooth Low Energy ライブラリはどうなってるの (Windows10)

RustからBLEを扱うためのライブラリ(Windows10用)を調べています。

Windows10向けBLE実装の現状

winrt-rs

昨年末に調べた時はwinrt-rust v0.6一択の状況でした。今年に入ってこのrust向けwinrtの実装に変化がありました。
crates.ioのwinrtを見ると、普通にv0.7系がリリースされているように見えますが、実はv0.7から開発元が変わっていて

という状況になっています。

そしてMicrosoftが実装したv0.7はv0.6と互換性がなく、そのまま置き換えることができません。残念です。

BLEまわりを少しだけ触ってみた感じですが、v0.6からv0.7になり

  • winrt側のAPIがComPtrに包まれなくなった(そのまま出てくる)
  • BluetoothLEDevice2とかBluetoothLEDevice3などを生成しなくて各種APIが使えるようになった(BluetoothLEDeviceからそのまま呼び出せる)
  • イベントハンドラの引数型が変更になった

注:winrt-rsでのBluetoothLEDevice2や3については、以前に書いた記事にまとめてあります。

v0.6時代には実質的に使えなかったAPI(APIの引数に必要な型をRust側で生成する方法が存在しないもの)がどうなっているのかは未調査です。追って調査したいと思っています。

btleplug

そして今年はクロスプラットフォームを謳うBLEライブラリ、btleplugが登場しました。

このbtleplugは、Windows, MacOS, Linuxに対応しています。
使用できる機能は現段階では各OSで違いますが、同期のRead/Write程度であればどのOSでも動くようです。

Windows向けの下回りはwinrt-rs v0.6でした。
とりあえずWindowsの下回りをwinrt-rs v0.7に対応させるプルリクを投げてみました。 マージされるかどうかはよくわかりません。 マージされましたバンザイ。
上のwinrt-rsの所では詳しく書きませんでしたが、winrt-rs v0.6とv0.7のBLEまわりの違いについて誰かの何かの参考になれば嬉しいです。

APIはRumbleに合わせていて、そのAPI体系を他のプラットフォーム上でも実現する形になっています。
元々のRumbleのAPI由来なのですが、Notifyハンドラあたりの扱いがイマイチよくわからない作りになっていて使いにくい雰囲気を受けました。

そのうち発展して使いやすくなっていくことを期待していたのですが、残念ながらbtleplugの開発者が保守にあまり興味を持っていない様子なので、なんだか先行き不透明です。

(いきなり)まとめ

2020年12月現在、Windows上でRustを使ってBLEを扱える簡単便利なライブラリは未だ存在しないようです。
クロスプラットフォームを考えないのであれば、winrt-rs経由で使うのが一番素直なのかもしれません。

今後の充実に期待したいです。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kaz399

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?