From 03b574ae2272fc8465e7d38f21b198fcb1885186 Mon Sep 17 00:00:00 2001 From: german Date: Thu, 17 Sep 2020 20:26:34 -0500 Subject: Add random motion input to SDL --- src/input_common/motion_input.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/input_common/motion_input.h') diff --git a/src/input_common/motion_input.h b/src/input_common/motion_input.h index 54b4439d9..12b7d0d3f 100644 --- a/src/input_common/motion_input.h +++ b/src/input_common/motion_input.h @@ -7,6 +7,7 @@ #include "common/common_types.h" #include "common/quaternion.h" #include "common/vector_math.h" +#include "core/frontend/input.h" namespace InputCommon { @@ -37,6 +38,8 @@ public: Common::Vec3f GetGyroscope() const; Common::Vec3f GetRotations() const; Common::Quaternion GetQuaternion() const; + Input::MotionStatus GetMotion() const; + Input::MotionStatus GetRandomMotion(int accel_magnitude, int gyro_magnitude) const; bool IsMoving(f32 sensitivity) const; bool IsCalibrated(f32 sensitivity) const; -- cgit v1.2.3 From a220d8799ed332c1d8f2231b18079b1210511bcd Mon Sep 17 00:00:00 2001 From: german Date: Sat, 3 Oct 2020 22:22:01 -0500 Subject: Add compatibility with only accelerometer and auto calibrate for drift --- src/input_common/motion_input.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/input_common/motion_input.h') diff --git a/src/input_common/motion_input.h b/src/input_common/motion_input.h index 54b4439d9..f6c1fece7 100644 --- a/src/input_common/motion_input.h +++ b/src/input_common/motion_input.h @@ -29,8 +29,8 @@ public: void EnableReset(bool reset); void ResetRotations(); - void UpdateRotation(u64 elapsed_time); - void UpdateOrientation(u64 elapsed_time); + void UpdateRotation(const u64 elapsed_time); + void UpdateOrientation(const u64 elapsed_time); std::array GetOrientation() const; Common::Vec3f GetAcceleration() const; @@ -43,6 +43,7 @@ public: private: void ResetOrientation(); + void SetOrientationFromAccelerometer(); // PID constants const f32 kp; @@ -63,6 +64,7 @@ private: f32 gyro_threshold = 0.0f; u32 reset_counter = 0; bool reset_enabled = true; + bool only_accelerometer = true; }; } // namespace InputCommon -- cgit v1.2.3 From a54aee290ff8f94d1fefc70121512dbc46f6c190 Mon Sep 17 00:00:00 2001 From: german Date: Sun, 4 Oct 2020 18:15:53 -0500 Subject: Address comments --- src/input_common/motion_input.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/input_common/motion_input.h') diff --git a/src/input_common/motion_input.h b/src/input_common/motion_input.h index f6c1fece7..c90ee64e5 100644 --- a/src/input_common/motion_input.h +++ b/src/input_common/motion_input.h @@ -29,8 +29,8 @@ public: void EnableReset(bool reset); void ResetRotations(); - void UpdateRotation(const u64 elapsed_time); - void UpdateOrientation(const u64 elapsed_time); + void UpdateRotation(u64 elapsed_time); + void UpdateOrientation(u64 elapsed_time); std::array GetOrientation() const; Common::Vec3f GetAcceleration() const; -- cgit v1.2.3 From 046c0c91a3ed665531f20955e7cfb86fe5b73213 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 14 Oct 2020 02:51:14 -0400 Subject: input_common/CMakeLists: Make some warnings errors Makes the input_common code warnings consistent with the rest of the codebase. --- src/input_common/motion_input.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/input_common/motion_input.h') diff --git a/src/input_common/motion_input.h b/src/input_common/motion_input.h index 6342d0318..abb957f04 100644 --- a/src/input_common/motion_input.h +++ b/src/input_common/motion_input.h @@ -22,7 +22,7 @@ public: MotionInput& operator=(MotionInput&&) = default; void SetAcceleration(const Common::Vec3f& acceleration); - void SetGyroscope(const Common::Vec3f& acceleration); + void SetGyroscope(const Common::Vec3f& gyroscope); void SetQuaternion(const Common::Quaternion& quaternion); void SetGyroDrift(const Common::Vec3f& drift); void SetGyroThreshold(f32 threshold); @@ -49,16 +49,16 @@ private: void SetOrientationFromAccelerometer(); // PID constants - const f32 kp; - const f32 ki; - const f32 kd; + f32 kp; + f32 ki; + f32 kd; // PID errors Common::Vec3f real_error; Common::Vec3f integral_error; Common::Vec3f derivative_error; - Common::Quaternion quat; + Common::Quaternion quat{{0.0f, 0.0f, -1.0f}, 0.0f}; Common::Vec3f rotations; Common::Vec3f accel; Common::Vec3f gyro; -- cgit v1.2.3 From cb826bcee74c393f5f13856bebfb9cb60ba51851 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 15 Nov 2020 14:18:09 -0500 Subject: motion_input: Mark member functions as [[nodiscard]] where applicable --- src/input_common/motion_input.h | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'src/input_common/motion_input.h') diff --git a/src/input_common/motion_input.h b/src/input_common/motion_input.h index abb957f04..ce7ab7f9b 100644 --- a/src/input_common/motion_input.h +++ b/src/input_common/motion_input.h @@ -33,16 +33,17 @@ public: void UpdateRotation(u64 elapsed_time); void UpdateOrientation(u64 elapsed_time); - std::array GetOrientation() const; - Common::Vec3f GetAcceleration() const; - Common::Vec3f GetGyroscope() const; - Common::Vec3f GetRotations() const; - Common::Quaternion GetQuaternion() const; - Input::MotionStatus GetMotion() const; - Input::MotionStatus GetRandomMotion(int accel_magnitude, int gyro_magnitude) const; - - bool IsMoving(f32 sensitivity) const; - bool IsCalibrated(f32 sensitivity) const; + [[nodiscard]] std::array GetOrientation() const; + [[nodiscard]] Common::Vec3f GetAcceleration() const; + [[nodiscard]] Common::Vec3f GetGyroscope() const; + [[nodiscard]] Common::Vec3f GetRotations() const; + [[nodiscard]] Common::Quaternion GetQuaternion() const; + [[nodiscard]] Input::MotionStatus GetMotion() const; + [[nodiscard]] Input::MotionStatus GetRandomMotion(int accel_magnitude, + int gyro_magnitude) const; + + [[nodiscard]] bool IsMoving(f32 sensitivity) const; + [[nodiscard]] bool IsCalibrated(f32 sensitivity) const; private: void ResetOrientation(); -- cgit v1.2.3 From 0a50ba3bd18b6227fda1dc066826eb9cc6948673 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 15 Nov 2020 14:20:41 -0500 Subject: motion_input: Mark constructor as explicit --- src/input_common/motion_input.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/input_common/motion_input.h') diff --git a/src/input_common/motion_input.h b/src/input_common/motion_input.h index ce7ab7f9b..efe74cf19 100644 --- a/src/input_common/motion_input.h +++ b/src/input_common/motion_input.h @@ -13,7 +13,7 @@ namespace InputCommon { class MotionInput { public: - MotionInput(f32 new_kp, f32 new_ki, f32 new_kd); + explicit MotionInput(f32 new_kp, f32 new_ki, f32 new_kd); MotionInput(const MotionInput&) = default; MotionInput& operator=(const MotionInput&) = default; -- cgit v1.2.3