Primer problema: las transacciones de IN van de dispositivo a host, no de host a dispositivo. El host los busca, ciertamente, pero la transacción da como resultado que los datos van en al host. Aunque supongo que el token en sí sí va de "host a dispositivo" ... pero de todos modos.
Ahora, supongo que por qué es posible que no vea un token cada 9 milisegundos: es posible que el dispositivo no tenga datos preparados y tenga la solicitud NAK. Esto no es irrecuperable y el host simplemente sondeará nuevamente después de bInterval
, pero no se reciben los datos. Probablemente sea por eso que solo ve un token IN cada 35 ms: el dispositivo solo tiene datos listos para enviar cada 35 ms (en cuanto a una idea de por qué su analizador puede no mostrarle los tokens NAK'd IN, permanezca sintonizado). La configuración bInterval
le da la oportunidad para enviar datos cada 9 ms, pero no está obligado a hacerlo. Esto proporciona la función de "latencia garantizada" de los puntos finales de INTERRUPT.
NAK es así, es completamente normal y, de hecho, muchos dispositivos NAK continuarán la solicitud hasta que algo suceda (especialmente en el caso de HID).
Ahora para un poco de especulación: si está utilizando un analizador de protocolo de software, probablemente solo capturará las transacciones completadas , lo que significaría que sus tokens IN solo aparecerían una vez que el dispositivo envíe datos. . Es probable que no pueda ver los NAK, a menos que haya interconectado bastante profundamente con el controlador USB del host o al menos la parte más oscura del sistema operativo. Es probable que un analizador de protocolo de hardware (como un TotalPhase Beagle o uno de esos dispositivos Teledyne LeCroy Voyager / Mercury / Advisor) le muestre los NAK, por lo que si está usando uno de esos, puede configurarlo para que se lo muestre y verifique que ¿El dispositivo en realidad está DESCONECTADO cada 3 o 4 encuestas?
Ahora, si en realidad estás viendo NAK'd IN tokens y solo aparecen cada 35 ms, estoy completamente equivocado. Debería ver un NAK cada 9 ms (en un analizador de hardware) si mi suposición es correcta.