ข้ามไปยังเนื้อหา

สถาปัตยกรรมทางเทคนิค

ELRS Mobile ไม่ใช่แค่ web-wrapper; แต่เป็นการใช้งาน Dart แบบเนทีฟของไปป์ไลน์การคอมไพล์และการกำหนดค่า ExpressLRS

การประกอบเฟิร์มแวร์แบบรวมศูนย์

แทนที่จะพึ่งพาคอมไพเลอร์คลาวด์ระยะไกล แอปจะสร้างไบนารีบนอุปกรณ์ของคุณแบบไดนามิกในเครื่อง เมื่อทำการแฟลชเป้าหมาย ESP32/ESP8285 FirmwareAssembler จะดำเนินการลำดับการแก้ไขระดับบิตที่แม่นยำดังนี้:

1

แยกเฟิร์มแวร์ทั่วไปพื้นฐานออกจากไฟล์เก็บถาวร firmware.zip ที่ถูกแคชไว้

2

ตัดส่วนเสริมพื้นฐานโดยการค้นหาลายเซ็นไบต์วิเศษ 0xE9 ของ ESP

3

แยก Pinout เป้าหมายเฉพาะและการกำหนดค่ารันไทม์จาก hardware.json

4

Byte-pack Product Name (128b), Lua Name (16b), options.json (512b), และ hardware.json (2048b) ลงในสตรีมไบนารีโดยตรง

5

บีบอัด payload สุดท้ายเป็นสตรีม .gz หากแพลตฟอร์มเป้าหมายต้องการ (เช่น ESP8285 legacy)

แอปจัดการความแตกต่างที่ซับซ้อนระหว่างย่านความถี่ได้อย่างถูกต้อง สำหรับอุปกรณ์ 900MHz/Dual-Band แอปจะฉีดโดเมนที่คุณเลือก (เช่น FCC, EU868) เข้าไปใน JSON payload ที่คอมไพล์แล้ว สำหรับเป้าหมาย 2.4GHz มาตรฐาน แอปจะใช้ boolean flag เพื่อกำหนดเส้นทางกระบวนการแยกข้อมูลไปยังโฟลเดอร์เฟิร์มแวร์พื้นฐาน FCC/ มาตรฐาน หรือ LBT/ ของยุโรปโดยเงียบ ๆ ระหว่างการประกอบ

การแฟลชแบบออฟไลน์ทำได้ผ่านระบบแคชในเครื่องที่แข็งแกร่ง เมื่อผู้ใช้ดาวน์โหลดรุ่นผ่าน Firmware Manager, FirmwareCacheService จะดึง firmware.zip ทั่วไปและ hardware.zip เฉพาะอุปกรณ์โดยตรงจาก ExpressLRS Artifactory ไฟล์เก็บถาวรเหล่านี้จะถูกจัดการและจัดเก็บไว้ในเครื่องบนอุปกรณ์ ทำให้มั่นใจได้ว่าการประกอบและการแฟลชสามารถเกิดขึ้นได้ทันทีในพื้นที่ โดยไม่ต้องมีการเชื่อมต่ออินเทอร์เน็ตที่ใช้งานอยู่


การผูกเครือข่ายเนทีฟ

ระบบปฏิบัติการมือถือ (โดยเฉพาะ Android และ iOS) จะลดลำดับความสำคัญของการเชื่อมต่อ Wi-Fi ที่ไม่มีอินเทอร์เน็ต ทำให้ส่งทราฟฟิกผ่านเซลลูลาร์แทนโดยอัตโนมัติ ซึ่งจะป้องกันไม่ให้แอปมาตรฐานเข้าถึงฮาร์ดแวร์ ELRS ที่ 10.0.0.1

ELRS Mobile แก้ปัญหานี้ผ่าน NativeNetworkService เมื่อตรวจพบการเชื่อมต่อฮาร์ดแวร์ แอปจะเรียกใช้ MethodChannel เฉพาะแพลตฟอร์มเพื่อผูกกระบวนการ Flutter ทั้งหมดเข้ากับอินเทอร์เฟซ Wi-Fi ในระดับ OS kernel ซึ่งช่วยให้มั่นใจได้ว่าทราฟฟิก HTTP และ mDNS ทั้งหมดจะถูกกำหนดเส้นทางไปยังฮาร์ดแวร์ได้อย่างถูกต้อง โดยไม่คำนึงถึงสถานะเซลลูลาร์