import gpiod from . import config class GpioLed: chip = gpiod.Chip(config.GPIO_CHIP) def __init__(self, gpio_pin: int): self.gpio_pin = gpio_pin self.led = None def __enter__(self): self.led = GpioLed.chip.get_line(self.gpio_pin) self.led.request(consumer=str(self), type=gpiod.LINE_REQ_DIR_OUT) self.off() def __exit__(self, *args): self.off() self.led.release() self.led = None def on(self): self.led.set_value(1) def off(self): self.led.set_value(0) def __str__(self): return f'LED{self.gpio_pin:02}' class GpioLeds: def __init__(self, gpio_pins: list[int]): self.leds = [] for pin in gpio_pins: self.leds.append(GpioLed(pin)) def __enter__(self): for led in self.leds: led.__enter__() def __exit__(self, *args): for led in self.leds: led.__exit__(*args) def off(self): for led in self.leds: led.off() def on(self): for led in self.leds: led.on()