技術架構
兩個 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 無關聯,亦未獲其背書。
硬體