bulkTransferOut method

  1. @override
Future<int> bulkTransferOut(
  1. UsbEndpoint endpoint,
  2. Uint8List data,
  3. int timemout
)
inherited

Implementation

@override
Future<int> bulkTransferOut(
    UsbEndpoint endpoint, Uint8List data, int timemout) async {
  assert(_devHandle != null, 'Device not open');
  assert(endpoint.direction == UsbEndpoint.DIRECTION_OUT,
      'Endpoint\'s direction should be out');

  var actualLengthPtr = ffi.calloc<Int32>();
  var dataPtr = ffi.calloc<Uint8>(data.length);
  dataPtr.asTypedList(data.length).setAll(0, data);
  try {
    var result = _libusb.libusb_bulk_transfer(
      _devHandle!,
      endpoint.endpointAddress,
      dataPtr,
      data.length,
      actualLengthPtr,
      timemout,
    );

    if (result != libusb_error.LIBUSB_SUCCESS) {
      debugPrint('bulkTransferOut error: ${_libusb.describeError(result)}');
      return -1;
    }
    return actualLengthPtr.value;
  } finally {
    ffi.calloc.free(actualLengthPtr);
    ffi.calloc.free(dataPtr);
  }
}