class FlameThread(threading.Thread): """ Transmits a flame sequence to the flame effects board """ def __init__(self, sequence): threading.Thread.__init__(self) self.daemon = True self.board = FlameBoard() self.sequence = sequence def run(self): start_time = time.time() for i in sorted(self.sequence.toggle_times.items()): time_secs = float(i[0]) / 1000 + start_time while time.time() < time_secs: pass try: self.board.toggle(i[1]) except IOError: sys.stderr.write("Transmission to flame board failed. Terminating sequence.\n") break self.board.all_off() # just in case