detected device bug fix

Former-commit-id: f56ddf18a7db16ef07874aceb1d49b7aa4b1bcdd
This commit is contained in:
Ziver Koc 2016-01-22 20:28:05 +01:00
parent 3343ad83db
commit 09d59635c3
3 changed files with 22 additions and 16 deletions

View file

@ -32,7 +32,7 @@ public class ControllerManager implements HalSensorReportListener,
/** List of all registered sensors **/ /** List of all registered sensors **/
private List<Sensor> registeredSensors = new ArrayList<>(); private List<Sensor> registeredSensors = new ArrayList<>();
/** List of auto detected sensors **/ /** List of auto detected sensors **/
private List<HalSensorData> detectedSensors = new ArrayList<>(); private List<Sensor> detectedSensors = new ArrayList<>();
/** List of sensors that are currently being reconfigured **/ /** List of sensors that are currently being reconfigured **/
private List<Sensor> limboSensors = new LinkedList<>(); private List<Sensor> limboSensors = new LinkedList<>();
@ -42,7 +42,7 @@ public class ControllerManager implements HalSensorReportListener,
/** List of all registered events **/ /** List of all registered events **/
private List<Event> registeredEvents = new ArrayList<>(); private List<Event> registeredEvents = new ArrayList<>();
/** List of auto detected events **/ /** List of auto detected events **/
private List<HalEventData> detectedEvents = new ArrayList<>(); private List<Event> detectedEvents = new ArrayList<>();
/** List of all registered events **/ /** List of all registered events **/
private List<Event> limboEvents = new LinkedList<>(); private List<Event> limboEvents = new LinkedList<>();
@ -71,6 +71,7 @@ public class ControllerManager implements HalSensorReportListener,
if(controller != null) if(controller != null)
controller.register(sensor.getDeviceData()); controller.register(sensor.getDeviceData());
registeredSensors.add(sensor); registeredSensors.add(sensor);
detectedSensors.remove(findSensor(sensor.getDeviceData(), detectedSensors)); // Remove if this device was detected
} }
public void deregister(Sensor sensor){ public void deregister(Sensor sensor){
@ -93,7 +94,7 @@ public class ControllerManager implements HalSensorReportListener,
return availableSensors; return availableSensors;
} }
public List<HalSensorData> getDetectedSensors(){ public List<Sensor> getDetectedSensors(){
return detectedSensors; return detectedSensors;
} }
@ -117,7 +118,9 @@ public class ControllerManager implements HalSensorReportListener,
else { // unknown sensor else { // unknown sensor
logger.finest("Received report from unregistered sensor: "+ sensorData); logger.finest("Received report from unregistered sensor: "+ sensorData);
if(!detectedSensors.contains(sensorData)) { if(!detectedSensors.contains(sensorData)) {
detectedSensors.add(sensorData); Sensor detectedSensor = new Sensor();
detectedSensor.setDeviceData(sensorData);
detectedSensors.add(detectedSensor);
} }
} }
}catch (SQLException e){ }catch (SQLException e){
@ -153,6 +156,7 @@ public class ControllerManager implements HalSensorReportListener,
if(controller != null) if(controller != null)
controller.register(event.getDeviceData()); controller.register(event.getDeviceData());
registeredEvents.add(event); registeredEvents.add(event);
detectedEvents.remove(findEvent(event.getDeviceData(), detectedEvents)); // Remove if this device was detected
} }
public void deregister(Event event){ public void deregister(Event event){
@ -175,7 +179,7 @@ public class ControllerManager implements HalSensorReportListener,
return availableEvents; return availableEvents;
} }
public List<HalEventData> getDetectedEvents(){ public List<Event> getDetectedEvents(){
return detectedEvents; return detectedEvents;
} }
@ -183,7 +187,7 @@ public class ControllerManager implements HalSensorReportListener,
public void reportReceived(HalEventData eventData) { public void reportReceived(HalEventData eventData) {
try { try {
DBConnection db = HalContext.getDB(); DBConnection db = HalContext.getDB();
Event event = findRegisteredEvent(eventData, registeredEvents); Event event = findEvent(eventData, registeredEvents);
if (event != null) { if (event != null) {
event.setDeviceData(eventData); // Set the latest data event.setDeviceData(eventData); // Set the latest data
@ -199,7 +203,9 @@ public class ControllerManager implements HalSensorReportListener,
else { // unknown sensor else { // unknown sensor
logger.info("Received report from unregistered event: "+ eventData); logger.info("Received report from unregistered event: "+ eventData);
if(!detectedEvents.contains(eventData)) { if(!detectedEvents.contains(eventData)) {
detectedEvents.add(eventData); Event detectedEvent = new Event();
detectedEvent.setDeviceData(eventData);
detectedEvents.add(detectedEvent);
} }
} }
}catch (SQLException e){ }catch (SQLException e){
@ -207,7 +213,7 @@ public class ControllerManager implements HalSensorReportListener,
} }
} }
private static Event findRegisteredEvent(HalEventData eventData, List<Event> list){ private static Event findEvent(HalEventData eventData, List<Event> list){
for (Event e : list) { for (Event e : list) {
if (eventData.equals(e.getDeviceData())) { if (eventData.equals(e.getDeviceData())) {
return e; return e;
@ -235,7 +241,7 @@ public class ControllerManager implements HalSensorReportListener,
} }
} }
else if(obj instanceof HalEventController) { else if(obj instanceof HalEventController) {
Event event = findRegisteredEvent((HalEventData) obj, registeredEvents); Event event = findEvent((HalEventData) obj, registeredEvents);
if(event != null){ if(event != null){
deregister(event); deregister(event);
limboEvents.add(event); limboEvents.add(event);
@ -253,7 +259,7 @@ public class ControllerManager implements HalSensorReportListener,
} }
} }
else if(obj instanceof HalEventController) { else if(obj instanceof HalEventController) {
Event event = findRegisteredEvent((HalEventData) obj, limboEvents); Event event = findEvent((HalEventData) obj, limboEvents);
if(event != null){ if(event != null){
register(event); register(event);
limboEvents.remove(event); limboEvents.remove(event);

View file

@ -61,14 +61,14 @@
</thead> </thead>
{{#detectedEvents}} {{#detectedEvents}}
<tr> <tr>
<td>{{.getClass().getName()}}</td> <td>{{.getType()}}</td>
<td>{{.getTimestamp()}}</td> <td>{{.getDeviceData().getTimestamp()}}</td>
<td>{{.}}</td> <td>{{.}}</td>
<td> <td>
<div class="btn-toolbar pull-right"> <div class="btn-toolbar pull-right">
<button type="button" class="btn btn-default btn-xs" data-toggle="modal" <button type="button" class="btn btn-default btn-xs" data-toggle="modal"
data-target="#eventModal" data-target="#eventModal"
data-type="{{.getClass().getName()}}" data-type="{{.getType()}}"
{{#.getDeviceConfig().getConfiguration()}} {{#.getDeviceConfig().getConfiguration()}}
data-{{.getName()}}="{{.getString()}}" data-{{.getName()}}="{{.getString()}}"
{{/.getDeviceConfig().getConfiguration()}} {{/.getDeviceConfig().getConfiguration()}}

View file

@ -64,14 +64,14 @@
</thead> </thead>
{{#detectedSensors}} {{#detectedSensors}}
<tr> <tr>
<td>{{.getClass().getName()}}</td> <td>{{.getType()}}</td>
<td>{{.getTimestamp()}}</td> <td>{{.getDeviceData().getTimestamp()}}</td>
<td>{{.}}</td> <td>{{.}}</td>
<td> <td>
<div class="btn-toolbar pull-right"> <div class="btn-toolbar pull-right">
<button type="button" class="btn btn-default btn-xs" data-toggle="modal" <button type="button" class="btn btn-default btn-xs" data-toggle="modal"
data-target="#sensorModal" data-target="#sensorModal"
data-type="{{.getClass().getName()}" data-type="{{.getType()}}"
{{#.getDeviceConfig().getConfiguration()}} {{#.getDeviceConfig().getConfiguration()}}
data-{{.getName()}}="{{.getString()}}" data-{{.getName()}}="{{.getString()}}"
{{/.getDeviceConfig().getConfiguration()}} {{/.getDeviceConfig().getConfiguration()}}