Контроль ограничений WebUSBTransferOut?

Я использовал usbmon для анализа USB-пакетов и реализовал его в webusb, однако мне не удалось найти для этого решения. Вот что Sane отправляет на usb:

 S Co:1:074:0 s 02 01 0000 0081 0000 0
 C Co:1:074:0 0 0
 S Co:1:074:0 s 02 01 0000 0002 0000 0
 C Co:1:074:0 0 0

Это похоже на команду controlTransferOut () с requestType = Standard, получатель: 'конечная точка', запрос: 1, индекс: 0x00, значение: 129

'Значение' здесь очень сложно, поскольку все остальные параметры должны быть правильными согласно документации, однако отправка значения: 129 должна отправлять что-то вроде:

 S Co:1:074:0 s 02 01 0081 0000 0000 0

Однако вместо этого я получил:

Uncaught (in promise) DOMException: The specified endpoint number is out of range. 

В то время как значение представляет собой короткое беззнаковое сокращение, максимальное значение 0xffff! Таким образом, очевидно, что значение должно быть 0, а следующий полубайт 0x0081. Мой вопрос в том, как вызвать контрольный выход (Co) со значением во втором полубайте?

Код выглядит примерно так:

 navigator.usb.requestDevice({ filters: [{ vendorId: 0x1083}] })
    .then(selectedDevice => {
       device = selectedDevice;
       return device.open(); // Begin a session.
     })
  .then(() => device.selectConfiguration(1))
    .then(() => device.claimInterface(0))
    .then(() => device.controlTransferOut({
    requestType: 'standard',
    recipient: 'endpoint',
    request: 0x00, 
    value: 129, 
    index: 0x00})) 

Все остальные комбинации отправляются с ответом, например, «Сбой» (класс, интерфейс: 21 - поставщик, устройство: 40 ... и т. Д.).

Описание устройства и дескриптор конечной точки доступны здесь

Спасибо


person Hatem    schedule 18.01.2018    source источник


Ответы (1)


Нашел, запрос должен быть:

device.controlTransferOut({
    requestType: 'standard',
    recipient: 'endpoint',
    request: 1, 
    value: 0, 
    index: 129})

Это дает:

S Co:1:075:0 s 02 01 0000 0081 0000 0 C Co:1:075:0 0 0

Это именно то, что мне нужно.

person Hatem    schedule 18.01.2018