Files
CydandClaude Opus 4.8 2deeb374ae Verify HID feeder end-to-end; add smoke-test tool; update docs
The RioGamepad driver now installs and enumerates, so the user-mode
feeder path is verifiable. Add tools/RioJoySmokeTest, a standalone
on-cabinet utility that drives the real HidFeederJoystickSink (open the
device, submit reports via IOCTL_RIO_SUBMIT_REPORT) and reads the gamepad
back through winmm joyGetPosEx, asserting axes (min/mid/max), buttons,
and the POV hat all surface to the OS. Verified: all checks pass against
the installed driver.

Update docs to match reality (PLAN.md predated the HidFeederJoystickSink
commit): Phase 1 is now test-signed/installed/verified with the VHF
LowerFilters requirement noted; the stale "NullJoystickSink placeholder"
remainders in Phases 3 and 5 are corrected to reflect the wired,
verified feeder. driver/README.md notes the end-to-end verification.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 23:56:16 -05:00

21 lines
909 B
Markdown

# RioJoySmokeTest
On-cabinet verification that the **virtual gamepad path works end to end**: it
drives the real [`HidFeederJoystickSink`](../../src/RioJoy.Core/Output/HidFeederJoystickSink.cs)
(open the RioGamepad device → submit reports via `IOCTL_RIO_SUBMIT_REPORT`) and
reads the gamepad back through `winmm joyGetPosEx`, the same data `joy.cpl` and a
game would see. It checks the six axes (min/mid/max), buttons, and the POV hat.
This is **not** part of `RioJoy.sln` and not a unit test — it needs the signed
driver actually installed (see [`driver/README.md`](../../driver/README.md)), so
it only passes on a machine where the RioGamepad device is present.
## Run
```cmd
dotnet run --project tools/RioJoySmokeTest -c Release
```
Exit codes: `0` all checks passed · `1` a check failed · `2` driver or joystick
not found (driver not installed, or device not started — check Device Manager).