chrome.usb

Описание

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

Разрешения

usb

Доступность

Только для ChromeOS

Типы

ConfigDescriptor

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

  • активный

    логический

    Chrome 47+

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

  • configurationValue

    число

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

  • описание

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

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

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

    ArrayBuffer

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

  • интерфейсы

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

  • максМощность

    число

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

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

    логический

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

  • автономный источник питания

    логический

    Устройство работает от собственного источника питания.

ConnectionHandle

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

  • ручка

    число

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

  • продуктId

    число

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

  • vendorId

    число

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

ControlTransferInfo

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

  • данные

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

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

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

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

  • индекс

    число

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

  • длина

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

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

  • получатель

    Целевой объект передачи. Целевой объект, указанный в index , должен быть заявлен, если это "interface" или "endpoint" .

  • запрос

    число

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

  • requestType

    Тип запроса.

  • таймаут

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

    Chrome 43+

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

  • ценить

    число

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

Device

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

  • устройство

    число

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

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

    нить

    Chrome 46+

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

  • продуктId

    число

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

  • продуктName

    нить

    Chrome 46+

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

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

    нить

    Chrome 46+

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

  • vendorId

    число

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

  • версия

    число

    Chrome 51+

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

DeviceFilter

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

  • interfaceClass

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

    Класс USB-интерфейса, подходит для любого интерфейса на устройстве.

  • interfaceProtocol

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

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

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

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

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

  • продуктId

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

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

  • vendorId

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

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

DevicePromptOptions

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

  • фильтры

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

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

  • несколько

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

    Предоставьте пользователю возможность выбрать несколько устройств.

Direction

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

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

"в"

"вне"

EndpointDescriptor

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

  • адрес

    число

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

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

    Сменить направление.

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

    ArrayBuffer

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

  • maximumPacketSize

    число

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

  • pollingInterval

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

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

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

    SynchronizationType ( необязательный параметр)

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

  • тип

    Тип перевода.

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

    UsageType необязательный

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

EnumerateDevicesAndRequestAccessOptions

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

  • interfaceId

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

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

  • продуктId

    число

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

  • vendorId

    число

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

EnumerateDevicesOptions

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

  • фильтры

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

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

  • продуктId

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

    Устаревший

    Эквивалентно установке параметра DeviceFilter.productId .

  • vendorId

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

    Устаревший

    Эквивалентно установке параметра DeviceFilter.vendorId .

GenericTransferInfo

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

  • данные

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

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

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

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

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

    число

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

  • длина

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

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

  • таймаут

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

    Chrome 43+

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

InterfaceDescriptor

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

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

    число

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

  • описание

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

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

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

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

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

    ArrayBuffer

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

  • interfaceClass

    число

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

  • interfaceNumber

    число

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

  • interfaceProtocol

    число

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

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

    число

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

IsochronousTransferInfo

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

  • packetLength

    число

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

  • пакеты

    число

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

  • transferInfo

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

Recipient

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

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

"интерфейс"

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

"другой"

RequestType

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

«стандартный»

"сорт"

"продавец"

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

SynchronizationType

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

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

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

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

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

TransferResultInfo

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

  • данные

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

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

  • resultCode

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

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

TransferType

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

"контроль"

"прерывать"

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

"масса"

UsageType

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

"данные"

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

"explicitFeedback"

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

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

Методы

bulkTransfer()

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

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

Параметры

  • ручка

    Открытое соединение с устройством.

  • transferInfo

    Параметры передачи.

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

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

    Параметр callback выглядит следующим образом:

    (info: TransferResultInfo) => void

Возвраты

  • Promise< TransferResultInfo >

    Chrome 116+

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

claimInterface()

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

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

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

Параметры

  • ручка

    Открытое соединение с устройством.

  • interfaceNumber

    число

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

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

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

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Обещание<пустота>

    Chrome 116+

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

closeDevice()

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

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

Параметры

  • ручка

    Обработчик ConnectionHandle для закрытия.

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

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

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Обещание<пустота>

    Chrome 116+

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

controlTransfer()

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

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

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

Параметры

Возвраты

  • Promise< TransferResultInfo >

    Chrome 116+

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

