Aquí hay un problema para el cual la respuesta obvia es "usar un interruptor", pero eso no está permitido en el diseño. ;)
Estoy escribiendo un software para una aplicación de audio USB que se supone que puede reproducir audio desde iP {od, ad, hone} s, dispositivos Android y también Samsung Audio desde dispositivos Samsung.
(nota rápida: Dispositivo USB con mayúscula D = USB Periférico = dispositivo con conector B)
No tendría que hacer esta pregunta si todos estos dispositivos funcionaran bien y fueran solo dispositivos USB. Los dispositivos iPxx y Android son dispositivos USB, pero los dispositivos Samsung que reproducen Samsung Audio actúan como hosts USB (pero también pueden ser dispositivos USB que no reproducen Samsung Audio, sino dispositivos Android habituales).
Todos los dispositivos tienen que conectarse a un único conector tipo Standard-A en nuestro sistema integrado que se ejecuta en un PIC32. Sí, ya sé que eso no es legal por USB, pero esos son los requisitos.
Dado que ambos Dispositivos USB y tienen que conectarse a nuestro dispositivo integrado, necesito una forma de detectar cuándo un dispositivo está conectado si es un Host USB o un Dispositivo USB, para que mi sistema USB se cierra / aparece con el rol correcto dependiendo del dispositivo conectado.
He leído el On-The-Go y Embedded Host Supplement en la revisión de USB 2.0 espec. Lo más cercano que obtuve fue adjuntar el protocolo de detección. Eso ayuda con la detección general de los dispositivos conectados pero no ayuda a detectar la función del dispositivo (host o dispositivo). Nuestro diseño de hardware aún no es definitivo, por lo que puedo considerar cualquier solución de hardware que ayude a que no sea ... bueno ... un interruptor. ;)
Esperamos la opinión de la comunidad.