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.
Dependencies: FastIO FastPWM SimpleDMA mbed
Fork of Pinscape_Controller by
Diff: USBJoystick/USBJoystick.cpp
- Revision:
- 11:bd9da7088e6e
- Parent:
- 10:976666ffa4ef
- Child:
- 21:5048e16cc9ef
diff -r 976666ffa4ef -r bd9da7088e6e USBJoystick/USBJoystick.cpp
--- a/USBJoystick/USBJoystick.cpp Sat Aug 23 01:24:36 2014 +0000
+++ b/USBJoystick/USBJoystick.cpp Tue Aug 26 22:24:54 2014 +0000
@@ -20,30 +20,34 @@
#include "stdint.h"
#include "USBJoystick.h"
-bool USBJoystick::update(int16_t x, int16_t y, int16_t z, uint16_t buttons, uint16_t status)
+bool USBJoystick::update(int16_t x, int16_t y, int16_t z, uint32_t buttons, uint16_t status)
{
_x = x;
_y = y;
_z = z;
- _buttons = buttons;
+ _buttonsLo = (uint16_t)(buttons & 0xffff);
+ _buttonsHi = (uint16_t)((buttons >> 16) & 0xffff);
_status = status;
// send the report
return update();
}
-bool USBJoystick::update() {
+const int reportLen = 14;
+bool USBJoystick::update()
+{
HID_REPORT report;
-
+
// Fill the report according to the Joystick Descriptor
#define put(idx, val) (report.data[idx] = (val) & 0xff, report.data[(idx)+1] = ((val) >> 8) & 0xff)
put(0, _status);
put(2, 0); // second byte of status isn't used in normal reports
- put(4, _buttons);
- put(6, _x);
- put(8, _y);
- put(10, _z);
- report.length = 12;
+ put(4, _buttonsLo);
+ put(6, _buttonsHi);
+ put(8, _x);
+ put(10, _y);
+ put(12, _z);
+ report.length = reportLen;
// send the report
return sendTO(&report, 100);
@@ -60,7 +64,7 @@
put(0, s);
// now fill out the remaining words with exposure values
- report.length = 12;
+ report.length = reportLen;
for (int ofs = 2 ; ofs + 1 < report.length ; ofs += 2)
{
uint16_t p = (idx < npix ? pix[idx++] : 0);
@@ -82,8 +86,9 @@
return update();
}
-bool USBJoystick::buttons(uint16_t buttons) {
- _buttons = buttons;
+bool USBJoystick::buttons(uint32_t buttons) {
+ _buttonsLo = (uint16_t)(buttons & 0xffff);
+ _buttonsHi = (uint16_t)((buttons >> 16) & 0xffff);
return update();
}
@@ -93,7 +98,8 @@
_x = 0;
_y = 0;
_z = 0;
- _buttons = 0x0000;
+ _buttonsLo = 0x0000;
+ _buttonsHi = 0x0000;
_status = 0;
}
@@ -140,11 +146,11 @@
USAGE_PAGE(1), 0x09, // Buttons
USAGE_MINIMUM(1), 0x01, // { buttons }
- USAGE_MAXIMUM(1), 0x10, // { 1-16 }
+ USAGE_MAXIMUM(1), 0x20, // { 1-32 }
LOGICAL_MINIMUM(1), 0x00, // 1-bit buttons - 0...
LOGICAL_MAXIMUM(1), 0x01, // ...to 1
REPORT_SIZE(1), 0x01, // 1 bit per report
- REPORT_COUNT(1), 0x10, // 16 reports
+ REPORT_COUNT(1), 0x20, // 32 reports
UNIT_EXPONENT(1), 0x00, // Unit_Exponent (0)
UNIT(1), 0x00, // Unit (None)
INPUT(1), 0x02, // Data, Variable, Absolute
