chrome.usb

Описание

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

Разрешения

usb

Типы

ConfigDescriptor

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

  • активный

    булев

    Хром 47+

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

  • configurationValue

    число

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

  • описание

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

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

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

    ArrayBuffer

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

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

  • maxPower

    число

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

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

    булев

    Устройство поддерживает функцию удаленного пробуждения.

  • самоходный

    булев

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

ConnectionHandle

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

  • ручка

    число

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

  • productId

    число

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

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

    число

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

ControlTransferInfo

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

  • данные

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

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

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

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

  • индекс

    число

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

  • длина

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

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

  • получатель

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

  • запрос

    число

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

  • requestType

    Тип запроса.

  • тайм-аут

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

    Хром 43+

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

  • ценить

    число

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

Device

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

  • устройство

    число

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

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

    нить

    Хром 46+

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

  • productId

    число

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

  • Название продукта

    нить

    Хром 46+

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

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

    нить

    Хром 46+

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

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

    число

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

  • версия

    число

    Хром 51+

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

DeviceFilter

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

  • interfaceClass

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

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

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

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

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

  • interfaceSubclass

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

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

  • productId

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

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

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

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

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

DevicePromptOptions

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

  • фильтры

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

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

  • несколько

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

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

Direction

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

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

"в"

"вне"

EndpointDescriptor

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

  • адрес

    число

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

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

    Направление передачи.

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

    ArrayBuffer

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

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

    число

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

  • pollingInterval

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

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

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

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

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

  • тип

    Тип передачи.

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

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

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

EnumerateDevicesAndRequestAccessOptions

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

  • interfaceId

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

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

  • productId

    число

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

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

    число

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

EnumerateDevicesOptions

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

  • фильтры

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

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

  • productId

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

    Устаревший

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

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

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

    Устаревший

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

GenericTransferInfo

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

  • данные

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

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

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

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

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

    число

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

  • длина

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

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

  • тайм-аут

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

    Хром 43+

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

InterfaceDescriptor

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

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

    число

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

  • описание

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

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

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

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

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

    ArrayBuffer

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

  • interfaceClass

    число

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

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

    число

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

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

    число

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

  • interfaceSubclass

    число

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

IsochronousTransferInfo

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

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

    число

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

  • пакеты

    число

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

  • 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

Возврат

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

    Хром 116+

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

claimInterface()

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

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

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

Параметры

  • ручка

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

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

    число

    Интерфейс, который будет заявлен.

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

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

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

    () => void

Возврат

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

    Хром 116+

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

closeDevice()

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

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

Параметры

  • ручка

    ConnectionHandle для закрытия.

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

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

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

    () => void

Возврат

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

    Хром 116+

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

controlTransfer()

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

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

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

Параметры

Возврат

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

    Хром 116+

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

findDevices()

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

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

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

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

Параметры

Возврат

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

    Хром 116+

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

getConfiguration()

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

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

Параметры

Возврат

  • Хром 116+

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

getConfigurations()

Обещание Chrome 47+
chrome.usb.getConfigurations(
  device: Device,
  callback?: function,
)
: Promise<ConfigDescriptor[]>

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

Параметры

Возврат

  • Хром 116+

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

getDevices()

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

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

Параметры

Возврат

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

    Хром 116+

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

getUserSelectedDevices()

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

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

Параметры

  • параметры

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

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

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

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

    (devices: Device[]) => void

Возврат

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

    Хром 116+

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

interruptTransfer()

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

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

Параметры

  • ручка

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

  • transferInfo

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

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

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

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

    (info: TransferResultInfo) => void

Возврат

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

    Хром 116+

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

isochronousTransfer()

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

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

Параметры

Возврат

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

    Хром 116+

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

listInterfaces()

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

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

Параметры

Возврат

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

    Хром 116+

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

openDevice()

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

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

Параметры

Возврат

  • Хром 116+

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

releaseInterface()

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

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

Параметры

  • ручка

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

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

    число

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

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

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

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

    () => void

Возврат

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

    Хром 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

    • успех

      булев

Возврат

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

    Хром 116+

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

resetDevice()

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

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

Параметры

  • ручка

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

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

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

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

    (success: boolean) => void

    • успех

      булев

Возврат

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

    Хром 116+

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

setConfiguration()

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

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

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

Параметры

  • ручка

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

  • configurationValue

    число

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

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

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

    () => void

Возврат

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

    Хром 116+

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

setInterfaceAlternateSetting()

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

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

Параметры

  • ручка

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

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

    число

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

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

    число

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

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

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

    Параметр 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