memlnaut-nisps/firmware/MEMLNaut-NISPS/glue
monkey-w1n5t0n b953681157 fix(firmware): restore the SelfTest build — it called a DisplayDriver method that does not exist
Found by actually building the firmware, which nothing in this repo does: CI
skips it, run-all-tests.sh skips it, and lint skips it (S9). The SelfTest
variant did not compile:

  glue/selftest.hpp:650: error: 'class DisplayDriver' has no member named
  'NavigateToView'

Pre-existing, not caused by this audit's work: no commit in this series touched
selftest.hpp, and `NavigateToView` appears nowhere in memllib at the pinned
commit. DisplayDriver's actual surface is AddView / InsertViewAfter /
ChangeView(delta) over a carousel.

The call was redundant as well as wrong. DisplayDriver::Setup() leaves
currentViewIndex_ at 0 and the selftest adds exactly one view, so that view is
already the one on screen. Deleting the call restores the build with no
behavioural change on device; a comment records why, since the intent
("navigate to my view") reads as necessary.

Worth noting against Phase 1: SineOsc was KEPT there specifically because "the
firmware selftest uses it". That was still the right call — deleting it would
have added a second breakage to a variant that already had one — but the
justification was weaker than it looked, because the selftest had not compiled
for some time.

Verified by building three variants end to end with arduino-cli, which also
constitutes the first real check of this audit's firmware-side deletions
(daisysp, input_router.hpp, the perf macros, the peripherals helper extraction):

  SLPWorkshop  flash 145028 B   RAM  87384 B (16%)
  PAFSynth     flash 144988 B   RAM 107056 B (20%)
  SelfTest     flash 141520 B   RAM  12024 B  (2%)

Those numbers are also the first per-variant size baseline this project has had
(plan §6.5f wants exactly this as a gate).

Incidentally confirms A6 live: `scripts/build-firmware.sh` rewrote the committed
.ino to select each variant, and the working tree had to be restored after every
build. That is what the PlatformIO migration deletes.
2026-07-21 14:10:05 +02:00
..
audio_driver.hpp refactor(nisps): delete dead core/ML mass; keep the legacy feedback modes 2026-07-21 12:48:27 +02:00
midi_io.hpp refactor(nisps): delete dead core/ML mass; keep the legacy feedback modes 2026-07-21 12:48:27 +02:00
mode_select.hpp feat(slp-workshop): new MEMLCelium-based mode + port Jolt & OU-noise RL learning 2026-06-28 22:15:36 +02:00
output_router.hpp Stream 6: extract firmware glue under firmware/ 2026-04-29 17:05:38 +03:00
peripherals.hpp refactor(firmware): delete vendored daisysp and the input_router layer 2026-07-21 12:49:25 +02:00
selftest.hpp fix(firmware): restore the SelfTest build — it called a DisplayDriver method that does not exist 2026-07-21 14:10:05 +02:00
settings_view.hpp feat(firmware): on-device Joystick Dual/Single settings menu 2026-06-28 21:17:51 +02:00