USBHost Gamepad driver sample for GR-PEACH

Dependencies:   USBHostGamepad mbed-src

/media/uploads/YuuichiAkagawa/peach-gamepad.jpg

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
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?

UserRevisionLine numberNew 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 }