X-Git-Url: http://plrg.eecs.uci.edu/git/?p=smartthings-infrastructure.git;a=blobdiff_plain;f=Switch%2FSwitches.groovy;h=152096db303471cfc66dfece1098095c9ea6e478;hp=9007388794254b1decf95d3eca6d96aae4978df7;hb=dd478f2cc3f2096c7deaa628f2f754228246c01c;hpb=b8c0c6eb635704be056e1e4f373620e2bb05b775 diff --git a/Switch/Switches.groovy b/Switch/Switches.groovy index 9007388..152096d 100644 --- a/Switch/Switches.groovy +++ b/Switch/Switches.groovy @@ -2,6 +2,10 @@ package Switch import Timer.SimulatedTimer +//JPF's Verify API +import gov.nasa.jpf.vm.Verify + + public class Switches { int deviceNumbers List switches @@ -17,12 +21,23 @@ public class Switches { private int currentLevel = 50 private String switchLatestValue = "off" - Switches(Closure sendEvent, int deviceNumbers) { + Switches(Closure sendEvent, int deviceNumbers, boolean init) { this.sendEvent = sendEvent this.timers = new SimulatedTimer() this.deviceNumbers = deviceNumbers this.switches = [] + if (init) { + this.switchState = "off" + this.currentSwitch = "off" + this.switchLatestValue = "off" + this.currentLevel = 50 + } else { + this.switchState = "on" + this.currentSwitch = "on" + this.switchLatestValue = "on" + this.currentLevel = 60 + } switches.add(new Switch(sendEvent, id, label, displayName, this.switchState, this.currentSwitch, this.currentLevel, this.switchLatestValue)) } @@ -36,57 +51,67 @@ public class Switches { def each(Closure Input) { switches.each(Input) } + def eachWithIndex(Closure Input) { + switches.eachWithIndex(Input) + } def find(Closure Input) { switches.find(Input) } + def sort(Closure Input) { + switches.sort(Input) + } def collect(Closure Input) { switches.collect(Input) } //By Apps + def eventsSince(Date dateObj, LinkedHashMap metaData) { + return switches[0].eventsSince() + } + def setLevel(int level) { - switches[0].setLevel(level) currentLevel = level + switches[0].setLevel(level) } def on() { - switches[0].on() - switchLatestValue = switchState + switchLatestValue = "on" switchState = "on" currentSwitch = "on" + switches[0].on() } def on(LinkedHashMap metaData) { def task = timers.runAfter(metaData["delay"]) { - switches[0].on() - switchLatestValue = switchState + switchLatestValue = "on" switchState = "on" currentSwitch = "on" + switches[0].on() } } def off() { - switches[0].off() - switchLatestValue = switchState + switchLatestValue = "off" switchState = "off" currentSwitch = "off" + switches[0].off() } def off(LinkedHashMap metaData) { def task = timers.runAfter(metaData["delay"]) { - switches[0].off() - switchLatestValue = switchState + switchLatestValue = "off" switchState = "off" currentSwitch = "off" + switches[0].off() } } //By Model Checker def setValue(LinkedHashMap eventDataMap) { if (eventDataMap["value"] != switches[0].switchState) { + this.switchState = eventDataMap["value"] + this.switchLatestValue = eventDataMap["value"] switches[0].setValue(eventDataMap["value"]) - this.switchState = switches[0].switchState - this.switchLatestValue = switches[0].switchLatestValue sendEvent(eventDataMap) } }