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); } }
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; } } }