27 #define EP_MAXPKTSIZE 32 // max size for data via USB
30 #define XBOX_CONTROL_PIPE 0
31 #define XBOX_INPUT_PIPE_1 1
32 #define XBOX_OUTPUT_PIPE_1 2
33 #define XBOX_INPUT_PIPE_2 3
34 #define XBOX_OUTPUT_PIPE_2 4
35 #define XBOX_INPUT_PIPE_3 5
36 #define XBOX_OUTPUT_PIPE_3 6
37 #define XBOX_INPUT_PIPE_4 7
38 #define XBOX_OUTPUT_PIPE_4 8
41 #define XBOX_VID 0x045E // Microsoft Corporation
42 #define MADCATZ_VID 0x1BAD // For unofficial Mad Catz receivers
43 #define JOYTECH_VID 0x162E // For unofficial Joytech controllers
45 #define XBOX_WIRELESS_RECEIVER_PID 0x0719 // Microsoft Wireless Gaming Receiver
46 #define XBOX_WIRELESS_RECEIVER_THIRD_PARTY_PID 0x0291 // Third party Wireless Gaming Receiver
48 #define XBOX_MAX_ENDPOINTS 9
79 uint8_t
Init(uint8_t parent, uint8_t port,
bool lowspeed);
113 virtual bool VIDPIDOK(uint16_t vid, uint16_t pid) {
171 void setRumbleOn(uint8_t lValue, uint8_t rValue, uint8_t controller = 0);
179 void setLedRaw(uint8_t value, uint8_t controller = 0);
224 pFuncOnInit = funcOnInit;
248 void onInit(uint8_t controller);
249 void (*pFuncOnInit)(void);
254 uint32_t ButtonState[4];
255 uint32_t OldButtonState[4];
256 uint16_t ButtonClickState[4];
257 int16_t hatValue[4][4];
258 uint16_t controllerStatus[4];
259 bool buttonStateChanged[4];
264 uint32_t checkStatusTimer;
269 void readReport(uint8_t controller);
270 void printReport(uint8_t controller, uint8_t nBytes);
273 void XboxCommand(uint8_t controller, uint8_t* data, uint16_t nbytes);