Author Topic: HID Enumeration and Set_Idle  (Read 15579 times)

Ray

  • Member
  • ***
  • Posts: 13
HID Enumeration and Set_Idle
« on: September 24, 2011, 08:46:48 am »
Jan,

I tried to implement the Set_Idle request for my HID. Initially, when I was not implementing the request, the host was polling for IN reports on EP1. This was a good thing as this is the endpoint that my descriptor said would implement the IN interrupts. Once I changed my firmware to allow the use of the Set_Idle request, the host started polling EP0 for the IN rather than EP1. This now meant that the IN was always NAK'd as I was updating EP1 and not EP0. My HID Enpoint descriptor has not changed. I am still declaring that the IN is on EP1 (Address 0x81). Once I changed the firmware back to handshake a stall on receipt of a Set_Idle request the host again started polling EP1.

Implementing the Set_Idle is not that important to me, but I am curious as to why this happens.

Regards,

Ray

Jan Axelson

  • Administrator
  • Frequent Contributor
  • *****
  • Posts: 3033
    • Lakeview Research
Re: HID Enumeration and Set_Idle
« Reply #1 on: September 24, 2011, 09:30:55 am »
Endpoint 0 is for control requests only.

Are you sure the device is completing the Set_Idle request?

Jan

Ray

  • Member
  • ***
  • Posts: 13
Re: HID Enumeration and Set_Idle
« Reply #2 on: September 25, 2011, 07:01:28 am »
Jan,

You were absolutely right, thanks. I had not finished the Set_Idle request. I had not uncommented my call to setup the Status packet, so the Host was still trying to get a Status packet or STALL from the device.

Ray.

Jan Axelson

  • Administrator
  • Frequent Contributor
  • *****
  • Posts: 3033
    • Lakeview Research
Re: HID Enumeration and Set_Idle
« Reply #3 on: September 27, 2011, 12:13:20 pm »
I'm glad to hear you got it working.

Jan