Каналом (pipe) в USB называется модель передачи данных между хост-контроллером и конечной точкой устройства.
Имеются два типа каналов:
потоки
сообщения
Поток (stream) доставляет данные от одного конца канала к другому, он всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух поточных каналов — ввода и вывода. Поток может реализовывать следующие типы обмена: передача массивов, изрхронный прерывания.
Сообщение (message) имеет формат, определенный спецификацией USB. Хост посылает запрос к конечной точке, после которого передается (принимается) пакет сообщения, за которым следует пакет с информацией состояния конечной точки. Последующее сообщение нормально не может быть послано до обработки предыдущего, но при отработке ошибок возможен сброс необслуженных сообщений. Двусторонний обмен сообщениями адресуется к одной и той же конечной точке.
С каналами связаны характеристики, соответствующие конечной точке (полоса пропускания, тип сервиса, размер буфера и т. п.). Каналы организуются при конфигурировании устройств USB. Для каждого включенного устройства существует канал сообщений (Control Pipe 0), по которому передается информация конфигурирования, управления и состояния.
Взамен термина конечная точка, употребляемый в описании Device-контроллера, применительно к Host-контроллеру используется другой термин - канал (pipe). Соответствие канала Host-контроллера конечной точке Device-контроллера установлено стандартом USB.
Коммуникационные каналы USB разделяются на 2 типа:
Потоковый капал (streaming pipe) доставляет данные от одного конца канала к другому, он всегда однонаправленный. Передачи данных в разных потоковых каналах друг с другом не синхронизированы. Поток может реализовывать передачи массивов, изохронные передачи и прерывания.
Канал сообщений (message pipe) является двунаправленным. Передачи сообщений во встречных направлениях синхронизированы друг с другом и строго упорядочены. На каждое сообщение противоположная сторона обязана ответить подтверждением его приема и отработки. Форматы сообщений определяются спецификацией USB: имеется набор стандартных сообщений (запросов и ответов) и зарезервированных идентификаторов сообщений, формат которых определяется разработчиком устройства или интерфейса.
Клиентские каналы (client pipes) — каналы, владельцами которых являются драйверы устройств. По этим каналам могут передаваться как потоки, так и сообщения;
Они поддерживают любые типы передач USB (изохронные передачи, прерывания, массивы, управляющие передачи).
Владельцем основных каналов сообщений всех устройств является драйвер USB (USBD); по этим каналам передается информация конфигурирования, управления и состояния. Основным каналом сообщений может пользоваться и клиентский драйвер для текущего управления и чтения состояния устройства, но опосредованно — через USBD. Например, сообщения, передаваемые по основному каналу, используются драйвером принтера USB для опроса текущего состояния.
17.4. Организация обменов по шине Кадры и микрокадры