diff --git a/src/KNXLib/KnxConnection.cs b/src/KNXLib/KnxConnection.cs index b56be33..fa3ae26 100644 --- a/src/KNXLib/KnxConnection.cs +++ b/src/KNXLib/KnxConnection.cs @@ -221,7 +221,7 @@ public void Action(string address, bool data) if (val == null) throw new InvalidKnxDataException(data.ToString()); - Action(address, val); + Action(address, val, false); } /// @@ -286,7 +286,7 @@ public void Action(string address, int data) /// byte value public void Action(string address, byte data) { - Action(address, new byte[] {0x00, data}); + Action(address, new byte[] {data}); } /// @@ -294,8 +294,17 @@ public void Action(string address, byte data) /// /// KNX Address /// Byte array value - public void Action(string address, byte[] data) + /// adds extra byte to chop off for payload + public void Action(string address, byte[] data, bool addTruncateByte = true) { + if (addTruncateByte) + { + // reverse bytes temporary to add byte in front + Array.Reverse(data); + Array.Resize(ref data, data.Length + 1); + data[data.Length - 1] = 0x00; + Array.Reverse(data); + } Logger.Debug(ClassName, "Sending 0x{0} to {1}.", BitConverter.ToString(data), address); _lockManager.PerformLockedOperation(() => KnxSender.Action(address, data)); diff --git a/src/KNXLib/KnxHelper.cs b/src/KNXLib/KnxHelper.cs index a3c9339..5f0795d 100644 --- a/src/KNXLib/KnxHelper.cs +++ b/src/KNXLib/KnxHelper.cs @@ -311,22 +311,11 @@ public static void WriteData(byte[] datagram, byte[] data, int dataStart) } else if (data.Length > 1) { - if (data[0] < 0x3F) - { datagram[dataStart] = (byte)(datagram[dataStart] | data[0]); - for (var i = 1; i < data.Length; i++) { datagram[dataStart + i] = data[i]; } - } - else - { - for (var i = 0; i < data.Length; i++) - { - datagram[dataStart + 1 + i] = data[i]; - } - } } } #endregion