--- /dev/null
+//Create a class for power meter
+package PowerMeter
+import Timer.SimulatedTimer
+
+public class PowerMeters {
+ private int deviceNumbers
+ private List powerMeters
+ def sendEvent
+
+ //For one device(We cannot have obj.id)-> We should have obj[0].id
+ private String id = "powerMeterID0"
+ private String label = "powerMeter0"
+ private String displayName = "powerMeter0"
+ private int power = 50
+ private int currentPower = 50
+
+
+ PowerMeters(Closure sendEvent, int deviceNumbers) {
+ this.sendEvent = sendEvent
+ this.deviceNumbers = deviceNumbers
+ this.powerMeters = []
+
+ powerMeters.add(new PowerMeter(id, label, displayName, this.power))
+ }
+
+ //By Model Checker
+ def setValue(LinkedHashMap eventDataMap) {
+ if (eventDataMap["value"] != powerMeters[0].power) {
+ powerMeters[0].setValue(eventDataMap["value"])
+ this.power = powerMeters[0].power
+ this.currentPower = powerMeters[0].currentPower
+ sendEvent(eventDataMap)
+ }
+ }
+
+ //Methods for closures
+ def count(Closure Input) {
+ powerMeters.count(Input)
+ }
+ def size() {
+ powerMeters.size()
+ }
+ def each(Closure Input) {
+ powerMeters.each(Input)
+ }
+ def find(Closure Input) {
+ powerMeters.find(Input)
+ }
+ def collect(Closure Input) {
+ powerMeters.collect(Input)
+ }
+
+
+ def currentValue(String deviceFeature) {
+ powerMeters[0].currentValue(deviceFeature)//It is called if we have only one device
+ }
+
+ def getAt(int ix) {
+ powerMeters[ix]
+ }
+}