Anda di halaman 1dari 10

ENUMERACIN: Antes que las aplicaciones pueden communicarse con un dispositivo, el host neces ita saber sobre el dispositivo

y asignarle un driver de dispositivo. La enumeracin es el intercambio de informacin que logra estas tareas. El proceso incluye asignacin de una direccin al dispositivo, lectura de descriptor es desde el dispositivo, asignacin y carga de un driver de dispositivo, y seleccionar una configuracin que especifque los requerimientos de consumo del di spositivo, endpoints, y otras caractersticas. El dispositivo luego est listo para trasferir usando cualquiera de los endpoints en su configuracin. Una de las tareas del HUB es detectar la conexn o remocin de dispositivos. PASOS DE LA ENUMERACION: Para ver la sequencia tpica de eventos que ocurren durante una enumeracin bajo wi ndows referirse a la pgina 108 del libro USB complete tercera edicin. El firmware no tiene que asumir que los pedidos y eventos de la enumeracin suceda n en un orden en particular.Para funcionar exitosamente, un dispositivo tiene qu e detectar y responder a cualquier pedido de control u otro evento del bus en cual queir momento. En el hub la lineas de seal del puerto USB se tienen resistencias de pull-down de sde 14.25 a 24.8 kohms. Un dispositivo tiene un resistor pull-up de 900 a 1575 ohms en cualquier linea D+ para dispositivos de full velocidad o D- para dispositivos de baja velocidad. Los dispositivos de alta velocidad concuerdan con los de full velocidad en este aspecto. El reseteo de un puerto consiste en poner a ambas linas D+ y D* en un nivelo lgic o bajo durante por lo menos 10 ms (normalmente las lneas tiene estados lgicos opuestos). Estado chirp J -> solo D+ es conducida Estadi chirp k -> solo D- es conducida Si el dispositivo detecta el patron KJKJKJ remueve su resistencia de pull up de full velocidad y realiza todas las comunicacioens venideras en alta velocidad. El dispositivo se comunica con el host usando la direccin por defaul de 00h. El dispositivo puede drenar hasta 100 mA desde el bus. El reseteo es una precaucin que asegura que el dispositivo estar en un estado con ocido despus del reseteo. El host asigna una direccin nica al dispositivo despus de usar una direccin por defa ult. La direccin es vlida hasta que el dispositivo es removido, el puerto es reseteado, o el sistema es reiniciado. En la siguiente enumeracin el hsot puede asignar una nueva direccin al dispositivo. Un descriptor es una estructura de datos que contiene el tamao maximo de paquete para un endpoint 0, el numero de configuraciones que el dispositivo soporta, y o tra informacin bsica sobre el dispositivo. El host usa esta informacin en las comunicac iones que siguen. El descriptor tiene descriptores subordinados. cada descriptor comienza con su l

