pyremoteplay icon indicating copy to clipboard operation
pyremoteplay copied to clipboard

Controller event history buffer unreliability

Open Entropy512 opened this issue 2 years ago • 0 comments

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.)

Entropy512 avatar Oct 27 '22 22:10 Entropy512