import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import uart
from esphome.components.light.types import AddressableLightEffect
from esphome.components.light.effects import register_addressable_effect
from esphome.const import CONF_NAME, CONF_UART_ID

DEPENDENCIES = ['uart']

adalight_ns = cg.esphome_ns.namespace('adalight')
AdalightLightEffect = adalight_ns.class_(
    'AdalightLightEffect', uart.UARTDevice, AddressableLightEffect)

CONFIG_SCHEMA = cv.Schema({})


@register_addressable_effect('adalight', AdalightLightEffect, "Adalight", {
    cv.GenerateID(CONF_UART_ID): cv.use_id(uart.UARTComponent)
})
def adalight_light_effect_to_code(config, effect_id):
    effect = cg.new_Pvariable(effect_id, config[CONF_NAME])
    yield uart.register_uart_device(effect, config)

    yield effect
