diff options
| author | Daniel Thompson <daniel@redfelineninja.org.uk> | 2020-06-09 20:29:00 (GMT) |
|---|---|---|
| committer | Daniel Thompson <daniel@redfelineninja.org.uk> | 2020-06-09 20:31:55 (GMT) |
| commit | ccaf12750ba39fe0bc1fa6d2425ef2d1831ded9a (patch) | |
| tree | 4a34126a5afa06c1178527a9e9268396b17811db /wasp/apps/steps.py | |
| parent | dea2ba8d65f03c6c203f58d5db4bfdccda6f7c25 (diff) | |
wasp: apps: Step counter application
Currently there's no fancy algorithms to estimate stride length. Just
pure simple step counting directly from the hardware's "intelligence
engine".
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
Diffstat (limited to 'wasp/apps/steps.py')
| -rw-r--r-- | wasp/apps/steps.py | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/wasp/apps/steps.py b/wasp/apps/steps.py new file mode 100644 index 0000000..d114eff --- /dev/null +++ b/wasp/apps/steps.py @@ -0,0 +1,82 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# Copyright (C) 2020 Daniel Thompson + +import wasp + +import fonts +import icons +import time +import watch + +# 2-bit RLE, generated from res/feet.png, 240 bytes +feet = ( + b'\x02' + b'00' + b'\x13\xc1-\xc4+\xc6*\xc6*\xc6&\xc3\x01\xc6\t\xc2' + b'\x1b\xc3\x02\xc5\x08\xc4\x1a\xc4\x01\xc5\x08\xc5\x19\xc4\x02\xc3' + b'\x08\xc6\x17\xc1\x02\xc3\x02\xc3\x08\xc6\x16\xc3\x02\xc1\x0e\xc6' + b'\x01\xc3\x12\xc3\x11\xc6\x01\xc3\x13\xc2\x05\xc2\n\xc5\x02\xc3' + b'\x10\xc2\x01\xc2\x02\xc6\n\xc4\x01\xc4\x10\xc2\x04\xc7\x0b\xc1' + b'\x03\xc3\x11\xc3\x02\xc8\x10\xc2\x01\xc3\r\xc2\x02\xc9\x13\xc3' + b'\x0b\xc1\x05\xc9\x0c\xc2\x05\xc3\x0b\xc2\x03\xc9\x0c\xc5\x03\xc2' + b'\x0c\xc2\x02\xca\x0c\xc6\x05\xc2\t\xc2\x02\xca\x0c\xc7\x03\xc3' + b'\r\xca\x0c\xc8\x02\xc3\x0c\xca\r\xc9\x02\xc1\r\xca\r\xc9' + b'\x04\xc2\n\xca\x0e\xc9\x02\xc3\n\xca\x0e\xc9\x02\xc2\x0b\xca' + b'\x0e\xca\x0e\xca\x0e\xca\x0f\xc9\x0e\xca\x0f\xca\r\xca\x0f\xca' + b'\r\xca\x10\xcb\x0b\xca\x10\xcc\n\xca\x10\xcd\t\xca\x11\xcc' + b'\x08\xca\x12\xcc\x07\xcb\x13\xcb\x06\xcb\x14\xcb\x05\xcc\x15\xca' + b'\x04\xcc\x16\xc9\x05\xcc\x17\xc7\x05\xcd\x17\xc7\x05\xcc\x1a\xc4' + b"\x07\xcb%\xca&\xca'\xc8)\xc6+\xc4\x0e" +) + +class StepCounterApp(): + NAME = 'Steps' + ICON = icons.app + + def __init__(self): + watch.accel.reset() + self._meter = wasp.widgets.BatteryMeter() + self._count = 0 + + def foreground(self): + """Activate the application.""" + self._last_clock = ( -1, -1, -1, -1, -1, -1 ) + + self._draw() + wasp.system.request_tick(1000) + + def tick(self, ticks): + self._count += 686; + self._update() + + def _draw(self): + """Draw the display from scratch.""" + draw = wasp.watch.drawable + draw.fill() + draw.blit(feet, 12, 132-24) + + self._last_count = -1 + self._update() + self._meter.draw() + + def _update(self): + draw = wasp.watch.drawable + + # Lazy update of the clock and battery meter + now = wasp.watch.rtc.get_localtime() + if now[4] != self._last_clock[4]: + t1 = '{:02}:{:02}'.format(now[3], now[4]) + draw.set_font(fonts.sans24) + draw.string(t1, 48, 16, 240-96) + self._last_clock = now + self._meter.update() + + if now[2] != self._last_clock[2]: + watch.accel.steps = 0 + draw.fill(60, 132-18, 180, 36) + + count = watch.accel.steps + t = str(count) + w = fonts.width(fonts.sans36, t) + draw.set_font(fonts.sans36) + draw.string(t, 228-w, 132-18) |
