콘텐츠로 이동

기술 사양

설계 원칙

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

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

MethodEndpointDescription
GET/config현재 장치 구성을 JSON 형식으로 검색합니다.
POST/options.json수정 가능한 런타임 옵션(SSID, Password 등)을 업데이트합니다.
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 검색을 관리합니다.
  • 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: 다중 파일럿 플릿 환경에서 사용됨.

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

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