技術仕様
アーキテクチャ概要
Section titled “アーキテクチャ概要”このアプリケーションはFlutterを使用して構築されており、Riverpodステート管理フレームワークを活用しています。デバイスのオンボードWiFiモジュールによって公開されるRESTful APIを介してELRSハードウェアと対話し、低遅延の通信とリアルタイムの状態同期を保証します。
APIエンドポイント
Section titled “APIエンドポイント”システムは以下のHTTPエンドポイントを使用してハードウェアと通信します。
| Method | Endpoint | Description |
|---|---|---|
GET | /config | 現在のデバイス設定をJSON形式で取得します。 |
POST | /options.json | 変更可能なランタイムオプション(WiFi SSID、Passwordなど)を更新します。 |
POST | /config | コアハードウェアパラメータとPWMマッピングを更新します。 |
POST | /reboot | 変更を適用するためにハードウェアリセットをトリガーします。 |
JSONスキーマ
Section titled “JSONスキーマ”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} ] }}ステート管理
Section titled “ステート管理”システムはリアクティブなアーキテクチャを採用しています。
ConfigViewModel: ライブ接続状態、ハートビートロジック、およびIPディスカバリを管理します。DeviceEditorViewModel: デバイス構成のドラフト状態を保持し、最終的な「保存/キャンセル」ロジックによる多段階編集を可能にします。FlashingController: ファームウェアのダウンロード、ローカルバイナリパッチ、およびXH-over-HTTPアップロードプロセスを編成します。
マッピング層
Section titled “マッピング層”以下の表は、APIで使用される��数識別子と人間が読める対応する値との間のマッピングを定義します。
規制ドメイン
Section titled “規制ドメイン”| ID | Label | Description |
|---|---|---|
| 0 | AU915 | オーストラリア/ニュージーランド 915MHz |
| 1 | FCC915 | 北米 915MHz |
| 2 | EU868 | ヨーロッパ 868MHz |
| 3 | IN866 | インド 866MHz |
| 4 | AU433 | オーストラリア 433MHz |
| 5 | EU433 | ヨーロッパ 433MHz |
| 6 | US433 | 北米 433MHz |
| 7 | US433-Wide | 北米ワイド 433MHz |
高度なマッピング
Section titled “高度なマッピング”VBind (Binding Storage)
Section titled “VBind (Binding Storage)”バインディングフレーズがデバイスにどのように保存されるかを決定します。
- 0: Persistent: フラッシュメモリに保存されます(標準)。
- 1: Volatile: 電源を切るとクリアされます。
- 2: Returnable: 貸与品に使用されます。
- 3: Administered: 複数パイロットのフリート環境で使用されます。
システムは2層の永続化戦略を実装しています。
SharedPreferences:PersistenceServiceを介して、WiFi SSIDsや一般的なアプリ設定などの機密性の低いデータに使用されます。FlutterSecureStorage: Binding PhrasesやWiFi Passwordsなどの機密データに使用され、OSレベルでの暗号化を保証します。