I'm using the examples/usb/isochronous_count.py
but substituting the memory-like USBIsochronousInEndpoint
endpoint for a stream-like USBIsochronousStreamInEndpoint
.
This is USB2 high speed, with 3 packets per microframe. frame_finished
simply never goes off.
Without frame_finished
, isochronous endpoints can't be made to synchronise with the USB frame if their transactions are greater than 1k byte.
data_requested
is behaving itself, at least the docs say it strobes at the top of a packet.
Digging a bit deeper, I can see the bytes_left_in_packet
counter is behaving itself, but bytes_left_in_frame
is being reset to its user-specified value at the top of every packet instead of every frame
bytes_left_in_frame
is reset during interface.tokenizer.new_frame
signal, suggesting the tokenizer is going off on every packet instead of every frame or even microframe.