diff --git a/bom/BOM.xlsx b/bom/BOM.xlsx new file mode 100644 index 0000000..7050ffd Binary files /dev/null and b/bom/BOM.xlsx differ diff --git a/currentmonitor/lantern-currentmonitor/pom.xml b/currentmonitor/lantern-currentmonitor/pom.xml index 25ece54..b6966ad 100644 --- a/currentmonitor/lantern-currentmonitor/pom.xml +++ b/currentmonitor/lantern-currentmonitor/pom.xml @@ -3,7 +3,7 @@ com.lanternsoftware.currentmonitor lantern-currentmonitor jar - 0.9.5 + 0.9.6 lantern-currentmonitor diff --git a/util/lantern-util-common/src/main/java/com/lanternsoftware/util/ResourceLoader.java b/util/lantern-util-common/src/main/java/com/lanternsoftware/util/ResourceLoader.java index 9e649c8..c20d22a 100644 --- a/util/lantern-util-common/src/main/java/com/lanternsoftware/util/ResourceLoader.java +++ b/util/lantern-util-common/src/main/java/com/lanternsoftware/util/ResourceLoader.java @@ -118,6 +118,8 @@ public abstract class ResourceLoader { try { os = new FileOutputStream(_sFile, false); os.write(_btData); + os.flush(); + os.getFD().sync(); } catch (Throwable t) { LOG.error("Failed to write file: " + _sFile, t); diff --git a/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/controller/Controller.java b/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/controller/Controller.java index ee78e31..a89cc68 100644 --- a/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/controller/Controller.java +++ b/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/controller/Controller.java @@ -161,7 +161,7 @@ public class Controller { callbacks.put(callback, message.getNodeId()); log += " callback: " + callback; } - logger.info(log); + logger.debug(log); byte[] data = message.toByteArray((byte) 0, callback); logger.debug("Sending outbound: {}", NullUtils.toHexBytes(data)); responseReceived = false; @@ -206,7 +206,7 @@ public class Controller { sendRaw(new byte[]{ACK}); Message message = MessageEngine.decode(_buffer); if (message != null) { - logger.info("Received message inbound: {}", message.describe()); + logger.debug("Received message inbound: {}", message.describe()); MessageEngine.publish(message); if (message instanceof ResponseMessage) { synchronized (responseMutex) { diff --git a/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/message/CommandClass.java b/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/message/CommandClass.java index 2f83015..c099b13 100644 --- a/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/message/CommandClass.java +++ b/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/message/CommandClass.java @@ -42,6 +42,7 @@ public enum CommandClass { SCHEDULE_ENTRY_LOCK((byte)0x4E, "SCHEDULE_ENTRY_LOCK"), BASIC_WINDOW_COVERING((byte)0x50, "BASIC_WINDOW_COVERING"), MTP_WINDOW_COVERING((byte)0x51, "MTP_WINDOW_COVERING"), + CRC_16_ENCAP((byte)0x5B, "CRC_16_ENCAP"), MULTI_INSTANCE((byte)0x60, "MULTI_INSTANCE"), DOOR_LOCK((byte)0x62, "DOOR_LOCK"), USER_CODE((byte)0x63, "USER_CODE"), diff --git a/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/message/impl/CRC16EncapRequest.java b/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/message/impl/CRC16EncapRequest.java new file mode 100644 index 0000000..d6a85f1 --- /dev/null +++ b/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/message/impl/CRC16EncapRequest.java @@ -0,0 +1,28 @@ +package com.lanternsoftware.zwave.message.impl; + +import com.lanternsoftware.zwave.message.CommandClass; +import com.lanternsoftware.zwave.message.ControllerMessageType; +import com.lanternsoftware.zwave.message.RequestMessage; + +public class CRC16EncapRequest extends RequestMessage { + private boolean on; + + public CRC16EncapRequest() { + super(ControllerMessageType.ApplicationCommandHandler, CommandClass.CRC_16_ENCAP, (byte) 0x03); + } + + @Override + public void fromPayload(byte[] _payload) { + nodeId = _payload[5]; + on = _payload[11] == 1; + } + + public boolean isOn() { + return on; + } + + @Override + public String describe() { + return name() + " node: " + nodeId + " on: " + on; + } +} diff --git a/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/message/impl/ConfigurationSetRequest.java b/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/message/impl/ConfigurationSetRequest.java new file mode 100644 index 0000000..ce8065c --- /dev/null +++ b/zwave/lantern-zwave/src/main/java/com/lanternsoftware/zwave/message/impl/ConfigurationSetRequest.java @@ -0,0 +1,47 @@ +package com.lanternsoftware.zwave.message.impl; + +import com.lanternsoftware.util.CollectionUtils; +import com.lanternsoftware.util.NullUtils; +import com.lanternsoftware.zwave.message.CommandClass; +import com.lanternsoftware.zwave.message.SendDataRequestMessage; + +public class ConfigurationSetRequest extends SendDataRequestMessage { + private byte parameter; + private byte[] value; + + public ConfigurationSetRequest() { + this((byte)0, (byte)0, null); + } + + public ConfigurationSetRequest(byte _nodeId, byte _parameter, byte[] _value) { + super(_nodeId, CommandClass.CONFIGURATION, (byte) 0x04); + parameter = _parameter; + value = _value; + } + + public byte getParameter() { + return parameter; + } + + public void setParameter(byte _parameter) { + parameter = _parameter; + } + + public byte[] getValue() { + return value; + } + + public void setValue(byte[] _value) { + value = _value; + } + + @Override + public byte[] getPayload() { + return CollectionUtils.merge(asByteArray(parameter), asByteArray((byte)CollectionUtils.length(value)), value); + } + + @Override + public String describe() { + return name() + " node: " + nodeId + " parameter: " + parameter + " value: " + NullUtils.toHex(value); + } +} diff --git a/zwave/lantern-zwave/src/main/resources/META-INF/services/com.lanternsoftware.zwave.message.Message b/zwave/lantern-zwave/src/main/resources/META-INF/services/com.lanternsoftware.zwave.message.Message index 9a6e892..ea84139 100644 --- a/zwave/lantern-zwave/src/main/resources/META-INF/services/com.lanternsoftware.zwave.message.Message +++ b/zwave/lantern-zwave/src/main/resources/META-INF/services/com.lanternsoftware.zwave.message.Message @@ -2,10 +2,12 @@ com.lanternsoftware.zwave.message.impl.ApplicationUpdateRequest com.lanternsoftware.zwave.message.impl.BinarySwitchSetRequest com.lanternsoftware.zwave.message.impl.BinarySwitchReportRequest com.lanternsoftware.zwave.message.impl.ByteMessage +com.lanternsoftware.zwave.message.impl.ConfigurationSetRequest com.lanternsoftware.zwave.message.impl.ControllerCapabilitiesRequest com.lanternsoftware.zwave.message.impl.ControllerCapabilitiesResponse com.lanternsoftware.zwave.message.impl.ControllerInitialDataRequest com.lanternsoftware.zwave.message.impl.ControllerInitialDataResponse +com.lanternsoftware.zwave.message.impl.CRC16EncapRequest com.lanternsoftware.zwave.message.impl.DeviceManufacturerActionRequest com.lanternsoftware.zwave.message.impl.GetControllerIdRequest com.lanternsoftware.zwave.message.impl.GetControllerIdResponse