ogintud y tipo. Attached state: si el hub no prove energa a la lnea VBus del dispositivo entonces s e dice que el dispositivo esta en Attached State. Estado Supendido: un dispositivo entra a este estado cuando no hay actividad en el bus, por almenos 3 ms. En estado suspendido el dispositivo debera limitar su uso de energa del bus. Ambos dispositivos configurados y no configurados tiene que soportar este estado. Los hub son tambin dispositivos usb, y el host enumera a los hubs recientemente c onectados de la misma manera que otros dispositivos, si el hub tiene dispositivo s conectados a el , el host enumera a cada uno de estos depus de que el hub informa al host de su presencia. REMOCIN DEL DISPOSITIVO: Cuando un usuario remueve un dispositivo desde el bus, el hub desabilita el puer to del dispositivo. El host el host sabe que la remocin ha ocurrido despus de encuestar al hub y enva un pedido de GET_PORT_STATUS para averiguar qu evento fu. TIPS PARA UNA ENUMERCACIN EXITOSA: *No asumir que los pedidos o eventos ocurrirn en un orden especfico. *Estar listo apra abandonar una transferencia de tipo control o terminarla de fo rma temprana. *No enviar ms datos de lo que el host pide. *Enviar un paquete de longitud cero cuando sea pedido. *Enviar stalls cuando los pedidos no sean soportados. *No setear la direccin demasiado pronto: la direccin solo debe ponerse despus que l a fase de estado alla sido completada. *Estar listo para entrar al estado suspendido: cuando el bus est en estado suspen dido el dispositivo debe reducir su consumo de energa *Pruebar con diferentes tipos de controlador de host: algunos controladores de h ost organizan multiples etapas de una transferencia de control en un solo cuadro mientras otros no. Los dispositivos deberan ser capaces de manejar ambas formas. Descriptores: Los dispositivos tiene que guardar la informacin en los descriptores y responder a pedidos para los descriptores. A medida que la enumeracin va progresando, los descriptores se preocupan cada vez ms por los elementos pequeos de un dispositivo: primero el dispositivo entero, luego cada configuracin, cada configuracin de inter fa(ces), y finalmente cada endpoint(s) de interface. Los descriptores de alto nivel informan al host sobre cualquier descriptor de ba jo nivel. Excepto para los dispositivos compuestos, los dispositivos solo tiene uno y solo un descriptor de dispositivo que tiene informacin del dispositivo como un todo y especifca el numero de configuraciones que el dispositivo soporta. Cada disposi tivo tiene uno o ms descriptores de configuracin sobre el uso de energa y el nmero de interfaces soportadas por la configuracin. cada descriptor de interfaz ti ene especifica cero o ms descriptores de endpoint que contiene la informacin necesaria para comunicarse con un endpoint. Cada descriptor de endpoint tiene informacin sobre cmo los endpoints transfieren datos. Una interfaz sin descriptores de enpoint tiene que usar endpoints de control par a comunicaciones. Adems de los descriptores estandar un dispositivo puede contener descriptores esp ecficos de un vendedor o de una clase.

Un descriptor de interfaz puede especificar que la interface pertenece a una cla se HID y tiene un descriptor de clase HID. cada descriptor consiste en una seria de campos. Mucho de lso nombres de los cam pos usan prefijos para indicar algo sobre el formato o contenido del dato en ese campo: b = byte (8 bits) w = word (16 bits) bm = bit map bcd = binary coded decimal i = indexado id = identifier EL DESCRIPTOR DEL DISPOSITIVO: Este descriptor tiene 14 campos. El descriptor incluye informacin sobre el mismo, el dispositivo, sus configuraciones, y cualquier clase a la que el dispositivo pertenezca. iSerialNumber: los nmeros de serie son tiles si los usuarios tiene ms de un disposi tivo idntico en el bus y el host necesita mantener rastro de quiene s quien incluso despus del reinicio. El nmero de seria tambin habilita a un host para determinar es el mismo usado ante riormente o es una isntalacin nueva de un perifrico con el mismo ID de vendedor, ID de producto. Ningn dispositivo con el mismo ID de vendedor, ID de pr oducto, y nmero de publicacin del dispositivo debera tener el mismo nmero de serie. Si el campo bDeviceClass es 0 el campo bSubClass tiene que ser 0 tambin. Una subc lase puede agregar soporte para caractersticas y habilidades adicionales compartidas por un grupo de funciones dentro de una clase. descriptor Device_qualifier: Dispositivos que soportan ambas full y alta velocidad tienen que tener un descri ptor device_qualifier. Cuando un dispositivo cambia entre velocidades, algunos campos en el descriptor del dispositivo pueden cambiar. El descriptor device_qua lifier contiene los valores de estos campos de la velocidad actualmente no en us o. En otras palabras los contenidos de los campos de los descriptores de dispositiv o y device_qualifier se intercambien dependiendo de qu velocidad estn usando. En el campo bDeviceProtocol: este protocolo puede especificar un protoclo defini do por la clase o subclase seleccionada. Por ejemplo un HUB 2.0 debe soportar todos los protocolos baja full y alta veloc idad. El descriptor del dispositivo para el protoclo actual activo y el descript or Device_qualifier contiene el cdigo para los protocolos no activos. DESCRIPTOR DE CONFIGURACION: Cada configuracin del dispositivo necesita su propio descriptor. El descriptor de configuracin contiene informacin sobre el uso de energa e interfac es soportadas por el dispositivo. Cada descriptor de configuracin tiene uno o ms descriptores subordinados, incluyen do uno o ms descriptores de interface y un descriptor de endpoint opcional. Un pedido de Set_Configuration con un valor de 0 causa que el dispositivo entre en un estado de No Configuracin.

