The USB library triggers the enumeration using the commands usbDisconnect(), usbConnect().
If the USB library doesn't initialize correctly, it does not retry automatically, so if the USB host gives up in the enumeration (common in some embedded hosts) it will not be enumerated.
With a separate init() one could test if the device fails to communicate via USB and re-trigger the enumeration by re-calling init().
The USB library triggers the enumeration using the commands usbDisconnect(), usbConnect().
If the USB library doesn't initialize correctly, it does not retry automatically, so if the USB host gives up in the enumeration (common in some embedded hosts) it will not be enumerated.
With a separate init() one could test if the device fails to communicate via USB and re-trigger the enumeration by re-calling init().