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.pager import PagerApp, CrashApp, NotificationApp
|
||||||
from apps.steps import StepCounterApp
|
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():
|
class EventType():
|
||||||
"""Enumerated interface actions.
|
"""Enumerated interface actions.
|
||||||
|
|
||||||
|
@ -115,7 +121,8 @@ class Manager():
|
||||||
self.weatherinfo = {}
|
self.weatherinfo = {}
|
||||||
self.units = "Metric"
|
self.units = "Metric"
|
||||||
self.raise_wake = False
|
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_ms = 100
|
||||||
self.accel_poll_expiry = 0
|
self.accel_poll_expiry = 0
|
||||||
|
|
||||||
|
@ -510,23 +517,24 @@ class Manager():
|
||||||
|
|
||||||
y = -y
|
y = -y
|
||||||
|
|
||||||
if (x + 335) <= 670 and z < 0:
|
if self.raise_wake_last_y == sys.maxsize:
|
||||||
if self.sleep_at:
|
self.raise_wake_last_y = y
|
||||||
if y <= 0:
|
self.raise_wake_last_z = z
|
||||||
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
|
|
||||||
|
|
||||||
return False
|
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):
|
def run(self, no_except=True):
|
||||||
"""Run the system manager synchronously.
|
"""Run the system manager synchronously.
|
||||||
|
|
Loading…
Reference in a new issue