findAndClaimValidInterface method
Future<Map<String, dynamic> >
findAndClaimValidInterface(
- Pointer<
libusb_device_handle> ? handleNullable
Implementation
Future<Map<String, dynamic>> findAndClaimValidInterface(
Pointer<libusb_device_handle>? handleNullable) async {
if (handleNullable == nullptr || handleNullable == null) {
return {'success': false, 'error': 'Invalid handle'};
}
final handle = handleNullable;
for (int interfaceNumber = 0; interfaceNumber < 5; interfaceNumber++) {
if (Platform.isLinux || Platform.isMacOS) {
try {
final hasKernelDriver =
_bindings.libusb_kernel_driver_active(handle, interfaceNumber);
if (hasKernelDriver == 1) {
final detachResult =
_bindings.libusb_detach_kernel_driver(handle, interfaceNumber);
if (detachResult < 0) continue;
}
} catch (e) {
continue;
}
}
final claimResult =
_bindings.libusb_claim_interface(handle, interfaceNumber);
if (claimResult == 0) {
return {'success': true, 'interfaceNumber': interfaceNumber};
}
}
return {'success': false, 'error': 'No valid interface found'};
}