From 3b2b8aadf0ee38e0290438a6a37435fd37fec6ed Mon Sep 17 00:00:00 2001 From: Chris Jackson Date: Mon, 4 Jan 2016 17:22:23 +0000 Subject: [PATCH] Add additional device information flags Signed-off-by: Chris Jackson --- .../zwave/internal/protocol/ZWaveNode.java | 20 ++++++++- .../IdentifyNodeMessageClass.java | 43 ++++++++++++------- 2 files changed, 47 insertions(+), 16 deletions(-) diff --git a/bundles/binding/org.openhab.binding.zwave/src/main/java/org/openhab/binding/zwave/internal/protocol/ZWaveNode.java b/bundles/binding/org.openhab.binding.zwave/src/main/java/org/openhab/binding/zwave/internal/protocol/ZWaveNode.java index 78c4445a1af..6f8e4efc72d 100644 --- a/bundles/binding/org.openhab.binding.zwave/src/main/java/org/openhab/binding/zwave/internal/protocol/ZWaveNode.java +++ b/bundles/binding/org.openhab.binding.zwave/src/main/java/org/openhab/binding/zwave/internal/protocol/ZWaveNode.java @@ -77,7 +77,13 @@ public class ZWaveNode { private boolean frequentlyListening; private boolean routing; private String healState; - + @SuppressWarnings("unused") + private boolean security; + @SuppressWarnings("unused") + private boolean beaming; + @SuppressWarnings("unused") + private int maxBaudRate; + // Keep the NIF - just used for information and debug in the XML @SuppressWarnings("unused") private List nodeInformationFrame = null; @@ -830,4 +836,16 @@ public void setApplicationUpdateReceived(boolean received) { public void updateNIF(List nif) { nodeInformationFrame = nif; } + + public void setSecurity(boolean security) { + this.security = security; + } + + public void setBeaming(boolean beaming) { + this.beaming = beaming; + } + + public void setMaxBaud(int maxBaudRate) { + this.maxBaudRate = maxBaudRate; + } } diff --git a/bundles/binding/org.openhab.binding.zwave/src/main/java/org/openhab/binding/zwave/internal/protocol/serialmessage/IdentifyNodeMessageClass.java b/bundles/binding/org.openhab.binding.zwave/src/main/java/org/openhab/binding/zwave/internal/protocol/serialmessage/IdentifyNodeMessageClass.java index 98dded76a64..32a96fdb868 100644 --- a/bundles/binding/org.openhab.binding.zwave/src/main/java/org/openhab/binding/zwave/internal/protocol/serialmessage/IdentifyNodeMessageClass.java +++ b/bundles/binding/org.openhab.binding.zwave/src/main/java/org/openhab/binding/zwave/internal/protocol/serialmessage/IdentifyNodeMessageClass.java @@ -53,21 +53,34 @@ public boolean handleResponse(ZWaveController zController, SerialMessage lastSen ZWaveNode node = zController.getNode(nodeId); - boolean listening = (incomingMessage.getMessagePayloadByte(0) & 0x80)!=0 ? true : false; - boolean routing = (incomingMessage.getMessagePayloadByte(0) & 0x40)!=0 ? true : false; - int version = (incomingMessage.getMessagePayloadByte(0) & 0x07) + 1; - boolean frequentlyListening = (incomingMessage.getMessagePayloadByte(1) & 0x60)!= 0 ? true : false; - - logger.debug("NODE {}: Listening = {}", nodeId, listening); - logger.debug("NODE {}: Routing = {}", nodeId, routing); - logger.debug("NODE {}: Version = {}", nodeId, version); - logger.debug("NODE {}: FLIRS = {}", nodeId, frequentlyListening); - - node.setListening(listening); - node.setRouting(routing); - node.setVersion(version); - node.setFrequentlyListening(frequentlyListening); - + boolean listening = (incomingMessage.getMessagePayloadByte(0) & 0x80) != 0 ? true : false; + boolean routing = (incomingMessage.getMessagePayloadByte(0) & 0x40) != 0 ? true : false; + int version = (incomingMessage.getMessagePayloadByte(0) & 0x07) + 1; + boolean frequentlyListening = (incomingMessage.getMessagePayloadByte(1) & 0x60) != 0 ? true : false; + boolean beaming = ((incomingMessage.getMessagePayloadByte(1) & 0x10) != 0); + boolean security = ((incomingMessage.getMessagePayloadByte(1) & 0x01) != 0); + + int maxBaudRate = 9600; + if ((incomingMessage.getMessagePayloadByte(0) & 0x38) == 0x10) { + maxBaudRate = 40000; + } + + logger.debug("NODE {}: Listening = {}", nodeId, listening); + logger.debug("NODE {}: Routing = {}", nodeId, routing); + logger.debug("NODE {}: Beaming = {}", nodeId, beaming); + logger.debug("NODE {}: Version = {}", nodeId, version); + logger.debug("NODE {}: FLIRS = {}", nodeId, frequentlyListening); + logger.debug("NODE {}: Security = {}", nodeId, security); + logger.debug("NODE {}: Max Baud = {}", nodeId, maxBaudRate); + + node.setListening(listening); + node.setRouting(routing); + node.setVersion(version); + node.setFrequentlyListening(frequentlyListening); + node.setSecurity(security); + node.setBeaming(beaming); + node.setMaxBaud(maxBaudRate); + Basic basic = Basic.getBasic(incomingMessage.getMessagePayloadByte(3)); if (basic == null) { logger.error(String.format("NODE %d: Basic device class 0x%02x not found", nodeId, incomingMessage.getMessagePayloadByte(3)));