Two separate causes of stationary trigger pulsing, both fixed: 1. Hysteresis too short. 30 packets (0.5s) was shorter than FH5's stationary oscillation period (~1s per state in start-grid/pause screen contexts). Bumped to 120 (2s at 60Hz). 2. RPM-stuck workaround removed entirely. Cosmii's RPM_ACCUMULATOR (legacy_Program.cs:89-109) forced is_race_on false after 3.3s of constant RPM + zero power. While stationary in-race (idle RPM constant, power near zero), this would trip, causing a false menu transition. Engine idle flutter on power could reset and re-trigger it, producing a slow oscillation with clicks on each edge. FH5 has been observed to correctly clear is_race_on between races (confirmed via live strace), so the workaround is unnecessary. Removed: RPM_ACCUMULATOR_TRIGGER_RACE_OFF constant, is_race_on's debounce logic, DaemonState.last_rpm and .rpm_accumulator fields. is_race_on is now a one-liner: return bool(is_race_on field). Tests: 57/57 pass. TestIsRaceOn simplified from 4 to 3 tests. DaemonState reset test no longer checks removed fields.
38 KiB
38 KiB