1 //Create a class for valve
3 import Timer.SimulatedTimer
6 import gov.nasa.jpf.vm.Verify
14 //If we have only one device
15 private String id = "ValveID0"
16 private String label = "Valve0"
17 private String displayName = "Valve0"
18 private String valve = "closed"
19 private String valveLatestValue = "closed"
21 Valves(Closure sendEvent, int deviceNumbers) {
22 this.sendEvent = sendEvent
23 this.timers = new SimulatedTimer()
24 this.deviceNumbers = deviceNumbers
27 /*def init = Verify.getBoolean()
30 this.valveLatestValue = "closed"
33 this.valveLatestValue = "open"
35 valves.add(new Valve(sendEvent, id, label, displayName, this.valve, this.valveLatestValue))
38 //Methods for closures
39 def count(Closure Input) {
45 def each(Closure Input) {
48 def find(Closure Input) {
51 def sort(Closure Input) {
54 def collect(Closure Input) {
60 if (valve != "open") {
62 this.valveLatestValue = "open"
67 def open(LinkedHashMap metaData) {
68 if (valve != "open") {
69 def task = timers.runAfter(metaData["delay"]) {
71 this.valveLatestValue = "open"
78 if (valve != "closed") {
80 this.valveLatestValue = "closed"
85 def close(LinkedHashMap metaData) {
86 if (valve != "closed") {
87 def task = timers.runAfter(metaData["delay"]) {
89 this.valveLatestValue = "closed"
96 def setValue(LinkedHashMap eventDataMap) {
97 if (eventDataMap["value"] != valves[0].valve) {
98 this.valve = eventDataMap["value"]
99 valves[0].setValue(eventDataMap["value"])
104 def currentValue(String deviceFeature) {
105 valves[0].currentValue(deviceFeature)
108 def latestValue(String deviceFeature) {
109 valves[0].latestValue(deviceFeature)