BrilloはGoogleが開発しているIOT用のシステム
BrilloのWi-FiのHALはAndroidとは異なるみたいなので、どんな感じかを調べてみました。
Brilloのバージョンは調査時点の最新版 brillo-m10-dev です。
調べてみたら、ドライバのロードだけあまり中身がなかったけど、公開しときます。
Brilloでのwifi設定はshillを使っているみたいです。
ソースコード
- https://android.googlesource.com/device/generic/brillo/+/master/wifi_driver_hal/
- https://android.googlesource.com/device/generic/brillo/+/master/wifi_driver_hal/include/hardware_brillo/wifi_driver_hal.h
- https://android.googlesource.com/device/generic/brillo/+/master/wifi_driver_hal/src/wifi_init.c
README
README によると以下の3つの機能を持ちます
- ドライバの初期化、ブート直後はデバイスが利用できないので、ブート時にこのメソッドを使って初期化する。
- APモードとstationモードを選択する。これはドライバ初期化直後時に呼ばれることだけを保証する。
- 上位レイヤ用のWi-Fiハードウェアのデバイスネームを返すメソッド
Wi-Fi Directとかはサポートしないみたいなので、Brilloは一時的なネット接続等は考えていないようです。
個人的には、Androidと一時的なネット接続をするならWi-Fi Directは便利だと思ってるけど
API
- wifi_driver_open(
const hw_module_t* module,
wifi_driver_device_t** device) - wifi_driver_close(wifi_driver_device_t* device)
- driver->wifi_driver_initialize()
- driver->wifi_driver_set_mode(wifi_driver_mode mode,
char* wifi_device_name_buf,
size_t wifi_device_name_size)
使用例
- HALの使用例はwifi_init.cに含まれます。
- wifi_init ap でAPとしてドライバを起動する
- wifi_init client としてドライバを起動する
実装例
wifi_driver_set_mode で検索するといくつか実装例がありました
- Raspberry Pi 3のBCM43448
- https://github.com/brobwind/brillo-m10-dev-rpi3b/blob/master/bsp/wifi/bcm43438_hal.cpp
- Marvell SD8xxx
- https://android.googlesource.com/platform/hardware/bsp/marvell/+/brillo-m10-dev/peripheral/wifi/sd8xxx/driver/wifi_driver_hal_sd8xxx.c
- Qualcomm Atheross WCN3620
- https://android.googlesource.com/platform/hardware/bsp/qcom/+/brillo-m10-dev/peripheral/wifi/wcn3620/wifi_driver_hal_qcwcn.cpp
- AP6212
- https://android.googlesource.com/platform/hardware/bsp/rockchip/+/brillo-m10-dev/peripheral/wifi/ap6212/wifi_driver_hal_ap6212.cpp