Транзакция control состоит из трех этапов: setup, data и status. Хост начинает транзакцию посылкой пакета SETUP, при этом передается информация о направлении передачи (IN или OUT) и предполагаемое количество байт данных. На этапе data (таковой может отсутствовать если нет данных для передачи) передаются данные в выбранном направлении, возможно количество данных будет больше заявленного и тогда этот этап будет содержать один или несколько дополнительных пакетов данных. Третий этап staus -передача пакета, содержащего ответ, в обратном направлении. Завершает весь процесс обычная handshake процедура (NACK означает что устройство не готово, a STALL означает ошибку).
Устройство, получившее token пакет SETUP в котором указан номер default endpoint (или номер любого другого control endpoint-a) в качестве номера endpoint-a обязано принять этот пакет (handshake ответы от устройства NACK и STALL не предполагаются, в случае ошибки устройство не возвращает никакого handshake пакета), если в качестве номера указан номер endpoint-a неподходящего типа, устройство должно проигнорировать пакет. Передача может быть разбита на несколько пакетов, но при этом IN и OUT пакеты никогда не смешиваются пока не закончится транзакция (за исключением пакета, передаваемого а этапе status). Фактически это означает что хост не потребует от устройства передачи данных (IN) через control endpoint до тех пор пока сам не завершит передачу (OUT).
Тип передачи control предназначается не для потоковой, а для пакетной передачи, поэтому пакеты control имеют определенную стандартом структуру, включающую информацию о направлении передачи, назначении пакета, длине вложенных данных и.т.п. Существует целый ряд служебных команд, которые могут быть переданы через default endpoint.
Control транзакции
Транзакция control состоит из трех этапов: setup, data и status. Хост начинает транзакцию посылкой пакета SETUP, при этом передается информация о направлении передачи (IN или OUT) и предполаТакже по теме: