#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BOARD_DIR="$(cd "${ROOT_DIR}/.." && pwd)" DEMO_BASE="${BOARD_DIR}/official-demo/examples/Arduino-v3.3.5" MODE="${1:-widgets}" PORT="${PORT:-/dev/ttyACM0}" FQBN="${FQBN:-esp32:esp32:esp32s3:USBMode=hwcdc,CDCOnBoot=cdc,UploadSpeed=921600,CPUFreq=240,FlashMode=dio,FlashSize=16M,PartitionScheme=app3M_fat9M_16MB,PSRAM=opi}" BUILD_DIR="${BUILD_DIR:-${ROOT_DIR}/.arduino-build/build-${MODE}}" OUT_DIR="${OUT_DIR:-${ROOT_DIR}/.arduino-build/out-${MODE}}" case "${MODE}" in hello) SKETCH_DIR="${DEMO_BASE}/examples/01_HelloWorld" ;; widgets) SKETCH_DIR="${DEMO_BASE}/examples/05_LVGL_Widgets" ;; audio) SKETCH_DIR="${DEMO_BASE}/examples/07_ES8311" ;; simple) SKETCH_DIR="${ROOT_DIR}/simple_av_test" ;; argon2) SKETCH_DIR="${ROOT_DIR}/argon2_sd_test" ;; *) echo "Unknown mode: ${MODE}" >&2 echo "Use one of: hello, widgets, audio, simple, argon2" >&2 exit 2 ;; esac echo "== Mode: ${MODE}" echo "== Sketch: ${SKETCH_DIR}" echo "== Port: ${PORT}" echo "== FQBN: ${FQBN}" mkdir -p "${BUILD_DIR}" "${OUT_DIR}" arduino-cli compile \ --clean \ --fqbn "${FQBN}" \ --build-path "${BUILD_DIR}" \ --output-dir "${OUT_DIR}" \ --library "${DEMO_BASE}/libraries/GFX_Library_for_Arduino" \ --library "${DEMO_BASE}/libraries/SensorLib" \ --library "${DEMO_BASE}/libraries/XPowersLib" \ --library "${DEMO_BASE}/libraries/lvgl" \ --library "${DEMO_BASE}/libraries/Mylibrary" \ "${SKETCH_DIR}" arduino-cli upload \ -p "${PORT}" \ --fqbn "${FQBN}" \ --input-dir "${OUT_DIR}" \ "${SKETCH_DIR}" echo echo "== Done."