From 434c49b6096e2742f37fcd448598aa7316c4a62a Mon Sep 17 00:00:00 2001 From: Markus Graf Date: Thu, 18 Jun 2026 16:58:57 +0200 Subject: [PATCH] refactor: move GPIO and pygame initialization into setup() --- wecker.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/wecker.py b/wecker.py index f40077e..6534c94 100644 --- a/wecker.py +++ b/wecker.py @@ -59,26 +59,28 @@ def remove_pid_file(): pass -# GPIO Setup BUTTON_PIN = 17 LED_PIN = 27 -GPIO.setmode(GPIO.BCM) -GPIO.setup(LED_PIN, GPIO.OUT) -GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) -# Audio Setup (with optimized buffer) -pygame.mixer.pre_init(frequency=44100, size=-16, channels=2, buffer=4096) -pygame.mixer.init() +def setup(): + """Initialize GPIO and audio hardware. Call once before running.""" + GPIO.setmode(GPIO.BCM) + GPIO.setup(LED_PIN, GPIO.OUT) + GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) -try: - pygame.mixer.music.load("Laid Back - Sunshine Reggae.mp3") - pygame.mixer.music.set_volume(1.0) -except Exception as e: - logging.error(f"Error loading audio file: {e}") - # Don't exit in test mode - if "pytest" not in sys.modules: - sys.exit(1) + # Audio Setup (with optimized buffer) + pygame.mixer.pre_init(frequency=44100, size=-16, channels=2, buffer=4096) + pygame.mixer.init() + + try: + pygame.mixer.music.load("Laid Back - Sunshine Reggae.mp3") + pygame.mixer.music.set_volume(1.0) + except Exception as e: + logging.error(f"Error loading audio file: {e}") + # Don't exit in test mode + if "pytest" not in sys.modules: + sys.exit(1) # State Machine states for the flow STATE_RINGING = 0 @@ -199,6 +201,7 @@ class AlarmClock: def run_alarm(test_mode=False): + setup() logging.info("Alarm clock started. Music is playing in an endless loop.") if "pygame" in globals() and hasattr(pygame, "mixer") and pygame.mixer.get_init(): pygame.mixer.music.play(-1)