From 2e909d6217ddfe9caec8be9195bd23ae2555ac72 Mon Sep 17 00:00:00 2001 From: zaubentrucker <frederik.menke@rwth-aachen.de> Date: Thu, 20 Feb 2025 20:04:37 +0100 Subject: [PATCH] Fix up sync gamepad code --- red/src/gamepad.rs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/red/src/gamepad.rs b/red/src/gamepad.rs index a5f9c31..7582f7c 100644 --- a/red/src/gamepad.rs +++ b/red/src/gamepad.rs @@ -26,10 +26,12 @@ pub enum GamepadEvent { /// Example: /// ```rust /// -/// let jogger = jogger::Jogger::new().await.unwrap(); +/// use red::gamepad; +/// let mut jogger = gamepad::Gamepad::new().unwrap(); /// loop { -/// tokio::time::sleep(Duration::from_secs(2)).await; -/// let setpoint = jogger.speed_setpoint(); +/// std::thread::sleep(std::time::Duration::from_secs(2)); +/// let events = jogger.get_pending(); +/// let setpoint = jogger.speed_set_point(&events); /// println!( /// "speed setpoint: {} {} {}", /// setpoint.0, setpoint.1, setpoint.2 @@ -68,29 +70,28 @@ impl Gamepad { .and_then(|event| Self::map_event(event)) } - // Get all `GamepadEvent`s since the last call + /// Get all `GamepadEvent`s since the last call pub fn get_pending(&mut self) -> Vec<GamepadEvent> { (0..).map_while(|_| self.get_next()).collect() } - /// Update the current speed via the movements on the controller and return the current setpoint + /// Update the current speed via the movements on the controller and return the current set + /// point /// /// If you don't want to update, just supply an empty `updates` slice - pub fn speed_setpoint(&mut self, updates: &[GamepadEvent]) -> (f32, f32, f32) { + pub fn speed_set_point(&mut self, updates: &[GamepadEvent]) -> (f32, f32, f32) { for event in updates { match event { GamepadEvent::TerminatePressed => break, GamepadEvent::AxisPosition(axis, value) => { - // I won't panic if you don't panic! - let mut speed_setpoint = self.speed_setpoint; match axis { - Axis::X => speed_setpoint.0 = *value, - Axis::Y => speed_setpoint.1 = *value, + Axis::X => self.speed_setpoint.0 = *value, + Axis::Y => self.speed_setpoint.1 = *value, Axis::ZPositive => { - speed_setpoint.2 = *value; + self.speed_setpoint.2 = *value; } Axis::ZNegative => { - speed_setpoint.3 = *value; + self.speed_setpoint.3 = *value; } } }