usb_device 1.0.2

SDKflutter
Platformweb

Flutter plugin to communicate with usb device (start sessions, send datas, set configurations ...).

web usb logo



License: MIT pub dev usb_device




🚀  Overview

WebUSB plugin provide access to USB devices from Flutter Web 💙 by using web usb official API.

  • 📱 Get device info with configuration.
  • 🔌 Pair a device with filter.
  • 📤 Send data to USB device.
  • 📥 Receive data from USB device.
  • 🎛️ Change USB device configuration.

💻  Platform Support

AndroidiOSMacOSWebLinuxWindows
➖➖➖✔️➖➖

📖  Installation

Install the package

flutter pub add usb_device

Import the package

import 'package:usb_device/usb_device.dart';

🚀  Get started

  • Import & instanciate the plugin.
import 'package:usb_device/usb_device.dart';

final UsbDevice usbDevice = UsbDevice();
  • Common used methods.

// get paired devices
final pairedDevices = await usbDevice.pairedDevices;

// pair a device
final pairedDevice = await usbDevice.requestDevices([DeviceFilter(vendorId : 0x00, productId: 0x00)]);

// get device's configurations
List<USBConfiguration> availableConfigurations = await usbDevice.getAvailableConfigurations(pairedDevice);

// get device's info
USBDeviceInfo deviceInfo = await usbDevice.getPairedDeviceInfo(pairedDevice);

// start session
await usbDevice.open(pairedDevice);

// close session
await usbDevice.close(pairedDevice);

📚  Methods

USB

NameDescriptionReturned value
pairedDevicesGet paired attached devicesFuture<List<dynamic>>
requestDevice(List<DeviceFilter> filters)Pair a device with filter or notFuture<dynamic>
isSupported()Pair a device with filter or notFuture<bool>
open()Start a sessionFuture
close()Close a sessionFuture
claimInterface(dynamic device, int interfaceNumber)Claim an interface for exclusive accessFuture
releaseInterface(dynamic device, int interfaceNumber)Release a claimed interfaceFuture
reset(dynamic device)Reset deviceFuture
selectConfiguration(dynamic device, int configurationValue)Select a specified configurationFuture
clearHalt(dynamic device, String direction, int endpointNumber)Returns a promise that resolves when a halt condition is clearedFuture
controlTransferIn(dynamic device, SetupParam setup, {int? length})Return result of a commandFuture<USBInTransferResult>
controlTransferOut(dynamic device, SetupParam setup, {dynamic data})Send a command to deviceFuture<USBOutTransferResult>
transferIn(dynamic device, int endpointNumber, int length)Return data from deviceFuture<USBInTransferResult>
transferOut(dynamic device, int endpointNumber, dynamic data)Send data to deviceFuture<USBOutTransferResult>
isochronousTransferIn(dynamic device, int endpointNumber, List<int> packetLengths)Resolves with a USBIsochronousInTransferResult when time sensitive information has been transmitted to (received by) the USB deviceFuture<USBIsochronousInTransferResult>
isochronousTransferOut(dynamic device, int endpointNumber, List<int> packetLengths)Resolves with a USBIsochronousOutTransferResult when time sensitive information has been transmitted from the USB deviceFuture<USBIsochronousOutTransferResult>
setOnConnectCallback(Function(dynamic) onConnect)Connect callbackFuture
setOnDisconnectCallback(Function(dynamic) onDisconnect)Disconnect callbackFuture
getSelectedConfiguration(dynamic pairedDevice)Get the selected configurationFuture<USBConfiguration?>
getAvailableConfigurations(dynamic pairedDevice)Get available device's configurationsFuture<List<USBConfiguration>>
getPairedDeviceInfo(dynamic pairedDevice)Get info of paired deviceFuture<USBDeviceInfo>

📣  Sponsor

logo apparence io

Initiated and sponsored by Apparence.io.

👥  Contribution

Contributions are welcome. Contribute by creating a PR or create an issue 🎉.