Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1282,12 +1282,15 @@ public List<ZWaveCommandClassPayload> processCommand(ZWaveCommandClassPayload pa
}

// Check that the length is long enough for the encapsulated command to be included
if (payload.getCommandClassCommand() == 6 && payload.getPayloadLength() > 4) {
if (payload.getCommandClassCommand() == 6 && payload.getPayloadLength() > 4
&& !hasMultiInstanceAsMultiChannelQuirk()) {
// MULTI_INSTANCE_ENCAP
endpointNumber = payload.getPayloadByte(2);

payload = new ZWaveCommandClassPayload(payload, 3);
} else if (payload.getCommandClassCommand() == 13 && payload.getPayloadLength() > 5) {
} else if ((payload.getCommandClassCommand() == 13
|| payload.getCommandClassCommand() == 6 && hasMultiInstanceAsMultiChannelQuirk())
&& payload.getPayloadLength() > 5) {
// MULTI_CHANNEL_ENCAP
endpointNumber = multichannelCommandClass.getSourceEndpoint(payload);
payload = new ZWaveCommandClassPayload(payload, 4);
Expand Down Expand Up @@ -1541,4 +1544,9 @@ private synchronized void resetSleepTimer() {
}
timerTask = null;
}

// The IRIS Radio Thermostat CT-101 has a bug where it sends an incorrect command class code.
private boolean hasMultiInstanceAsMultiChannelQuirk() {
return manufacturer == 0x98 && deviceType == 0x6501 && deviceId == 0xc;
}
}