Lewati ke konten

Spesifikasi Teknis

Prinsip Desain

Aplikasi ini dibangun menggunakan Flutter dan memanfaatkan kerangka kerja manajemen status Riverpod. Ini berinteraksi dengan perangkat keras ELRS melalui RESTful API yang diekspos oleh modul WiFi bawaan perangkat, memastikan komunikasi latensi rendah dan sinkronisasi status real-time.

Sistem berkomunikasi dengan perangkat keras menggunakan titik akhir HTTP berikut:

MetodeTitik AkhirDeskripsi
GET/configMengambil konfigurasi perangkat saat ini dalam format JSON.
POST/options.jsonMemperbarui opsi runtime yang dapat dimodifikasi (SSID, Kata Sandi, dll.).
POST/configMemperbarui parameter perangkat keras inti dan pemetaan PWM.
POST/rebootMemicu reset perangkat keras untuk menerapkan perubahan.

Model RuntimeConfig memanfaatkan struktur ELRS 4.x, yang memisahkan parameter menjadi tiga node utama:

  • settings: Pengidentifikasi perangkat keras dan string versi yang hanya dapat dibaca.
  • options: Preferensi pengguna dan kredensial jaringan yang dapat dimodifikasi.
  • config: Konfigurasi perangkat keras tingkat rendah (Protokol, Larik PWM).

Contoh struktur 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}
]
}
}

Sistem menggunakan arsitektur reaktif:

  • ConfigViewModel: Mengelola status koneksi langsung, logika heartbeat, dan penemuan IP.
  • DeviceEditorViewModel: Menampung status draf konfigurasi perangkat, memungkinkan pengeditan multi-langkah dengan logika “simpan/batal” akhir.
  • FlashingController: Mengatur unduhan firmware, patching biner lokal, dan proses unggah XH-over-HTTP.

Tabel berikut mendefinisikan pemetaan antara pengidentifikasi integer yang digunakan dalam API dan padanan yang mudah dibaca manusia.

IDLabelDeskripsi
0AU915Australia/Selandia Baru 915MHz
1FCC915Amerika Utara 915MHz
2EU868Eropa 868MHz
3IN866India 866MHz
4AU433Australia 433MHz
5EU433Eropa 433MHz
6US433Amerika Utara 433MHz
7US433-WideAmerika Utara Lebar 433MHz

Menentukan bagaimana frasa pengikatan disimpan di perangkat.

  • 0: Persisten: Disimpan ke memori flash (standar).
  • 1: Volatil: Dihapus saat siklus daya.
  • 2: Dapat Dikembalikan: Digunakan untuk peralatan pinjaman.
  • 3: Dikelola: Digunakan di lingkungan armada multi-pilot.

Sistem mengimplementasikan strategi persistensi dua lapis:

  • SharedPreferences: Dimanfaatkan melalui PersistenceService untuk data non-sensitif seperti WiFi SSID dan preferensi aplikasi umum.
  • FlutterSecureStorage: Digunakan untuk data sensitif, termasuk Frasa Pengikatan dan Kata Sandi WiFi, memastikan enkripsi pada tingkat OS.