private void SendCEMI(CommonExternalMessageInterface message) { lock (_connection.SequenceNumberLock) { TunnelingRequest request = new TunnelingRequest() { ConnectionHeader = new KnxNetBodyConnectionHeader() { ChannelId = _connection.ChannelId, SequenceCounter = _connection.GetNextSequenceNumber() }, Message = message }; UdpClient.SendAsync(request.GetBytes(), _connection.RemoteEndPoint); } }
private void HandleTunnelingRequest(byte[] buffer, KnxNetIPHeader header) { TunnelingRequest request = TunnelingRequest.Parse(buffer, 0); TunnelingAck ack = new TunnelingAck { ConnectionHeader = request.ConnectionHeader }; _connection._sender.SendPacket(ack); _receivedPackets.Add(new KnxReceivedDataInEventArgs() { DestinationAddress = request.Message.GetDestinationAddress(), SourceAddress = request.Message.GetSourceAddress(), Data = request.Message.GetData(), RequestType = request.Message.GetAPCIType() }); }