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