コンテンツにスキップ

技術仕様

設計原則

このアプリケーションはFlutterを使用して構築されており、Riverpodステート管理フレームワークを活用しています。デバイスの内蔵WiFiモジュールによって公開されるRESTful APIを介してELRSハードウェアと連携し、低遅延の通信とリアルタイムの状態同期を実現します。

システムは以下のHTTPエンドポイントを使用してハードウェアと通信します:

メソッドエンドポイント説明
GET/config現在のデバイス構成をJSON形式で取得します。
POST/options.json変更可能なランタイムオプション(SSID、パスワードなど)を更新します。
POST/configコアハードウェアパラメーターとPWMマッピングを更新します。
POST/reboot変更を適用するためにハードウェアのリセットをトリガーします。

RuntimeConfigモデルは���ELRS 4.xの構造を活用しており、パラメーターを3つの主要なノードに分けています:

  • settings: 読み取り専用のハードウェア識別子とバージョン文字列。
  • options: 変更可能なユーザー設定とネットワーク認証情報。
  • config: 低レベルのハードウェア構成(Protocols、PWM Arrays)。

JSON構造の例:

{
"product_name": "Test RX",
"settings": {
"version": "1.0.0",
"module-type": "RX"
},
"options": {
"bindPhrase": "example",
"wifi-ssid": "SSID",
"domain": 1
},
"config": {
"serial-protocol": 0,
"pwm": [
{"channel": 0, "mode": 5}
]
}
}

システムはリアクティブアーキテクチャを採用しています:

  • ConfigViewModel: ライブ接続状態、ハートビートロジック、およびIPディスカバリを管理します。
  • FlashingController: ファームウェアのダウンロード、ローカルバイナリパッチ適用、およびXH-over-HTTPアップロードプロセスを編成します。

ElrsMappings.domains900は、APIで使用される900 MHz規制ドメインインデックスを人間が読めるラベルにマッピングします:

IDラベ���説明
0AU915オーストラリア/ニュージーランド 915MHz
1FCC915北米 915MHz
2EU868ヨーロッパ 868MHz
3IN866インド 866MHz
4AU433オーストラリア 433MHz
5EU433ヨーロッパ 433MHz
6US433北米 433MHz
7US433-Wide北米ワイド 433MHz

システムは2層の永続化戦略を実装しています:

  • SharedPreferences: WiFi SSIDや一般的なアプリ設定など、機密性の低いデータに対してPersistenceServiceを介して利用されます。
  • FlutterSecureStorage: Binding PhrasesやWiFi Passwordsを含む機密データに使用され、OSレベルでの暗号化を保証します。