creating eventsSince for ContactSensor and AeonKeyFobs + commenting runAfter method...
[smartthings-infrastructure.git] / ContactSensor / ContactSensor.groovy
index 05e961d5ab0990fa8678e1922c20ec621760638c..4a10a5731b291639b34dbad81a34a00156682ba9 100644 (file)
@@ -2,25 +2,93 @@
 package ContactSensor
 import Timer.SimulatedTimer
 
+//JPF's Verify API
+import gov.nasa.jpf.vm.Verify
+
 public class ContactSensor {
        private String id
        private String label
        private String displayName
        private String contactState
+       private String currentContact   
        private String latestValue
+       private String alarmState
+       private List events = []
+       private List timeOfEvents = []
+       
 
-       ContactSensor(String id, String label, String displayName, String contactState, String latestValue) {
+       ContactSensor(String id, String label, String displayName, String contactState, String currentContact, String alarmState, String latestValue) {
                this.id = id
                this.label = label
                this.displayName = displayName
                this.contactState = contactState
+               this.currentContact = currentContact
                this.latestValue = latestValue
+               this.alarmState = alarmState
+       }
+
+       def eventsSince() {
+               def evtOpen = [[name: "contact.open", value: "open", deviceId: "contactSensorID0", descriptionText: "",
+                               displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'],
+                              [name: "contact", value: "open", deviceId: "contactSensorID0", descriptionText: "",
+                               displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'],
+                              [name: "tamper.tampered", value: "open", deviceId: "contactSensorID0", descriptionText: "",
+                               displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
+               def evtClosed = [[name: "contact.closed", value: "closed", deviceId: "contactSensorID0", descriptionText: "",
+                                 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'],
+                                [name: "contact", value: "closed", deviceId: "contactSensorID0", descriptionText: "",
+                                 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'],
+                                [name: "tamper.tampered", value: "closed", deviceId: "contactSensorID0", descriptionText: "",
+                                 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
+               def init = Verify.getInt(0,4)
+               def evtToSend = []
+               if (init == 0) {//return empty set
+                       return evtToSend
+               } else if (init == 1) {//send one open event
+                       evtOpen.each{
+                               evtToSend.add(it)
+                       }
+                       return evtToSend
+               } else if (init == 2) {//send two open events
+                       evtOpen.each{
+                               evtToSend.add(it)
+                       }
+                       evtOpen.each{
+                               evtToSend.add(it)
+                       }
+                       return evtToSend
+               } else if (init == 3) {//send one closed event
+                       evtClosed.each{
+                               evtToSend.add(it)
+                       }
+                       return evtToSend
+               } else if (init == 4) {//send two closed events
+                       evtClosed.each{
+                               evtToSend.add(it)
+                       }
+                       evtClosed.each{
+                               evtToSend.add(it)
+                       }
+                       return evtToSend
+               }
        }
 
        def setValue(String value) {
-               this.latestValue = contactState
                println("the contact sensor with id:$id is triggered to $value!")
                this.contactState = value
+               this.currentContact = value
+               this.latestValue = value
+       }
+
+       
+       def on() {
+               println("the contact sensor with id:$id is armed!")
+               this.alarmState = "armed"
+       }
+
+       def off() {
+               println("the contact sensor with id:$id is not armed!")
+               this.alarmState = "not armed"
        }
        
        def currentValue(String deviceFeature) {
@@ -29,6 +97,12 @@ public class ContactSensor {
                }
        }
 
+       def currentState(String deviceFeature) {
+               if (deviceFeature == "contact") {
+                       return contactState
+               }
+       }
+
        def latestValue(String deviceFeature) {
                if (deviceFeature == "contact") {
                        return latestValue