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>
21 lines
909 B
Markdown
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).
|