X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=DoorControl%2FDoorControls.groovy;h=ac6decc59c64343620a1f696cca6c5322a53c8cc;hb=792ad9b16da4f44f6f51c9b74109e3b3f241899f;hp=921089977d70655e594c2363ba63bf9cc519dc21;hpb=16ebbcf5da0fa9989acb5b03129b9706331066c5;p=smartthings-infrastructure.git diff --git a/DoorControl/DoorControls.groovy b/DoorControl/DoorControls.groovy index 9210899..ac6decc 100644 --- a/DoorControl/DoorControls.groovy +++ b/DoorControl/DoorControls.groovy @@ -2,6 +2,9 @@ package DoorControl import Timer.SimulatedTimer +//JPF's Verify API +import gov.nasa.jpf.vm.Verify + public class DoorControls { int deviceNumbers List doorControls @@ -21,6 +24,14 @@ public class DoorControls { this.deviceNumbers = deviceNumbers this.doorControls = [] + /*def init = Verify.getBoolean() + if (init) { + this.doorState = "closed" + this.doorLatestValue = "closed" + } else { + this.doorState = "open" + this.doorLatestValue = "open" + }*/ doorControls.add(new DoorControl(sendEvent, id, label, displayName, this.doorState, this.doorLatestValue)) } @@ -37,36 +48,46 @@ public class DoorControls { def find(Closure Input) { doorControls.find(Input) } + def sort(Closure Input) { + doorControls.sort(Input) + } def collect(Closure Input) { doorControls.collect(Input) } //By Apps def open() { - doorControls[0].on() + if (doorState != "open") + doorControls[0].open() } def open(LinkedHashMap metaData) { - def task = timers.runAfter(metaData["delay"]) { - doorControls[0].on() + if (doorState != "open") { + def task = timers.runAfter(metaData["delay"]) { + doorControls[0].open() + } } } def close() { - doorControls[0].off() + if (doorState != "closed") + doorControls[0].close() } def close(LinkedHashMap metaData) { - def task = timers.runAfter(metaData["delay"]) { - doorControls[0].off() + if (doorState != "closed") { + def task = timers.runAfter(metaData["delay"]) { + doorControls[0].close() + } } } //By Model Checker def setValue(LinkedHashMap eventDataMap) { if (eventDataMap["value"] != doorControls[0].doorState) { + this.doorState = eventDataMap["value"] + this.doorLatestValue = eventDataMap["value"] doorControls[0].setValue(eventDataMap["value"]) - this.doorState = doorControls[0].doorState sendEvent(eventDataMap) } }