27 #define EP_MAXPKTSIZE 32 // max size for data via USB
30 #define EP_INTERRUPT 0x03
33 #define XBOX_CONTROL_PIPE 0
34 #define XBOX_INPUT_PIPE_1 1
35 #define XBOX_OUTPUT_PIPE_1 2
36 #define XBOX_INPUT_PIPE_2 3
37 #define XBOX_OUTPUT_PIPE_2 4
38 #define XBOX_INPUT_PIPE_3 5
39 #define XBOX_OUTPUT_PIPE_3 6
40 #define XBOX_INPUT_PIPE_4 7
41 #define XBOX_OUTPUT_PIPE_4 8
44 #define XBOX_VID 0x045E // Microsoft Corporation
45 #define MADCATZ_VID 0x1BAD // For unofficial Mad Catz receivers
46 #define JOYTECH_VID 0x162E // For unofficial Joytech controllers
48 #define XBOX_WIRELESS_RECEIVER_PID 0x0719 // Microsoft Wireless Gaming Receiver
49 #define XBOX_WIRELESS_RECEIVER_THIRD_PARTY_PID 0x0291 // Third party Wireless Gaming Receiver
51 #define XBOX_MAX_ENDPOINTS 9
74 virtual uint8_t
ConfigureDevice(uint8_t parent, uint8_t port,
bool lowspeed);
82 virtual uint8_t
Init(uint8_t parent, uint8_t port,
bool lowspeed);
92 virtual uint8_t
Poll();
116 virtual boolean VIDPIDOK(uint16_t vid, uint16_t pid) {
174 void setRumbleOn(uint8_t lValue, uint8_t rValue, uint8_t controller = 0);
182 void setLedRaw(uint8_t value, uint8_t controller = 0);
227 pFuncOnInit = funcOnInit;
251 void onInit(uint8_t controller);
252 void (*pFuncOnInit)(void);
257 uint32_t ButtonState[4];
258 uint32_t OldButtonState[4];
259 uint16_t ButtonClickState[4];
260 int16_t hatValue[4][4];
261 uint16_t controllerStatus[4];
262 bool buttonStateChanged[4];
267 uint32_t checkStatusTimer;
272 void readReport(uint8_t controller);
273 void printReport(uint8_t controller, uint8_t nBytes);
276 void XboxCommand(uint8_t controller, uint8_t* data, uint16_t nbytes);
#define XBOX_WIRELESS_RECEIVER_THIRD_PARTY_PID
void setRumbleOn(uint8_t lValue, uint8_t rValue, uint8_t controller=0)
#define XBOX_WIRELESS_RECEIVER_PID
void setLedOff(uint8_t controller=0)
virtual uint8_t GetAddress()
uint8_t Xbox360Connected[4]
void setLedMode(LEDModeEnum lm, uint8_t controller=0)
bool buttonChanged(uint8_t controller=0)
void setRumbleOff(uint8_t controller=0)
virtual uint8_t ConfigureDevice(uint8_t parent, uint8_t port, bool lowspeed)
void setAllOff(uint8_t controller=0)
virtual uint8_t Release()
bool getButtonClick(ButtonEnum b, uint8_t controller=0)
void setLedOn(LEDEnum l, uint8_t controller=0)
uint8_t getButtonPress(ButtonEnum b, uint8_t controller=0)
bool XboxReceiverConnected
uint8_t getBatteryLevel(uint8_t controller=0)
int16_t getAnalogHat(AnalogHatEnum a, uint8_t controller=0)
void setLedBlink(LEDEnum l, uint8_t controller=0)
virtual uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed)
void setLedRaw(uint8_t value, uint8_t controller=0)
virtual boolean VIDPIDOK(uint16_t vid, uint16_t pid)
void attachOnInit(void(*funcOnInit)(void))
void disconnect(uint8_t controller=0)
EpInfo epInfo[XBOX_MAX_ENDPOINTS]
#define XBOX_MAX_ENDPOINTS