private void ListenTask()
 {
     while (true)
     {
         byte[]         buffer = UdpClient.ReceiveAsync().Result.Buffer;
         KnxNetIPHeader header = KnxNetIPHeader.Parse(buffer, 0);
         ProcessIncomming(buffer, header);
     }
     // ReSharper disable once FunctionNeverReturns
 }
Exemple #2
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 ConnectResponse Parse(byte[] buffer, int index)
        {
            int             progress = 0;
            ConnectResponse output   = new ConnectResponse();

            output.Header = KnxNetIPHeader.Parse(buffer, index + progress);
            progress     += 6;

            output.ChannelId = buffer[index + progress];
            progress++;
            output.Status = buffer[index + progress];
            progress++;

            if (output.Status == 0)
            {
                output.DataEndpoint = KnxNetIPHPAI.Parse(buffer, index + progress);
                progress           += output.DataEndpoint.Lenght;

                output.ResponseDataBlock = KnxNetIPCRD.Parse(buffer, index + progress);
            }

            return(output);
        }
Exemple #4
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);
        }