USBHost Gamepad driver sample for GR-PEACH
Dependencies: USBHostGamepad mbed-src
ReportDescriptor
09 04 Usage(Gamepad) A1 01 Collection(Application) A1 02 Collection(Logical) 75 08 ReportSize=8 95 02 ReportCount=2 15 00 LogicalMinimum(0) 26 FF 00 LogicalMaximum(255) 35 00 PhysicalMinimum(0) 46 FF 00 PhysicalMaximum(255) 09 30 Usage(X) 09 31 Usage(Y) 81 02 Input(Data, Variable, Absolute) 95 03 ReportCount=3 81 01 Input(Const, Array, Absolute) 75 01 ReportSize=1 95 04 ReportCount=4 25 01 LogicalMaximum(1) 45 01 PhysicalMaximum(1) 81 01 Input(Const, Array, Absolute) 75 01 ReportSize=1 95 06 ReportCount=6 25 01 LogicalMaximum(1) 45 01 PhysicalMaximum(1) 05 09 UsagePage(Button) 19 01 UageMinimum(1) 29 06 UsageMaximum(6) 81 02 Input(Data, Variable, Absolute) 06 00 FF UsagePage(VendorDefined) 75 01 ReportSize=1 95 0E ReportCount=14 25 01 LogicalMaximum(1) 45 01 PhysicalMaximum(1) 09 01 Usage(Pointer) 81 02 Input(Data, Variable, Absolute) C0 EndCollection A1 02 Collection(Logical) 75 08 ReportSize=8 95 07 ReportCount=7 46 FF 00 PhysicalMaximum(255) 26 FF 00 LogicalMaximum(255) 09 02 Usage(Mouse) 91 02 OUTPUT(Data, Variable, Absolute) C0 EndCollection C0 EndCollection
main.cpp@1:5c0f9b413b1e, 2015-01-14 (annotated)
- Committer:
- YuuichiAkagawa
- Date:
- Wed Jan 14 13:27:33 2015 +0000
- Revision:
- 1:5c0f9b413b1e
- Parent:
- 0:e6aa53f51545
initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
YuuichiAkagawa | 0:e6aa53f51545 | 1 | #include "mbed.h" |
YuuichiAkagawa | 0:e6aa53f51545 | 2 | #include "USBHostGamepad.h" |
YuuichiAkagawa | 0:e6aa53f51545 | 3 | |
YuuichiAkagawa | 0:e6aa53f51545 | 4 | Serial pc(USBTX, USBRX); |
YuuichiAkagawa | 0:e6aa53f51545 | 5 | DigitalOut led(LED1); |
YuuichiAkagawa | 0:e6aa53f51545 | 6 | |
YuuichiAkagawa | 0:e6aa53f51545 | 7 | void onEvent(uint8_t btnX, uint8_t btnY, uint8_t btnABCD, uint8_t btnSpecial) { |
YuuichiAkagawa | 0:e6aa53f51545 | 8 | |
YuuichiAkagawa | 0:e6aa53f51545 | 9 | pc.printf(" D-Pad : X:%02X Y:%02X\r\n", btnX, btnY); |
YuuichiAkagawa | 0:e6aa53f51545 | 10 | pc.printf(" Button: %c%c%c%c %s %s %s\r\n", ((btnABCD & 0x10)? 'A':'-'), |
YuuichiAkagawa | 0:e6aa53f51545 | 11 | ((btnABCD & 0x20)? 'B':'-'), |
YuuichiAkagawa | 0:e6aa53f51545 | 12 | ((btnABCD & 0x40)? 'C':'-'), |
YuuichiAkagawa | 0:e6aa53f51545 | 13 | ((btnABCD & 0x80)? 'D':'-'), |
YuuichiAkagawa | 0:e6aa53f51545 | 14 | ((btnSpecial & 0x8)? "-----":"TURBO"), |
YuuichiAkagawa | 0:e6aa53f51545 | 15 | ((btnSpecial & 0x2)? "Select":"------"), |
YuuichiAkagawa | 0:e6aa53f51545 | 16 | ((btnSpecial & 0x1)? "Start" :"-----")); |
YuuichiAkagawa | 0:e6aa53f51545 | 17 | } |
YuuichiAkagawa | 0:e6aa53f51545 | 18 | |
YuuichiAkagawa | 0:e6aa53f51545 | 19 | void gamepad_task(void const *) { |
YuuichiAkagawa | 0:e6aa53f51545 | 20 | |
YuuichiAkagawa | 0:e6aa53f51545 | 21 | USBHostGamepad gamepad; |
YuuichiAkagawa | 0:e6aa53f51545 | 22 | |
YuuichiAkagawa | 0:e6aa53f51545 | 23 | while(1) { |
YuuichiAkagawa | 0:e6aa53f51545 | 24 | // try to connect a USB gamepad |
YuuichiAkagawa | 0:e6aa53f51545 | 25 | while(!gamepad.connect()) |
YuuichiAkagawa | 0:e6aa53f51545 | 26 | Thread::wait(500); |
YuuichiAkagawa | 0:e6aa53f51545 | 27 | |
YuuichiAkagawa | 0:e6aa53f51545 | 28 | // when connected, attach handler called on gamepad event |
YuuichiAkagawa | 0:e6aa53f51545 | 29 | gamepad.attachEvent(onEvent); |
YuuichiAkagawa | 0:e6aa53f51545 | 30 | |
YuuichiAkagawa | 0:e6aa53f51545 | 31 | // wait until the gamepad is disconnected |
YuuichiAkagawa | 0:e6aa53f51545 | 32 | while(gamepad.connected()) |
YuuichiAkagawa | 0:e6aa53f51545 | 33 | Thread::wait(500); |
YuuichiAkagawa | 0:e6aa53f51545 | 34 | } |
YuuichiAkagawa | 0:e6aa53f51545 | 35 | } |
YuuichiAkagawa | 0:e6aa53f51545 | 36 | |
YuuichiAkagawa | 0:e6aa53f51545 | 37 | int main() { |
YuuichiAkagawa | 0:e6aa53f51545 | 38 | Thread gamepadTask(gamepad_task, NULL, osPriorityNormal, 256 * 4); |
YuuichiAkagawa | 0:e6aa53f51545 | 39 | while(1) { |
YuuichiAkagawa | 0:e6aa53f51545 | 40 | led=!led; |
YuuichiAkagawa | 0:e6aa53f51545 | 41 | Thread::wait(500); |
YuuichiAkagawa | 0:e6aa53f51545 | 42 | } |
YuuichiAkagawa | 0:e6aa53f51545 | 43 | } |