Improve raise-to-wake algorithm
From <https://github.com/InfiniTimeOrg/InfiniTime/pull/826>, with constants tuned a bit for my personal preference.
This commit is contained in:
parent
244230bad9
commit
bb8f651481
42
wasp/wasp.py
42
wasp/wasp.py
|
@ -26,6 +26,12 @@ from apps.launcher import LauncherApp
|
|||
from apps.pager import PagerApp, CrashApp, NotificationApp
|
||||
from apps.steps import StepCounterApp
|
||||
|
||||
RAISE_WAKE_Y_SWITCH_THRESHOLD = -1536
|
||||
RAISE_WAKE_SPEED_MODIFIER = 8
|
||||
RAISE_WAKE_X_THRESHOLD = 512
|
||||
RAISE_WAKE_Y_THRESHOLD = 0
|
||||
RAISE_WAKE_REQUIRED_SPEED = 512
|
||||
|
||||
class EventType():
|
||||
"""Enumerated interface actions.
|
||||
|
||||
|
@ -115,7 +121,8 @@ class Manager():
|
|||
self.weatherinfo = {}
|
||||
self.units = "Metric"
|
||||
self.raise_wake = False
|
||||
self.last_raise_y = 0
|
||||
self.raise_wake_last_y = sys.maxsize
|
||||
self.raise_wake_last_z = sys.maxsize
|
||||
self.accel_poll_ms = 100
|
||||
self.accel_poll_expiry = 0
|
||||
|
||||
|
@ -510,23 +517,24 @@ class Manager():
|
|||
|
||||
y = -y
|
||||
|
||||
if (x + 335) <= 670 and z < 0:
|
||||
if self.sleep_at:
|
||||
if y <= 0:
|
||||
return False
|
||||
else:
|
||||
self.last_raise_y = 0
|
||||
return False
|
||||
|
||||
if y >= 0:
|
||||
self.last_raise_y = 0
|
||||
return False
|
||||
|
||||
if y + 230 < self.last_raise_y:
|
||||
self.last_raise_y = y
|
||||
return True
|
||||
|
||||
if self.raise_wake_last_y == sys.maxsize:
|
||||
self.raise_wake_last_y = y
|
||||
self.raise_wake_last_z = z
|
||||
return False
|
||||
|
||||
delta_y = y - self.raise_wake_last_y
|
||||
delta_z = z - self.raise_wake_last_z
|
||||
|
||||
self.raise_wake_last_y = y
|
||||
self.raise_wake_last_z = z
|
||||
|
||||
if y < RAISE_WAKE_Y_SWITCH_THRESHOLD:
|
||||
return delta_z > RAISE_WAKE_REQUIRED_SPEED
|
||||
|
||||
if z > 0:
|
||||
return delta_y > (RAISE_WAKE_REQUIRED_SPEED + (y - delta_y / 2) / RAISE_WAKE_SPEED_MODIFIER)
|
||||
|
||||
return delta_y < (-RAISE_WAKE_REQUIRED_SPEED - (y - delta_y / 2) / RAISE_WAKE_SPEED_MODIFIER)
|
||||
|
||||
def run(self, no_except=True):
|
||||
"""Run the system manager synchronously.
|
||||
|
|
Loading…
Reference in New Issue