diff --git a/modules/events/emote.py b/modules/events/emote.py new file mode 100644 index 0000000..baa5dca --- /dev/null +++ b/modules/events/emote.py @@ -0,0 +1,7 @@ +from events import Event + +class EmoteEvent(Event): ... + +class EmotePositiveEvent(EmoteEvent): ... + +class EmoteNegativeEvent(EmoteEvent): ... diff --git a/modules/firmware_apps/app_store.py b/modules/firmware_apps/app_store.py index 0dd1bd3..021d9f5 100644 --- a/modules/firmware_apps/app_store.py +++ b/modules/firmware_apps/app_store.py @@ -15,6 +15,7 @@ import shutil import machine from app_components import Menu, fourteen_pt, sixteen_pt, ten_pt +from events.emote import EmoteNegativeEvent, EmotePositiveEvent from events.input import BUTTON_TYPES, ButtonDownEvent from requests import get from system.eventbus import eventbus @@ -157,11 +158,13 @@ def install_app(self, app): self.update_state("main_menu") eventbus.emit(InstallNotificationEvent()) eventbus.emit(ShowNotificationEvent("Installed the app!")) + eventbus.emit(EmotePositiveEvent()) except MemoryError: self.update_state("install_oom") except Exception as e: print(e) eventbus.emit(ShowNotificationEvent("Couldn't install app")) + eventbus.emit(EmoteNegativeEvent()) self.update_state("main_menu") def update_state(self, state): @@ -305,6 +308,7 @@ def compare_version(v1, v2): else: self.update_state("main_menu") eventbus.emit(ShowNotificationEvent("All apps up to date!")) + eventbus.emit(EmotePositiveEvent()) def prepare_installed_menu(self): def on_cancel(): diff --git a/modules/firmware_apps/sponsors.py b/modules/firmware_apps/sponsors.py index b167574..b82e620 100644 --- a/modules/firmware_apps/sponsors.py +++ b/modules/firmware_apps/sponsors.py @@ -1,6 +1,8 @@ from app import App from app_components import Menu from app_components.background import Background as bg +from events.emote import EmotePositiveEvent +from system.eventbus import eventbus main_menu_items = [ "AND Digital", @@ -22,6 +24,7 @@ def __init__(self): back_handler=self.back_handler, ) self.notification = None + eventbus.emit(EmotePositiveEvent()) def back_handler(self): self.minimise() diff --git a/modules/main.py b/modules/main.py index 0f77f04..f8b17dc 100644 --- a/modules/main.py +++ b/modules/main.py @@ -5,6 +5,7 @@ from system.scheduler import scheduler from system.hexpansion.app import HexpansionManagerApp from system.patterndisplay.app import PatternDisplay +from system.emotebackleds.app import EmoteBackLEDs from system.notification.app import NotificationService from system.launcher.app import Launcher from system.power.handler import PowerEventHandler @@ -22,6 +23,10 @@ # Start led pattern displayer app scheduler.start_app(PatternDisplay()) +# Start back-leds emoter + +scheduler.start_app(EmoteBackLEDs()) + # Start root app scheduler.start_app(Launcher(), foreground=True) diff --git a/modules/system/emotebackleds/app.py b/modules/system/emotebackleds/app.py new file mode 100644 index 0000000..eac2017 --- /dev/null +++ b/modules/system/emotebackleds/app.py @@ -0,0 +1,39 @@ +# BUGS: overrides what hexpansion driver has set to and +# doesn't restore them. + +import asyncio +import time +from tildagonos import tildagonos + +from machine import PWM + +from app import App +from app_components import clear_background +from events.input import BUTTON_TYPES, ButtonDownEvent +from system.hexpansion.config import HexpansionConfig +from system.eventbus import eventbus + +from events.emote import EmotePositiveEvent, EmoteNegativeEvent + +class EmoteBackLEDs(App): + def __init__(self): + eventbus.on_async(EmotePositiveEvent, self._positive_event, self) + eventbus.on_async(EmoteNegativeEvent, self._negative_event, self) + + async def _positive_event(self, event): + for lednum in range(13,19): + tildagonos.leds[lednum] = (0,255,0) + tildagonos.leds.write() + await asyncio.sleep(0.5) + for lednum in range(13,19): + tildagonos.leds[lednum] = (0,0,0) + tildagonos.leds.write() + + async def _negative_event(self, event): + for lednum in range(13,19): + tildagonos.leds[lednum] = (255,0,0) + tildagonos.leds.write() + await asyncio.sleep(0.5) + for lednum in range(13,19): + tildagonos.leds[lednum] = (0,0,0) + tildagonos.leds.write()