So far:
It looks like the INDI SX filter wheel won't take advantage of forwards and backwards movements. It will always turn clockwise even if the filter is directly behind the one we need:
The problem:
bool SXWHEEL::SelectFilter(int f) {
TargetFilter = f;
SendWheelMessage(f, 0);
SetTimer(250);
return true;
}
The Fix:
bool SXWHEEL::SelectFilter(int f) {
TargetFilter = f + 0x80;
SendWheelMessage(f, 0);
SetTimer(250);
return true;
}
In the Camera driver, get build number doesn't work properly. The camera returns a two byte build number
line ~ 355
The problem:
setup_data[USB_REQ_LENGTH_L] = 4;
setup_data[USB_REQ_LENGTH_H] = 0;
int rc = libusb_bulk_transfer(sxHandle, BULK_OUT, setup_data, 8, &transferred, BULK_COMMAND_TIMEOUT);
DEBUG(log(true, "sxGetBuildNumber: libusb_control_transfer -> %s\n", rc < 0 ? libusb_error_name(rc) : "OK"));
if (transferred == 8) {
rc = libusb_bulk_transfer(sxHandle, BULK_IN, setup_data, 2, &transferred, BULK_COMMAND_TIMEOUT);
DEBUG(log(true, "sxGetBuildNumber: libusb_control_transfer -> %s\n", rc < 0 ? libusb_error_name(rc) : "OK"));
if (transferred == 2) {
unsigned long result=((unsigned long)setup_data[0] | ((unsigned long)setup_data[1] << 8) | ((unsigned long)setup_data[2] << 16) | ((unsigned long)setup_data[3] << 24));
return result;
}
}
The fix:
setup_data[USB_REQ_LENGTH_L] = 0;
setup_data[USB_REQ_LENGTH_H] = 0;
int rc = libusb_bulk_transfer(sxHandle, BULK_OUT, setup_data, 8, &transferred, BULK_COMMAND_TIMEOUT);
DEBUG(log(true, "sxGetBuildNumber: libusb_control_transfer -> %s\n", rc < 0 ? libusb_error_name(rc) : "OK"));
if (transferred == 8) {
rc = libusb_bulk_transfer(sxHandle, BULK_IN, setup_data, 2, &transferred, BULK_COMMAND_TIMEOUT);
DEBUG(log(true, "sxGetBuildNumber: libusb_control_transfer -> %s\n", rc < 0 ? libusb_error_name(rc) : "OK"));
if (transferred == 2) {
unsigned long result=((unsigned long)setup_data[0] | ((unsigned long)setup_data[1] << 8)) ;
return result;
}
}
#define VERSION_MAJOR 1
#define VERSION_MINOR 7
If there's a newer one I couldn't find it.