- Phase 1 (waiting_fit): after sending control=0x01, wait for fitting=1 - Phase 2 (collecting): once fitting=1 AND run_state=1, start PD accumulation - Phase 3 (done): run_state 1→0, calculate averages, auto-send treatment - Check start-collecting in BOTH fitting and run_state handlers - fitting=0 + run_state 1→0 = fitting failure, prompt retry - Timeout 3 minutes (was 30s), auto-start treatment on completion