Skip to content

Commit d49eb6f

Browse files
committed
Mark buffered receive data as volatile
All three of these members can be updated in 'receive()' which is now typically called via a USB interrupt rather than in the user's program flow.
1 parent a780ca7 commit d49eb6f

2 files changed

Lines changed: 4 additions & 4 deletions

File tree

src/XInput.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ void XInputGamepad::reset() {
460460

461461
// Reset received data (rx)
462462
player = 0; // Not connected, no player
463-
memset(rumble, 0x00, sizeof(rumble)); // Clear rumble values
463+
memset((void*) rumble, 0x00, sizeof(rumble)); // Clear rumble values
464464
ledPattern = XInputLEDPattern::Off; // No LEDs on
465465

466466
// Reset rescale ranges

src/XInput.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,9 @@ class XInputGamepad {
136136
boolean newData; // Flag for tx data changed
137137

138138
// Received Data
139-
uint8_t player; // Gamepad player #, buffered
140-
uint8_t rumble[2]; // Rumble motor data in, buffered
141-
XInputLEDPattern ledPattern; // LED pattern data in, buffered
139+
volatile uint8_t player; // Gamepad player #, buffered
140+
volatile uint8_t rumble[2]; // Rumble motor data in, buffered
141+
volatile XInputLEDPattern ledPattern; // LED pattern data in, buffered
142142
RecvCallbackType recvCallback; // User-set callback for received data
143143

144144
void parseLED(uint8_t leds); // Parse LED data and set pattern/player data

0 commit comments

Comments
 (0)