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: mbed FastIO FastPWM USBDevice
Diff: USBJoystick/USBJoystick.cpp
- Revision:
- 86:e30a1f60f783
- Parent:
- 82:4f6209cb5c33
- Child:
- 87:8d35c74403af
diff -r 3c28aee81cde -r e30a1f60f783 USBJoystick/USBJoystick.cpp
--- a/USBJoystick/USBJoystick.cpp Fri Apr 14 17:56:54 2017 +0000
+++ b/USBJoystick/USBJoystick.cpp Fri Apr 21 18:50:37 2017 +0000
@@ -94,7 +94,7 @@
}
bool USBJoystick::sendPlungerStatus(
- int npix, int edgePos, int dir, uint32_t avgScanTime, uint32_t processingTime)
+ int npix, int edgePos, int flags, uint32_t avgScanTime, uint32_t processingTime)
{
HID_REPORT report;
@@ -116,15 +116,11 @@
put(ofs, uint16_t(edgePos));
ofs += 2;
- // write the flags to byte 7
+ // Add the calibration mode flag if applicable
extern bool plungerCalMode;
- uint8_t flags = 0;
- if (dir == 1)
- flags |= 0x01;
- else if (dir == -1)
- flags |= 0x02;
- if (plungerCalMode)
- flags |= 0x04;
+ if (plungerCalMode) flags |= 0x04;
+
+ // write the flags to byte 7
report.data[ofs++] = flags;
// write the average scan time in 10us intervals to bytes 8-10
@@ -144,6 +140,57 @@
return sendTO(&report, 100);
}
+bool USBJoystick::sendPlungerStatus2(
+ int nativeScale,
+ int jitterLo, int jitterHi, int rawPos,
+ int axcTime)
+{
+ HID_REPORT report;
+ memset(report.data, 0, sizeof(report.data));
+
+ // Set the special status bits to indicate it's an extended
+ // exposure report.
+ put(0, 0x87FF);
+
+ // start at the second byte
+ int ofs = 2;
+
+ // write the report subtype (1) to byte 2
+ report.data[ofs++] = 1;
+
+ // write the native scale to bytes 3:4
+ put(ofs, uint16_t(nativeScale));
+ ofs += 2;
+
+ // limit the jitter filter bounds to the native scale
+ if (jitterLo < 0)
+ jitterLo = 0;
+ else if (jitterLo > nativeScale)
+ jitterLo = nativeScale;
+ if (jitterHi < 0)
+ jitterHi = 0;
+ else if (jitterHi > nativeScale)
+ jitterHi = nativeScale;
+
+ // write the jitter filter window bounds to 5:6 and 7:8
+ put(ofs, uint16_t(jitterLo));
+ ofs += 2;
+ put(ofs, uint16_t(jitterHi));
+ ofs += 2;
+
+ // add the raw position
+ put(ofs, uint16_t(rawPos));
+ ofs += 2;
+
+ // add the auto-exposure time
+ put(ofs, uint16_t(axcTime));
+ ofs += 2;
+
+ // send the report
+ report.length = reportLen;
+ return sendTO(&report, 100);
+}
+
bool USBJoystick::sendPlungerPix(int &idx, int npix, const uint8_t *pix)
{
HID_REPORT report;