#!/usr/bin/python3
import sys
from select import epoll, EPOLLIN
from lib.fade import Fader, Color
import logging
logging.basicConfig(style='{', format='{asctime}.{msecs:03.0f}Z {levelname} {name}: {message}', datefmt='%Y-%m-%d %H:%M:%S', level=logging.INFO, stream=sys.stderr)

logger = logging.getLogger(__name__)

logger.info("light_panel: Starting.")
fader = Fader(Color(0, 0, 0, 16), Color(0, 0, 0, 16), duration=5)
poller = epoll()
poller.register(sys.stdin.fileno(), EPOLLIN)
command_line = ''
while True:
    activity = poller.poll(timeout=0.1)
    if activity:
        command_line = ''
        while not command_line.endswith('\n'):
            command_line += sys.stdin.read(1)
        command_line = command_line.strip()
        logger.info("light_panel: Received command: {}".format(command_line))
        parts = command_line.split()
        command = parts[0]
        args = parts[1:]
        if command == 'fade_to':
            fader.on_random = False
            fader.set_end(Color(*(int(a) for a in args)))
        if command == 'set_to':
            fader.on_random = False
            color = Color(*(int(a) for a in args))
            fader.start = color
            fader.color = color
            fader.end = color
            fader.done = True
            fader.sync()
        if command == 'random':
            fader.on_random = True
            fader.done = False
    else:
        if not fader.done:
            fader.step()
