Source code for ekfsm.devices.ekf_sur_led

from .gpio import GPIOExpander
from ekfsm.core.components import SysTree


[docs] class EKFSurLed(GPIOExpander): """ A class to represent the EKF-SUR-LED devices. """ def __init__( self, name: str, parent: SysTree | None, *args, **kwargs, ): super().__init__(name, parent, None, *args, **kwargs) def __str__(self) -> str: return ( f"EKFSurLed - GPIO Number: {self.number}; " f"sysfs_path: {self.sysfs_device.path if self.sysfs_device else ''}" )
[docs] def set(self, led: int, color: str): """ Set the color of a LED. Parameters ---------- led : int The LED number (0 or 1). color : str The color of the LED. Possible values: "off", "red", "blue", "green", "yellow", "purple", "cyan", "white" """ # 3-color LEDs, # 0: Red # 1: Blue # 2: Green if color == "off": state = [False, False, False] elif color == "red": state = [True, False, False] elif color == "blue": state = [False, True, False] elif color == "green": state = [False, False, True] elif color == "yellow": state = [True, True, False] elif color == "purple": state = [True, False, True] elif color == "cyan": state = [False, True, True] elif color == "white": state = [True, True, True] else: raise ValueError(f"Invalid color: {color}") if led < 0 or led > 1: raise ValueError(f"Invalid led number: {led}") for i in range(3): self.set_direction(i + 4 * led, True) # Active low self.set_pin(i + 4 * led, False if state[i] else True)