From fef40c248e7cbda2183947d477a0aa15a79a47ac Mon Sep 17 00:00:00 2001 From: Greg Glockner Date: Thu, 25 Sep 2025 12:44:59 -0700 Subject: [PATCH 1/2] Wait for display on deep sleep --- adafruit_magtag/magtag.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/adafruit_magtag/magtag.py b/adafruit_magtag/magtag.py index 2c54c01..f10d001 100755 --- a/adafruit_magtag/magtag.py +++ b/adafruit_magtag/magtag.py @@ -36,6 +36,7 @@ from adafruit_magtag.graphics import Graphics from adafruit_magtag.network import Network from adafruit_magtag.peripherals import Peripherals +from supervisor import reload try: from typing import Any, Callable, Dict, Optional, Sequence, Union @@ -130,10 +131,17 @@ def exit_and_deep_sleep(self, sleep_time: float) -> None: :param float sleep_time: The amount of time to sleep in seconds """ + while board.DISPLAY.busy: + self.enter_light_sleep(1) + sleep_time -= 1 + if self._alarm: self.peripherals.neopixel_disable = True self.peripherals.speaker_disable = True - super().exit_and_deep_sleep(sleep_time) + try: + super().exit_and_deep_sleep(sleep_time) + except ValueError: + reload() def enter_light_sleep(self, sleep_time: float) -> None: """ From e42307385bf0c140a08b7349c40f0d0b763d2ce8 Mon Sep 17 00:00:00 2001 From: Greg Glockner Date: Sat, 27 Sep 2025 13:14:06 -0700 Subject: [PATCH 2/2] Refactor refresh to be blocking --- adafruit_magtag/magtag.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/adafruit_magtag/magtag.py b/adafruit_magtag/magtag.py index f10d001..facc405 100755 --- a/adafruit_magtag/magtag.py +++ b/adafruit_magtag/magtag.py @@ -28,7 +28,7 @@ """ import gc -import time +from time import sleep import board from adafruit_portalbase import PortalBase @@ -36,7 +36,6 @@ from adafruit_magtag.graphics import Graphics from adafruit_magtag.network import Network from adafruit_magtag.peripherals import Peripherals -from supervisor import reload try: from typing import Any, Callable, Dict, Optional, Sequence, Union @@ -131,17 +130,10 @@ def exit_and_deep_sleep(self, sleep_time: float) -> None: :param float sleep_time: The amount of time to sleep in seconds """ - while board.DISPLAY.busy: - self.enter_light_sleep(1) - sleep_time -= 1 - if self._alarm: self.peripherals.neopixel_disable = True self.peripherals.speaker_disable = True - try: - super().exit_and_deep_sleep(sleep_time) - except ValueError: - reload() + super().exit_and_deep_sleep(sleep_time) def enter_light_sleep(self, sleep_time: float) -> None: """ @@ -202,16 +194,22 @@ def fetch( self.refresh() return values - def refresh(self) -> None: + def refresh(self, blocking=True) -> None: """ Refresh the display + + :param blocking: Wait to return until the display refresh is complete. + Defaults to True + """ while True: try: self.graphics.display.refresh() + while blocking and board.DISPLAY.busy: + sleep(1) return except RuntimeError: - time.sleep(1) + sleep(1) def remove_all_text(self, auto_refresh=True, clear_font_cache=False): """Remove all added text and labels.