diff --git a/home_default/main.py b/home_default/main.py index ae4be23..7e39894 100644 --- a/home_default/main.py +++ b/home_default/main.py @@ -37,10 +37,8 @@ ugfx.set_default_font(ugfx.FONT_MEDIUM) status = ugfx.Label(0, 130, ugfx.width(), 40, "", justification=ugfx.Label.CENTERTOP) # update loop -def tick(): +while True: status.text("wifi: %s%%\nbattery: %s%%" % (int(wifi_strength() * 100), int(battery() * 100))) - time.sleep_ms(500) - -loop(tick) + sleep(500) diff --git a/lib/homescreen.py b/lib/homescreen.py index d60077d..e77d16c 100644 --- a/lib/homescreen.py +++ b/lib/homescreen.py @@ -19,30 +19,39 @@ They also *may*: ___license___ = "MIT" ___dependencies___ = ["database", "buttons", "random", "app"] -import database, ugfx, random, buttons, time +import database, ugfx, random, buttons, time, select from app import App -def init(color = 0xFFFFFF): +_state = None +def init(enable_menu_button = True): + global _state + _state = {"menu": False} ugfx.init() ugfx.orientation(90) - ugfx.clear(ugfx.html_color(color)) - -# A special loop that exits on menu being pressed -def loop(func, interval = 500): - buttons.init() - state = {"pressed": False} # This is a terrible hack - def irp(t): - state["pressed"] = True - buttons.enable_interrupt("BTN_MENU", irp, on_release = True) - while not state["pressed"]: - func() - time.sleep_ms(interval) - buttons.disable_interrupt("BTN_MENU") - App("launcher").boot() -def menu(): - ugfx.clear() + + if enable_menu_button: + buttons.init() + buttons.enable_interrupt("BTN_MENU", lambda t: set_state("menu"), on_release = True) + +def set_state(key, value = True): + global _state + _state[key] = value + +def clean_up(): + buttons.disable_all_interrupt() + +def check(): + global _state + if _state["menu"]: + clean_up() + App("launcher").boot() + +def sleep(interval = 500): + check() + time.sleep_ms(interval) # todo: deep sleep + check() def name(default = None): return database.get("homescreen.name", default)