콘텐츠로 이동

기술 사양

설계 원칙

이 애플리케이션은 Flutter를 사용하여 구축되었으며 Riverpod 상태 관리 프레임워크를 활용합니다. 장치 온보드 WiFi 모듈에서 노출되는 RESTful API를 통해 ELRS 하드웨어와 상호 작용하여 낮은 지연 시간 통신과 실시간 상태 동기화를 보장합니다.

시스템은 다음 HTTP 엔드포인트를 사용하여 하드웨어와 통신합니다:

메서드엔드포인트설명
GET/config현재 장치 구성을 JSON 형식으로 검색합니다.
POST/options.json수정 가능한 런타임 옵션(SSID, 비밀번호 등)을 업데이트합니다.
POST/config핵심 하드웨어 매개변수 및 PWM 매핑을 업데이트합니다.
POST/reboot변경 사항을 적용하기 위해 하드웨어 재설정을 트리거합니다.

RuntimeConfig 모델은 매개변수를 세 가지 주요 노드로 분리하는 ELRS 4.x 구조를 활용합니다:

  • 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

시스템은 이중 계층 영속성 전략을 구현합니다:

  • SharedPreferences: WiFi SSID 및 일반 앱 기본 설정과 같은 민감하지 않은 데이터에 대해 PersistenceService를 통해 활용됩니다.
  • FlutterSecureStorage: 바인딩 문구 및 WiFi 비밀번호를 포함한 민감한 데이터에 사용되며, OS 수준에서 암호화를 보장합니다.