chore(inject): post-extraction sweep (3.3)
Drop the vestigial Ds4Feedback.hidout field (parse_ds4_output never filled it and neither DS4 manager read it — the lightbar rides the led field, now converted to a HidOutput::Led by the protos) and its now-unused HidOutput import; refresh the pad_gate module doc (managers now drive it via pad_slots). Verified: .21 clippy --all-targets -D warnings + full suite 290 pass / 0 fail + cargo fmt --check clean; .133 clippy --all-targets -D warnings EXITCODE 0. Part of G12/3.3 (§3a.4 commit 10) — extraction complete. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -506,8 +506,9 @@ pub mod gamepad;
|
|||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
#[path = "inject/windows/gamepad_raii.rs"]
|
#[path = "inject/windows/gamepad_raii.rs"]
|
||||||
mod gamepad_raii;
|
mod gamepad_raii;
|
||||||
/// Shared virtual-pad creation-retry policy ([`pad_gate::PadGate`]) used by every backend manager on
|
/// Shared virtual-pad creation-retry policy ([`pad_gate::PadGate`]), driven by [`pad_slots`] for
|
||||||
/// both platforms — replaces the per-backend permanent `broken` latch with capped-backoff retry.
|
/// every backend manager — replaces the per-backend permanent `broken` latch with capped-backoff
|
||||||
|
/// retry.
|
||||||
#[cfg(any(target_os = "linux", target_os = "windows"))]
|
#[cfg(any(target_os = "linux", target_os = "windows"))]
|
||||||
#[path = "inject/pad_gate.rs"]
|
#[path = "inject/pad_gate.rs"]
|
||||||
pub mod pad_gate;
|
pub mod pad_gate;
|
||||||
@@ -517,12 +518,6 @@ pub mod pad_gate;
|
|||||||
#[cfg(any(target_os = "linux", target_os = "windows"))]
|
#[cfg(any(target_os = "linux", target_os = "windows"))]
|
||||||
#[path = "inject/pad_slots.rs"]
|
#[path = "inject/pad_slots.rs"]
|
||||||
pub mod pad_slots;
|
pub mod pad_slots;
|
||||||
/// The generic stateful virtual-pad manager ([`uhid_manager::UhidManager`]) — event routing, frame
|
|
||||||
/// merge, heartbeat, and feedback pump shared by the five UHID/UMDF backends; each supplies only
|
|
||||||
/// its per-controller protocol via [`uhid_manager::PadProto`] (G12).
|
|
||||||
#[cfg(any(target_os = "linux", target_os = "windows"))]
|
|
||||||
#[path = "inject/uhid_manager.rs"]
|
|
||||||
pub mod uhid_manager;
|
|
||||||
/// Linux: virtual Steam Deck via UHID — the kernel `hid-steam` driver binds it as a real Deck.
|
/// Linux: virtual Steam Deck via UHID — the kernel `hid-steam` driver binds it as a real Deck.
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
#[path = "inject/linux/steam_controller.rs"]
|
#[path = "inject/linux/steam_controller.rs"]
|
||||||
@@ -550,6 +545,12 @@ pub mod steam_remap;
|
|||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
#[path = "inject/linux/steam_usbip.rs"]
|
#[path = "inject/linux/steam_usbip.rs"]
|
||||||
pub mod steam_usbip;
|
pub mod steam_usbip;
|
||||||
|
/// The generic stateful virtual-pad manager ([`uhid_manager::UhidManager`]) — event routing, frame
|
||||||
|
/// merge, heartbeat, and feedback pump shared by the five UHID/UMDF backends; each supplies only
|
||||||
|
/// its per-controller protocol via [`uhid_manager::PadProto`] (G12).
|
||||||
|
#[cfg(any(target_os = "linux", target_os = "windows"))]
|
||||||
|
#[path = "inject/uhid_manager.rs"]
|
||||||
|
pub mod uhid_manager;
|
||||||
/// Stub — virtual gamepads need Linux uinput or the Windows UMDF drivers; events are dropped elsewhere.
|
/// Stub — virtual gamepads need Linux uinput or the Windows UMDF drivers; events are dropped elsewhere.
|
||||||
#[cfg(not(any(target_os = "linux", target_os = "windows")))]
|
#[cfg(not(any(target_os = "linux", target_os = "windows")))]
|
||||||
pub mod gamepad {
|
pub mod gamepad {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
//! dualshock4_input_report_usb` / `_output_report_common` parse.
|
//! dualshock4_input_report_usb` / `_output_report_common` parse.
|
||||||
|
|
||||||
use super::dualsense_proto::{DsState, Touch};
|
use super::dualsense_proto::{DsState, Touch};
|
||||||
use punktfunk_core::quic::HidOutput;
|
|
||||||
|
|
||||||
/// DualShock 4 v2 USB identity (Sony Interactive Entertainment / CUH-ZCT2).
|
/// DualShock 4 v2 USB identity (Sony Interactive Entertainment / CUH-ZCT2).
|
||||||
pub const DS4_VENDOR: u16 = 0x054C;
|
pub const DS4_VENDOR: u16 = 0x054C;
|
||||||
@@ -73,11 +72,10 @@ pub fn serialize_state(r: &mut [u8; DS4_INPUT_REPORT_LEN], st: &DsState, counter
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// What one feedback pass extracted from the device's HID output reports. Rumble rides the universal
|
/// What one feedback pass extracted from the device's HID output reports. Rumble rides the universal
|
||||||
/// 0xCA plane; the lightbar rides the HID-output 0xCD plane (DS4 has no player LEDs or adaptive
|
/// 0xCA plane; the lightbar rides the HID-output 0xCD plane as a `Led` event (DS4 has no player LEDs
|
||||||
/// triggers, so those never appear).
|
/// or adaptive triggers, so those never appear).
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct Ds4Feedback {
|
pub struct Ds4Feedback {
|
||||||
pub hidout: Vec<HidOutput>,
|
|
||||||
/// `(low, high)` motor levels (0..=0xFF00), if a report carried them.
|
/// `(low, high)` motor levels (0..=0xFF00), if a report carried them.
|
||||||
pub rumble: Option<(u16, u16)>,
|
pub rumble: Option<(u16, u16)>,
|
||||||
/// Lightbar RGB, if the report carried it (deduped by the manager).
|
/// Lightbar RGB, if the report carried it (deduped by the manager).
|
||||||
|
|||||||
Reference in New Issue
Block a user