Uso de energa (campo bmAttributes del descriptor de configuracin): Si el bit 6 = 1 el dispositivo est auto energizado y si es 0 est nergizado por el bus. El bit 5 = 1 si el dispositivo soporta la caracterstica de despertado remoto , el cual habilita un dispositivo USB suspendido para decirle al host que el dispo sitivo quiere comunicarse. Un dispositivo USB debe entrar al estado suspendido s i no ha habido actividad en el bus durante 3 ms.Si un evento en un dispositivo sus pendido requiere accin desde el host, un dispositivo con despertado remoto habili tado puede pedirle al hsot que reanude las comunicaciones. Los otros bits de los otro s campos no tienen uso. Los bits 0 al 4 tiene que ser 0. El bit 7 tiene que ser 1. (En USB1.0 el bit 7 fu puesto a 1 apra indicar que la configuracin era energizada por el bus. En USB1.1 y mayor, poniendo el bit 6 a 0 es suficiente para indicar que la configuracin es energizada por el bus). Corriente maxima (campo campobMaxPower del descriptor de configuracin): Especific a cunta corriente del bus un dispositivo requiere. El valor de bMaxPower es igual al nmero de miliamperes requeridos dividido por la mitad. Si el dispositivo requi ere 200 mA el valor de bMaxPower ser 100. La corriente mxima que un dispositivo puede requerir es 500 mA. Guardando la mita del nmero de mA habilita un a byte pa ra que guarde valores hasta el mximo. Si la corriente pedida no est disponible, el host se reusar a configurar el dispositivo. Un driver luego puede pedir una co nfiguracin alterna si est disponible. Descriptor other_speed_configuration: La estructura de este descriptor es idntica al descriptor de configuracin. la nica diferencia es que el descriptor other_speed_configuration describe la configuracin cuando el disositivo est operando a la velocidad actualmente no activ a. Este descriptor tiene subordinados tal como el descriptor de condiguracin los tiene. El host obtiene un descriptor other_speed_configuration enviando un p edido Get_Descritor con el byte ms significativo del campo wValue de la transaccin SETUP igual a 7. Descriptor Interface Association (IAD): Identifica mltiples interfaces que estn asociadas con una funcin (me parece que aqu se refiri a un dispositivo en vez de funcin). "EN RELACIN A LOS DISPOSITIVOS Y SUS DESCRIPTORES, EL TRMINO INTERFACE SE REFIERE A UNA CARACTERISTICA O FUNCION QUE UN DISPOSITIVO IMPLEMENTA" Muchas clases de dispositivos especifican sus funciones en nivel de interfaz ant es que el nivel de dispositivo. Asignando funciones a interfaces hace posible para una sola configuracin soportar mltiples interfaces y estas mltiples funciones. Un dispositivo que tiene mltiples interfaces que estn activas al mismo tiempo es u n dispositivo compuesto. cada interfaz tiene su propio descriptor de interfaz y un descriptor de endpoint por cada endpoint que la interz usa. el host carga u n driver por cada interfaz. Cuando dos o ms interfeces estn asociadas en una configuracin con las misma funcin, el descriptor interface association puede decirle al host cul interfaz est asociada con cul.

Por ejemplo, una cmra de video puede usar una interfaz para controlar la cmara y o tra para llevar el dato de video. Para habilitar al host para que identifique dispositivos que usan el descriptor Interface Association, el descriptor del dispositivo debera tener los siguientes valores: bDeviceClasS = EFh (miscellaneous devie class), bDeviceSubclass = 02h ( common class), y bDeviceProtocol = 01h (descriptor interface association). Estos cdigos juntos se refieren como "Multi-Interface Function Device Class codes ".

