transferBuffer method
MraaReturnCode
transferBuffer(
- MraaSpiContext dev,
- MraaSpiTransferBuffer<
Uint8List> buffer, - int length
Transfer buffer - mraa_spi_transfer_buf
Transfer a buffer of bytes to the SPI device. Both send and receive
buffers are passed in using the buffer
parameter.
Maximum length 4096 both ways
Implementation
MraaReturnCode transferBuffer(
MraaSpiContext dev, MraaSpiTransferBuffer<Uint8List> buffer, int length) {
final ptr = ffi.calloc.allocate<Uint8>(length);
final ptrData = ptr.asTypedList(length);
ptrData.setAll(0, buffer.dataSent);
final retData = ffi.calloc.allocate<Uint8>(length);
final status = MraaReturnCode.returnCode(
_impl.mraa_spi_transfer_buf(dev, ptr, retData, length));
if (status != MraaReturnCode.success) {
ffi.calloc.free(retData);
return status;
}
if (retData == nullptr) {
buffer.dataReceived = Uint8List(0);
ffi.calloc.free(retData);
return status;
}
final retDataList = retData.asTypedList(length);
buffer.dataReceived = Uint8List(length);
buffer.dataReceived.setAll(0, retDataList);
return status;
}