Como é feito o encaminhamento dos dados?
Apesar da
arquitectura da interface USB, existem ainda os problemas clássicos causados
pelo desenho tradicional do PC. Cada Function
tem que saber quando a informação lhe é destinada e o host tem que saber de onde lhe estão a chegar os sinais. Para isto,
são associados números a cada componente USB.
Quando um
dispositivo é ligado a uma porta USB é-lhe associado um número que passa a ser
o seu endereço. Este endereço é usado unicamente por aquele dispositivo enquanto
estiver conectado e, ao contrário dos sistemas convencionais, este número
provavelmente será diferente do que aquele que o mesmo dispositivo recebeu na
última vez que esteve ligado.
Cada
dispositivo contém um determinado número de endpoints,
que são um conjunto de origens e destinos para comunicação entre o host e o dispositivo. Os endpoints operam em modo simplex, o que
quer dizer que são um input ou output, mas nunca os dois simultaneamente. Cada
dispositivo USB tem 16 deste endpoints que inicialmente estão configurados a 0
(zero), e mais tarde são usados para autodetecção e configuração do dispositivo
quando este está ligado. Aquando da ligação, cada endpoint configura as suas características para aceder ao bus.
É a
combinação do endereço, número de endpoints
e direcção que são usados pelo host e
pelo software para determinar através de que canal a informação viaja. Um canal
é um caminho de informação entre um endpoint
e a secção do software a ele associada. Um canal especial é definido para ligar
aos endpoints a 0 (zero) denominado canal de controlo por defeito.