private void Driver_MessageTransmitted(object sender, CanMessageEventArgs e) { var items = _items; if (items?.Contains((e.Message, sender as ICanInterface)) == true) { _counter++; if (_counter == items.Count) { Dispose(); } } }
void CanDriver_MessageReceived(object sender, CanMessageEventArgs e) { var nowUs = (ulong)_stopwatch.ElapsedMilliseconds * 1000; UavcanRxTransfer transfer; try { transfer = _framesProcessor.HandleRxFrame(e.Message, nowUs).Transfer; } catch (CanFramesProcessingException ex) { ErrorOccurred?.Invoke(this, new UnhandledExceptionEventArgs(ex, false)); return; } if (transfer == null) { return; } switch (transfer.TransferType) { case UavcanTransferType.Broadcast: ProcessReceivedMessage(transfer); break; case UavcanTransferType.Request: ProcessReceivedRequest(transfer); break; case UavcanTransferType.Response: ProcessReceivedResponse(transfer); break; default: throw new InvalidOperationException(); } }