Skip to content

Commit ac9a5e6

Browse files
committed
Refactor class as XInputController
More generic than 'gamepad', since a gamepad is a specific device but a controller can be anything with the same control surfaces.
1 parent e67c01e commit ac9a5e6

3 files changed

Lines changed: 43 additions & 43 deletions

File tree

keywords.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
XInput KEYWORD1
1111

1212
# Classes
13-
XInputGamepad KEYWORD1
13+
XInputController KEYWORD1
1414

1515
# Enums
1616
XInputControl KEYWORD1

src/XInput.cpp

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,11 @@ const XInputMap_Button * getButtonFromEnum(XInputControl ctrl) {
119119
struct XInputMap_Trigger {
120120
constexpr XInputMap_Trigger(uint8_t i)
121121
: index(i) {}
122-
static const XInputGamepad::Range range;
122+
static const XInputController::Range range;
123123
const uint8_t index;
124124
};
125125

126-
const XInputGamepad::Range XInputMap_Trigger::range = { 0, 255 }; // uint8_t
126+
const XInputController::Range XInputMap_Trigger::range = { 0, 255 }; // uint8_t
127127

128128
static const XInputMap_Trigger Map_TriggerLeft(4);
129129
static const XInputMap_Trigger Map_TriggerRight(5);
@@ -144,14 +144,14 @@ const XInputMap_Trigger * getTriggerFromEnum(XInputControl ctrl) {
144144
struct XInputMap_Joystick {
145145
constexpr XInputMap_Joystick(uint8_t xl, uint8_t xh, uint8_t yl, uint8_t yh)
146146
: x_low(xl), x_high(xh), y_low(yl), y_high(yh) {}
147-
static const XInputGamepad::Range range;
147+
static const XInputController::Range range;
148148
const uint8_t x_low;
149149
const uint8_t x_high;
150150
const uint8_t y_low;
151151
const uint8_t y_high;
152152
};
153153

154-
const XInputGamepad::Range XInputMap_Joystick::range = { -32768, 32767 }; // int16_t
154+
const XInputController::Range XInputMap_Joystick::range = { -32768, 32767 }; // int16_t
155155

156156
static const XInputMap_Joystick Map_JoystickLeft(6, 7, 8, 9);
157157
static const XInputMap_Joystick Map_JoystickRight(10, 11, 12, 13);
@@ -191,10 +191,10 @@ static void XInputLib_Receive_Callback() {
191191

192192

193193
// --------------------------------------------------------
194-
// XInputGamepad Class (API) |
194+
// XInputController Class (API) |
195195
// --------------------------------------------------------
196196

197-
XInputGamepad::XInputGamepad() :
197+
XInputController::XInputController() :
198198
tx(), rumble() // Zero initialize arrays
199199
{
200200
reset();
@@ -203,19 +203,19 @@ XInputGamepad::XInputGamepad() :
203203
#endif
204204
}
205205

206-
void XInputGamepad::begin() {
206+
void XInputController::begin() {
207207
// Empty for now
208208
}
209209

210-
void XInputGamepad::press(uint8_t button) {
210+
void XInputController::press(uint8_t button) {
211211
setButton(button, true);
212212
}
213213

214-
void XInputGamepad::release(uint8_t button) {
214+
void XInputController::release(uint8_t button) {
215215
setButton(button, false);
216216
}
217217

218-
void XInputGamepad::setButton(uint8_t button, boolean state) {
218+
void XInputController::setButton(uint8_t button, boolean state) {
219219
const XInputMap_Button * buttonData = getButtonFromEnum((XInputControl) button);
220220
if (buttonData != nullptr) {
221221
if (getButton(button) == state) return; // Button hasn't changed
@@ -232,11 +232,11 @@ void XInputGamepad::setButton(uint8_t button, boolean state) {
232232
}
233233
}
234234

235-
void XInputGamepad::setDpad(XInputControl pad, boolean state) {
235+
void XInputController::setDpad(XInputControl pad, boolean state) {
236236
setButton(pad, state);
237237
}
238238

239-
void XInputGamepad::setDpad(boolean up, boolean down, boolean left, boolean right) {
239+
void XInputController::setDpad(boolean up, boolean down, boolean left, boolean right) {
240240
// Simultaneous Opposite Cardinal Directions (SOCD) Cleaner
241241
if (up && down) { down = false; } // Up + Down = Up
242242
if (left && right) { left = false; right = false; } // Left + Right = Neutral
@@ -253,7 +253,7 @@ void XInputGamepad::setDpad(boolean up, boolean down, boolean left, boolean righ
253253
autosend();
254254
}
255255

256-
void XInputGamepad::setTrigger(XInputControl trigger, int32_t val) {
256+
void XInputController::setTrigger(XInputControl trigger, int32_t val) {
257257
const XInputMap_Trigger * triggerData = getTriggerFromEnum(trigger);
258258
if (triggerData == nullptr) return; // Not a trigger
259259

@@ -265,7 +265,7 @@ void XInputGamepad::setTrigger(XInputControl trigger, int32_t val) {
265265
autosend();
266266
}
267267

268-
void XInputGamepad::setJoystick(XInputControl joy, int32_t x, int32_t y) {
268+
void XInputController::setJoystick(XInputControl joy, int32_t x, int32_t y) {
269269
const XInputMap_Joystick * joyData = getJoyFromEnum(joy);
270270
if (joyData == nullptr) return; // Not a joystick
271271

@@ -284,70 +284,70 @@ void XInputGamepad::setJoystick(XInputControl joy, int32_t x, int32_t y) {
284284
autosend();
285285
}
286286

287-
void XInputGamepad::releaseAll() {
287+
void XInputController::releaseAll() {
288288
const uint8_t offset = 2; // Skip message type and packet size
289289
memset(tx + offset, 0x00, sizeof(tx) - offset); // Clear TX array
290290
newData = true; // Data changed and is unsent
291291
autosend();
292292
}
293293

294-
void XInputGamepad::setAutoSend(boolean a) {
294+
void XInputController::setAutoSend(boolean a) {
295295
autoSendOption = a;
296296
}
297297

298-
boolean XInputGamepad::getButton(uint8_t button) const {
298+
boolean XInputController::getButton(uint8_t button) const {
299299
const XInputMap_Button * buttonData = getButtonFromEnum((XInputControl) button);
300300
if (buttonData == nullptr) return 0; // Not a button
301301
return tx[buttonData->index] & buttonData->mask;
302302
}
303303

304-
boolean XInputGamepad::getDpad(XInputControl dpad) const {
304+
boolean XInputController::getDpad(XInputControl dpad) const {
305305
return getButton(dpad);
306306
}
307307

308-
uint8_t XInputGamepad::getTrigger(XInputControl trigger) const {
308+
uint8_t XInputController::getTrigger(XInputControl trigger) const {
309309
const XInputMap_Trigger * triggerData = getTriggerFromEnum(trigger);
310310
if (triggerData == nullptr) return 0; // Not a trigger
311311
return tx[triggerData->index];
312312
}
313313

314-
int16_t XInputGamepad::getJoystickX(XInputControl joy) const {
314+
int16_t XInputController::getJoystickX(XInputControl joy) const {
315315
const XInputMap_Joystick * joyData = getJoyFromEnum(joy);
316316
if (joyData == nullptr) return 0; // Not a joystick
317317
return (tx[joyData->x_high] << 8) | tx[joyData->x_low];
318318
}
319319

320-
int16_t XInputGamepad::getJoystickY(XInputControl joy) const {
320+
int16_t XInputController::getJoystickY(XInputControl joy) const {
321321
const XInputMap_Joystick * joyData = getJoyFromEnum(joy);
322322
if (joyData == nullptr) return 0; // Not a joystick
323323
return (tx[joyData->y_high] << 8) | tx[joyData->y_low];
324324
}
325325

326-
uint8_t XInputGamepad::getPlayer() const {
326+
uint8_t XInputController::getPlayer() const {
327327
return player;
328328
}
329329

330-
uint16_t XInputGamepad::getRumble() const {
330+
uint16_t XInputController::getRumble() const {
331331
return rumble[RumbleLeft.bufferIndex] << 8 | rumble[RumbleRight.bufferIndex];
332332
}
333333

334-
uint8_t XInputGamepad::getRumbleLeft() const {
334+
uint8_t XInputController::getRumbleLeft() const {
335335
return rumble[RumbleLeft.bufferIndex];
336336
}
337337

338-
uint8_t XInputGamepad::getRumbleRight() const {
338+
uint8_t XInputController::getRumbleRight() const {
339339
return rumble[RumbleRight.bufferIndex];
340340
}
341341

342-
XInputLEDPattern XInputGamepad::getLEDPattern() const {
342+
XInputLEDPattern XInputController::getLEDPattern() const {
343343
return ledPattern;
344344
}
345345

346-
void XInputGamepad::setReceiveCallback(RecvCallbackType cback) {
346+
void XInputController::setReceiveCallback(RecvCallbackType cback) {
347347
recvCallback = cback;
348348
}
349349

350-
boolean XInputGamepad::connected() {
350+
boolean XInputController::connected() {
351351
#ifdef USB_XINPUT
352352
return XInputUSB::connected();
353353
#else
@@ -356,7 +356,7 @@ boolean XInputGamepad::connected() {
356356
}
357357

358358
//Send an update packet to the PC
359-
int XInputGamepad::send() {
359+
int XInputController::send() {
360360
if (!newData) return 0; // TX data hasn't changed
361361
#ifdef USB_XINPUT
362362
newData = false;
@@ -367,7 +367,7 @@ int XInputGamepad::send() {
367367
#endif
368368
}
369369

370-
int XInputGamepad::receive() {
370+
int XInputController::receive() {
371371
#ifdef USB_XINPUT
372372
if (XInputUSB::available() == 0) {
373373
return 0; // No packet available
@@ -403,7 +403,7 @@ int XInputGamepad::receive() {
403403
#endif
404404
}
405405

406-
void XInputGamepad::parseLED(uint8_t leds) {
406+
void XInputController::parseLED(uint8_t leds) {
407407
if (leds > 0x0D) return; // Not a known pattern
408408

409409
ledPattern = (XInputLEDPattern) leds; // Save pattern
@@ -432,7 +432,7 @@ void XInputGamepad::parseLED(uint8_t leds) {
432432
}
433433
}
434434

435-
XInputGamepad::Range * XInputGamepad::getRangeFromEnum(XInputControl ctrl) {
435+
XInputController::Range * XInputController::getRangeFromEnum(XInputControl ctrl) {
436436
switch (ctrl) {
437437
case(TRIGGER_LEFT): return &rangeTrigLeft;
438438
case(TRIGGER_RIGHT): return &rangeTrigRight;
@@ -442,24 +442,24 @@ XInputGamepad::Range * XInputGamepad::getRangeFromEnum(XInputControl ctrl) {
442442
}
443443
}
444444

445-
int32_t XInputGamepad::rescaleInput(int32_t val, Range in, Range out) {
445+
int32_t XInputController::rescaleInput(int32_t val, Range in, Range out) {
446446
if (val <= in.min) return out.min; // Out of range -
447447
if (val >= in.max) return out.max; // Out of range +
448448
if (in.min == out.min && in.max == out.max) return val; // Ranges identical
449449
return map(val, in.min, in.max, out.min, out.max);
450450
}
451451

452-
void XInputGamepad::setTriggerRange(int32_t rangeMin, int32_t rangeMax) {
452+
void XInputController::setTriggerRange(int32_t rangeMin, int32_t rangeMax) {
453453
setRange(TRIGGER_LEFT, rangeMin, rangeMax);
454454
setRange(TRIGGER_RIGHT, rangeMin, rangeMax);
455455
}
456456

457-
void XInputGamepad::setJoystickRange(int32_t rangeMin, int32_t rangeMax) {
457+
void XInputController::setJoystickRange(int32_t rangeMin, int32_t rangeMax) {
458458
setRange(JOY_LEFT, rangeMin, rangeMax);
459459
setRange(JOY_RIGHT, rangeMin, rangeMax);
460460
}
461461

462-
void XInputGamepad::setRange(XInputControl ctrl, int32_t rangeMin, int32_t rangeMax) {
462+
void XInputController::setRange(XInputControl ctrl, int32_t rangeMin, int32_t rangeMax) {
463463
if (rangeMin >= rangeMax) return; // Error: Max < Min
464464

465465
Range * range = getRangeFromEnum(ctrl);
@@ -470,7 +470,7 @@ void XInputGamepad::setRange(XInputControl ctrl, int32_t rangeMin, int32_t range
470470
}
471471

472472
// Resets class back to initial values
473-
void XInputGamepad::reset() {
473+
void XInputController::reset() {
474474
// Reset control data (tx)
475475
releaseAll(); // Clear TX buffer
476476
tx[0] = 0x00; // Set tx message type
@@ -490,7 +490,7 @@ void XInputGamepad::reset() {
490490
autoSendOption = true;
491491
}
492492

493-
void XInputGamepad::printDebug(Print &output) const {
493+
void XInputController::printDebug(Print &output) const {
494494
const char fillCharacter = '_';
495495

496496
char buffer[80];
@@ -546,4 +546,4 @@ void XInputGamepad::printDebug(Print &output) const {
546546
output.println(buffer);
547547
}
548548

549-
XInputGamepad XInput;
549+
XInputController XInput;

src/XInput.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@ enum class XInputLEDPattern {
7474
};
7575

7676

77-
class XInputGamepad {
77+
class XInputController {
7878
public:
79-
XInputGamepad();
79+
XInputController();
8080

8181
void begin();
8282

@@ -159,6 +159,6 @@ class XInputGamepad {
159159
int32_t rescaleInput(int32_t val, Range in, Range out);
160160
};
161161

162-
extern XInputGamepad XInput;
162+
extern XInputController XInput;
163163

164164
#endif

0 commit comments

Comments
 (0)