logger.info("Got ACK for message " + msg.msgCount
+ " but it wasn't in the queue");
}
}
if (sequenceRegister.containsKey(new BaseMsg(data).msgCount)) {
passToBinding = false;
/*
* message found in sequence register, so it will be handled
* by the sequence
*/
BaseMsg bMsg = new BaseMsg(data);
logger.debug("Message "
+ bMsg.msgCount
+ " is part of sequence. Running next step in sequence.");
sequenceRegister.get(bMsg.msgCount).runSequencer(bMsg);
sequenceRegister.remove(bMsg.msgCount);
}
if (passToBinding) {
/* pass data to binding for processing */
this.mcbmp.maxCulMsgReceived(data, false);
}
} else if (BaseMsg.isForUs(data, "000000")) {
switch (BaseMsg.getMsgType(data)) {
case PAIR_PING:
case WALL_THERMOSTAT_CONTROL:
case THERMOSTAT_STATE:
case WALL_THERMOSTAT_STATE:
this.mcbmp.maxCulMsgReceived(data, true);
break;
default:
/* TODO handle other broadcast */
logger.debug("Unhandled broadcast message of type "
+ BaseMsg.getMsgType(data).toString());
break;
}
} else {
// Associated devices send messages that tell of their status to
// the associated
// device. We need to spy on devices we know about to extract
// useful data
boolean passToBinding = false;
BaseMsg bMsg = new BaseMsg(data);
for (MaxCulBindingProvider provider : providers) {
// look up source device configs
List<MaxCulBindingConfig> configs = provider
.getConfigsForRadioAddr(bMsg.srcAddrStr);
if (!configs.isEmpty()) {