internal void Read(int deviceAddress, Span <byte> buffer) { if (deviceAddress < 0 || deviceAddress > ushort.MaxValue) { throw new ArgumentOutOfRangeException(nameof(deviceAddress)); } if (buffer.Length > ushort.MaxValue) { throw new ArgumentOutOfRangeException(nameof(buffer), $"Buffer is too large. Maximum length is {ushort.MaxValue}."); } ushort bytesRead; var ftStatus = FtFunction.FT4222_I2CMaster_Read(_ftHandle, (ushort)deviceAddress, in MemoryMarshal.GetReference(buffer), (ushort)buffer.Length, out bytesRead); if (ftStatus != FtStatus.Ok) { throw new IOException($"{nameof(Read)} failed to read, error: {ftStatus}"); } if (bytesRead != buffer.Length) { throw new IOException($"Number of bytes read ({bytesRead}) doesn't match length of the buffer ({buffer.Length})."); } }
/// <inheritdoc/> public override void Read(Span <byte> buffer) { ushort byteRead; var ftStatus = FtFunction.FT4222_I2CMaster_Read(_ftHandle, (ushort)_settings.DeviceAddress, in MemoryMarshal.GetReference(buffer), (ushort)buffer.Length, out byteRead); if (ftStatus != FtStatus.Ok) { throw new IOException($"{nameof(Read)} failed to read, error: {ftStatus}"); } }