transferBufferWord method

MraaReturnCode transferBufferWord(
  1. MraaSpiContext dev,
  2. MraaSpiTransferBuffer<Uint16List> buffer,
  3. int length
)

Transfer buffer word - mraa_spi_transfer_buf_word

Transfer a buffer of words to the SPI device. Both send and receive buffers are passed in using the buffer parameter. Maximum length 4096 both ways

Implementation

MraaReturnCode transferBufferWord(MraaSpiContext dev,
    MraaSpiTransferBuffer<Uint16List> buffer, int length) {
  final ptr = ffi.calloc.allocate<Uint16>(length);
  final ptrData = ptr.asTypedList(length);
  ptrData.setAll(0, buffer.dataSent);
  final retData = ffi.calloc.allocate<Uint16>(length);
  final status = MraaReturnCode.returnCode(
      _impl.mraa_spi_transfer_buf_word(dev, ptr, retData, length));
  final retDataList = retData.asTypedList(length);
  if (status != MraaReturnCode.success) {
    ffi.calloc.free(retData);
    return status;
  }
  if (retData == nullptr) {
    buffer.dataReceived = Uint16List(0);
    ffi.calloc.free(retData);
    return status;
  }
  buffer.dataReceived = Uint16List(length);
  buffer.dataReceived.setAll(0, retDataList);
  return status;
}