Now it works!
This commit is contained in:
parent
945e816b17
commit
f9cf01dfcb
|
@ -2,7 +2,6 @@ import logging
|
|||
import sys
|
||||
import time
|
||||
import threading
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
from queue import Queue
|
||||
|
@ -148,36 +147,12 @@ class ledPulse:
|
|||
self.worker.start()
|
||||
|
||||
def stop(self):
|
||||
self.worker.stop()
|
||||
self.queue.put(([], [], []))
|
||||
self.worker.join()
|
||||
if self.supported:
|
||||
self.pwm.stop()
|
||||
self.worker = None
|
||||
|
||||
def loop(self):
|
||||
|
||||
while True:
|
||||
item = self.queue.get()
|
||||
|
||||
# Initial loop
|
||||
self.log.debug('running initial steps')
|
||||
for value, delay in item[0]:
|
||||
self.setValue(value)
|
||||
time.sleep(delay)
|
||||
|
||||
self.log.debug('running main loop')
|
||||
while True:
|
||||
for value, delay in item[1]:
|
||||
self.setValue(value)
|
||||
time.sleep(delay)
|
||||
if not self.queue.empty()
|
||||
break
|
||||
|
||||
self.log.debug('running final steps')
|
||||
for value, delay in item[2]:
|
||||
self.setValue(value)
|
||||
time.sleep(delay)
|
||||
|
||||
|
||||
###
|
||||
# PLUGINS METHODS
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import logging
|
||||
import threading
|
||||
import time
|
||||
|
||||
|
||||
class ledWorker(threading.Thread):
|
||||
|
@ -18,49 +19,28 @@ class ledWorker(threading.Thread):
|
|||
self.stop_event = threading.Event()
|
||||
|
||||
def run(self):
|
||||
|
||||
while True:
|
||||
item = self.parent.queue.get()
|
||||
|
||||
# Initial
|
||||
if self.initialMode:
|
||||
self.log.debug('running initial step')
|
||||
vals = self.initialValues()
|
||||
for value, delay in vals:
|
||||
self.setValue(value)
|
||||
time.sleep(delay)
|
||||
print('end initial step')
|
||||
self.log.debug('end initial step')
|
||||
|
||||
vals = self.cycleValues()
|
||||
while True:
|
||||
if self.worker.stop_event.is_set():
|
||||
# self.worker._started.clear()
|
||||
self.worker.stop_event.clear()
|
||||
self.log.debug("bailing out from infinite loop")
|
||||
return
|
||||
|
||||
if self.worker.changed.is_set():
|
||||
self.changed.clear()
|
||||
self.log.debug("parameters changed, recalculate values...")
|
||||
# Empty item, we exit
|
||||
if item == ([], [], []):
|
||||
break
|
||||
for step in range(len(vals)):
|
||||
value, delay = vals[step]
|
||||
self.setValue(value)
|
||||
|
||||
# Initial loop
|
||||
self.log.debug('running initial steps')
|
||||
for value, delay in item[0]:
|
||||
self.parent.setValue(value)
|
||||
time.sleep(delay)
|
||||
|
||||
# Final
|
||||
if self.finalMode:
|
||||
print('running final step')
|
||||
self.log.debug('running final step')
|
||||
vals = self.finalValues()
|
||||
for value, delay in vals:
|
||||
self.log.debug('running main loop')
|
||||
while True:
|
||||
for value, delay in item[1]:
|
||||
self.parent.setValue(value)
|
||||
time.sleep(delay)
|
||||
if not self.parent.queue.empty():
|
||||
break
|
||||
|
||||
self.log.debug('running final steps')
|
||||
for value, delay in item[2]:
|
||||
self.setValue(value)
|
||||
time.sleep(delay)
|
||||
print('end final step')
|
||||
self.log.debug('end final step')
|
||||
self.log.debug(f"running {self.name} main loop...")
|
||||
self.parent.loop()
|
||||
|
||||
def stop(self):
|
||||
self.stop_event.set()
|
||||
self.log.debug(f"stopping {self.name}...")
|
||||
|
|
Loading…
Reference in New Issue