Descriptor de Interfaz: Prove informacin sobre una funcin o caracterstica que uin dispositivo implementa. El descriptor contiene informacin de clases, subclases y protocolos y el nmero de endpoints que la interface usa. una configuracin puede tener mltiples interfaces que estn activas al mismo tiempo. traducir: "The interfaces may be associated with a single function or they may b e unrelated." cada interfaz tiene su propio descriptor de interfaz y sus descriptores subordin ados. dispositivos que usan transferencia de tipo iscrona deben tener interfaces altern as porque la interfaz por defualt tiene que requerir ancho de bando no iscrono. Cmabiando interfaces es ms simple que cambiar configuraciones. Muchos dispositivos no usan los valores en todos los campos, como estos (disposi tivos) que habilitan configuraciones y protocolos alternas. bInterfaceNumber: Identifica la interfaz. en un dispositivo compuesto, una confi guracin tiene mltiples interfaces que estn activas al mismo tiempo. cada interfaz tiene que tenre un valor nico ene ste campo. El valor por defualt es cero. bInterfaceClass: Similar a bDeviceClass en el descriptor del dispositivo, pero a pra dispositivos con una clase especificada por la interfaz. "LA TABLA 4-9 MUESTRA LOS CODIGOS DEFINIDOS PARA CADA CLASE." por ejemplo el cdigo para un dispositivo clase HID es "03h". bInterfaceSubClass: Similar a bDeviceSubClass en el descriptor del dispositivo p ero apra dispositivos con una clase definida por la interfaz. Para interfaces qu e pertenecen a una clase, este campo puede especificar una subclase dentro de la c lase. bInterfaceProtocol: Similar a bDiceProtocol en el descriptor de dispositivos, pe ro para dispositivos cuyas clases estn definidas por la interfaz. Descriptores de Endpoint: Cada endpoint especificado en un descriptor de interfaz tiene un descriptor de e ndpoint. Un endpoint 0 nunca tiene nunca tiene un descriptor porque cada dispositivo tien e que soportar un endpoint 0.

bEndpointNumber: Contiene el nmero y direccin de enpoint. Los bits del 0 al 3 son el nmero de endpoint. Los dispositivos de baja velocidad pueden tener un mximo de 3 endpoints (usalment e numerados del 0 al 2), mientras dispositivos de full y alta velocidad pueden tener 16 (del 0 al 15). El bit 7 es la direccin: OUT = 0, IN = 1, Bidireccional (para transferencia de ti po control) = se ignora este bit, los bits 4, 5 y 6 no se usan y tiene que ser c ero. bmAttibutes: los bits 1 y 0 indican el tipo de transferencia que le endpoint sop orta. 00 = control 01 = isochronous 10 = bulk 11 = interrupt Para el endpoint 0, la trnasferencia de tipo contro, est asumida. En USB 1.1, bits del 2 al 7 fueron reservados. USB2.0 usa los bits del 2 al 5 pa ra endpoint iscronos de full y alta velocidad. Los bites 3 y 2 el tipo de sincronizacin: 00 = sin sincronizacin 01 = asincrnico 10 = adaptativo 11 = sincrnico Bits 00 = 01 = 10 = 11 = 5 y 4 indican el tipo de uso; endpoint de datos endpoint de retroalimentacin endpoint de datos de retroalimentacin implcita reservado

