Skip to content
This repository has been archived by the owner on May 17, 2021. It is now read-only.

Commit

Permalink
Merge pull request #3704 from cdjackson/zwave-save_nif
Browse files Browse the repository at this point in the history
[ZWave] Add additional device information flags
  • Loading branch information
teichsta committed Jan 4, 2016
2 parents fb4371f + 3b2b8aa commit e81fe7c
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 16 deletions.
Expand Up @@ -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<Integer> nodeInformationFrame = null;
Expand Down Expand Up @@ -830,4 +836,16 @@ public void setApplicationUpdateReceived(boolean received) {
public void updateNIF(List<Integer> 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;
}
}
Expand Up @@ -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)));
Expand Down

0 comments on commit e81fe7c

Please sign in to comment.