Esempio n. 1
0
        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();
                }
            }
        }
Esempio n. 2
0
        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();
            }
        }