OK, I did some experimentation, to see how these things really work. Here's what I've found:
For LEDs, unless I'm missing something, the only Set method we have is SetUserLED. SetLED and SetOEMLED just throw syntax errors. Similarly, GetLED seems to not throw a syntax error, but also doesn't seem to actually do anything. GetOEMLED and GetUserLED appear to be identical, other than their names. Either seems able to read any LED, and both appear to expect "User" LEDs to be numbered above 1000.
For DROs, I see no difference between SetOEMDRO/GetOEMDRO and SetUserDRO/GetUserDRO, and both appear to expect "User" LEDs to be numbered above 1000. Any DRO written by one, can always be read by the other. SetDRO/GetDRO has me a little confused, as it seems to access a different "space" from the other two. i.e. - A DRO written by SetOEMDRO or SetUserDRO cannot be read by GetDRO, and vice-versa.
So, what, exactly, is the difference between all these, and why are there seemingly identical functions with different names?
Regards,
Ray L.