mirror of
https://github.com/felis/USB_Host_Shield_2.0.git
synced 2024-03-22 11:31:26 +01:00
LeftTrigger/RightTrigger => L2/R2 for consistency
This commit is contained in:
parent
519e2a5309
commit
9979e50426
5 changed files with 63 additions and 59 deletions
36
XBOXONE.cpp
36
XBOXONE.cpp
|
@ -281,8 +281,8 @@ void XBOXONE::readReport() {
|
|||
// xbox button from before, dpad, abxy, start/back, sync, stick click, shoulder buttons
|
||||
ButtonState = xbox | (((uint16_t)readBuf[5] & 0xF) << 8) | (readBuf[4] & 0xF0) | (((uint16_t)readBuf[4] & 0x0C) << 10) | ((readBuf[4] & 0x01) << 3) | (((uint16_t)readBuf[5] & 0xC0) << 8) | ((readBuf[5] & 0x30) >> 4);
|
||||
|
||||
triggerValue[LeftTrigger] = (uint16_t)(((uint16_t)readBuf[7] << 8) | readBuf[6]);
|
||||
triggerValue[RightTrigger] = (uint16_t)(((uint16_t)readBuf[9] << 8) | readBuf[8]);
|
||||
triggerValue[0] = (uint16_t)(((uint16_t)readBuf[7] << 8) | readBuf[6]);
|
||||
triggerValue[1] = (uint16_t)(((uint16_t)readBuf[9] << 8) | readBuf[8]);
|
||||
|
||||
hatValue[LeftHatX] = (int16_t)(((uint16_t)readBuf[11] << 8) | readBuf[10]);
|
||||
hatValue[LeftHatY] = (int16_t)(((uint16_t)readBuf[13] << 8) | readBuf[12]);
|
||||
|
@ -296,6 +296,15 @@ void XBOXONE::readReport() {
|
|||
ButtonClickState = ButtonState & ~OldButtonState; // Update click state variable
|
||||
OldButtonState = ButtonState;
|
||||
}
|
||||
|
||||
if (triggerValue[0] != triggerValueOld[0]) {
|
||||
triggerValueOld[0] = triggerValue[0];
|
||||
L2Clicked = true;
|
||||
}
|
||||
if (triggerValue[1] != triggerValueOld[1]) {
|
||||
triggerValueOld[1] = triggerValue[1];
|
||||
R2Clicked = true;
|
||||
}
|
||||
}
|
||||
|
||||
void XBOXONE::printReport() { //Uncomment "#define PRINTREPORT" to print the report send by the Xbox ONE Controller
|
||||
|
@ -310,11 +319,28 @@ void XBOXONE::printReport() { //Uncomment "#define PRINTREPORT" to print the rep
|
|||
#endif
|
||||
}
|
||||
|
||||
uint8_t XBOXONE::getButtonPress(ButtonEnum b) {
|
||||
uint16_t XBOXONE::getButtonPress(ButtonEnum b) {
|
||||
if(b == L2) // These are analog buttons
|
||||
return triggerValue[0];
|
||||
else if(b == R2)
|
||||
return triggerValue[1];
|
||||
return (bool)(ButtonState & ((uint16_t)pgm_read_word(&XBOX_BUTTONS[(uint8_t)b])));
|
||||
}
|
||||
|
||||
bool XBOXONE::getButtonClick(ButtonEnum b) {
|
||||
if(b == L2) {
|
||||
if(L2Clicked) {
|
||||
L2Clicked = false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
} else if(b == R2) {
|
||||
if(R2Clicked) {
|
||||
R2Clicked = false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
uint16_t button = pgm_read_word(&XBOX_BUTTONS[(uint8_t)b]);
|
||||
bool click = (ButtonClickState & button);
|
||||
ButtonClickState &= ~button; // clear "click" event
|
||||
|
@ -325,10 +351,6 @@ int16_t XBOXONE::getAnalogHat(AnalogHatEnum a) {
|
|||
return hatValue[a];
|
||||
}
|
||||
|
||||
uint16_t XBOXONE::getTrigger(TriggerEnum a) {
|
||||
return triggerValue[a];
|
||||
}
|
||||
|
||||
/* Xbox Controller commands */
|
||||
uint8_t XBOXONE::XboxCommand(uint8_t* data, uint16_t nbytes) {
|
||||
uint8_t rcode = pUsb->outTransfer(bAddress, epInfo[ XBOX_OUTPUT_PIPE ].epAddr, nbytes, data);
|
||||
|
|
18
XBOXONE.h
18
XBOXONE.h
|
@ -42,7 +42,7 @@
|
|||
|
||||
#define XBOX_MAX_ENDPOINTS 3
|
||||
|
||||
/** This class implements support for a Xbox wired controller via USB. */
|
||||
/** This class implements support for a Xbox ONE controller connected via USB. */
|
||||
class XBOXONE : public USBDeviceConfig {
|
||||
public:
|
||||
/**
|
||||
|
@ -107,9 +107,9 @@ public:
|
|||
* So you instance if you need to increase a variable once you would use getButtonClick(ButtonEnum b),
|
||||
* but if you need to drive a robot forward you would use getButtonPress(ButtonEnum b).
|
||||
* @param b ::ButtonEnum to read.
|
||||
* @return getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a byte if reading ::L2 or ::R2.
|
||||
* @return getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a word if reading ::L2 or ::R2.
|
||||
*/
|
||||
uint8_t getButtonPress(ButtonEnum b);
|
||||
uint16_t getButtonPress(ButtonEnum b);
|
||||
bool getButtonClick(ButtonEnum b);
|
||||
|
||||
/**
|
||||
|
@ -119,14 +119,6 @@ public:
|
|||
*/
|
||||
int16_t getAnalogHat(AnalogHatEnum a);
|
||||
|
||||
/** @name Xbox Controller functions */
|
||||
/**
|
||||
* Return the analog value from the triggers on the controller.
|
||||
* @param a Either ::LeftTrigger, or ::RightTrigger.
|
||||
* @return Returns an unsigned 16-bit integer.
|
||||
*/
|
||||
uint16_t getTrigger(TriggerEnum a);
|
||||
|
||||
/**
|
||||
* Used to call your own function when the controller is successfully initialized.
|
||||
* @param funcOnInit Function to call.
|
||||
|
@ -163,6 +155,10 @@ private:
|
|||
uint16_t ButtonClickState;
|
||||
int16_t hatValue[4];
|
||||
int16_t triggerValue[2];
|
||||
int16_t triggerValueOld[2];
|
||||
|
||||
bool L2Clicked; // These buttons are analog, so we use we use these bools to check if they where clicked or not
|
||||
bool R2Clicked;
|
||||
|
||||
uint8_t readBuf[EP_MAXPKTSIZE]; // General purpose buffer for input data
|
||||
uint8_t writeBuf[12]; // General purpose buffer for output data
|
||||
|
|
|
@ -159,14 +159,6 @@ enum AnalogHatEnum {
|
|||
RightHatY = 3,
|
||||
};
|
||||
|
||||
/** Triggers on Xbox One controller. */
|
||||
enum TriggerEnum {
|
||||
/** Left trigger */
|
||||
LeftTrigger = 0,
|
||||
/** Right trigger */
|
||||
RightTrigger = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* Sensors inside the Sixaxis Dualshock 3, Move controller and PS4 controller.
|
||||
* <B>Note:</B> that the location is shifted 9 when it's connected via USB on the PS3 controller.
|
||||
|
|
|
@ -47,54 +47,51 @@ void loop() {
|
|||
Serial.println();
|
||||
}
|
||||
|
||||
if (Xbox.getTrigger(LeftTrigger) > 0 || Xbox.getTrigger(RightTrigger) > 0) {
|
||||
if (Xbox.getTrigger(LeftTrigger) > 0) {
|
||||
Serial.print(F("LeftTrigger: "));
|
||||
Serial.print(Xbox.getTrigger(LeftTrigger));
|
||||
if (Xbox.getButtonPress(L2) > 0 || Xbox.getButtonPress(R2) > 0) {
|
||||
if (Xbox.getButtonPress(L2) > 0) {
|
||||
Serial.print(F("L2: "));
|
||||
Serial.print(Xbox.getButtonPress(L2));
|
||||
Serial.print("\t");
|
||||
}
|
||||
if (Xbox.getTrigger(RightTrigger) > 0) {
|
||||
Serial.print(F("RightTrigger: "));
|
||||
Serial.print(Xbox.getTrigger(RightTrigger));
|
||||
if (Xbox.getButtonPress(R2) > 0) {
|
||||
Serial.print(F("R2: "));
|
||||
Serial.print(Xbox.getButtonPress(R2));
|
||||
Serial.print("\t");
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
|
||||
if (Xbox.getButtonClick(UP)) {
|
||||
if (Xbox.getButtonClick(UP))
|
||||
Serial.println(F("Up"));
|
||||
}
|
||||
if (Xbox.getButtonClick(DOWN)) {
|
||||
if (Xbox.getButtonClick(DOWN))
|
||||
Serial.println(F("Down"));
|
||||
}
|
||||
if (Xbox.getButtonClick(LEFT)) {
|
||||
if (Xbox.getButtonClick(LEFT))
|
||||
Serial.println(F("Left"));
|
||||
}
|
||||
if (Xbox.getButtonClick(RIGHT)) {
|
||||
if (Xbox.getButtonClick(RIGHT))
|
||||
Serial.println(F("Right"));
|
||||
}
|
||||
|
||||
if (Xbox.getButtonClick(START)) {
|
||||
if (Xbox.getButtonClick(START))
|
||||
Serial.println(F("Start"));
|
||||
}
|
||||
if (Xbox.getButtonClick(BACK)) {
|
||||
if (Xbox.getButtonClick(BACK))
|
||||
Serial.println(F("Back"));
|
||||
}
|
||||
if (Xbox.getButtonClick(L3))
|
||||
Serial.println(F("L3"));
|
||||
if (Xbox.getButtonClick(R3))
|
||||
Serial.println(F("R3"));
|
||||
if (Xbox.getButtonClick(XBOX))
|
||||
Serial.println(F("Xbox"));
|
||||
if (Xbox.getButtonClick(SYNC))
|
||||
Serial.println(F("Sync"));
|
||||
|
||||
if (Xbox.getButtonClick(L1))
|
||||
Serial.println(F("L1"));
|
||||
if (Xbox.getButtonClick(R1))
|
||||
Serial.println(F("R1"));
|
||||
if (Xbox.getButtonClick(XBOX)) {
|
||||
Serial.println(F("Xbox"));
|
||||
}
|
||||
if (Xbox.getButtonClick(SYNC)) {
|
||||
Serial.println(F("Sync"));
|
||||
}
|
||||
if (Xbox.getButtonClick(L2))
|
||||
Serial.println(F("L2"));
|
||||
if (Xbox.getButtonClick(R2))
|
||||
Serial.println(F("R2"));
|
||||
if (Xbox.getButtonClick(L3))
|
||||
Serial.println(F("L3"));
|
||||
if (Xbox.getButtonClick(R3))
|
||||
Serial.println(F("R3"));
|
||||
|
||||
|
||||
if (Xbox.getButtonClick(A))
|
||||
Serial.println(F("A"));
|
||||
|
|
|
@ -140,9 +140,6 @@ LeftHatY LITERAL1
|
|||
RightHatX LITERAL1
|
||||
RightHatY LITERAL1
|
||||
|
||||
LeftTrigger LITERAL1
|
||||
RightTrigger LITERAL1
|
||||
|
||||
aX LITERAL1
|
||||
aY LITERAL1
|
||||
aZ LITERAL1
|
||||
|
|
Loading…
Reference in a new issue