X-Git-Url: http://plrg.eecs.uci.edu/git/?p=smartthings-infrastructure.git;a=blobdiff_plain;f=ColorControl%2FColorControls.groovy;h=90223c54bdd233baf3feb1690ed53477676ef9e9;hp=5122f6b9b55f9150f3a6a8a51202c341499c73c6;hb=e98662a7daa8b953396cc514738ec56a41172d42;hpb=622fbb619774231a71cb2a1dfd6df36f8f6659c9 diff --git a/ColorControl/ColorControls.groovy b/ColorControl/ColorControls.groovy index 5122f6b..90223c5 100644 --- a/ColorControl/ColorControls.groovy +++ b/ColorControl/ColorControls.groovy @@ -2,9 +2,6 @@ package ColorControl import Timer.SimulatedTimer -//JPF's Verify API -import gov.nasa.jpf.vm.Verify - public class ColorControls { private int deviceNumbers private List colorControls @@ -14,9 +11,9 @@ public class ColorControls { private String id = "colorControlID0" private String label = "colorControl0" private String displayName = "colorControl0" - private String color = "red" - private String currentColor = "red" - private String currentSwitch = "off" + private String color = "Red" + private String currentColor = "Red" + private String currentSwitch = "on" private int level = 50 private int currentLevel = 50 private int hue = 50 @@ -24,26 +21,35 @@ public class ColorControls { private int saturation = 50 private int currentSaturation = 50 private int colorTemperature = 15000 + private boolean colorChanged = false - ColorControls(Closure sendEvent, int deviceNumbers) { + ColorControls(Closure sendEvent, int deviceNumbers, boolean init) { this.sendEvent = sendEvent this.deviceNumbers = deviceNumbers this.colorControls = [] - /*def initHue = Verify.getIntFromList(30, 50, 70) - this.hue = initHue - def initSat = Verify.getIntFromList(40, 50, 60) - this.saturation = initSat - def init = Verify.getInt(0,2) - if (init == 0) { - this.color = "red" - } else if (init == 1) { - this.color = "green" + if (init) { + this.level = 20 + this.currentLevel = 20 + this.hue = 30 + this.currentHue = 30 + this.saturation = 40 + this.currentSaturation = 40 + this.colorTemperature = 10000 + this.color = "Red" + this.currentSwitch = "off" } else { - this.color = "blue" - }*/ - + this.level = 50 + this.currentLevel = 50 + this.hue = 50 + this.currentHue = 50 + this.saturation = 50 + this.currentSaturation = 50 + this.colorTemperature = 15000 + this.color = "Blue" + this.currentSwitch = "on" + } colorControls.add(new ColorControl(sendEvent, id, label, displayName, this.color, this.hue, this.saturation, this.level, this.currentSwitch, this.colorTemperature)) } @@ -114,6 +120,59 @@ public class ColorControls { //methods + def setColor(LinkedHashMap metaData) { + def hexColor = metaData.hex + def newColor + switch (hexColor) { + case "#0000FF": + newColor = "Blue" + break; + case "#00FF00": + newColor = "Green" + break; + case "#FFFF00": + newColor = "Yellow" + break; + case "#FF6000": + newColor = "Orange" + break; + case "#BF7FBF": + newColor = "Purple" + break; + case "#FF5F5F": + newColor = "Pink" + break; + case "#FF0000": + newColor = "Red" + break; + default: + newColor = "Blue" + break; + } + if (newColor != this.color) { + this.currentColor = newColor + this.color = newColor + colorControls[0].setColor(newColor) + if (this.colorChanged) { + this.colorChanged = false + } else { + this.colorChanged = true + } + } + def newLevel = metaData.level + def newHue = metaData.hue + def newSaturation = metaData.saturation + if (newLevel != null) { + setLevel(newLevel) + } + if (newHue != null) { + setHue(newHue) + } + if (newSaturation != null) { + setSaturation(newSaturation) + } + } + def setColor(String color) { if (color != this.color) { this.currentColor = color @@ -146,24 +205,39 @@ public class ColorControls { } } - def setColorTemperature(String colorTemperature) { + def setLevel(long level) { + if (level != this.level) { + this.currentLevel = level + this.level = level + colorControls[0].setLevel(level) + } + } + + def setColorTemperature(int colorTemperature) { + if (colorTemperature != this.colorTemperature) { + this.colorTemperature = colorTemperature + colorControls[0].setColorTemperature(colorTemperature) + } + } + + def setColorTemperature(long colorTemperature) { if (colorTemperature != this.colorTemperature) { this.colorTemperature = colorTemperature colorControls[0].setColorTemperature(colorTemperature) } } - def on(String currentSwitch) { - if (currentSwitch != this.currentSwitch) { - this.currentSwitch = currentSwitch - colorControls[0].on(currentSwitch) + def on() { + if (this.currentSwitch != "on") { + this.currentSwitch = "on" + colorControls[0].on() } } - def off(String currentSwitch) { - if (currentSwitch != this.currentSwitch) { - this.currentSwitch = currentSwitch - colorControls[0].off(currentSwitch) + def off() { + if (this.currentSwitch != "off") { + this.currentSwitch = "off" + colorControls[0].off() } }