From 6522b817dc3c0c0fd5670bb7d379a6eec550b57a Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Mon, 4 Jan 2016 18:16:58 +0100 Subject: [PATCH] Changed Controller Object sensor from Sensor to HalSensor Former-commit-id: efbf9952098f1bdd70547d12a98a62a396fbf705 --- src/se/koc/hal/ControllerManager.java | 14 ++++++++++--- src/se/koc/hal/intf/HalEventController.java | 16 ++++++++++++--- src/se/koc/hal/intf/HalSensorController.java | 18 +++++++++++++---- .../plugin/tellstick/TellstickSerialComm.java | 20 ++++++++++--------- src/se/koc/hal/struct/Event.java | 2 +- src/se/koc/hal/struct/Sensor.java | 2 +- 6 files changed, 51 insertions(+), 21 deletions(-) diff --git a/src/se/koc/hal/ControllerManager.java b/src/se/koc/hal/ControllerManager.java index 07770e75..7941c704 100755 --- a/src/se/koc/hal/ControllerManager.java +++ b/src/se/koc/hal/ControllerManager.java @@ -1,6 +1,7 @@ package se.koc.hal; import net.didion.jwnl.data.Exc; +import se.koc.hal.intf.HalSensor; import se.koc.hal.intf.HalSensorController; import se.koc.hal.struct.Sensor; import zutil.log.LogUtil; @@ -22,7 +23,11 @@ public class ControllerManager { private static ControllerManager instance; + /** All available sensor plugins **/ private ArrayList> availableSensors = new ArrayList<>(); + /** List of auto detected sensors **/ + private ArrayList detectedSensors = new ArrayList<>(); + /** A map of all instantiated controllers **/ private HashMap controllerMap = new HashMap<>(); @@ -44,7 +49,7 @@ public class ControllerManager { } if(controller != null) - controller.register(sensor); + controller.register(sensor.getSensorData()); } public void deregister(Sensor sensor){ @@ -52,7 +57,7 @@ public class ControllerManager { HalSensorController controller; if (controllerMap.containsKey(c)) { controller = controllerMap.get(c); - controller.deregister(sensor); + controller.deregister(sensor.getSensorData()); if(controller.size() == 0){ // Remove controller as it has no more registered sensors logger.fine("Closing controller as it has no more registered sensors: "+c.getName()); @@ -62,11 +67,14 @@ public class ControllerManager { } } + public List> getAvailableSensors(){ return availableSensors; } - + public List getDetectedSensors(){ + return detectedSensors; + } diff --git a/src/se/koc/hal/intf/HalEventController.java b/src/se/koc/hal/intf/HalEventController.java index bfa565f4..179759b3 100755 --- a/src/se/koc/hal/intf/HalEventController.java +++ b/src/se/koc/hal/intf/HalEventController.java @@ -9,24 +9,34 @@ public interface HalEventController { /** * Will register an event type to be handled by this controller */ - public void register(Event event); + public void register(HalEvent event); /** * Deregisters an event from this controller, the controller * will no longer handle that type of event */ - public void deregister(Event event); + public void deregister(HalEvent event); /** * @param event transmit this event if possible. */ - public void send(Event event); + public void send(HalEvent event); // TODO: where to put data? /** * @return the number of registered objects */ public int size(); + /** + * Set a listener that will receive all reports from the the registered Events + */ + void setListener(EventReportListener listener); + + interface EventReportListener{ + void reportReceived(HalEvent s); //TODO: rename, use a better name + } + + /** * Close any resources associated with this controller. * This method could be called multiple times, first time diff --git a/src/se/koc/hal/intf/HalSensorController.java b/src/se/koc/hal/intf/HalSensorController.java index d02062de..9367cadb 100755 --- a/src/se/koc/hal/intf/HalSensorController.java +++ b/src/se/koc/hal/intf/HalSensorController.java @@ -10,23 +10,33 @@ public interface HalSensorController { /** * Will register a sensor type to be handled by this controller */ - public void register(Sensor sensor); + void register(HalSensor sensor); /** * Deregisters a sensor from this controller, the controller * will no longer handle that type of sensor */ - public void deregister(Sensor sensor); + void deregister(HalSensor sensor); /** * @return the number of registered objects */ - public int size(); + int size(); + + /** + * Set a listener that will receive all reports from the the registered Sensors + */ + void setListener(SensorReportListener listener); + + interface SensorReportListener{ + void reportReceived(HalSensor s); + } + /** * Close any resources associated with this controller. * This method could be called multiple times, first time * should be handled as normal any subsequent calls should be ignored. */ - public void close(); + void close(); } diff --git a/src/se/koc/hal/plugin/tellstick/TellstickSerialComm.java b/src/se/koc/hal/plugin/tellstick/TellstickSerialComm.java index c3f3e7ce..0819f3dc 100755 --- a/src/se/koc/hal/plugin/tellstick/TellstickSerialComm.java +++ b/src/se/koc/hal/plugin/tellstick/TellstickSerialComm.java @@ -23,8 +23,8 @@ package se.koc.hal.plugin.tellstick; import com.fazecast.jSerialComm.SerialPort; +import se.koc.hal.intf.HalSensor; import se.koc.hal.intf.HalSensorController; -import se.koc.hal.struct.Sensor; import zutil.log.InputStreamLogger; import zutil.log.LogUtil; import zutil.log.OutputStreamLogger; @@ -35,6 +35,7 @@ import java.util.concurrent.Executors; import java.util.logging.Level; import java.util.logging.Logger; + /** * This version of the TwoWaySerialComm example makes use of the * SerialPortEventListener to avoid polling. @@ -42,19 +43,19 @@ import java.util.logging.Logger; public class TellstickSerialComm implements Runnable, HalSensorController { private static final long TRANSMISSION_UNIQUENESS_TTL = 300; // milliseconds private static final Logger logger = LogUtil.getLogger(); - private static TellstickSerialComm instance; private SerialPort serial; private BufferedReader in; private BufferedWriter out; private TimedHashSet set; // To check for retransmissions - private TellstickParser parser = new TellstickParser(); + private TellstickParser parser; private TellstickChangeListener listener; public TellstickSerialComm() throws Exception { set = new TimedHashSet(TRANSMISSION_UNIQUENESS_TTL); + parser = new TellstickParser(); connect("COM6"); } @@ -138,15 +139,16 @@ public class TellstickSerialComm implements Runnable, HalSensorController { @Override - public void register(Sensor sensor) { - - } + public void register(HalSensor sensor) {} @Override - public void deregister(Sensor sensor) { - - } + public void deregister(HalSensor sensor) {} @Override public int size() { return 0; } + + @Override + public void setListener(SensorReportListener listener) { + + } } \ No newline at end of file diff --git a/src/se/koc/hal/struct/Event.java b/src/se/koc/hal/struct/Event.java index 90dc0e54..b1260c05 100755 --- a/src/se/koc/hal/struct/Event.java +++ b/src/se/koc/hal/struct/Event.java @@ -44,7 +44,7 @@ public class Event extends DBBean{ return DBConnection.exec(stmt, DBBeanSQLResultHandler.createList(Event.class, db) ); } - private HalEvent getEventData(){ + public HalEvent getEventData(){ if(eventData == null) { try { Class c = Class.forName(type); diff --git a/src/se/koc/hal/struct/Sensor.java b/src/se/koc/hal/struct/Sensor.java index f768fbf5..54881160 100755 --- a/src/se/koc/hal/struct/Sensor.java +++ b/src/se/koc/hal/struct/Sensor.java @@ -79,7 +79,7 @@ public class Sensor extends DBBean{ } - private HalSensor getSensorData(){ + public HalSensor getSensorData(){ if(sensorData == null) { try { Class c = Class.forName(type);