aboutsummaryrefslogtreecommitdiffstats
path: root/src/components
diff options
context:
space:
mode:
authorIsaac <114504394+ic-27@users.noreply.github.com>2023-06-17 15:37:53 +0000
committerGitHub <noreply@github.com>2023-06-17 17:37:53 +0200
commit9e128c838e8447049264ac4e9e6c882053ed4229 (patch)
treeb7cf9f752df5403b0f63b1d859a8295502c7ceed /src/components
parentf057894d2670712c316f69bd9aa3a66275a8b3e5 (diff)
ShakeWake: Fixed instant wake after sleep issue in certain positions (#1691)
* ShakeWake: Fixed instant wake after sleep issue in certain positions Add lastX var to track the previous x acceleration for correct calculation of speed. Reorder axes for clarity. --------- Co-authored-by: Isaac <114504394+isaacc27@users.noreply.github.com> Co-authored-by: FintasticMan <52415484+FintasticMan@users.noreply.github.com>
Diffstat (limited to 'src/components')
-rw-r--r--src/components/motion/MotionController.cpp3
-rw-r--r--src/components/motion/MotionController.h1
2 files changed, 3 insertions, 1 deletions
diff --git a/src/components/motion/MotionController.cpp b/src/components/motion/MotionController.cpp
index 9d16e00d..ef3cf811 100644
--- a/src/components/motion/MotionController.cpp
+++ b/src/components/motion/MotionController.cpp
@@ -16,6 +16,7 @@ void MotionController::Update(int16_t x, int16_t y, int16_t z, uint32_t nbSteps)
lastTime = time;
time = xTaskGetTickCount();
+ lastX = this->x;
this->x = x;
lastY = this->y;
this->y = y;
@@ -53,7 +54,7 @@ bool MotionController::ShouldRaiseWake(bool isSleeping) {
bool MotionController::ShouldShakeWake(uint16_t thresh) {
/* Currently Polling at 10hz, If this ever goes faster scalar and EMA might need adjusting */
- int32_t speed = std::abs(z + (y / 2) + (x / 4) - lastY / 2 - lastZ) / (time - lastTime) * 100;
+ int32_t speed = std::abs(z - lastZ + (y / 2) - (lastY / 2) + (x / 4) - (lastX / 4)) / (time - lastTime) * 100;
//(.2 * speed) + ((1 - .2) * accumulatedSpeed);
// implemented without floats as .25Alpha
accumulatedSpeed = (speed / 5) + ((accumulatedSpeed / 5) * 4);
diff --git a/src/components/motion/MotionController.h b/src/components/motion/MotionController.h
index 87dbcd1f..c524fef3 100644
--- a/src/components/motion/MotionController.h
+++ b/src/components/motion/MotionController.h
@@ -67,6 +67,7 @@ namespace Pinetime {
TickType_t lastTime = 0;
TickType_t time = 0;
+ int16_t lastX = 0;
int16_t x = 0;
int16_t lastYForRaiseWake = 0;
int16_t lastY = 0;