Skip to content

Controller Lab 6/7: local DSU motion forwarding - #15

Open
slkass wants to merge 8 commits into
Brunovncs:mainfrom
slkass:pr/lab-06-dsu-motion
Open

slkass wants to merge 8 commits into
Brunovncs:mainfrom
slkass:pr/lab-06-dsu-motion

Conversation

@slkass

@slkass slkass commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Add an opt-in Cemuhook/DSU 1001 UDP server bound only to 127.0.0.1:26760. It supports up to four enabled controllers, port information, expiring subscriptions, CRC32, buttons/touch and motion in degrees/second and g. Lab displays server errors and active client counts.

A bounded worker keeps socket I/O and checksums off the input loop. Gyro/accelerometer sampling also works for native controllers. Stable per-device slots distinguish identical serial-less controllers and keep serialized USB/Bluetooth links together. No emulator installation is required to validate the protocol.

Dependencies and focused review

Stacked PR 6/7; depends on #14 and the earlier layers, starting with #9. All targets are upstream main, so GitHub's Files changed view currently includes unmerged dependencies. Review only this feature's incremental diff (commit f8ef881).

Merge in the order below. Preserve the shared commit ancestry when merging, or rebase the remaining branches after squash/rebase merges so already-merged layers disappear from their diffs.

  1. Controller Lab 1/7: DualSense trigger effects and timed trials #10 — DualSense trigger effects and timed trials
  2. Controller Lab 2/7: touchpad mouse and trackball #11 — touchpad mouse and trackball
  3. Controller Lab 3/7: Flick Stick and gyro mouse aiming #12 — Flick Stick and gyro mouse aiming
  4. Controller Lab 4/7: Hair Trigger, two-stage pulls and Hip Fire #13 — Hair Trigger, two-stage pulls and Hip Fire
  5. Controller Lab 5/7: configurable button debounce #14 — configurable button debounce
  6. Controller Lab 6/7: local DSU motion forwarding #15 — local DSU motion forwarding
  7. Controller Lab 7/7: dynamic lighting and matching touch feedback #16 — dynamic lighting and matching touch feedback

Validation

  • cargo fmt --all --check
  • cargo clippy --workspace --all-targets --release --locked -- -D warnings
  • cargo test --workspace --locked: 274 passed, 5 driver/manual tests ignored, zero failures (Windows x64).
  • Protocol unit tests cover packets, CRC, subscriptions and units; identity regression covers duplicate devices. SDL sensor -> UDP loopback validates units. A real DualSense probe received 345 packets in three seconds, with zero invalid CRC/sequence/timestamp packets and resting acceleration 0.909-1.049 g.

All new tools are disabled by default. No additional dependencies are added. Cross-platform CI results are reported by GitHub checks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant