ユーザ用ツール

サイト用ツール


ハイハイスクールアドベンチャー_m5stack_m5cardputer版

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ハイハイスクールアドベンチャー_m5stack_m5cardputer版 [2025/04/25 01:28] – [BTキーボードをつなごう] arakiハイハイスクールアドベンチャー_m5stack_m5cardputer版 [2025/04/25 01:56] (現在) – [BTキーボードをつなごう] araki
行 47: 行 47:
 ソースは、GitHubから取得して、Platform IOのプロジェクトとしてビルドする。 ソースは、GitHubから取得して、Platform IOのプロジェクトとしてビルドする。
  
-<code>+<code bash>
 $ git clone https://github.com/wildtree/hhsadv.git $ git clone https://github.com/wildtree/hhsadv.git
 </code> </code>
行 86: 行 86:
 Core/Core2なら 用意されているSPIを使えば動くが、Cardputerはそこもまとめて面倒をみないといけない。 Core/Core2なら 用意されているSPIを使えば動くが、Cardputerはそこもまとめて面倒をみないといけない。
  
-<code>+<code cpp>
     cfg.clear_display = true;     cfg.clear_display = true;
     M5.begin(cfg);     M5.begin(cfg);
行 119: 行 119:
 CoreはWireでINTR=5だが、Core2はWire1でINTR=33だ。 CoreはWireでINTR=5だが、Core2はWire1でINTR=33だ。
  
-<code>+<code cpp>
 class M5StackKeyBoard : public KeyBoard class M5StackKeyBoard : public KeyBoard
 { {
行 267: 行 267:
 キーボードからの通知が来るたびに、これが呼び出される。 キーボードからの通知が来るたびに、これが呼び出される。
 Handle == 41は modifiers + 10文字分のキーバッファだが Handle == 29は modifiers + res + 6文字分のキーバッファとなっている。 Handle == 41は modifiers + 10文字分のキーバッファだが Handle == 29は modifiers + res + 6文字分のキーバッファとなっている。
-そもそも Handle で見分けるのが正しいのかさえよくわかっていないがとにかく試して動いたキーボードはこのどちらかだった。+<del>そもそも Handle で見分けるのが正しいのかさえよくわかっていないがとにかく試して動いたキーボードはこのどちらかだった。</del> 
 +実はキーボードからのキー入力の通知についてはハンドルで見分けることができる。 
 + 
 +btstack でBLEキーボードをつないだ時に知ったのだけれど、Notification で渡されるパケットには実は二種類のハンドルが入っている。 
 +一つが attribute handle で、もう一つが value handleだ。 
 + 
 +私が調べたところ、attribute handle == 0x0040 のものがキーボードからのキー入力の通知になる。 
 +なので、btstack ではそのようにしてふるっているし、NimBLEでもそうするべきだろうと思ったのだが、NimBLERemoteCharacteristic クラスは、value_handleしか取得できない。 
 + 
 +value_handleの方はキーボードによってまちまちの値を返すので、使い物にならない。 
 +  
 +どうにかして attribute handle を取り出せないものかと NimBLEのコードを掘っていったら、あろうことか、attribute_handleの方は中で捨ててた。 
 + 
 +よって、NimBLEでは Notification Event Handlerの中でハンドルで処理を分けるやり方はできない、というのが結論である
  
 動作は単純で、前回渡されたデータと、今回渡ってきたデータとでキーバッファ部分を比べて、新しいのがあったらそれが今回入力されたキーだとみなして、keybufに積んでいく。 動作は単純で、前回渡されたデータと、今回渡ってきたデータとでキーバッファ部分を比べて、新しいのがあったらそれが今回入力されたキーだとみなして、keybufに積んでいく。
行 595: 行 608:
 その場合自力でビルドして置き換えておく。 その場合自力でビルドして置き換えておく。
  
-<code>+<code bash>
 $ git clone --recursive https://github.com/igrr/mkspiffs.git $ git clone --recursive https://github.com/igrr/mkspiffs.git
 $ cd mkspiffs $ cd mkspiffs
ハイハイスクールアドベンチャー_m5stack_m5cardputer版.1745544508.txt.gz · 最終更新: 2025/04/25 01:28 by araki