Changed Controller Object sensor from Sensor to HalSensor

Former-commit-id: efbf9952098f1bdd70547d12a98a62a396fbf705
This commit is contained in:
Ziver Koc 2016-01-04 18:16:58 +01:00
parent a63f34641f
commit 6522b817dc
6 changed files with 51 additions and 21 deletions

View file

@ -1,6 +1,7 @@
package se.koc.hal; package se.koc.hal;
import net.didion.jwnl.data.Exc; import net.didion.jwnl.data.Exc;
import se.koc.hal.intf.HalSensor;
import se.koc.hal.intf.HalSensorController; import se.koc.hal.intf.HalSensorController;
import se.koc.hal.struct.Sensor; import se.koc.hal.struct.Sensor;
import zutil.log.LogUtil; import zutil.log.LogUtil;
@ -22,7 +23,11 @@ public class ControllerManager {
private static ControllerManager instance; private static ControllerManager instance;
/** All available sensor plugins **/
private ArrayList<Class<?>> availableSensors = new ArrayList<>(); private ArrayList<Class<?>> availableSensors = new ArrayList<>();
/** List of auto detected sensors **/
private ArrayList<HalSensor> detectedSensors = new ArrayList<>();
/** A map of all instantiated controllers **/
private HashMap<Class,HalSensorController> controllerMap = new HashMap<>(); private HashMap<Class,HalSensorController> controllerMap = new HashMap<>();
@ -44,7 +49,7 @@ public class ControllerManager {
} }
if(controller != null) if(controller != null)
controller.register(sensor); controller.register(sensor.getSensorData());
} }
public void deregister(Sensor sensor){ public void deregister(Sensor sensor){
@ -52,7 +57,7 @@ public class ControllerManager {
HalSensorController controller; HalSensorController controller;
if (controllerMap.containsKey(c)) { if (controllerMap.containsKey(c)) {
controller = controllerMap.get(c); controller = controllerMap.get(c);
controller.deregister(sensor); controller.deregister(sensor.getSensorData());
if(controller.size() == 0){ if(controller.size() == 0){
// Remove controller as it has no more registered sensors // Remove controller as it has no more registered sensors
logger.fine("Closing controller as it has no more registered sensors: "+c.getName()); logger.fine("Closing controller as it has no more registered sensors: "+c.getName());
@ -62,11 +67,14 @@ public class ControllerManager {
} }
} }
public List<Class<?>> getAvailableSensors(){ public List<Class<?>> getAvailableSensors(){
return availableSensors; return availableSensors;
} }
public List<HalSensor> getDetectedSensors(){
return detectedSensors;
}

View file

@ -9,24 +9,34 @@ public interface HalEventController {
/** /**
* Will register an event type to be handled by this controller * 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 * Deregisters an event from this controller, the controller
* will no longer handle that type of event * 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. * @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 * @return the number of registered objects
*/ */
public int size(); 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. * Close any resources associated with this controller.
* This method could be called multiple times, first time * This method could be called multiple times, first time

View file

@ -10,23 +10,33 @@ public interface HalSensorController {
/** /**
* Will register a sensor type to be handled by this controller * 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 * Deregisters a sensor from this controller, the controller
* will no longer handle that type of sensor * will no longer handle that type of sensor
*/ */
public void deregister(Sensor sensor); void deregister(HalSensor sensor);
/** /**
* @return the number of registered objects * @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. * Close any resources associated with this controller.
* This method could be called multiple times, first time * This method could be called multiple times, first time
* should be handled as normal any subsequent calls should be ignored. * should be handled as normal any subsequent calls should be ignored.
*/ */
public void close(); void close();
} }

View file

@ -23,8 +23,8 @@
package se.koc.hal.plugin.tellstick; package se.koc.hal.plugin.tellstick;
import com.fazecast.jSerialComm.SerialPort; import com.fazecast.jSerialComm.SerialPort;
import se.koc.hal.intf.HalSensor;
import se.koc.hal.intf.HalSensorController; import se.koc.hal.intf.HalSensorController;
import se.koc.hal.struct.Sensor;
import zutil.log.InputStreamLogger; import zutil.log.InputStreamLogger;
import zutil.log.LogUtil; import zutil.log.LogUtil;
import zutil.log.OutputStreamLogger; import zutil.log.OutputStreamLogger;
@ -35,6 +35,7 @@ import java.util.concurrent.Executors;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
/** /**
* This version of the TwoWaySerialComm example makes use of the * This version of the TwoWaySerialComm example makes use of the
* SerialPortEventListener to avoid polling. * SerialPortEventListener to avoid polling.
@ -42,19 +43,19 @@ import java.util.logging.Logger;
public class TellstickSerialComm implements Runnable, HalSensorController { public class TellstickSerialComm implements Runnable, HalSensorController {
private static final long TRANSMISSION_UNIQUENESS_TTL = 300; // milliseconds private static final long TRANSMISSION_UNIQUENESS_TTL = 300; // milliseconds
private static final Logger logger = LogUtil.getLogger(); private static final Logger logger = LogUtil.getLogger();
private static TellstickSerialComm instance;
private SerialPort serial; private SerialPort serial;
private BufferedReader in; private BufferedReader in;
private BufferedWriter out; private BufferedWriter out;
private TimedHashSet set; // To check for retransmissions private TimedHashSet set; // To check for retransmissions
private TellstickParser parser = new TellstickParser(); private TellstickParser parser;
private TellstickChangeListener listener; private TellstickChangeListener listener;
public TellstickSerialComm() throws Exception { public TellstickSerialComm() throws Exception {
set = new TimedHashSet(TRANSMISSION_UNIQUENESS_TTL); set = new TimedHashSet(TRANSMISSION_UNIQUENESS_TTL);
parser = new TellstickParser();
connect("COM6"); connect("COM6");
} }
@ -138,15 +139,16 @@ public class TellstickSerialComm implements Runnable, HalSensorController {
@Override @Override
public void register(Sensor sensor) { public void register(HalSensor sensor) {}
}
@Override @Override
public void deregister(Sensor sensor) { public void deregister(HalSensor sensor) {}
}
@Override @Override
public int size() { public int size() {
return 0; return 0;
} }
@Override
public void setListener(SensorReportListener listener) {
}
} }

View file

@ -44,7 +44,7 @@ public class Event extends DBBean{
return DBConnection.exec(stmt, DBBeanSQLResultHandler.createList(Event.class, db) ); return DBConnection.exec(stmt, DBBeanSQLResultHandler.createList(Event.class, db) );
} }
private HalEvent getEventData(){ public HalEvent getEventData(){
if(eventData == null) { if(eventData == null) {
try { try {
Class c = Class.forName(type); Class c = Class.forName(type);

View file

@ -79,7 +79,7 @@ public class Sensor extends DBBean{
} }
private HalSensor getSensorData(){ public HalSensor getSensorData(){
if(sensorData == null) { if(sensorData == null) {
try { try {
Class c = Class.forName(type); Class c = Class.forName(type);