Changed Controller Object sensor from Sensor to HalSensor
Former-commit-id: efbf9952098f1bdd70547d12a98a62a396fbf705
This commit is contained in:
parent
a63f34641f
commit
6522b817dc
6 changed files with 51 additions and 21 deletions
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue