public void WriteRead( byte[] writeBuffer, int writeOffset, int writeLength, byte[] readBuffer, int readOffset, int readLength) { if (BusType == BME280BusType.I2C) { I2CDevice.WriteRead( writeBuffer, writeOffset, writeLength, readBuffer, readOffset, readLength); } else { var _bufferSize = writeLength + readLength; byte[] _readBuffer = new byte[_bufferSize]; byte[] _writeBuffer = new byte[_bufferSize]; Array.Copy(writeBuffer, writeOffset, _writeBuffer, 0, writeLength); SpiDevice.TransferFullDuplex(_writeBuffer, _readBuffer); Array.Copy(_readBuffer, writeLength, readBuffer, readOffset, readLength); } }
public byte[] ReadRegion(byte address, int length) { if (BusType == BME280BusType.I2C) { var readBuffer = new byte[length]; var writeBuffer = new byte[] { address }; I2CDevice.WriteRead(writeBuffer, readBuffer); return(readBuffer); } else { var bufferSize = length + 1; var txBuffer = new byte[bufferSize]; txBuffer[0] = (byte)(address | 0x80); byte[] rxBuffer = new byte[txBuffer.Length]; SpiDevice.TransferFullDuplex(txBuffer, rxBuffer); var output = new byte[length]; Array.Copy(rxBuffer, 1, output, 0, output.Length); return(output); } }