#!/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" ;; subserver-ui) SKETCH_DIR="${ROOT_DIR}/shine_subserver_ui" ;; text-test) SKETCH_DIR="${ROOT_DIR}/text_render_test" ;; gfx-text-test) SKETCH_DIR="${ROOT_DIR}/test_sketches/gfx_text_render_test" ;; gfx-layout-test) SKETCH_DIR="${ROOT_DIR}/test_sketches/gfx_button_layout_test" ;; lvgl-basic-test) SKETCH_DIR="${ROOT_DIR}/test_sketches/lvgl_basic_test" ;; lvgl-interaction-test) SKETCH_DIR="${ROOT_DIR}/test_sketches/lvgl_interaction_test" ;; lvgl-touch-debug-test) SKETCH_DIR="${ROOT_DIR}/test_sketches/lvgl_touch_debug_test" ;; lvgl-official-based-test) SKETCH_DIR="${ROOT_DIR}/test_sketches/lvgl_official_based_test" ;; lvgl-subserver-touch-test) SKETCH_DIR="${ROOT_DIR}/test_sketches/lvgl_subserver_touch_test" ;; lvgl-russian-font-test) SKETCH_DIR="${ROOT_DIR}/test_sketches/lvgl_russian_font_test" ;; lvgl-nav-minimal-test) SKETCH_DIR="${ROOT_DIR}/test_sketches/lvgl_nav_minimal_test" ;; *) echo "Unknown mode: ${MODE}" >&2 echo "Use one of: hello, widgets, audio, simple, argon2, subserver-ui, text-test, gfx-text-test, gfx-layout-test, lvgl-basic-test, lvgl-interaction-test, lvgl-touch-debug-test, lvgl-official-based-test, lvgl-subserver-touch-test, lvgl-russian-font-test, lvgl-nav-minimal-test" >&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."