1 //Create a class for contact sensor
3 import Timer.SimulatedTimer
6 import gov.nasa.jpf.vm.Verify
8 public class ContactSensor {
11 private String displayName
12 private String contactState
13 private String currentContact
14 private String latestValue
15 private String alarmState
16 private List events = []
17 private List timeOfEvents = []
20 ContactSensor(String id, String label, String displayName, String contactState, String currentContact, String alarmState, String latestValue) {
23 this.displayName = displayName
24 this.contactState = contactState
25 this.currentContact = currentContact
26 this.latestValue = latestValue
27 this.alarmState = alarmState
31 def evtOpen = [[name: "contact.open", value: "open", deviceId: "contactSensorID0", descriptionText: "",
32 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'],
33 [name: "contact", value: "open", deviceId: "contactSensorID0", descriptionText: "",
34 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'],
35 [name: "tamper.tampered", value: "open", deviceId: "contactSensorID0", descriptionText: "",
36 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
37 def evtClosed = [[name: "contact.closed", value: "closed", deviceId: "contactSensorID0", descriptionText: "",
38 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'],
39 [name: "contact", value: "closed", deviceId: "contactSensorID0", descriptionText: "",
40 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'],
41 [name: "tamper.tampered", value: "closed", deviceId: "contactSensorID0", descriptionText: "",
42 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
43 def init = Verify.getInt(0,4)
45 if (init == 0) {//return empty set
47 } else if (init == 1) {//send one open event
52 } else if (init == 2) {//send two open events
60 } else if (init == 3) {//send one closed event
65 } else if (init == 4) {//send two closed events
76 def setValue(String value) {
77 println("the contact sensor with id:$id is triggered to $value!")
78 this.contactState = value
79 this.currentContact = value
80 this.latestValue = value
85 println("the contact sensor with id:$id is armed!")
86 this.alarmState = "armed"
90 println("the contact sensor with id:$id is not armed!")
91 this.alarmState = "not armed"
94 def currentValue(String deviceFeature) {
95 if (deviceFeature == "contact") {
100 def currentState(String deviceFeature) {
101 if (deviceFeature == "contact") {
106 def latestValue(String deviceFeature) {
107 if (deviceFeature == "contact") {