findDevices()

Обещать
chrome.usb.findDevices(
  options: EnumerateDevicesAndRequestAccessOptions,
  callback?: function,
)
: Promise<ConnectionHandle[]>

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

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

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

Параметры

  • Свойства, которые следует искать на целевых устройствах.

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

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

    Параметр callback выглядит следующим образом:

    (handles: ConnectionHandle[]) => void

Возвраты

  • Promise< ConnectionHandle []>

    Chrome 116+

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

getConfiguration()

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

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

Параметры

  • ручка

    Открытое соединение с устройством.

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

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

    Параметр callback выглядит следующим образом:

    (config: ConfigDescriptor) => void

Возвраты

  • Chrome 116+

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

getConfigurations()

Promise Chrome 47+
chrome.usb.getConfigurations(
  device: Device,
  callback?: function,
)
: Promise<ConfigDescriptor[]>

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

Параметры

  • устройство

    Device , с которого необходимо получить дескрипторы.

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

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

    Параметр callback выглядит следующим образом:

    (configs: ConfigDescriptor[]) => void

Возвраты

  • Promise< ConfigDescriptor []>

    Chrome 116+

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

getDevices()

Обещать
chrome.usb.getDevices(
  options: EnumerateDevicesOptions,
  callback?: function,
)
: Promise<Device[]>

Отображает список подключенных USB-устройств.

Параметры

  • параметры

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

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

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

    Параметр callback выглядит следующим образом:

    (devices: Device[]) => void

Возвраты

  • Promise< Устройство []>

    Chrome 116+

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

getUserSelectedDevices()

Обещать
chrome.usb.getUserSelectedDevices(
  options: DevicePromptOptions,
  callback?: function,
)
: Promise<Device[]>

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

Параметры

  • параметры

    Настройка диалогового окна выбора устройства.

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

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

    Параметр callback выглядит следующим образом:

    (devices: Device[]) => void

Возвраты

  • Promise< Устройство []>

    Chrome 116+

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

interruptTransfer()

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

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

Параметры

  • ручка

    Открытое соединение с устройством.

  • transferInfo

    Параметры передачи.

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

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

    Параметр callback выглядит следующим образом:

    (info: TransferResultInfo) => void

Возвраты

  • Promise< TransferResultInfo >

    Chrome 116+

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

isochronousTransfer()

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

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

Параметры

Возвраты

  • Promise< TransferResultInfo >

    Chrome 116+

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

listInterfaces()

Обещать
chrome.usb.listInterfaces(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<InterfaceDescriptor[]>

Отображает список всех интерфейсов на USB-устройстве.

Параметры

  • ручка

    Открытое соединение с устройством.

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

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

    Параметр callback выглядит следующим образом:

    (descriptors: InterfaceDescriptor[]) => void

Возвраты

  • Promise< InterfaceDescriptor []>

    Chrome 116+

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

openDevice()

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

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

Параметры

Возвраты

  • Chrome 116+

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

releaseInterface()

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

Опубликовывает заявленный интерфейс.

Параметры

  • ручка

    Открытое соединение с устройством.

  • interfaceNumber

    число

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

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

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

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Обещание<пустота>

    Chrome 116+

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

requestAccess()

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

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

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

Параметры

  • устройство

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

  • interfaceId

    число

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

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

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

    Параметр callback выглядит следующим образом:

    (success: boolean) => void

    • успех

      логический

Возвраты

  • Promise<boolean>

    Chrome 116+

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

resetDevice()

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

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

Параметры

  • ручка

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

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

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

    Параметр callback выглядит следующим образом:

    (success: boolean) => void

    • успех

      логический

Возвраты

  • Promise<boolean>

    Chrome 116+

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

setConfiguration()

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

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

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

Параметры

  • ручка

    Открытое соединение с устройством.

  • configurationValue

    число

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

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

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Обещание<пустота>

    Chrome 116+

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

setInterfaceAlternateSetting()

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

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

Параметры

  • ручка

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

  • interfaceNumber

    число

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

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

    число

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

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

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

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Обещание<пустота>

    Chrome 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