bulkTransferOut method
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);
}
}