chrome.usb

Описание

Используйте API chrome.usb для взаимодействия с подключенными USB-устройствами. Этот API обеспечивает доступ к операциям USB из контекста приложения. Используя этот API, приложения могут работать как драйверы для аппаратных устройств. Об ошибках, генерируемых этим API, сообщается путем установки runtime.lastError и выполнения обычного обратного вызова функции. В этом случае обычные параметры обратного вызова будут неопределенными.

Разрешения

usb

Типы

ConfigDescriptor

Характеристики

  • активный

    логическое значение

    Хром 47+

    Это активная конфигурация?

  • КонфигурацияЗначение

    число

    Номер конфигурации.

  • описание

    строка необязательна

    Описание конфигурации.

  • дополнительные_данные

    МассивБуфер

    Дополнительные данные дескриптора, связанные с этой конфигурацией.

  • Доступные интерфейсы.

  • максимальная мощность

    число

    Максимальная мощность, необходимая этому устройству, в миллиамперах (мА).

  • удаленное пробуждение

    логическое значение

    Устройство поддерживает удаленное пробуждение.

  • с автономным питанием

    логическое значение

    Устройство имеет автономное питание.

ConnectionHandle

Характеристики

  • ручка

    число

    Непрозрачный дескриптор, представляющий это соединение с USB-устройством и всеми связанными заявленными интерфейсами и ожидающими передачами. Новый дескриптор создается каждый раз при открытии устройства. Дескриптор подключения отличается от Device.device .

  • идентификатор продукта

    число

    Идентификатор продукта.

  • идентификатор поставщика

    число

    Идентификатор поставщика устройства.

ControlTransferInfo

Характеристики

  • данные

    ArrayBuffer необязательно

    Данные для передачи (требуются только для выходных передач).

  • направление

    Направление передачи ( "in" или "out" ).

  • индекс

    число

    Поле wIndex см. там же .

  • длина

    номер необязательно

    Максимальное количество байтов для получения (требуется только для входных передач).

  • получатель

    Цель трансфера. Цель, заданная index должна быть заявлена, если "interface" или "endpoint" .

  • запрос

    число

    Поле bRequest см. в разделе 9.3 спецификации универсальной последовательной шины, версия 1.1 .

  • тип запроса

    Тип запроса.

  • тайм-аут

    номер необязательно

    Хром 43+

    Таймаут запроса (в миллисекундах). Значение по умолчанию 0 указывает на отсутствие тайм-аута.

  • ценить

    число

    Поле wValue см. там же .

Device

Характеристики

  • устройство

    число

    Непрозрачный идентификатор USB-устройства. Он остается неизменным до тех пор, пока устройство не будет отключено от сети.

  • имя производителя

    нить

    Хром 46+

    Строка iManufacturer, считанная с устройства, если она доступна.

  • идентификатор продукта

    число

    Идентификатор продукта.

  • имя продукта

    нить

    Хром 46+

    Строка iProduct, считанная с устройства, если доступна.

  • серийный номер

    нить

    Хром 46+

    Строка iSerialNumber, считанная с устройства, если она доступна.

  • идентификатор поставщика

    число

    Идентификатор поставщика устройства.

  • версия

    число

    Хром 51+

    Версия устройства (поле bcdDevice).

DeviceFilter

Характеристики

  • класс интерфейса

    номер необязательно

    Класс интерфейса USB, соответствует любому интерфейсу устройства.

  • интерфейсПротокол

    номер необязательно

    Протокол интерфейса USB, проверяется только в случае совпадения подкласса интерфейса.

  • интерфейсПодкласс

    номер необязательно

    Подкласс интерфейса USB, проверяется только в том случае, если класс интерфейса соответствует.

  • идентификатор продукта

    номер необязательно

    Идентификатор продукта устройства, проверяется только в том случае, если идентификатор поставщика совпадает.

  • идентификатор поставщика

    номер необязательно

    Идентификатор поставщика устройства.

DevicePromptOptions

