概要

またまたEspBleの機能紹介です。長い記事を書くのは大変なので機能別に分離した記事にしています。さてBluetooth Classicでだけ使える機能として古いゲーム機用のゲームパッド接続があると思います。しかしながら最近のArduinoでは無効化されていて使えません。そこでがんばって使えるようにしてみました。
過去からの経緯
大昔はBluetooth ClassicでClassic HIDに接続することができました。なのでPS3などのデュアルショックをESP32から制御する事例などがあったと思います。しかしながらArduino-ESP32 2.0.0(2021年)ぐらいからClassic HIDが無効化されるようになりました。

このへんの話題なのですが、ビルドエラーになったので除外されそのまま現在までその状況のままです。ただし、これはArduinoだけの問題で、ESP-IDFでは利用が可能でした。つまりBluedroid側の問題ではなく、Arduino Coreへの導入方法が問題だったみたいです。
今回Dual Hostに対応するときに自前ビルドができますのでClassic HIDを有効化して内部に組み込んでいます。そしてHIDの層はBLEとClassicで接続後はまったく同じAPIで操作が可能になっているはずです。

ちなみにEspBleが登場する前まではArduino Coreを独自ビルドしたBluepad32などを使う必要がありました。ただし2年前にリリースが止まっているのでおすすめはしません。
まとめ
なるべくクリーンなArduino CoreでBLEとClassicを共存できるようになりましたので、共通API化で便利に使えるようになったはずです。
ただし、手元にはClassic HIDコントローラーがないので実機では試せていません。試せて動いたらおしえてください。ただし、テストではClassic HID同士で接続できることまでは確認しています。

コメント