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;
                         }
                     }
                 }