Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
USBGamepad.h
00001 /* USBGamepad.h */ 00002 /* USB device example: Gamepad*/ 00003 /* Arcade style buttons to USB interface for use with RetroPie */ 00004 00005 00006 #ifndef USBGAMEPAD_H 00007 #define USBGAMEPAD_H 00008 00009 #include "USBHID.h" 00010 00011 #define REPORT_ID_JOYSTICK 4 00012 00013 // Length of our report. 00014 // this is 3 bytes. 1 byte for report id, 2 bytes for 16 buttons 00015 // this implements a 2 player controller. 00016 #define REPORT_LEN 0x03 00017 00018 /* Common usage */ 00019 enum JOY_BUTTON { 00020 JOY_B0 = 0x0001, 00021 JOY_B1 = 0x0002, 00022 JOY_B2 = 0x0004, 00023 JOY_B3 = 0x0008, 00024 JOY_B4 = 0x0010, 00025 JOY_B5 = 0x0020, 00026 JOY_B6 = 0x0040, 00027 JOY_B7 = 0x0080, 00028 JOY_B8 = 0x0100, 00029 JOY_B9 = 0x0200, 00030 JOY_B10 = 0x0400, 00031 JOY_B11 = 0x0800, 00032 JOY_B12 = 0x1000, 00033 JOY_B13 = 0x2000, 00034 JOY_B14 = 0x4000, 00035 JOY_B15 = 0x8000 00036 }; 00037 00038 /** 00039 * 00040 * USBJoystick example 00041 * @code 00042 * #include "mbed.h" 00043 * #include "USBJoystick.h" 00044 * 00045 * USBJoystick joystick; 00046 * 00047 * int main(void) 00048 * { 00049 * while (1) 00050 * { 00051 * joystick.move(20, 0); 00052 * wait(0.5); 00053 * } 00054 * } 00055 * 00056 * @endcode 00057 * 00058 * 00059 * @code 00060 * #include "mbed.h" 00061 * #include "USBJoystick.h" 00062 * #include <math.h> 00063 * 00064 * USBJoystick joystick; 00065 * 00066 * int main(void) 00067 * { 00068 * while (1) { 00069 * // Basic Joystick 00070 * joystick.update(tx, y, z, buttonBits); 00071 * wait(0.001); 00072 * } 00073 * } 00074 * @endcode 00075 */ 00076 00077 00078 class USBGamepad: public USBHID { 00079 public: 00080 00081 /** 00082 * Constructor 00083 * 00084 * @param vendor_id Your vendor_id (default: 0x1234) 00085 * @param product_id Your product_id (default: 0x0002) 00086 * @param product_release Your product_release (default: 0x0001) 00087 */ 00088 USBGamepad(uint16_t vendor_id = 0x1234, uint16_t product_id = 0x0100, uint16_t product_release = 0x0001, int waitForConnect = true): 00089 USBHID(0,REPORT_LEN, vendor_id, product_id, product_release, false) 00090 { 00091 _init(); 00092 connect(waitForConnect); 00093 }; 00094 00095 /** 00096 * Write a state of the USBGamepad 00097 * 00098 * @param buttons buttons state, as a bit mask (combination with '|' of JOY_Bn values) 00099 * @returns true if there is no error, false otherwise 00100 */ 00101 bool update(uint32_t buttons); 00102 00103 /** 00104 * Write a state of the USBGamepad 00105 * 00106 * @returns true if there is no error, false otherwise 00107 */ 00108 bool update(); 00109 00110 /** 00111 * Press one or several buttons 00112 * 00113 * @param buttons button state, as a bitwise combination of JOY_Bn values 00114 * @returns true if there is no error, false otherwise 00115 */ 00116 bool buttons(uint32_t buttons); 00117 00118 /* 00119 * To define the report descriptor. Warning: this method has to store the length of the report descriptor in reportLength. 00120 * 00121 * @returns pointer to the report descriptor 00122 */ 00123 virtual uint8_t * reportDesc(); 00124 00125 /* USB descriptor string overrides */ 00126 virtual uint8_t *stringImanufacturerDesc(); 00127 virtual uint8_t *stringIserialDesc(); 00128 virtual uint8_t *stringIproductDesc(); 00129 00130 private: 00131 uint16_t _buttonsLo; 00132 uint16_t _buttonsHi; 00133 00134 void _init(); 00135 }; 00136 00137 #endif
Generated on Fri Jul 15 2022 06:19:56 by
1.7.2