modified to compile for me
Fork of USBHostXpad by
USBHostXpad.h@0:bd0f6bf72a8b, 2013-12-10 (annotated)
- Committer:
- okini3939
- Date:
- Tue Dec 10 06:50:37 2013 +0000
- Revision:
- 0:bd0f6bf72a8b
- Child:
- 1:5bb153989f33
1st build;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:bd0f6bf72a8b | 1 | /* |
okini3939 | 0:bd0f6bf72a8b | 2 | * Xbox 360 Wireless Controller for Windows library |
okini3939 | 0:bd0f6bf72a8b | 3 | * for mbed USBHost library |
okini3939 | 0:bd0f6bf72a8b | 4 | * Copyright (c) 2013 Hiroshi Suga |
okini3939 | 0:bd0f6bf72a8b | 5 | * |
okini3939 | 0:bd0f6bf72a8b | 6 | * VID=0x045e PID=0x0719 |
okini3939 | 0:bd0f6bf72a8b | 7 | */ |
okini3939 | 0:bd0f6bf72a8b | 8 | |
okini3939 | 0:bd0f6bf72a8b | 9 | #ifndef USBHostXpad_H |
okini3939 | 0:bd0f6bf72a8b | 10 | #define USBHostXpad_H |
okini3939 | 0:bd0f6bf72a8b | 11 | |
okini3939 | 0:bd0f6bf72a8b | 12 | #include "USBHostConf.h" |
okini3939 | 0:bd0f6bf72a8b | 13 | |
okini3939 | 0:bd0f6bf72a8b | 14 | #if 1 or USBHOST_XPAD |
okini3939 | 0:bd0f6bf72a8b | 15 | |
okini3939 | 0:bd0f6bf72a8b | 16 | #include "USBHost.h" |
okini3939 | 0:bd0f6bf72a8b | 17 | |
okini3939 | 0:bd0f6bf72a8b | 18 | #define XPAD_HAT_TOP 0x0001 |
okini3939 | 0:bd0f6bf72a8b | 19 | #define XPAD_HAT_BOTTOM 0x0002 |
okini3939 | 0:bd0f6bf72a8b | 20 | #define XPAD_HAT_LEFT 0x0004 |
okini3939 | 0:bd0f6bf72a8b | 21 | #define XPAD_HAT_RIGHT 0x0008 |
okini3939 | 0:bd0f6bf72a8b | 22 | #define XPAD_START 0x0010 |
okini3939 | 0:bd0f6bf72a8b | 23 | #define XPAD_BACK 0x0020 |
okini3939 | 0:bd0f6bf72a8b | 24 | #define XPAD_ANALOG_L 0x0040 |
okini3939 | 0:bd0f6bf72a8b | 25 | #define XPAD_ANALOG_R 0x0080 |
okini3939 | 0:bd0f6bf72a8b | 26 | #define XPAD_PAD_LB 0x0100 |
okini3939 | 0:bd0f6bf72a8b | 27 | #define XPAD_PAD_RB 0x0200 |
okini3939 | 0:bd0f6bf72a8b | 28 | #define XPAD_XLOGO 0x0400 |
okini3939 | 0:bd0f6bf72a8b | 29 | #define XPAD_PAD_A 0x1000 |
okini3939 | 0:bd0f6bf72a8b | 30 | #define XPAD_PAD_B 0x2000 |
okini3939 | 0:bd0f6bf72a8b | 31 | #define XPAD_PAD_X 0x4000 |
okini3939 | 0:bd0f6bf72a8b | 32 | #define XPAD_PAD_Y 0x8000 |
okini3939 | 0:bd0f6bf72a8b | 33 | |
okini3939 | 0:bd0f6bf72a8b | 34 | /** |
okini3939 | 0:bd0f6bf72a8b | 35 | * A class to communicate a USB flash disk |
okini3939 | 0:bd0f6bf72a8b | 36 | */ |
okini3939 | 0:bd0f6bf72a8b | 37 | class USBHostXpad : public IUSBEnumerator { |
okini3939 | 0:bd0f6bf72a8b | 38 | public: |
okini3939 | 0:bd0f6bf72a8b | 39 | /** |
okini3939 | 0:bd0f6bf72a8b | 40 | * Constructor |
okini3939 | 0:bd0f6bf72a8b | 41 | * |
okini3939 | 0:bd0f6bf72a8b | 42 | * @param rootdir mount name |
okini3939 | 0:bd0f6bf72a8b | 43 | */ |
okini3939 | 0:bd0f6bf72a8b | 44 | USBHostXpad(); |
okini3939 | 0:bd0f6bf72a8b | 45 | |
okini3939 | 0:bd0f6bf72a8b | 46 | /** |
okini3939 | 0:bd0f6bf72a8b | 47 | * Check if a MSD device is connected |
okini3939 | 0:bd0f6bf72a8b | 48 | * |
okini3939 | 0:bd0f6bf72a8b | 49 | * @return true if a MSD device is connected |
okini3939 | 0:bd0f6bf72a8b | 50 | */ |
okini3939 | 0:bd0f6bf72a8b | 51 | bool connected(); |
okini3939 | 0:bd0f6bf72a8b | 52 | |
okini3939 | 0:bd0f6bf72a8b | 53 | /** |
okini3939 | 0:bd0f6bf72a8b | 54 | * Try to connect to a MSD device |
okini3939 | 0:bd0f6bf72a8b | 55 | * |
okini3939 | 0:bd0f6bf72a8b | 56 | * @return true if connection was successful |
okini3939 | 0:bd0f6bf72a8b | 57 | */ |
okini3939 | 0:bd0f6bf72a8b | 58 | bool connect(); |
okini3939 | 0:bd0f6bf72a8b | 59 | |
okini3939 | 0:bd0f6bf72a8b | 60 | /** |
okini3939 | 0:bd0f6bf72a8b | 61 | * Attach a callback called when a mouse event is received |
okini3939 | 0:bd0f6bf72a8b | 62 | * |
okini3939 | 0:bd0f6bf72a8b | 63 | * @param ptr function pointer |
okini3939 | 0:bd0f6bf72a8b | 64 | */ |
okini3939 | 0:bd0f6bf72a8b | 65 | inline void attachEvent(void (*ptr)(int buttons, int stick_lx, int stick_ly, int stick_rx, int stick_ry, int trigger_l, int trigger_r)) { |
okini3939 | 0:bd0f6bf72a8b | 66 | if (ptr != NULL) { |
okini3939 | 0:bd0f6bf72a8b | 67 | onUpdate = ptr; |
okini3939 | 0:bd0f6bf72a8b | 68 | } |
okini3939 | 0:bd0f6bf72a8b | 69 | } |
okini3939 | 0:bd0f6bf72a8b | 70 | |
okini3939 | 0:bd0f6bf72a8b | 71 | bool effect(uint8_t strong, uint8_t weak); |
okini3939 | 0:bd0f6bf72a8b | 72 | |
okini3939 | 0:bd0f6bf72a8b | 73 | void poll (); |
okini3939 | 0:bd0f6bf72a8b | 74 | |
okini3939 | 0:bd0f6bf72a8b | 75 | protected: |
okini3939 | 0:bd0f6bf72a8b | 76 | //From IUSBEnumerator |
okini3939 | 0:bd0f6bf72a8b | 77 | virtual void setVidPid(uint16_t vid, uint16_t pid); |
okini3939 | 0:bd0f6bf72a8b | 78 | virtual bool parseInterface(uint8_t intf_nb, uint8_t intf_class, uint8_t intf_subclass, uint8_t intf_protocol); //Must return true if the interface should be parsed |
okini3939 | 0:bd0f6bf72a8b | 79 | virtual bool useEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir); //Must return true if the endpoint will be used |
okini3939 | 0:bd0f6bf72a8b | 80 | |
okini3939 | 0:bd0f6bf72a8b | 81 | private: |
okini3939 | 0:bd0f6bf72a8b | 82 | USBHost * host; |
okini3939 | 0:bd0f6bf72a8b | 83 | USBDeviceConnected * dev; |
okini3939 | 0:bd0f6bf72a8b | 84 | bool dev_connected; |
okini3939 | 0:bd0f6bf72a8b | 85 | |
okini3939 | 0:bd0f6bf72a8b | 86 | USBEndpoint * int_in; |
okini3939 | 0:bd0f6bf72a8b | 87 | USBEndpoint * int_out; |
okini3939 | 0:bd0f6bf72a8b | 88 | uint8_t nb_ep; |
okini3939 | 0:bd0f6bf72a8b | 89 | int xpad_intf; |
okini3939 | 0:bd0f6bf72a8b | 90 | bool xpad_device_found; |
okini3939 | 0:bd0f6bf72a8b | 91 | uint8_t report[32]; |
okini3939 | 0:bd0f6bf72a8b | 92 | |
okini3939 | 0:bd0f6bf72a8b | 93 | uint32_t buttons; |
okini3939 | 0:bd0f6bf72a8b | 94 | int16_t stick_lx, stick_ly, stick_rx, stick_ry; |
okini3939 | 0:bd0f6bf72a8b | 95 | uint8_t trigger_l, trigger_r; |
okini3939 | 0:bd0f6bf72a8b | 96 | |
okini3939 | 0:bd0f6bf72a8b | 97 | void rxHandler(); |
okini3939 | 0:bd0f6bf72a8b | 98 | void (*onUpdate)(int buttons, int stick_lx, int stick_ly, int stick_rx, int stick_ry, int trigger_l, int trigger_r); |
okini3939 | 0:bd0f6bf72a8b | 99 | void init(); |
okini3939 | 0:bd0f6bf72a8b | 100 | bool probe(int val1, int val2, int val3, int val4); |
okini3939 | 0:bd0f6bf72a8b | 101 | |
okini3939 | 0:bd0f6bf72a8b | 102 | }; |
okini3939 | 0:bd0f6bf72a8b | 103 | |
okini3939 | 0:bd0f6bf72a8b | 104 | #endif |
okini3939 | 0:bd0f6bf72a8b | 105 | |
okini3939 | 0:bd0f6bf72a8b | 106 | #endif |