The board arriving is a Waveshare RP2350-Plus (4MB, USB-C), which is now the default BOARD. Its pico-sdk header defines neither PICO_DEFAULT_LED_PIN nor PICO_DEFAULT_WS2812_PIN - it has no onboard indicator at all - so a bare board gives no sign of life. The status-LED support added for boards that do have one (zero, one, tiny, usb_a on GPIO16; eth on GPIO25) is kept and compiles out here. That makes feedback on the strip itself the useful path, and it turns out to be the better one anyway: - Boot self-test sweeps one pixel from index 0 to the far end once at startup. It answers in a single glance whether the firmware runs, PIO drives the line, the strip is the length LED_COUNT claims, the far end holds voltage, and - because you see which end it starts from - whether STRIP_REVERSED is right. It runs before USB, so the first test needs nothing but 5V. - Idle indicator holds one dim pixel lit while no host is connected, separating "powered and waiting" from "no power" and from "crashed". Both are platform-independent, so the Circle build gets them too. Verified: tests pass across seventeen configurations, now including the self-test and idle paths on and off. Both platforms build clean with no warnings from project sources. Note on the previous commit's verification: a filtered build log hid a real compile error in the Pico target (sleep_ms takes uint32_t, which is unsigned long here, and did not match the portable void(*)(unsigned) delay callback). The build script now gets an explicit success check rather than a grep. Claude-Session: https://claude.ai/code/session_01TVCB25LBsmeteWvaSMz4Ne
42 lines
1.4 KiB
Bash
Executable File
42 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# Host-side tests for the mapping and power-clamp logic.
|
|
# Compiles the real firmware sources against stubbed Circle headers, across
|
|
# every configuration variant that changes the rendering path.
|
|
set -e
|
|
cd "$(dirname "$0")/.."
|
|
OUT=$(mktemp -d)
|
|
trap 'rm -rf "$OUT"' EXIT
|
|
|
|
FAIL=0
|
|
for CFG in \
|
|
"default:" \
|
|
"reversed strip:-DSTRIP_REVERSED=1" \
|
|
"velocity insensitive:-DVELOCITY_SENSITIVE=0" \
|
|
"reversed + velocity insensitive:-DSTRIP_REVERSED=1 -DVELOCITY_SENSITIVE=0" \
|
|
"full brightness:-DGLOBAL_BRIGHTNESS=255" \
|
|
"tight key cap:-DMAX_LIT_KEYS=5" \
|
|
"single LED per key:-DLEDS_PER_KEY=1" \
|
|
"three LEDs per key:-DLEDS_PER_KEY=3" \
|
|
"hints disabled:-DHINT_MIDI_CHANNEL=MIDI_CHANNEL_NONE" \
|
|
"linear map:-DNOTE_MAP_GEOMETRIC=0" \
|
|
"linear map reversed:-DNOTE_MAP_GEOMETRIC=0 -DSTRIP_REVERSED=1" \
|
|
"positive offset:-DLED_OFFSET=3" \
|
|
"negative offset:-DLED_OFFSET=-2" \
|
|
"offset reversed:-DLED_OFFSET=4 -DSTRIP_REVERSED=1" \
|
|
"no self test:-DBOOT_SELF_TEST=0" \
|
|
"no idle indicator:-DIDLE_INDICATOR=0" \
|
|
"minimal bring-up:-DBOOT_SELF_TEST=0 -DIDLE_INDICATOR=0" \
|
|
; do
|
|
NAME=${CFG%%:*}
|
|
FLAGS=${CFG#*:}
|
|
printf '\n=== %s ===\n' "$NAME"
|
|
g++ -std=c++17 -Wall -Wextra -Wno-unused-parameter $FLAGS \
|
|
-o "$OUT/t" -Itests/stubs -Isrc \
|
|
tests/test_pianoleds.cpp src/pianoleds.cpp
|
|
"$OUT/t" || FAIL=1
|
|
done
|
|
|
|
printf '\n'
|
|
if [ $FAIL -ne 0 ]; then echo "SOME CONFIGURATIONS FAILED"; exit 1; fi
|
|
echo "all configurations passed"
|