summaryrefslogtreecommitdiff
path: root/wasp/apps
diff options
context:
space:
mode:
authorDaniel Thompson <daniel@redfelineninja.org.uk>2020-05-17 08:45:16 (GMT)
committerDaniel Thompson <daniel@redfelineninja.org.uk>2020-05-17 08:45:16 (GMT)
commit4906d46ff42ec9ecec49de375677dd6654455845 (patch)
tree433bbeb01a0f2aa30b8e471e37d6465552e82191 /wasp/apps
parentc3bc8717277db06ab829387bab5ad280d886375c (diff)
apps: demo: Move the demo code into a fully fledged application
Diffstat (limited to 'wasp/apps')
-rw-r--r--wasp/apps/demo.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/wasp/apps/demo.py b/wasp/apps/demo.py
new file mode 100644
index 0000000..e71cfbe
--- /dev/null
+++ b/wasp/apps/demo.py
@@ -0,0 +1,72 @@
+# SPDX-License-Identifier: LGPL-3.0-or-later
+# Copyright (C) 2020 Daniel Thompson
+
+"""Logo demo for PineTime
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This demo is simply an alternating sweep of the Pine64 and
+MicroPython logos. It cycles through a variety of colours
+and swaps between the logos every 5 images (so if you change
+anything make sure len(colors) is not a multiple of 5).
+"""
+
+import wasp
+import logo
+import icons
+
+colors = (
+ 0xffff,
+ 0xf800, # red
+ 0xffff,
+ 0xffe0, # yellow
+ 0xffff,
+ 0x07e0, # green
+ 0xffff,
+ 0x07ff, # cyan
+ 0xffff,
+ 0x001f, # blue
+ 0xffff,
+ 0xf81f, # magenta
+ )
+
+class DemoApp():
+ """Application for live demos.
+
+ Start this to give the watch something "interesting" to do when talking
+ over demos!
+ """
+ NAME = 'Demo'
+ ICON = icons.app
+
+ def __init__(self):
+ self._logo = logo.pine64
+ self._color = 0
+ self._i = 0
+
+ def foreground(self):
+ """Draw the first frame and establish the tick."""
+ self._draw()
+ wasp.system.request_tick(2000)
+
+ def tick(self, ticks):
+ """Handle the tick."""
+ self._draw()
+ wasp.system.keep_awake()
+
+ def _draw(self):
+ """Draw the next frame."""
+ draw = wasp.watch.drawable
+
+ if self._i < 5:
+ self._i += 1
+ else:
+ self._i = 0
+ if self._logo == logo.pine64:
+ self._logo = logo.micropython
+ else:
+ self._logo = logo.pine64
+ draw.fill()
+ draw.rleblit(self._logo, fg=colors[self._color])
+ self._color += 1
+ if self._color >= len(colors):
+ self._color = 0