I am writing USB as a host, baremetal I am facing some data toggling issues, my question is - is data toggling specific to an Endpoint
What I mean is consider BULK transfer, you got a BULK IN endpoint and a BULK OUT endpoint. Now if I am to read a block, I send the read(10) request to the BULK OUT and then accept the data read on BULK IN.
Now, if i send maybe a write(10) request to BULK OUT endpoint then what would the value for the data toggle be?? Would it be that obtained after the first request to BULK OUT(DATA0->DATA1) or would it be that after accepting the data read from first BULK IN(DATA0->DATA1->DATA0)
PS: I am implementing using the OpenHCI host controller protocol
Yes, data toggling is specific to an endpoint.
Your BULK IN endpoint and your BULK OUT endpoint will not share data toggles. Instead, there are two separate data toggles, one for each endpoint.