コンテンツにスキップ

技術仕様

設計原則

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

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

MethodEndpointDescription
GET/config現在のデバイス設定をJSON形式で取得します。
POST/options.json変更可能なランタイムオプション(WiFi SSID、Passwordなど)を更新します。
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ディスカバリを管理します。
  • DeviceEditorViewModel: デバイス構成のドラフト状態を保持し、最終的な「保存/キャンセル」ロジックによる多段階編集を可能にします。
  • FlashingController: ファームウェアのダウンロード、ローカルバイナリパッチ、およびXH-over-HTTPアップロードプロセスを編成します。

以下の表は、APIで使用される��数識別子と人間が読める対応する値との間のマッピングを定義します。

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

バインディングフレーズがデバイスにどのように保存されるかを決定します。

  • 0: Persistent: フラッシュメモリに保存されます(標準)。
  • 1: Volatile: 電源を切るとクリアされます。
  • 2: Returnable: 貸与品に使用されます。
  • 3: Administered: 複数パイロットのフリート環境で使用されます。

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

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