Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/19/08 13:33
Read: times


 
#157555 - ZLP to the interrupt IN EP
Responding to: ???'s previous message
ZLP is always used in Set_configuration handler in Status Stage.

You are mixing up the default endpoint (EP0) and the interrupt IN endpoint. The ZLP to the EP0 on the STATUS stage is required for the control transfer handling. It means the reply to the host that the request is handled successfully.

I said to put ZLP to the interrupt IN EP in the Set_Configuration handler.
USB IN EP doesn't start transaction until host polls the IN EP using IN transaction. Then, you can know the start of host IN transaction by the TX complete flag of this IN EP.


Does it mean that when the configuration is set, the enumeration is at the end? But other setup data are still sending after Set_configuration, aren't they?

Set_Configuration is not always the end of enumeration.
Depending on the USB class, and even on the host OS, more request(s) are put from host to the device.

See this post,
"Difference on HID enumeration on Win, Linux and Mac" on SiLabs USB forum
http://www.cygnal.org/ubb/Forum9/HTML/001325.html

On this post, I compared the enumeration sequence of vendor-specific HID on WinXP, Linux and Mac OSX.

- You'll see Get_Descriptor( HID Report ) after Set_Configuration on all of these OS.
- Just WinXP puts Set_Idle, too.
- Just Mac OSX puts many Get_Descriptors after Set_Configuration
- WinXP and Mac OSX start IN transaction to the interrupt EP after enumeration, but Linux puts Get_Report( Input )

Tsuneo


List of 13 messages in thread
TopicAuthorDate
AT89c5131 enumeration problem...            01/01/70 00:00      
   Initialization problem            01/01/70 00:00      
      Windows bug            01/01/70 00:00      
      continuing problem...            01/01/70 00:00      
         End of enumeration            01/01/70 00:00      
            Zero-length data packet            01/01/70 00:00      
               ZLP to the interrupt IN EP            01/01/70 00:00      
                  My fault...            01/01/70 00:00      
         Which example?            01/01/70 00:00      
             Implementing the USB Enumeration Process...            01/01/70 00:00      
               Packet size of the interrupt IN EP            01/01/70 00:00      
                  packet size...            01/01/70 00:00      
                     Detailed log...            01/01/70 00:00      

Back to Subject List