compote 0 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 16 минут назад, Сергей Борщ сказал: Вот пришел пакет. Как вы его будете разбирать? Чего его разбирать, в дескрипторе репорта указано, что нет Report ID, поэтому весь пакет отводится под данные, правильно? 18 минут назад, Сергей Борщ сказал: только один тип Report-а, то он не передается. И номер его совершенно ни при чем. Во всех остальных случаях ReportID передается. Вот это непонятно. Пробовал в проге на компе, указывать нулевой байт равный единице, при этом пакет не доходит до контроллера, т.е. этот байт все таки действует. И непонятно, если есть Report ID отличный от нуля, с компа отправлять 65 байт или 64? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 136 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 51 минуту назад, compote сказал: Чего его разбирать, в дескрипторе репорта указано, что нет Report ID, поэтому весь пакет отводится под данные, правильно? Как вы поймете, что его нет? 51 минуту назад, compote сказал: И непонятно, если есть Report ID отличный от нуля, с компа отправлять 65 байт или 64? Я не знаю, как еще объяснить. Вроде уже и английскую цитату привел, и русским языком написал. Читайте по губам: Если у вас может быть больше одного типа Report-ов, то Report-id передается всегда. Вне зависимости от его значения. Если Report только один - его Report-id можно не передавать, в этом случае он не указывается в дескрипторе. Если ваш Report имеет размер 64 байта и вам нужно передавать Report-id - вы передаете 65 байтов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
compote 0 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 12 минут назад, Сергей Борщ сказал: Как вы поймете, что его нет? Так для этого дескриптор репорта и служит, разве нет? При подключении, юсб устройство отдает хосту дескриптор девайса, конфигурации, интерфейса, класса устройства, конечных точек и репорта. И уже на основании этого, хост все знает про устройство. Если в дескрипторе репорта нет Report ID, значит он нулевой-) Правильно? 25 минут назад, Сергей Борщ сказал: Если ваш Report имеет размер 64 байта и вам нужно передавать Report-id - вы передаете 65 байтов. Как раз вот это и не понимаю. Пусть у меня есть Report ID - 1 байт, данные 64 байта, итого 1 + 64, но на контроллер приходит только 64 байта, из которых первый Report ID, это не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 136 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 1 час назад, compote сказал: Если в дескрипторе репорта нет Report ID, значит он нулевой-) Правильно? Значит его нет. Но если у вас несколько разных Report-ов, то нельзя сделать один без Report-id, а остальные с Report-id. 1 час назад, compote сказал: Пусть у меня есть Report ID - 1 байт, данные 64 байта, итого 1 + 64, но на контроллер приходит только 64 байта, из которых первый Report ID, это не так? Это так, но это не весь Report. Конечная точка может передать за раз не более 64 байтов. Более длинные пакеты передаются за несколько транзакций. Если в очередной транзакции принялось меньше 64 байтов (даже 0 байтов) - это конец пакета. Поэтому пакет длиной 64 байта передается как одна транзакция длиной 64 байта и вторая длиной 0 байтов. 65 байтов передаются как 64+1. Как чтение таких пакетов реализовано в кубе - я не в курсе. Может он сам выделяет Report-id. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться