pyremoteplay
pyremoteplay copied to clipboard
Controller event history buffer unreliability
I've been noticing the controller event history being quite flaky, with spontaneous events being triggered in some scenarios, and controller buttons entering a "stuck" state until hit again in others.
Comparing to chiaki - it appears that pyremoteplay is assuming that all events are three bytes, while some are only two bytes (see chiaki_feedback_history_event_set_button in lib/src/feedback.c of chiaki for reference) - any event that returns instead of breaking from the switch statement is only 2 bytes not 3.
It also appears that chiaki is using a circular buffer of 16 events, while pyremoteplay is using a circular buffer of 16 bytes if I am reading the code correctly - but 16 events can be between 32 and 48 bytes. (Chiaki is allowing the packet to be as large as 0x300, but from reading the code I cannot figure out how that would ever happen, or even any circumstances under which you would come close/exceed 48 bytes of event history payload.)