1 //Create a class for alarm device
3 import Timer.SimulatedTimer
6 import gov.nasa.jpf.vm.Verify
14 //If we have only one device
15 private String id = "alarmID0"
16 private String label = "alarm0"
17 private String displayName = "alarm0"
18 private String alarm = "off"
19 private String currentAlarm = "off"
20 private String alarmLatestValue = "off"
22 Alarms(Closure sendEvent, int deviceNumbers) {
23 this.sendEvent = sendEvent
24 this.timers = new SimulatedTimer()
25 this.deviceNumbers = deviceNumbers
28 def init = Verify.getBoolean()
31 this.currentAlarm = "off"
32 this.alarmLatestValue = "off"
35 this.currentAlarm = "on"
36 this.alarmLatestValue = "on"
38 alarms.add(new Alarm(sendEvent, id, label, displayName, this.alarm, this.currentAlarm, this.alarmLatestValue))
42 def setValue(LinkedHashMap eventDataMap) {
43 if (eventDataMap["value"] != alarms[0].alarm) {
44 alarms[0].setValue(eventDataMap["value"])
45 this.alarmLatestValue = alarms[0].alarmLatestValue
46 this.alarm = alarms[0].alarm
47 this.currentAlarm = alarms[0].alarm
48 sendEvent(eventDataMap)
52 //Methods for closures
53 def count(Closure Input) {
59 def each(Closure Input) {
62 def find(Closure Input) {
65 def collect(Closure Input) {
71 if (alarm != "both") {
73 alarmLatestValue = alarm
82 alarmLatestValue = alarm
93 if (alarm != "siren") {
95 alarmLatestValue = alarm
97 currentAlarm = "siren"
102 if (alarm != "strobe") {
104 alarmLatestValue = alarm
106 currentAlarm = "strobe"
110 def currentValue(String deviceFeature) {
111 alarms[0].currentValue(deviceFeature)
114 def latestValue(String deviceFeature) {
115 alarms[0].latestValue(deviceFeature)