private async void _stream_DataReceived(object sender, SerialDataReceivedEventArgs e) { await _semaphoreSlim.WaitAsync(); try { var packet = await ReadFrameInternal(); if (packet == null) { return; } try { var telegram = EnOceanTelegramFactory.FromPacket(packet); TelegramReceived?.Invoke(this, new PacketReceivedEventArgs(telegram)); } catch (NotImplementedException) { Logger.Logger.Instance.LogHexIn(packet.RawData); } if (_stream.BytesToRead > 0) { _stream_DataReceived(sender, e); } } finally { _semaphoreSlim.Release(); } }
private void TelegramReceivedEventHandler(object sender, PacketReceivedEventArgs packetReceivedEventArgs) { if (packetReceivedEventArgs.Telegram is RadioErp1Packet radio1 && _learnModeActive && RadioErp1Packet.IsTechIn(radio1)) { TeachInReceived?.Invoke(sender, packetReceivedEventArgs); } TelegramReceived?.Invoke(sender, packetReceivedEventArgs); }