Goal: I am looking for a cross-platform solution to determine if the camera, mic, and speaker are enumerated and selectable. If the camera fails to enumerate while the mic and speaker do enumerate, I would like to throw an error that the camera failed to Enumerate. I am also looking for all the other permutations of a failed enumeration while keeping in mind the knowledge from one could be extracted into the other tests.
Hardware: Think of it as a phone that is plugged in via USB. The phone as mic, speaker, and camera support.
Tried: I have looked into single-platform solutions such as the following for Mac:
system_profiler SPCameraDataType | grep -i <device_string>system_profiler SPAudioDataType | grep -i <device_string>
Issue: This is exactly what I am looking for but does not scale directly to Linux and Windows
Tried: I have also looked into the Python USB library in an attempt to find a multi-platform solution:
devices = usb.core.find(idVendor=<myVenderID>)
Issue: It seems to show the USB config file sent when a USB device is plugged in, not listing selectable endpoints. This could lead to false positives because it would not indicate a partial failure (Only audio enumeration, not video).