/smart_usb

Smart Usb

Primary LanguageDartBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

smart_usb

A cross-platform (Android/Windows/macOS/Linux) USB plugin for Flutter

Usage

List devices

await SmartUsb.init();
// ...
var deviceList = await SmartUsb.getDeviceList();
// ...
await SmartUsb.exit();

List devices with additional description

Returns devices list with manufacturer, product and serial number description.

Any of these attributes can be null.

var descriptions = await SmartUsb.getDevicesWithDescription();
var deviceList = descriptions.map((e) => e.device).toList();
print('descriptions $descriptions');

(Android Only) Android requires permission for each device in order to get the serial number. The user will be asked for permission for each device if needed. If you do not require the serial number, you can avoid requesting permission using:

var descriptions = await SmartUsb.getDevicesWithDescription(requestPermission: false);

Get device description

Returns manufacturer, product and serial number description for specified device.

Any of these attributes can be null.

 var description = await SmartUsb.getDeviceDescription(device);
 print('description ${description.toMap()}');

(Android Only) Android requires permission for each device in order to get the serial number. The user will be asked for permission for each device if needed. If you do not require the serial number, you can avoid requesting permission using:

var description = await SmartUsb.getDeviceDescription(requestPermission: false);

Connect device

var connectDevice = await SmartUsb.connectDevice(device);
print('connectDevice $connectDevice');
// ...

Check permission

Android Only

var hasPermission = await SmartUsb.hasPermission(device);
print('hasPermission $hasPermission');

Request permission

Android Only

Request permission for a device. The permission dialog is not shown if the app already has permission to access the device.

var hasPermission = await SmartUsb.requestPermission(device);
print('hasPermission $hasPermission');

Open/Close device

var openDevice = await SmartUsb.openDevice(device);
print('openDevice $openDevice');
// ...
await SmartUsb.closeDevice();

Get/Set configuration

var configuration = await SmartUsb.getConfiguration(index);
print('getConfiguration $configuration');
// ...
var setConfiguration = await SmartUsb.setConfiguration(configuration);
print('setConfiguration $getConfiguration');

Claim/Release interface

var claimInterface = await SmartUsb.claimInterface(interface);
print('claimInterface $claimInterface');
// ...
var releaseInterface = await SmartUsb.releaseInterface(interface);
print('releaseInterface $releaseInterface');

Printer

var send = await SmartUsb.send(bytes);
print('send $send');

Bulk transfer in/out

var bulkTransferIn = await SmartUsb.bulkTransferIn(endpoint, 1024, timeout: 2000);
print('bulkTransferIn ${hex.encode(bulkTransferIn)}');
// ...
var bulkTransferOut = await SmartUsb.bulkTransferOut(endpoint, data, timeout: 2000);
print('bulkTransferOut $bulkTransferOut');

Set auto detach kernel driver

Enable/disable libusb's automatic kernel driver detachment on linux. When this is enabled libusb will automatically detach the kernel driver on an interface when claiming the interface, and attach it when releasing the interface.

Automatic kernel driver detachment is disabled on newly opened device handles by default.

This is supported only on linux, on other platforms this function does nothing.

await SmartUsb.setAutoDetachKernelDriver(true);