Характеристики

  • фильтры

    DeviceFilter [] необязательно

    Отфильтруйте список устройств, представленных пользователю. Если предоставлено несколько фильтров, будут отображены устройства, соответствующие любому фильтру.

  • несколько

    логическое значение необязательно

    Разрешить пользователю выбирать несколько устройств.

Direction

Direction, Recipient, RequestType и TransferType соответствуют своим тезкам в спецификации USB.

Перечисление

"в"

"вне"

EndpointDescriptor

Характеристики

  • адрес

    число

    Адрес конечной точки.

  • направление

    Направление трансфера.

  • дополнительные_данные

    МассивБуфер

    Дополнительные данные дескриптора, связанные с этой конечной точкой.

  • Максимальный размер пакета

    число

    Максимальный размер пакета.

  • интервал опроса

    номер необязательно

    Интервал опроса (только прерывание и изохронный режим).

  • синхронизация

    Тип синхронизации ( необязательно)

    Режим синхронизации передачи (только изохронный).

  • Тип трансфера.

  • использование

    Тип использования необязательно

    Подсказка по использованию конечной точки.

EnumerateDevicesAndRequestAccessOptions

Характеристики

  • идентификатор интерфейса

    номер необязательно

    Идентификатор интерфейса, к которому требуется запросить доступ. Доступно только в Chrome OS. На другие платформы это не влияет.

  • идентификатор продукта

    число

    Идентификатор продукта.

  • идентификатор поставщика

    число

    Идентификатор поставщика устройства.

EnumerateDevicesOptions

Характеристики

  • фильтры

    DeviceFilter [] необязательно

    Будет возвращено устройство, соответствующее любому заданному фильтру. Пустой список фильтров вернет все устройства, для которых у приложения есть разрешение.

  • идентификатор продукта

    номер необязательно

    Устарело

    Эквивалентно настройке DeviceFilter.productId .

  • идентификатор поставщика

    номер необязательно

    Устарело

    Эквивалентно настройке DeviceFilter.vendorId .

GenericTransferInfo

Характеристики

  • данные

    ArrayBuffer необязательно

    Данные для передачи (требуются только для выходных передач).

  • направление

    Направление передачи ( "in" или "out" ).

  • конечная точка

    число

    Адрес целевой конечной точки. Интерфейс, содержащий эту конечную точку, должен быть заявлен.

  • длина

    номер необязательно

    Максимальное количество байтов для получения (требуется только для входных передач).

  • тайм-аут

    номер необязательно

    Хром 43+

    Таймаут запроса (в миллисекундах). Значение по умолчанию 0 указывает на отсутствие тайм-аута.

InterfaceDescriptor

Характеристики

  • альтернативная настройка

    число

    Номер альтернативной настройки интерфейса (по умолчанию 0

  • описание

    строка необязательна

    Описание интерфейса.

  • конечные точки

    Доступные конечные точки.

  • дополнительные_данные

    МассивБуфер

    Дополнительные данные дескриптора, связанные с этим интерфейсом.

  • класс интерфейса

    число

    Класс интерфейса USB.

  • номер интерфейса

    число

    Номер интерфейса.

  • интерфейсПротокол

    число

    Протокол интерфейса USB.

  • интерфейсПодкласс

    число

    Подкласс интерфейса USB.

IsochronousTransferInfo

Характеристики

  • длина пакета

    число

    Длина каждого пакета в этой передаче.

  • пакеты

    число

    Общее количество пакетов в этой передаче.

  • TransferInfo

    Передача параметров. Длина передачи или буфер данных, указанный в этом блоке параметров, разделяется по границам packetLength для формирования отдельных пакетов передачи.

Recipient

Перечисление

"устройство"

"интерфейс"

"конечная точка"

"другой"

RequestType

Перечисление

"стандартный"

"сорт"

"продавец"

"сдержанный"

SynchronizationType

Для режимов прерывания и изохронного режима SynchronizationType и UsageType сопоставляются со своими тезками в спецификации USB.

Перечисление

"асинхронный"

"адаптивный"

"синхронный"

TransferResultInfo

Характеристики

  • данные

    ArrayBuffer необязательно

    Данные, возвращаемые при входной передаче. undefined для выходных передач.

  • код результата

    номер необязательно

    Значение 0 указывает, что передача прошла успешно. Другие значения указывают на неудачу.

TransferType

Перечисление

"контроль"

"прерывать"

"изохронный"

"масса"

UsageType

Перечисление

"данные"

"обратная связь"

"явная обратная связь"

"периодический"

"уведомление"

Методы

bulkTransfer()

Обещать
chrome.usb.bulkTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)

