6. Transporte de Dados

O transporte de dados no USB é feito através de um pipe entre um buffer de memória, associado a um software, no host  e um endpoint, no dispositivo. (A figura 6-1 ilustra o fluxo de comunicação no USB). Um endpoint é um ponto de término de um fluxo de comunicação entre um host e um dispositivo lógico. Todo dispositivo lógico é composto por uma coleção de endpoints independentes.


Figura 6-1: Fluxo de comunicação no USB. Figura adaptada de [6].

 

 No USB, para o transporte de dados, existem dois modos de comunicação (via pipe) mutalmente exclusivos.  Em um deles, os dados transferidos através do pipe não possuem uma estrutura USB definida (Stream Pipe), enquanto no outro, os dados transferidos possuem uma estrutura USB definida (Message Pipe). 


No Stream Pipe, os dados se movem através do pipe em ordem sequencial. Eles entram e saem do pipe na mesma ordem e podem se mover em apenas uma direção. Já no Message Pipe (também conhecido como Control Pipe), os dados podem se mover em ambas as direções. Além disso, os Message Pipes permitem  uma estrutura na comunicação que faz com que os comandos (requisição, transferência de dados, status) sejam bem identificados e possam se comunicar.


Além disso, o USB define que os dados transferidos através do barramento são empacotados para qualquer um dos dois tipos de pipe mencionados. A formatação e interpretação dos dados transmitidos são de responsabilidade do software cliente (no host) e da função (dispositivo lógico qualquer) que esteja usando o pipe.


Uma transferência no USB é composta de uma ou mais transações e cada transação, contém um pacote do tipo token e pode conter pacotes do tipo data e handshake. Uma transação pode ser do tipo SETUP ( quando o host requisita uma transferência de dados), do tipo OUT ( quando o host envia dados ou informação de status para um dispositivo lógico) ou ainda do tipo IN (quando um dispositivo lógico envia dados ou informação de status para um host). A figura 6-2 mostra do que é composta uma transferência.

 

transfer.jpg

Figura 6-2 : A figura ilustra do que consiste uma transferência no USB. Figura adaptada de [1].

 

Para otimizar a comunicação entre o software e o dispositivo qualquer, o USB define diferentes tipos de transferência. São elas: