Bit confused on this TBH but I have proof..
Windows
enumerate usb gamepad
poll always
Linux
enumerate usb gamepad
poll a few times
stop, wait for the os to require USB, then beginning polling.
if the OS does not need it, stop polling
So code side I have this
while (!usbInterruptIsReady())
{
usbPoll();
}
usbSetInterrupt((void *)&reportBuffer,
;
For linux, after enumeration it enter this loop and exits about 20 or so times (verities) but will end up polling and I see the keep alive but never getts USB ready, so its stuck in the loop. Once I do something like jstest so that the OS needs data, it exits the loop as it should. Once I stop using jstest, it's back to not getting the ready, so it's stuck in the loop. Windows just polls, always and exits the loop because it gets the ready USB flag.
Why is this, is there a way to tell Linux to just continue polling like windows does in the USB enumeration?
in the image, i have debug data that shows when its in the loop after I plug in the device. The debug will stop if the loop exits. As you can see linux stays in that loop.