Выполняет массовую передачу на указанное устройство.

Параметры

Возврат

  • Обещание< TransferResultInfo >

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

claimInterface()

Обещать
chrome.usb.claimInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)

Запрашивает интерфейс на USB-устройстве. Прежде чем данные могут быть переданы на интерфейс или связанные конечные точки, интерфейс должен быть заявлен. В любой момент времени только один дескриптор соединения может претендовать на интерфейс. Если интерфейс уже заявлен, этот вызов завершится неудачей.

releaseInterface следует вызывать, когда интерфейс больше не нужен.

Параметры

  • Открытое подключение к устройству.

  • номер интерфейса

    число

    Заявленный интерфейс.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

closeDevice()

Обещать
chrome.usb.closeDevice(
  handle: ConnectionHandle,
  callback?: function,
)

Закрывает дескриптор соединения. Вызов операций над дескриптором после его закрытия является безопасной операцией, но не требует никаких действий.

Параметры

Возврат

  • Обещание<void>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

controlTransfer()

Обещать
chrome.usb.controlTransfer(
  handle: ConnectionHandle,
  transferInfo: ControlTransferInfo,
  callback?: function,
)

Выполняет передачу управления на указанное устройство.

Передача управления относится либо к устройству, либо к интерфейсу, либо к конечной точке. Для передачи на интерфейс или конечную точку требуется запрос на интерфейс.

Параметры

Возврат

  • Обещание< TransferResultInfo >

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

findDevices()

Обещать
chrome.usb.findDevices(
  options: EnumerateDevicesAndRequestAccessOptions,
  callback?: function,
)

Находит USB-устройства, указанные по идентификаторам производителя, продукта и (необязательно) интерфейса, и, если позволяют разрешения, открывает их для использования.

Если запрос на доступ отклонен или устройство не удается открыть, дескриптор соединения не будет создан или возвращен.

Вызов этого метода эквивалентен вызову getDevices за которым следует openDevice для каждого устройства.

Параметры

Возврат

  • Обещание< ConnectionHandle []>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

getConfiguration()

Обещать
chrome.usb.getConfiguration(
  handle: ConnectionHandle,
  callback?: function,
)

Получает дескриптор конфигурации для выбранной в данный момент конфигурации.

Параметры

Возврат

  • Обещание< ConfigDescriptor >

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

getConfigurations()

Обещание Chrome 47+
chrome.usb.getConfigurations(
  device: Device,
  callback?: function,
)

Возвращает полный набор дескрипторов конфигурации устройства.

Параметры

Возврат

  • Обещание< ConfigDescriptor []>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

getDevices()

Обещать
chrome.usb.getDevices(
  options: EnumerateDevicesOptions,
  callback?: function,
)

Перечисляет подключенные USB-устройства.

Параметры

  • параметры

    Свойства для поиска на целевых устройствах.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (devices: Device[]) => void

Возврат

  • Обещание < Устройство []>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

getUserSelectedDevices()

Обещать
chrome.usb.getUserSelectedDevices(
  options: DevicePromptOptions,
  callback?: function,
)

Предоставляет пользователю средство выбора устройства и возвращает выбранное Device . Если пользователь отменяет выбор, устройства выбора будут пустыми. Для отображения диалогового окна требуется жест пользователя. Без жеста пользователя обратный вызов будет выполняться так, как если бы пользователь отменил вызов.

Параметры

Возврат

  • Обещание < Устройство []>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

interruptTransfer()

Обещать
chrome.usb.interruptTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)

Выполняет передачу прерываний на указанном устройстве.

Параметры

Возврат

  • Обещание< TransferResultInfo >

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

