Example:
ESP sends ButtonPressed (inq: 1)
ESP sends ButtonReleased (inq: 2)
Packets are received out of order due to network conditions
Current behavior:
- ButtonReleased packet is received, and ignored because button state is already unpressed
- ButtonPressed packet is received and tossed out because inq 1 < 2
- No Button Press event was handled!
Expected behavior:
Button press event is handled despite arriving out of order
Possible Fix:
- When ButtonReleased packet is received (while button state is unpressed), quickly fire ButtonPressed and ButtonReleased events.
- Example fix for Button class:
def release(self) -> None:
if not self._state:
self._fire_event("ButtonPressed", False) # new addition
self._fire_event("ButtonReleased", False) # new addition
return
self._state = False
self._fire_event("ButtonReleased", False)
Further TODO:
add pytest.
Example:
ESP sends ButtonPressed (inq: 1)
ESP sends ButtonReleased (inq: 2)
Packets are received out of order due to network conditions
Current behavior:
Expected behavior:
Button press event is handled despite arriving out of order
Possible Fix:
Further TODO:
add pytest.