Esempio n. 1
0
        public static TunnelingAck Parse(byte[] buffer, int index)
        {
            TunnelingAck request = new TunnelingAck
            {
                Header           = KnxNetIPHeader.Parse(buffer, index),
                ConnectionHeader = KnxNetBodyConnectionHeader.Parse(buffer, index + 6)
            };

            return(request);
        }
        public static KnxNetBodyConnectionHeader Parse(byte[] buffer, int index)
        {
            KnxNetBodyConnectionHeader header = new KnxNetBodyConnectionHeader
            {
                StructureLength = buffer[index],
                ChannelId       = buffer[index + 1],
                SequenceCounter = buffer[index + 2],
                Reserved        = buffer[index + 3]
            };

            return(header);
        }
Esempio n. 3
0
        public static TunnelingRequest Parse(byte[] buffer, int index)
        {
            TunnelingRequest request = new TunnelingRequest
            {
                Header           = KnxNetIPHeader.Parse(buffer, index),
                ConnectionHeader = KnxNetBodyConnectionHeader.Parse(buffer, index + 6)
            };

            int cemiFrameSize = request.Header.Size - request.ConnectionHeader.StructureLength -
                                request.Header.HeaderSize;

            if (cemiFrameSize == 0)
            {
                return(request);
            }

            CommonExternalMessageInterface msg;

            CommonExternalMessageInterface.TryParse(buffer, index + 10, cemiFrameSize, out msg);
            request.Message = msg;

            return(request);
        }