isochronousTransfer()

Обещать
chrome.usb.isochronousTransfer(
  handle: ConnectionHandle,
  transferInfo: IsochronousTransferInfo,
  callback?: function,
)

Выполняет изохронную передачу на конкретном устройстве.

Параметры

Возврат

  • Обещание< TransferResultInfo >

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

listInterfaces()

Обещать
chrome.usb.listInterfaces(
  handle: ConnectionHandle,
  callback?: function,
)

Перечисляет все интерфейсы на USB-устройстве.

Параметры

Возврат

  • Обещание< InterfaceDescriptor []>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

openDevice()

Обещать
chrome.usb.openDevice(
  device: Device,
  callback?: function,
)

Открывает USB-устройство, возвращенное getDevices .

Параметры

Возврат

  • Обещание< ConnectionHandle >

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

releaseInterface()

Обещать
chrome.usb.releaseInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)

Освобождает заявленный интерфейс.

Параметры

  • Открытое подключение к устройству.

  • номер интерфейса

    число

    Интерфейс, который будет выпущен.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

requestAccess()

Обещание устарело
chrome.usb.requestAccess(
  device: Device,
  interfaceId: number,
  callback?: function,
)

Эта функция была специфичной для Chrome OS, и вызвать ее на других платформах не удалось. Эта операция теперь неявно выполняется как часть openDevice , и эта функция будет возвращать true на всех платформах.

Запрашивает доступ у брокера разрешений к устройству, заявленному Chrome OS, если данный интерфейс на устройстве не заявлен.

Параметры

  • устройство

    Device , к которому требуется запросить доступ.

  • идентификатор интерфейса

    число

    Запрошенный конкретный интерфейс.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (success: boolean) => void

    • успех

      логическое значение

Возврат

  • Обещание <логическое значение>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

resetDevice()

Обещать
chrome.usb.resetDevice(
  handle: ConnectionHandle,
  callback?: function,
)

Пытается перезагрузить USB-устройство. Если сброс не удался, данный дескриптор подключения будет закрыт, и USB-устройство будет отключено, а затем снова подключено. В этом случае необходимо снова вызвать getDevices или findDevices для получения устройства.

Параметры

  • Дескриптор соединения для сброса.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (success: boolean) => void

    • успех

      логическое значение

Возврат

  • Обещание <логическое значение>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

setConfiguration()

Обещать
chrome.usb.setConfiguration(
  handle: ConnectionHandle,
  configurationValue: number,
  callback?: function,
)

Выберите конфигурацию устройства.

Эта функция эффективно сбрасывает устройство путем выбора одной из доступных конфигураций устройства. Допустимы только значения конфигурации, превышающие 0 однако некоторые устройства с ошибками имеют рабочую конфигурацию 0 , поэтому это значение разрешено.

Параметры

  • Открытое подключение к устройству.

  • КонфигурацияЗначение

    число

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

setInterfaceAlternateSetting()

Обещать
chrome.usb.setInterfaceAlternateSetting(
  handle: ConnectionHandle,
  interfaceNumber: number,
  alternateSetting: number,
  callback?: function,
)

Выбирает альтернативную настройку для ранее заявленного интерфейса.

Параметры

  • Открытое соединение с устройством, на котором заявлен этот интерфейс.

  • номер интерфейса

    число

    Интерфейс для настройки.

  • альтернативная настройка

    число

    Альтернативный параметр для настройки.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 116+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

События

onDeviceAdded

chrome.usb.onDeviceAdded.addListener(
  callback: function,
)

Событие генерируется при добавлении устройства в систему. События транслируются только приложениям и расширениям, у которых есть разрешение на доступ к устройству. Разрешение могло быть предоставлено во время установки, когда пользователь принял дополнительное разрешение (см. permissions.request ) или через getUserSelectedDevices .

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (device: Device) => void

onDeviceRemoved

chrome.usb.onDeviceRemoved.addListener(
  callback: function,
)

Событие генерируется при удалении устройства из системы. См. onDeviceAdded для которого доставляются события.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (device: Device) => void