Exemplo n.º 1
0
        internal static void ThrowIfFailed(this RadioError err, string message)
        {
            if (err == RadioError.None)
            {
                return;
            }

            string errMessage = $"{message}; {err}.";

            switch (err)
            {
            case RadioError.PermissionDenied:
                throw new UnauthorizedAccessException(errMessage);

            case RadioError.InvalidParameter:
                throw new ArgumentException(errMessage);

            case RadioError.OutOfMemory:
                throw new OutOfMemoryException(errMessage);

            case RadioError.NotSupported:
            case RadioError.NoAntenna:
                throw new NotSupportedException(errMessage);

            default:
                throw new InvalidOperationException(errMessage);
            }
        }
Exemplo n.º 2
0
        protected override void OnEventAnalyzed(byte id, byte[] eventValue)
        {
            switch (id)
            {
            case 0x00:
            {
                var timestamp = BitConverter.ToUInt32(eventValue, 0);
                var port      = eventValue[4];
                var irq       = eventValue[5];
                var state     = eventValue[6];
                var eventArgs = new IOPortStatusEventArgs(timestamp, port, irq, state);
                IOPortStatus?.Invoke(this, eventArgs);
                break;
            }

            case 0x01:
            {
                var handle    = eventValue[0];
                var eventArgs = new SoftTimerEventArgs(handle);
                SoftTimer?.Invoke(this, eventArgs);
                break;
            }

            case 0x02:
            {
                var input     = eventValue[0];
                var value     = BitConverter.ToUInt16(eventValue, 1);
                var eventArgs = new AdcResultEventArgs(input, value);
                AdcResult?.Invoke(this, eventArgs);
                break;
            }

            case 0x03:
            {
                var timestamp = BitConverter.ToUInt32(eventValue, 0);
                var output    = eventValue[4];
                var eventArgs = new AnalogComparatorStatusEventArgs(timestamp, output);
                AnalogComparatorStatus?.Invoke(this, eventArgs);
                break;
            }

            case 0x04:
            {
                RadioError?.Invoke(this, EventArgs.Empty);
                break;
            }

            default:
            {
                break;
            }
            }
        }