"PARA ENDPOINTS NO ISCRONOS LOS BITS DEL 1 AL 5 TIENEn QUE SER CERO". Y para todos los endpoints los bits 6 y 7 tiene que ser cero. wMaxPackectSize: El nmero mximo de bytes de datos que un endpoint puede transferir en una transaccin. Los valores permitidos pueden variar con la velocidad y el tipo de transferencia. Bits del 10 al 0 indican el tamao mximo de paquete, de 0 a 1024 (0 a 1023 apra USB 1.X). En USB2.0 bits del 12 al 11 indican cuntas transacciones por microcuadro un endpoint de alta velocidad soporta: 00 = no transacciones adicionales (total de 1 transacion por microcuadro) 01 = una adicional (total de 2 transacciones por microcuadro) 10 = dos adicionales (total de 3 transacciones por microcuadro) 11 = reservado En USB1.x estos bits fueron reservados y puestos a cero. Bits del 13 al 15 est;a n reservados y tiene que ser cero. bInterval: Puede indicar la latencia mxima para encuestar interrup endpoints, el intervalos para encuestar endpoints iscronos o la mxima tasa de NAK para endpoints de tipo control o endpoint out bulk de alta velocidad.El rango permiti do y cmo el valor es usado vara con al velocidad del dispositivo, el tipo de transferencia y si el dispositivo cumple o n con el compilado USB2.0. Para endpoints de tipo interrupcin de baja velocidad, La latencia mxima est dada en milisegundos. El valor puede variar de 10 a 255.

PAra todos los endpoints de tipo interrupcin y los endpoints de tipo iscrono ambos de full velocidad en dispositivos 1.x el valor est en milisegundos. Para endpoints de tipo interrupcin puede variar de 1 a 255. Para endpoints iscrono s en dispositivos 1.x (solo full velocidad), el valor tiene que ser 1. Para endpoints de tipo iscronos en dispositivos de full velocidad 2.0, valores de 1 a 16 estn permitidos y el intervalo es calculado como 2 elevado a (bInterval 1) permitiendo un rango de 1 a 32768 ms. Para trnasferencias de tipo control y bulk en full velocidad. el valor es ignora do. para endpoints de alta velocidad, est en unidades de 125 us, el cul es el ancho de un microcuadro. el valor apra endpoints de tipo interruo e iscronos puede variar de 1 a 16 y el intervalo es calculado como 2 elevado a (bInterval - 1) apra perm itir un rango de 125 us a 4096 seg. Para endpoints de tipo control y bulk OUT de alta velocidad el valor indica la mx ima tasa de NAK de un endpoint. Este valor es relevante cuando un dispositivo ha recibido datos y retornado un ACK, y el host tiene ms datos apra enviar en la transferencia. retornando un ACK, el dispositivo est diciendo que espera ser capaz de recibir el siguiente transacin de datos.(de otra manera el dispositi vo retornara un NYET). Si el siguiente paquete de datos llega y por alguna razn el dispositivo no puede aceptar el paquete, el endpoint retorna un NAK. El v alor bInterval dice que el endpoint retornar un NAK no ms de una vez en cada periodo especificado por bInterval.El valor puede variar de 0 a 255 microcuadros . Un valor de 0 indica que un endpoint nunca har un NAK. El host no necesita saber la informacin de la mxima tasa de NAK. DESCRIPTOR STRING: Un descriptor string contiene texto descriptivo. La especificacin USB 2.0 define descriptores que contiene ndices a varias cadenas,incluyendo cadenas que describen al fabricante, producto, nmero de serie, configuracin, e interfaz. descr iptores de clase y vendedor pueden contener ndices a descriptores string adicionales. El soporte para descriptores string es opcional, aunque una clase puede requerir los. wLangID (campo de Descriptor String): Usado solo en descriptor string 0. El desc riptor string 0 contiene uno o ms caodigos ID de lenguaje de 16 bits que indica e l lenguaje en que las cadenas estn disponibles. El cdigo para ingls es 0009h, y el subcdigo para inls EEUU es 0004h. Estos probablem ente son los nicos cdigos soportados por un sistema operativo. El valor wLangID tiene que ser vlido para cualquier otra cadena para ser vlido.Dis positivos que no retornan descriptores string no tiene que retornan un conjunto de IDs de lenguaje. bString (campo de Descriptor String): Para valores de 1 y ms alto, el campo bSt ring contiene una cadena UNICODE. UNICODE usa 16 bits para representar cada cara cter. Con algunas excepciones, los cdigos de caracter ANSI del 00h al 7fh corresponden a valores de UNICODE del 0000h al 007fh. Por ejemplo, una cadena para un product o para un producto llamado "GIZMO" debera contener 5 valores UNICODE de 16 bits qu e representan los caracteres en el nombre del producto: 0047 0069 007A 006D 006F . Las cadenas no terminan en NULO.

