1 //Create a class for presence sensor
3 import Timer.SimulatedTimer
6 import gov.nasa.jpf.vm.Verify
8 public class PresenceSensor {
11 private String displayName
12 private String presence
13 private String currentPresence
14 private String presenceLatestValue
16 PresenceSensor(String id, String label, String displayName, String presence, String presenceLatestValue) {
19 this.displayName = displayName
20 this.presence = presence
21 this.currentPresence = presence
22 this.presenceLatestValue = presenceLatestValue
25 def setValue(String value) {
26 println("the presence sensor with id:$id is triggered to $value!")
27 this.presenceLatestValue = value
29 this.currentPresence = value
36 def statesSince(String info, Date dateObj) {
40 def eventsSince(Date dateObj) {
45 def evtActive = [[name: "presence", value: "present", deviceId: "motionSensorID0", descriptionText: "",
46 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
47 def evtInactive = [[name: "presence", value: "not present", deviceId: "motionSensorID0", descriptionText: "",
48 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
49 def init = Verify.getInt(0,4)
51 if (init == 0) {//return empty set
53 } else if (init == 1) {//send one active event
58 } else if (init == 2) {//send two active events
66 } else if (init == 3) {//send one inactive event
71 } else if (init == 4) {//send two inactive events
82 def currentState(String deviceFeature) {
83 return [rawDateCreated: [time: System.currentTimeMillis()]]
86 def currentValue(String deviceFeature) {
87 if (deviceFeature == "presence") {
92 def latestValue(String deviceFeature) {
93 if (deviceFeature == "presence") {
94 return presenceLatestValue