USB Joystick library, modified to work as a 6 DOF joystick.

Dependents:   USBJoystick_Test

Fork of USBJoystick by Wim Huiskamp

Files at this revision

API Documentation at this revision

Comitter:
smartsystemdesign
Date:
Wed Jan 18 04:54:07 2017 +0000
Parent:
4:0ffbedd2cb73
Commit message:
Fixed joystick controls not moving error. Thanks, Wim!

Changed in this revision

USBJoystick.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 0ffbedd2cb73 -r 767e64df3776 USBJoystick.cpp
--- a/USBJoystick.cpp	Fri Jan 13 17:11:32 2017 +0000
+++ b/USBJoystick.cpp	Wed Jan 18 04:54:07 2017 +0000
@@ -45,12 +45,18 @@
    HID_REPORT report;
 
    // Fill the report according to the Joystick Descriptor
-   report.data[0] = _x & 0xffff;            
-   report.data[1] = _y & 0xffff;               
-   report.data[2] = _z & 0xffff;            
-   report.data[3] = _rx & 0xffff;
-   report.data[4] = _ry & 0xffff;            
-   report.data[5] = _rz & 0xffff;
+   report.data[0] = _x & 0xff;
+   report.data[1] = (_x >> 8) & 0xff;
+   report.data[2] = _y & 0xff;
+   report.data[3] = (_y >> 8) & 0xff;
+   report.data[4] = _z & 0xff;
+   report.data[5] = (_z >> 8) & 0xff;
+   report.data[6] = _rx & 0xff;
+   report.data[7] = (_rx >> 8) & 0xff;
+   report.data[8] = _ry & 0xff;
+   report.data[9] = (_ry >> 8) & 0xff;
+   report.data[10] = _rz & 0xff;
+   report.data[11] = (_rz >> 8) & 0xff;
 
 #if (BUTTONS4 == 1)               
 //Hat and 4 Buttons
@@ -59,10 +65,10 @@
 
 
 //Use 4 bit padding for hat4 or hat8
-   report.data[6] = (_hat & 0x0f) ;                                      
+   report.data[12] = (_hat & 0x0f) ;                                      
 
 //Use 4 bit padding for buttons   
-   report.data[7] = (_buttons & 0x0f) ;                                         
+   report.data[13] = (_buttons & 0x0f) ;                                         
    report.length = 8;
 #endif
 
@@ -75,23 +81,23 @@
 //   report.length = 6; 
 
 //Use 4 bit padding for hat4 or hat8
-   report.data[6] = (_hat & 0x0f) ;                                      
+   report.data[12] = (_hat & 0x0f) ;                                      
 
 //Use 8 bits for buttons   
-   report.data[7] = (_buttons & 0xff) ;
+   report.data[13] = (_buttons & 0xff) ;
    report.length = 8;
 #endif
 
 #if (BUTTONS32 == 1)               
 //Use 4 bit padding for hat4 or hat8
-   report.data[6] = (_hat & 0x0f) ;
+   report.data[12] = (_hat & 0x0f) ;
 
 //No bit padding for 32 buttons                                         
-   report.data[7] = (_buttons >>  0) & 0xff;
-   report.data[8] = (_buttons >>  8) & 0xff;
-   report.data[9] = (_buttons >> 16) & 0xff;
-   report.data[10] = (_buttons >> 24) & 0xff;
-   report.length = 11;
+   report.data[13] = (_buttons >>  0) & 0xff;
+   report.data[14] = (_buttons >>  8) & 0xff;
+   report.data[15] = (_buttons >> 16) & 0xff;
+   report.data[16] = (_buttons >> 24) & 0xff;
+   report.length = 17;
 #endif
        
    return send(&report);
@@ -153,7 +159,7 @@
                  REPORT_SIZE(1), 0x10,  // REPORT_SIZE describes the number of bits in this element (16, in this case)
                  REPORT_COUNT(1), 0x06,
                  INPUT(1), 0x02,                 // Data, Variable, Absolute                
-               END_COLLECTION(0),               
+               END_COLLECTION(0),
 
 #if (HAT4 == 1)
 // 4 Position Hat Switch
@@ -173,7 +179,7 @@
                LOGICAL_MINIMUM(1), 0x00,       // 0
                LOGICAL_MAXIMUM(1), 0x07,       // 7
                PHYSICAL_MINIMUM(1), 0x00,      // Physical_Minimum (0)
-               PHYSICAL_MAXIMUM(2), 0x3B, 0x01, // Physical_Maximum (315)
+               PHYSICAL_MAXIMUM(2), 0x3B, 0x01, // Physical_Maximum (45 deg x (max of)7 = 315)
                UNIT(1), 0x14,                  // Unit (Eng Rot:Angular Pos)                            
                REPORT_SIZE(1), 0x04,
                REPORT_COUNT(1), 0x01,