package com.beowulfe.hap.impl.services; import com.beowulfe.hap.accessories.ColorfulLightbulb; import com.beowulfe.hap.accessories.DimmableLightbulb; import com.beowulfe.hap.accessories.Lightbulb; import com.beowulfe.hap.impl.characteristics.common.PowerStateCharacteristic; import com.beowulfe.hap.impl.characteristics.lightbulb.BrightnessCharacteristic; import com.beowulfe.hap.impl.characteristics.lightbulb.HueCharacteristic; import com.beowulfe.hap.impl.characteristics.lightbulb.SaturationCharacteristic; public class LightbulbService extends AbstractServiceImpl { public LightbulbService(Lightbulb lightbulb) { this(lightbulb, lightbulb.getLabel()); } public LightbulbService(Lightbulb lightbulb, String serviceName) { super("00000043-0000-1000-8000-0026BB765291", lightbulb, serviceName); addCharacteristic(new PowerStateCharacteristic( () -> lightbulb.getLightbulbPowerState(), v -> lightbulb.setLightbulbPowerState(v), c -> lightbulb.subscribeLightbulbPowerState(c), () -> lightbulb.unsubscribeLightbulbPowerState() )); if (lightbulb instanceof DimmableLightbulb) { addCharacteristic(new BrightnessCharacteristic((DimmableLightbulb) lightbulb)); } if (lightbulb instanceof ColorfulLightbulb) { addCharacteristic(new HueCharacteristic((ColorfulLightbulb) lightbulb)); addCharacteristic(new SaturationCharacteristic((ColorfulLightbulb) lightbulb)); } } }