Changed device listener to be a list instead of single listener

This commit is contained in:
Ziver Koc 2021-06-25 22:26:02 +02:00
parent 8d9896f8b4
commit 53d471c0aa
24 changed files with 120 additions and 97 deletions

View file

@ -7,14 +7,14 @@ import se.hal.intf.*;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class DummyController implements HalSensorController, HalEventController, Runnable, HalDaemon {
private List<DummyDevice> registeredDevices = new ArrayList();
private HalDeviceReportListener sensorListener;
private HalDeviceReportListener eventListener;
private List<HalDeviceReportListener> deviceListeners = new CopyOnWriteArrayList<>();
public DummyController() {}
@ -36,10 +36,8 @@ public class DummyController implements HalSensorController, HalEventController,
for (DummyDevice device : registeredDevices) {
HalDeviceData data = device.generateData();
if (sensorListener != null && data instanceof HalSensorData) {
sensorListener.reportReceived((HalSensorConfig) device, (HalSensorData) data);
} else if (eventListener != null && data instanceof HalEventData) {
eventListener.reportReceived((HalEventConfig) device, (HalEventData) data);
for (HalDeviceReportListener deviceListener : deviceListeners) {
deviceListener.reportReceived(device, data);
}
}
} catch (Exception e) {
@ -60,7 +58,7 @@ public class DummyController implements HalSensorController, HalEventController,
@Override
public synchronized void send(HalEventConfig eventConfig, HalEventData eventData) {
// Nothing to do as this is a dummy
// Nothing to do as this is a dummy controller
}
@Override
@ -69,11 +67,8 @@ public class DummyController implements HalSensorController, HalEventController,
}
@Override
public void setListener(HalDeviceReportListener listener) {
if (listener instanceof SensorControllerManager)
sensorListener = listener;
else if (listener instanceof EventControllerManager)
eventListener = listener;
public void addListener(HalDeviceReportListener listener) {
deviceListeners.add(listener);
}
@Override

View file

@ -24,9 +24,10 @@
package se.hal.plugin.dummy;
import se.hal.intf.HalDeviceConfig;
import se.hal.intf.HalDeviceData;
public interface DummyDevice {
public interface DummyDevice extends HalDeviceConfig {
public HalDeviceData generateData();
HalDeviceData generateData();
}

View file

@ -1,9 +1,11 @@
package se.hal.plugin.dummy;
package se.hal.plugin.dummy.device;
import se.hal.intf.HalDeviceData;
import se.hal.intf.HalSensorConfig;
import se.hal.intf.HalSensorController;
import se.hal.intf.HalSensorData;
import se.hal.plugin.dummy.DummyController;
import se.hal.plugin.dummy.DummyDevice;
import se.hal.struct.devicedata.HumiditySensorData;

View file

@ -1,9 +1,11 @@
package se.hal.plugin.dummy;
package se.hal.plugin.dummy.device;
import se.hal.intf.HalDeviceData;
import se.hal.intf.HalEventConfig;
import se.hal.intf.HalEventController;
import se.hal.intf.HalEventData;
import se.hal.plugin.dummy.DummyController;
import se.hal.plugin.dummy.DummyDevice;
import se.hal.struct.devicedata.OnOffEventData;
public class DummySwitchEvent implements DummyDevice, HalEventConfig {

View file

@ -1,9 +1,11 @@
package se.hal.plugin.dummy;
package se.hal.plugin.dummy.device;
import se.hal.intf.HalDeviceData;
import se.hal.intf.HalSensorConfig;
import se.hal.intf.HalSensorController;
import se.hal.intf.HalSensorData;
import se.hal.plugin.dummy.DummyController;
import se.hal.plugin.dummy.DummyDevice;
import se.hal.struct.devicedata.TemperatureSensorData;

View file

@ -3,8 +3,8 @@
"name": "Hal-Dummy Devices",
"description": "Dummy devices with simulated data, can be used for demo or testing purposes.",
"interfaces": [
{"se.hal.intf.HalSensorConfig": "se.hal.plugin.dummy.DummyHumiditySensor"},
{"se.hal.intf.HalEventConfig": "se.hal.plugin.dummy.DummySwitchEvent"},
{"se.hal.intf.HalSensorConfig": "se.hal.plugin.dummy.DummyTemperatureSensor"}
{"se.hal.intf.HalEventConfig": "se.hal.plugin.dummy.device.DummySwitchEvent"},
{"se.hal.intf.HalSensorConfig": "se.hal.plugin.dummy.device.DummyHumiditySensor"},
{"se.hal.intf.HalSensorConfig": "se.hal.plugin.dummy.device.DummyTemperatureSensor"}
]
}