#!/usr/bin/env bash # 编译装甲板固件(ESP32-C3),凭据与队伍号来自 .env。 # # ARMOR_TEAM=1 scripts/build_armor.sh # 队伍二(蓝) # scripts/build_armor.sh # 队伍一(红,默认) # # ESP-IDF 的位置来自 armor/.cargo/config.toml(IDF_PATH / ESP_IDF_TOOLS_INSTALL_DIR), # 所以这里不需要先 activate ESP-IDF。 set -euo pipefail cd "$(dirname "$0")/.." if [ -f .env ]; then set -a # shellcheck disable=SC1091 . ./.env set +a fi : "${WIFI_SSID:?set WIFI_SSID in .env (or export it) before building}" export WIFI_PASS="${WIFI_PASS:-}" # 队伍一(红)是默认值;队伍号在固件里决定灯色,也在上报里决定裁判端算哪一边。 export ARMOR_TEAM="${ARMOR_TEAM:-0}" # 受击阈值(原始 12 bit ADC)。看 status 行里的 peak[...] 来定:底噪要明显低于它, # 正常敲击要明显高于它。不写就是参考实现的 2000。 export ARMOR_THRESHOLD="${ARMOR_THRESHOLD:-2000}" case "$ARMOR_TEAM" in 0 | 1) ;; *) echo "ARMOR_TEAM must be 0 or 1, got '$ARMOR_TEAM'" >&2 exit 1 ;; esac case "$ARMOR_THRESHOLD" in '' | *[!0-9]*) echo "ARMOR_THRESHOLD must be a non-negative integer, got '$ARMOR_THRESHOLD'" >&2 exit 1 ;; esac echo "==> building armor firmware for esp32c3 (team $ARMOR_TEAM, threshold $ARMOR_THRESHOLD)" cd armor cargo build --release --bin armor "$@" echo echo "elf: armor/target/riscv32imc-esp-espidf/release/armor" echo "next: scripts/flash_armor.sh"