Что такое other speed descriptor применительно к USB?

В примере наткнулся на такой код:

Uint16    OtherSpeedcfgDesc[40] = {0x0709, 0x004A, 0x0201, 0xC001, 0x0928,    	 // Configure descriptor
                                 0x0004, 0x0800, 0x0000, 0x0000,          		 // Interface descriptor
		                         0x0507, 0x0281, 0x0040, 0x0700,			//endpoint 1 IN descriptor
		                         0x0105, 0x4002, 0x0000, 					//endpoint 1 OUT descriptor
		                         0x0507, 0x0282, 0x0040, 0x0700,			//endpoint 2 IN descriptor
		                         0x0205, 0x4002, 0x0000, 					//endpoint 2 OUT descriptor
		                         0x0507, 0x0283, 0x0040, 0x0700, 			//endpoint 3 IN descriptor
		                         0x0305, 0x4002, 0x0000,					//endpoint 3 OUT descriptor
		                         0x0507, 0x0284, 0x0040, 0x0700, 			//endpoint 4 IN descriptor
		                         0x0405, 0x4002, 0x0000						//endpoint 4 OUT descriptor
                                };


Что это? Зачем это?
Никаких объяснений не нашел ни в документации, ни в гугле, может плохо искал, но я старался.
Подскажите что это такое.

Или где об этом почитать.
  • Вопрос задан
  • 3382 просмотра
Решения вопроса 1
CleverMouse
@CleverMouse
Первый байт любого usb-дескриптора — длина, второй байт — тип. Дескриптор 09 07 4A 00 01 02 01 C0 28 имеет тип 7, OTHER_SPEED_CONFIGURATION.

Видели когда-нибудь сообщение «Это устройство может работать быстрее»?

Если HighSpeed-устройство (скорость USB2) подключить к компьютеру или хабу, не понимающему USB2, а знающему только скорости USB1 FullSpeed/LowSpeed, устройство обязано проходить несколько начальных этапов инициализации как FullSpeed. Полностью работать не обязано, хотя обычно работает. Дескриптор OTHER_SPEED_CONFIGURATION, если он есть, — способ устройства в такой ситуации сообщить системе, что хоть оно сейчас и работает на FullSpeed, но про HighSpeed тоже знает, просто хаб такой попался по пути или компьютер старый. У чисто FullSpeed-устройств его нет.

Частично правильную ссылку на документацию вам уже привели выше. В USB3 тип 7 помечен как Reserved и не используется, но есть ссылка «Note that when operating at USB 2.0 speeds, the device shall report the other USB 2.0 speeds it supports using the standard mechanism defined in the USB 2.0 specification». Читать нужно спецификацию USB2, пункт, действительно, 9.6.4. Впрочем, там не особенно интересно — структура дескриптора точно такая же, как структура обычного Configuration Descriptor, с поправкой на тип.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@mihalicyn
Ответ написан
Комментировать
@1x1
У устройства есть один device descriptor и может быть несколько configuration descriptor-ов. Тут, похоже, просто один из них.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы