小さなデバイスは画面だけではありません。無線、GPS、トラックボール、小さなキーボードを積んだものもたくさんあり、ゲームやアプリはそれらをタッチと同じように使えるべきです。このリリースでは、パッケージを 1 つ追加し、さらに 2 つを大きく前進させました。
deki-lora
deki-lora は、Semtech SX1262 を通じて LoRa パケットを送受信します。現行の LoRa モジュールやボードの多くに載っている無線チップです。コードは無線を取得して Send() を呼び、届いたものを信号強度と SNR と一緒に Receive() から受け取ります。無線は、送信していないときは常に受信しています。
代わりに引き受けてくれることが 2 つあります。
- バスの共有。 多くのボードでは、無線はディスプレイと同じ SPI バスにつながっています。割り込み線が配線されていれば、ドライバーは無線に報告することがあるときだけバスを使うので、画面に向かっているフレームが待たされることはありません。
- デューティサイクル。 ヨーロッパでは、868 MHz で送信してよいのは時間の 1% までです。ドライバーは各パケットの送信時間(time on air)からこれを計算し、違反してしまう送信は拒否して、どれだけ待てばよいかを返します。ほかの地域では、それぞれの周波数と上限を設定します。
デモには LoRa の画面があります。1 台で Ping を押すと、デモを動かしているほかのすべてのデバイスに、そのメッセージが信号強度とともに表示されます。
deki-gps

deki-gps は NMEA を話す受信機ならどれでも読み取れ、今回はより多くの情報を読むようになりました。位置と時刻、高度、そして見えている衛星と使っている衛星の数です。GPS、GLONASS、Galileo、BeiDou のどれでも同じように扱います。
通信速度を 0 に設定すると、正しい速度を自分で見つけます。よく使われるレートを順に試し、チェックサムが正しいセンテンスが届くまで続けます。これは、同じボードでも複数の種類のモジュールが載って出荷されている場合に重要です。モジュールによって通信速度が同じとは限らないからです。また、屋内ではいつまでも測位できないこともあるので、どこまで進んだかを報告します。受信したバイト数、有効なセンテンスの数、衛星の数です。「測位できない」の原因が謎ではなくなります。
トラックボールとキーボード

deki-input は、トラックボールをきちんとしたポインターとして扱えるようになりました。ThinkPad の TrackPoint のような感触になるよう調整してあります。ゆっくり転がせば精密に動き、勢いよく回せば画面を横切り、カーソルはカクカク進むのではなく、滑るように止まります。クリックはマウスのクリックとして扱われるので、タッチ向けに作った画面もそのまま使えます。
I2C キーボードは普通のキー入力として届くので、ゲームは携帯機でも PC でも同じように矢印キーを読めます。キーボードにバックライトがあれば、ゲームから設定できます。
手持ちのハードウェアに合わせたボタン
デモはまったく違うハードウェアの上で動くので、メニューはデバイスにないものをグレーアウトします。PC では LoRa とトラックボールの画面が無効になり、両方を持つ携帯機ではすべてが使えます。プロジェクトでも、ボードが立ち上げたプロバイダーを問い合わせれば、同じことができます。
これらはすべて 0.18.2 のパッケージに入っていて、LilyGO のボードパッケージを使えば、T-Deck Plus ですぐに動きます。
