from rpi_ws281x import PixelStrip # from lib.strip.WindowStrip import WindowStrip # from lib.strip.TkinterStrip import TkinterStrip from lib.LoopSwitch import LoopSwitch from lib.Regions import Regions from lib.Tempo import Tempo class Litsimaja(object): def __init__(self): self._strip = PixelStrip(290, 18, 800000, 10, False, 255, 0, 4104) self._loops = [] self._strip.begin() self._regions: Regions = Regions(self.count_pixels(), [46, 96, 191, 241]) self._tempo: Tempo = Tempo(60) self._selected_program = None def count_pixels(self) -> int: return self._strip.numPixels() def get_strip(self): return self._strip def set_pixel_color(self, n: int, color: int) -> None: if self._regions.is_pixel_enabled(n): self._strip.setPixelColor(n, color) else: self._strip.setPixelColor(n, 0) def show(self) -> None: self._strip.show() def add_loop(self, loop: LoopSwitch): self.clear_loops() self._loops.append(loop) def clear_loops(self): for loop in self._loops: loop.stop() self._loops.clear() def switch_region(self, region_id: int): self._regions.switch_region(region_id) def get_region_ids(self): return self._regions.list_region_ids() def build_status_array(self): data = {'success': True} features = { 'program': self._selected_program, 'tempo': { 'bpm': self.get_tempo().get_bpm() }, } regions = [] for region_id in self._regions.list_region_ids(): regions.append(self._regions.is_region_enabled(region_id)) features['region'] = regions data['features'] = features return data def get_tempo(self): return self._tempo def set_selected_program(self, program_name: str): self._selected_program = program_name