Esempio n. 1
0
        protected override byte[] CreateActionDatagram(string destinationAddress, byte[] data)
        {
            lock (KnxConnectionTunneling.SequenceNumberLock)
            {
                try
                {
                    var dataLength = KnxHelper.GetDataLength(data);

                    // HEADER
                    var datagram = new byte[10];
                    datagram[00] = 0x06;
                    datagram[01] = 0x10;
                    datagram[02] = 0x04;
                    datagram[03] = 0x20;

                    var totalLength = BitConverter.GetBytes(dataLength + 20);
                    datagram[04] = totalLength[1];
                    datagram[05] = totalLength[0];

                    datagram[06] = 0x04;
                    datagram[07] = KnxConnectionTunneling.ChannelId;
                    datagram[08] = KnxConnectionTunneling.GenerateSequenceNumber();
                    datagram[09] = 0x00;

                    return(CreateActionDatagramCommon(destinationAddress, data, datagram));
                }
                catch
                {
                    KnxConnectionTunneling.RevertSingleSequenceNumber();

                    return(null);
                }
            }
        }
Esempio n. 2
0
        protected override byte[] CreateActionDatagram(string destinationAddress, byte[] data)
        {
            var dataLength = KnxHelper.GetDataLength(data);

            // HEADER
            var datagram = new byte[6];

            datagram[0] = 0x06;
            datagram[1] = 0x10;
            datagram[2] = 0x05;
            datagram[3] = 0x30;
            var totalLength = BitConverter.GetBytes(dataLength + 16);

            datagram[4] = totalLength[1];
            datagram[5] = totalLength[0];

            return(CreateActionDatagramCommon(destinationAddress, data, datagram));
        }