Ok, I got back to this project again and tried a fresh tact.
I found an older demo code in the forum pointing to this repo
https://github.com/guiduc/usb-hid-chibios-example.gitWhich was based upon 2.6.x Chibi release, but it worked as advertised and was simple enough to understand. I then modified it slightly, and added my descriptors, and it continued to work just fine. I then just worked the problem from both ends until I figured out what was wrong.
In the end, my project was working all along. However, on Linux (and others I'm sure), if no one on the host is currently reading from the USB HID device, it simply stops talking to it (it may also attempt to suspend it which I have to investigate and handle). That's why my usbTransmit() calls would stall, the host was simply not allocating a time slot for it. It's always difficult for me to remember that even with an "interrupt" endpoint, the host is _ALWAYS_ in control of the traffic.
Anyway, I figured once I whip this application into shape a bit more and make it handle the cases I spoke of above, that I could donate a simple example of a HID gamepad device that could ship with Chibi as a testhal/ or demo/. Many times this has come up in forums and might help people getting started. Giovanni, would this be acceptable? This application I'm writing is for a "blue pill" board, but I could port it to F4 or F3 discovery boards which I have access to and have USB ports. Which would get the wider audience in your opinion?
Dave