The maximum transaction length is currently required by the IN API XUD_SetBuffer_Start() to split a transfer into multiple transactions. This value is computed at compile time and assigned to the max_len field in XUD_ep_info:
ep_info[i].max_len = XUD_USB_ISO_EP_MAX_TXN_SIZE;
To make this behavior fully generic, the maximum transaction length should be passed as an argument to APIs like XUD_SetBuffer(), XUD_SetReady_In(), etc.
This change would allow:
- Endpoints to have distinct max transaction lengths
- Alternate interfaces on the same endpoint to define their own transaction length limits