turn-up-arch/tests
Sean Doran d69d94eaa2
fix: eliminate LED flicker during knob turns
Two targeted fixes:

1. Deduplicate LED writes in handle_knob: compute new colours and only
   call send_leds() when they differ from last_led_colors.  A single
   physical knob turn produces 20-50 ADC samples in quick succession;
   without this guard each sample triggers a 47-byte write and the
   firmware can't keep up, causing visible flicker.

2. Gate reapply_app_volumes on a 200 ms knob-quiet period.  Calling
   playerctl/pulsectl while the user is actively turning a knob stalls
   the main loop, backing up serial data, missing heartbeats, and
   causing the device LEDs to time out mid-turn.

Both state variables (last_led_colors, last_knob_event) are mutable
lists initialised in main() and threaded through handle_knob, keeping
module-level globals out of the picture.

Adds 6 new unit tests (56 total, all passing).
2026-02-27 19:04:53 -05:00
..
__init__.py Refactor: extract audio.py, add 50 unit tests 2026-02-27 18:40:13 -05:00
test_audio.py Refactor: extract audio.py, add 50 unit tests 2026-02-27 18:40:13 -05:00
test_protocol.py fix: eliminate LED flicker during knob turns 2026-02-27 19:04:53 -05:00