|
@@ -86,6 +86,7 @@ just points at the `OpenPuck` directory). Modules are layered low → high:
|
|
|
| `webusb_config.{h,cpp}` | The WebUSB binary config channel for the browser panel. |
|
|
| `webusb_config.{h,cpp}` | The WebUSB binary config channel for the browser panel. |
|
|
|
| `serial_console.{h,cpp}` | The CDC single-letter debug command line. |
|
|
| `serial_console.{h,cpp}` | The CDC single-letter debug command line. |
|
|
|
| `wake_hid.{h,cpp}` | A boot-mouse HID interface added to the clean controller modes so the host honors USB remote-wakeup (see "Wake from sleep"). |
|
|
| `wake_hid.{h,cpp}` | A boot-mouse HID interface added to the clean controller modes so the host honors USB remote-wakeup (see "Wake from sleep"). |
|
|
|
|
|
+| `status_led.{h,cpp}` | Wake-armed LED indicator: a short blip every ~2s while the host is suspended, dark otherwise. Drives both the Feather user LED (P1.15) and the SuperMini clone's blue LED (P0.15); pins/polarity overridable. |
|
|
|
|
|
|
|
|
## The controller abstraction
|
|
## The controller abstraction
|
|
|
|
|
|
|
@@ -219,6 +220,9 @@ graze and nearly impossible to keep asleep. The only wake triggers are a **Steam
|
|
|
because some hosts ignore a bare resume signal unless real keyboard/mouse input follows it; it can't be
|
|
because some hosts ignore a bare resume signal unless real keyboard/mouse input follows it; it can't be
|
|
|
sent *during* suspend (reports can't cross a suspended bus), so it's delivered immediately after resume.
|
|
sent *during* suspend (reports can't cross a suspended bus), so it's delivered immediately after resume.
|
|
|
|
|
|
|
|
|
|
+The wake-armed state is visible on the board LED: a short blip every ~2 s while the host is suspended, dark in
|
|
|
|
|
+normal operation (`status_led.cpp`).
|
|
|
|
|
+
|
|
|
Every mode advertises the remote-wakeup capability in its config descriptor, so the device is always *armed*.
|
|
Every mode advertises the remote-wakeup capability in its config descriptor, so the device is always *armed*.
|
|
|
The catch is that a host only *honors* a resume from an allow-listed input device class (HID keyboard/mouse) —
|
|
The catch is that a host only *honors* a resume from an allow-listed input device class (HID keyboard/mouse) —
|
|
|
a bare gamepad/vendor/composite presentation gets armed but ignored (notably Windows under Modern Standby).
|
|
a bare gamepad/vendor/composite presentation gets armed but ignored (notably Windows under Modern Standby).
|