I am using the Tivaware a USB library (version 2.1.0.12573) to configure a TM4C123GH6PM as a composite USB device with three bulk endpoints and one CDC endpoint.
Under this configuration I get a ASSERT failure on line 110 of usblib/usb.c in the function _USBIndexWrite. I have included the offending portion of the code below. If I comment out the assertion, the device enumerates and communicates as expected.
My guess is that this is just a legacy assertion intended for a device with fewer available endpoints. However, I would love for someone more familiar with the codebase confirm that it is indeed safe to ignore this particular assertion.
static void
_USBIndexWrite(uint32_t ui32Base, uint32_t ui32Endpoint,
uint32_t ui32IndexedReg, uint32_t ui32Value, uint32_t ui32Size)
{
uint32_t ui32Index;
//
// Check the arguments.
//
ASSERT(ui32Base == USB0_BASE);
ASSERT((ui32Endpoint == 0) || (ui32Endpoint == 1) |(ui32Endpoint == 2) || (ui32Endpoint == 3));
ASSERT((ui32Size == 1) || (ui32Size == 2));