I could not find anything by searching the site or the Forum.
I want to control the Maestro 12 from a custom application. I have downloaded the SDK and installed the drivers but I cannot find any information on the API to the driver or the wrapper above it or any documentation on the communication protocol and functionality.
I can look at the examples and the source code for usc and the applications but there may be subtleties for example with threading, what is and isn’t thread safe which I may overlook. It would be easier with some documentation. The same thing applies to using serial comms to talk instead of the interface library. Have I forgot to look somewhere obvious?
In Windows, the driver for the Maestro’s native USB interface is WinUSB. The UsbWrapper DLL is basically just a wrapper that calls functions from winusb.dll, but it also uses SetupAPI to find USB devices. I haven’t thought too much about whether there are subtle threading issues. If there are, they should be documented by Microsoft in the WinUSB documentation.
In Windows, the driver for the Maestro’s two virtual COM ports is usbser.sys. Microsoft does not provide much documentation about this, but I would think that if there are any subtle issues with using it, those issues are common to all COM ports on a Windows system.
In Linux, the operating system does not assign any particular driver to the native USB interface. The UsbWrapper DLL is basically just a wrapper that calls functions in libusb 1.0. I haven’t thought too much about whether there are subtle threading issues. If there are, they should be documented in the libusb documentation.
In Linux, the driver for the Maestro’s two virtual COM ports is the cdc-acm module, which you can find in the Linux kernel source code.