From 3813eb29114d7c2fd73584c8a3a0ab89238bfe84 Mon Sep 17 00:00:00 2001 From: Daniel Thompson Date: Sun, 3 Jan 2021 14:59:14 +0000 Subject: [PATCH] manager: Enable Software by default Enabling software by default allows us disable several other applications by default because there is now a GUI based route to enable them. This does require a few tweaks to the test suite and allows allows us to remove a lot of boilerplate text from the application library document since it is no longer relavent. Signed-off-by: Daniel Thompson --- docs/apps.rst | 34 ------------------------ wasp/boards/manifest_240x240.py | 6 +++-- wasp/boards/simulator/main.py | 41 +++++++++++++++++------------ wasp/boards/simulator/test_smoke.py | 10 +++---- wasp/wasp.py | 14 ++++++---- 5 files changed, 42 insertions(+), 63 deletions(-) diff --git a/docs/apps.rst b/docs/apps.rst index f8779f0..ae9fb15 100644 --- a/docs/apps.rst +++ b/docs/apps.rst @@ -25,52 +25,18 @@ Watch faces .. automodule:: apps.chrono -This application is very simple and largely serves as an example of how to -implement traditional watch faces. -It is not included by default in any image. -Instead it can be transferred to the device dynamically using wasptool: - -.. code-block:: sh - - ./tools/wasptool --exec wasp/apps/chrono.py --eval 'wasp.system.register(ChronoApp())' - .. automodule:: apps.fibonacci_clock -This app is enabled by default in the simulator. -The app is also frozen into the firmware image but it is disabled by -default in order to keep RAM available for user developed applications. -It can be enabled by modifying ``main.py``. - Games ----- .. automodule:: apps.gameoflife -This app is enabled by default in the simulator. -The app is also frozen into the firmware image but it is disabled by -default in order to keep RAM available for user developed applications. -It can be enabled by modifying ``main.py``. - .. automodule:: apps.snake -This app is enabled by default in the simulator. -The app is also frozen into the firmware image but it is disabled by -default in order to keep RAM available for user developed applications. -It can be enabled by modifying ``main.py``. - Integration ----------- .. automodule:: apps.alarm -This app is enabled by default in the simulator. -The app is also frozen into the firmware image but it is disabled by -default in order to keep RAM available for user developed applications. -It can be enabled by modifying ``main.py``. - .. automodule:: apps.musicplayer - -This app is enabled by default in the simulator. -The app is also frozen into the firmware image but it is disabled by -default in order to keep RAM available for user developed applications. -It can be enabled by modifying ``main.py``. diff --git a/wasp/boards/manifest_240x240.py b/wasp/boards/manifest_240x240.py index 6021df5..4d91566 100644 --- a/wasp/boards/manifest_240x240.py +++ b/wasp/boards/manifest_240x240.py @@ -4,19 +4,21 @@ manifest = ( 'apps/alarm.py', + 'apps/calc.py', 'apps/clock.py', + 'apps/chrono.py', + 'apps/fibonacci_clock.py', 'apps/flashlight.py', 'apps/gameoflife.py', 'apps/haiku.py', 'apps/heart.py', 'apps/musicplayer.py', - 'apps/calc.py', 'apps/launcher.py', 'apps/pager.py', 'apps/settings.py', + 'apps/software.py', 'apps/steps.py', 'apps/stopwatch.py', - 'apps/fibonacci_clock.py', 'apps/snake.py', 'apps/testapp.py', 'fonts/__init__.py', diff --git a/wasp/boards/simulator/main.py b/wasp/boards/simulator/main.py index ea943f3..bd43d4e 100644 --- a/wasp/boards/simulator/main.py +++ b/wasp/boards/simulator/main.py @@ -3,26 +3,33 @@ import wasp -from apps.alarm import AlarmApp -wasp.system.register(AlarmApp()) - -from apps.fibonacci_clock import FibonacciClockApp -wasp.system.register(FibonacciClockApp()) - -from apps.gameoflife import GameOfLifeApp -wasp.system.register(GameOfLifeApp()) - -from apps.snake import SnakeGameApp -wasp.system.register(SnakeGameApp()) - -from apps.calc import CalculatorApp -wasp.system.register(CalculatorApp()) - -from apps.musicplayer import MusicPlayerApp -wasp.system.register(MusicPlayerApp()) +# Ensure there's something interesting to look at ;-) wasp.system.set_music_info({ 'track': 'Tasteless Brass Duck', 'artist': 'Dreams of Bamboo', }) +# Instantiate the analogue clock application and replace the default +# (digital) clock with this alternative. +#from chrono import ChronoApp +#clock = wasp.system.quick_ring[0] +#wasp.system.quick_ring[0] = ChronoApp() +#wasp.system.switch(wasp.system.quick_ring[0]) +#wasp.system.register(clock) + +# Adopt a basic all-orange theme +#wasp.system.set_theme( +# b'\xff\x00' # ble +# b'\xff\x00' # scroll-indicator +# b'\xff\x00' # battery +# b'\xff\x00' # status-clock +# b'\xff\x00' # notify-icon +# b'\xff\x00' # bright +# b'\xbe\xe0' # mid +# b'\xff\x00' # ui +# b'\xff\x00' # spot1 +# b'\xff\x00' # spot2 +# b'\x00\x0f' # contrast +# ) + wasp.system.run() diff --git a/wasp/boards/simulator/test_smoke.py b/wasp/boards/simulator/test_smoke.py index 26e4318..50636d0 100644 --- a/wasp/boards/simulator/test_smoke.py +++ b/wasp/boards/simulator/test_smoke.py @@ -1,6 +1,7 @@ import pytest import time import wasp +import apps.testapp def step(): wasp.system._tick() @@ -36,12 +37,11 @@ def test_quick_ring(system): def test_launcher_ring(system): names = [ x.NAME for x in system.launcher_ring ] - assert('Self Test' in names) assert('Settings' in names) - assert('Torch' in names) + assert('Software' in names) @pytest.mark.parametrize("name", - ('Steps', 'Timer', 'Heart', 'Self Test', 'Settings', 'Torch')) + ('Steps', 'Timer', 'Heart', 'Settings', 'Software')) def test_app(system, name): system.switch(system.apps[name]) for i in range(4): @@ -101,7 +101,7 @@ def test_selftests(system): will do something useful! For example it will run the benchmark for every one of the benchmark tests. """ - system.switch(system.apps['Self Test']) + system.switch(apps.testapp.TestApp()) system.step() start_point = system.app.test @@ -115,7 +115,7 @@ def test_selftests(system): assert(start_point == system.app.test) def test_selftest_crash(system): - system.switch(system.apps['Self Test']) + system.switch(apps.testapp.TestApp()) system.step() def select(name): diff --git a/wasp/wasp.py b/wasp/wasp.py index de572e5..79f706c 100644 --- a/wasp/wasp.py +++ b/wasp/wasp.py @@ -21,14 +21,13 @@ import watch import widgets from apps.clock import ClockApp -from apps.flashlight import FlashlightApp from apps.heart import HeartApp from apps.launcher import LauncherApp from apps.pager import PagerApp, CrashApp, NotificationApp from apps.settings import SettingsApp from apps.steps import StepCounterApp +from apps.software import SoftwareApp from apps.stopwatch import StopwatchApp -from apps.testapp import TestApp class EventType(): """Enumerated interface actions. @@ -151,9 +150,8 @@ class Manager(): (StepCounterApp, True), (StopwatchApp, True), (HeartApp, True), - (FlashlightApp, False), - (SettingsApp, False), - (TestApp, False) ): + (SoftwareApp, False), + (SettingsApp, False) ): try: self.register(app(), qr) except: @@ -172,6 +170,12 @@ class Manager(): self.launcher_ring.append(app) self.launcher_ring.sort(key = _key_app) + def unregister(self, cls): + for app in self.launcher_ring: + if instanceof(app, cls): + self.launcher_ring.remove(app) + break + @property def brightness(self): """Cached copy of the brightness current written to the hardware."""