OTROS DESCRIPTORES ESTANDAR: La especificacin USB enlista 3 descriptores adicionales para interface_power, OTG , y descriptores de debug. El descriptores energia_interfaz (interface_power) est definida en una especifica cin propuesta de administracin de Energa de una Interfaz para habilitar a las interfaces para que administren individualmente su propio consumo de energa . La especificacin fu propeusta por MIcrosoft en 1998 pero no fu aprovada o implementada. El documento describiendo esta estructura y uso del descriptor es USB Feature specification: Interface Power Management. El descritpor OTG es requerido apra dispositivos que soportan el PROTOCLO DE NEG OCIACION HOST DE ON-THE-GO (ON-THE-GO'S HOST NEGOTION PROTOCOL (HNP)) o PROTOCOLO DE SESION DE PEDIDO (Session request Protocol (SRP)). El descriptor in dica los protocolos soportados. El descriptor de debug est definido como una propuesta de especificacin`por USB2 d ebug devices. Un dipositivo de debug se conecta a un puerto de debug opcional definido en la especificacin EHCI apra controladores de host de alta velocidad. E l puerto y dispositivo de debug estn intentados para reeemplazar el puerto RS232 que las PCs han usado banstante para propositos de debugeo. DESCRIPTOR MICROSOFT OS: MIcrosoft ha definido su propio descriptor MIcrosoft OS para uso con dispositivo s con clases del vendedor especficas. Este descriptor est intentado para asistir en proveer datos especficos de Windows como conos y configuracin de registros. El descriptor consiste de un descritor string especial y uno caractersticas de Microsoft OS. El descriptor string tiene EEh y contiene traducir embedded signature. Windows XP SP1 y ste descriptor string en la primera conexin. Un dispositivo conexin debera soportar un STALL. o ms descriptores de que tener un ndice a posteriores piden e que no soporta esta

Si un dispositivo contiene un descriptor string Microsoft OS, Windows hace un pe dido adicional de descriptores especficos de WINDOWS. Futuras ediciones de Window s DDK tendrn ms docmunetacin de estos descriptores. Descritpores en dispositivos de compilacin 2.0: Si est actualizando un dispositivo de la compilacn 1.x a uno de la 2.0, qu cambios son requeridos en los descritpores? En un dispositivo de velocidad dual, puedes detectar si un dispositivo est usando full o alta velocidad leyendo su descriptor ? Esta seccin responde estas preguntas.

HACIENDO DESCRIPTORES 1.X EN COMPILADO 2.0: Los campos de descriptores cuyo contenido pueden requerir cambios para habilitar un dispositivo 1.x para cumplir con la especificacin USB 2.0 est descritor en la tabla 4-12 del libro USB COMPLETE 3ra edicin. Para todos los deispositivos excepto aquellos que tienen endpoints iscronos, el n ico cambio requerido es este: en el descriptor del dispositivo, el campo bcdUSB tiene que ser 0200h.

Como lo explic el captulo 3 una interfaz (ces) por default de un dispositivo USB 2 .0 no tiene que requerir ancho debanda iscrono. Y debido a que la interfaz por default no usa transferencia de datos iscrona, un dispositivo que quiere hace r transferencia iscrona, tiene que soportar almenos una configuracin de interfaz altena, y el descriptor de interfaz alterna tendr almenos un descritpor de endpoi nt subordinado. Algunos dispositivos 1.x ya cumplen con este requerimiento. La especificacin 2.0 tambin agrega dos nuevos descritores y funciones para bits en campos existentes, pero los nuevos descriptores son usados solo para dipositivo s de velocidad dual y los otros descriptores son compatibles hacia atrs con 1.x. Los endpoints iscronos tiene algunas nuevas habilidades opcionales. El descriptor de endpoint puede especificar soncronizacin y tipos de uso (campo bmAttribute), y el intervalo puede ser mayor a 1 ms (campo bInterval). En descriptores 1.x, es tos bit son puestos a 0 por default (sin sincronizacin) y 1 (1 ms). Cuando se seleciona valores bInterval para endpoints de tipo interrupt e iscronos , no olvidar que la relacin entre bInterval y el tiempo de intervalo variar dependiendo del ripo de transferencia y velocidad. Para interrupts endpoints de baja y full velocidad, el intervalo igual a bInterval est en milisegundos. para endpoints iscronos de full velocidad el intervalo es igual a 2 elevado a (bI nterval-1) en milisegundos. Para endpoints de tipo iscrono e interrupt de alta velocidad el intervalo es igual a 2 elevado a (bInterval-1) en unidades de 125 us. Note que si bInterval = 1, el intervalo full velocidad es 1 ms en ambos USB 1.x y USB 2.0. entonces un endpoint de tipo iscrono 1.x, el cual; tiene que terener bIn terval = 1, no requiere cambios para cumplir USB 2.0. Si actualizas un dispositivo full velocidad para que tambin sopporte alta velocid ad, el dispositivo necesita un descriptor device_qualifier, y un descriptor other_speed_configuration, y un conjunto de descriptores para la configuracin de alta velocidad. Cualquier endpoint de tipo interrupt en una interfaz por default tiene que tener un tamao maximo de paquete de 64 o menos bytes. Un dispositivo US B 2.0 que soporta solo baja velocidad o solo full velocidad tiene que retorna un STALL en respuesta a pedidos de descriptores device_qualifier y other_speed_conf iguration. DETECTANDO LA VELOCIDAD DE UN DISPOSITIVO DE VELOCIDAD DUAL: Un dispositivo de alta velocidad tiene que responder a un pedido de enumeracin a full velocidad`, y el dispositivo tambin puede estar completamente funcional a full velocidad. Como se explicn en el captulo 1, un dispositivo de alta velocidad tiene que usar f ull velocidad si tiene un host 1.x o si hay un hub 1.x entre le host y el dispositivo. Aplicaciones y drivers de dispositivos normalmente no necesitan sab er qu velocidad un dispositivo de velocidad dual est usando porque todos los detalles relacionados con la velocidad son amnejados a un nivel ms bajo. Windows no prove una forma directa de saber sobre la velocidad del dispositivo. P ero si una aplicacin del host queire saber, hay algunas tcnicas que peuden detectar la velocidad del bus para muchos dispositivos. Si un dispositivo tiene un endpoint de tipo bulk, puedes saber la velocidad actu al examinando el descriptor de endpoint en la configuracina activa. EL campo wMaxPacketSize tiene que ser 512 en dispositivos de alta velocidad y puede ser 5 12 en dispositivos de full velocidad. Si no hay un endpoint de tipo bulk, el cam po wMaxPacketSize de un endpoint de tipo interrupt o iscrono prove informacin de la ve locidad si el endpoint usa un tamao mximo de paquete disponible solo a alta velocidad, para endpoints de tipo interrupt, con un campo wmaxPacket Size mayor a 64 indica alta velocidad. Si el wMaxPacketSize es 64 o menos, el dispositivo puede estar usando full o alta velocidad. para endpoints de tipo iscr

ono, un campo wMaxPacketSize de 1024 indica altav velocidad.. si el campo wMaxPacketSize es 1023 o menos`, el dispositivo puede estar usando full o alta v elocidad. Si est;as escribiendo el firmware del dispositivo, puedes proveer informacin de l a velocidad en cadenas adicionales indexados por lsod escriptores de configuracin y other_speed_configuration. POr ejemplo, la cadena indexada por el descriptor d e configuracin puede contener el texto "Alta Velocidad", y la cadena indexada por el descriptor other_speed_configuration puede contener el texto "full velocidad". l as aplicaciones pueden luego leer las cadenas de configuracin apra aprender sobre la velocidad actual. La aplicacin SUBView en Windows DDK muestra cmo las aplicaciones peuden leer los d escriptores.

Anda mungkin juga menyukai