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 this.alarmLatestValue = eventDataMap["value"]
45 this.alarm = eventDataMap["value"]
46 this.currentAlarm = eventDataMap["value"]
47 alarms[0].setValue(eventDataMap["value"])
48 sendEvent(eventDataMap)
52 //Methods for closures
53 def count(Closure Input) {
59 def each(Closure Input) {
62 def find(Closure Input) {
65 def sort(Closure Input) {
68 def collect(Closure Input) {
74 if (alarm != "both") {
75 alarmLatestValue = "both"
84 alarmLatestValue = "off"
96 if (alarm != "siren") {
97 alarmLatestValue = "siren"
99 currentAlarm = "siren"
105 if (alarm != "strobe") {
106 alarmLatestValue = "strobe"
108 currentAlarm = "strobe"
113 def currentValue(String deviceFeature) {
114 alarms[0].currentValue(deviceFeature)
117 def latestValue(String deviceFeature) {
118 alarms[0].latestValue(deviceFeature)