}
} else if (message.getType() == MessageType.L) {
Collection<? extends Device> tempDevices = ((L_Message) message).getDevices(configurations);
for (Device d : tempDevices) {
Device existingDevice = findDevice(d.getSerialNumber(), devices);
if (existingDevice == null) {
devices.add(d);
} else {
devices.remove(existingDevice);
devices.add(d);
}
}
logger.debug("{} devices found.", devices.size());
// the L message is the last one, while the reader
// would hang trying to read a new line and
// eventually the
// cube will fail to establish
// new connections for some time
cont = false;
}
}
} catch (Exception e) {
logger.info("Failed to process message received by MAX! protocol.");
logger.debug(Utils.getStackTrace(e));
}
}
socket.close();
for (MaxCubeBindingProvider provider : providers) {
for (String itemName : provider.getItemNames()) {
String serialNumber = provider.getSerialNumber(itemName);
Device device = findDevice(serialNumber, devices);
if (device == null) {
logger.info("Cannot find MAX!cube device with serial number '{}'", serialNumber);
if (logger.isDebugEnabled()) {
StringBuilder sb = new StringBuilder();
sb.append("Available MAX! devices are:");
for (Device d : devices) {
sb.append("\n\t");
sb.append(d.getSerialNumber());
}
logger.debug(sb.toString());
}
continue;
}
switch (device.getType()) {
case HeatingThermostatPlus:
case HeatingThermostat:
if (provider.getBindingType(itemName) == BindingType.VALVE) {
eventPublisher.postUpdate(itemName, ((HeatingThermostat) device).getValvePosition());
} else if (provider.getBindingType(itemName) == BindingType.MODE) {