技術架構
兩個 Rust 執行環境,兩種部署限制
評分服務使用可增量擴充嘅 hcr.v1 契約同權威重播。目前 no_std ESP8266 閘道運行有界 HTTP/JSON 伺服 API;MQTT 同 CBOR 仍係規劃中嘅裝置路徑。
Rust · MQTT over WebSocket · HTTP binding
Service
喺伺服器端重播程式、運行適性題庫,並負責回合截止時間同排名。
hcr-backend
hcr.v1 · JSON and CBOR
協定
每則訊息都用一個封套,並透過 ULID 關聯。次要版本只可以新增欄位;接收端會略過認唔到嘅內容,唔會因此失敗。
hcr-backend/schema
Rust (no_std) · ESP8266 · Arduino C++ as a hardware library
硬件
實體五伺服機械臂由 Rust 管理啟動策略、路由、HTTP/JSON 同伺服狀態;C++ 只限喺位元組型 C ABI 之後。閘道暫未實作 MQTT。
hcr-fw
開源
HCR 背後嘅 Hotaru Rust 生態系
HCR 喺 crates.io 發布後端服務 crate,並用 Hotaru 建構服務同嵌入式協定層。你可以瀏覽呢個 crate、框架官網、核心程式庫,同埋獨立維護嘅 MQTT 實作。
HCR crate(crates.io)
hcr
已發布嘅 HCR 後端服務核心,提供目錄存取、權威重播、適性工作階段,同埋可選用嘅 Hotaru HTTP 整合。
crates.io/crates/hcr框架官網
hotaru.rs
Hotaru 嘅官方多語介紹。佢係一個小型、協定導向嘅 Rust 框架,核心已為 no_std 做好準備。
hotaru.rs/GitHub 上嘅核心同 HTTP
Hotaru
Hotaru 生態系採用嘅協定中立核心、執行環境轉接器、HTTP 堆疊、路由同端點工具。
github.com/Field-of-Dream-Studio/hotaruGitHub 上嘅 MQTT 同 Broker
Hotaru MQTT
獨立嘅 MQTT 客戶端同 Broker 實作。HCR 目前用 HTTP;MQTT 仍係規劃中嘅裝置同應用程式傳輸方式。
github.com/fds-pmine/hotaru_mqtt設計
Rust 負責策略;C++ 只係硬件程式庫
依賴關係只有一個方向。只有一個 crate 宣告外部硬件函式,邊界傳遞嘅係位元組,唔係 Arduino 字串、C++ 物件、路由、JSON 或者應用程式狀態。
Rust 負責
- 啟動策略同協作式執行器
- Hotaru 路由同通訊協定
- HTTP 解析同回應
- 伺服驗證同狀態
C++ 負責
- 時鐘、中斷屏蔽、看門狗、重新啟動、堆、亂數、串口
- Wi-Fi 接入點同終端模式、原始 TCP 同 UDP 控制代碼
- 強制入口 DNS 同 SPIFFS 控制代碼
- GPIO、PWM、伺服脈衝寫入、原始 OTA 寫入
Rust
Rust 對 HCR 有咩意義
HCR 喺需要確定性重播、明確協定類型、受控並行同精簡嵌入式邊界嘅部分用 Rust。呢個係具體架構選擇,唔代表 HCR 每一部分都由 Rust 編寫。
瀏覽器介面以 React 同 TypeScript 建構。HCR 係獨立項目,同 Rust Project 或 Rust Foundation 冇關聯,亦未獲佢哋背書。
硬件