Bi-monthly release with minor bug fixes and improvements
Please Log in or Create an account to join the conversation.
diff -ur indi-qsi/qsi_ccd.cpp indi-qsi-mod/qsi_ccd.cpp
--- indi-qsi/qsi_ccd.cpp 2015-09-06 15:21:05.000000000 +0200
+++ indi-qsi-mod/qsi_ccd.cpp 2015-12-22 12:08:24.058733104 +0100
@@ -16,6 +16,7 @@
2015:
+ Added Fan speed option
+ Added Gain option
+ + Added AntiBlooming option
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -145,6 +146,7 @@
targetFilter = 0;
canSetGain = false;
canControlFan = false;
+ canControlAB = false;
canChangeReadoutSpeed = false;
QSICam.put_UseStructuredExceptions(true);
@@ -191,6 +193,10 @@
IUFillSwitch(&GainS[2], "Auto", "", ISS_ON);
IUFillSwitchVector(&GainSP, GainS, 3, getDeviceName(), "Gain", "", OPTIONS_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE);
+ IUFillSwitch(&ABS[0], "Normal", "", ISS_ON);
+ IUFillSwitch(&ABS[1], "High", "", ISS_OFF);
+ IUFillSwitchVector(&ABSP, ABS, 2, getDeviceName(), "AntiBlooming", "", MAIN_CONTROL_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE);
+
IUFillSwitch(&FanS[0], "Off", "", ISS_OFF);
IUFillSwitch(&FanS[1], "Quiet", "", ISS_OFF);
IUFillSwitch(&FanS[2], "Full", "", ISS_ON);
@@ -235,7 +241,10 @@
if (canSetGain)
deleteProperty(GainSP.name);
-
+
+ if (canControlAB)
+ deleteProperty(ABSP.name);
+
if (canControlFan)
deleteProperty(FanSP.name);
@@ -375,10 +384,31 @@
}
}
+ QSICamera::AntiBloom cAB = QSICamera::AntiBloomNormal;
+ canControlAB = true;
+
+ try
+ {
+ QSICam.get_AntiBlooming(cAB);
+ }
+ catch (std::runtime_error err)
+ {
+ DEBUGF(INDI::Logger::DBG_DEBUG, "Camera does not support AntiBlooming control. %s.", err.what());
+ canControlAB = false;
+ }
+
+ if (canControlAB)
+ {
+ IUResetSwitch(&ABSP);
+ ABS[fMode].s = ISS_ON;
+ defineSwitch(&ABSP);
+ }
+
QSICamera::FanMode fMode = QSICamera::fanOff;
canControlFan = true;
+
try
{
QSICam.get_FanMode(fMode);
@@ -575,6 +605,40 @@
return true;
}
+
+ if (!strcmp(name, ABSP.name))
+ {
+ int prevAB = IUFindOnSwitchIndex(&ABSP);
+ IUUpdateSwitch(&ABSP, states, names, n);
+ int targetAB = IUFindOnSwitchIndex(&ABSP);
+
+ if (prevAB == targetAB)
+ {
+ ABSP.s = IPS_OK;
+ IDSetSwitch(&ABSP, NULL);
+ return true;
+ }
+
+ try
+ {
+ QSICam.put_AntiBlooming( ((QSICamera::AntiBloom) targetAB));
+
+ } catch (std::runtime_error err)
+ {
+ IUResetSwitch(&ABSP);
+ ABS[prevAB].s = ISS_ON;
+ ABSP.s = IPS_ALERT;
+ DEBUGF(INDI::Logger::DBG_ERROR, "put_AntiBlooming failed. %s.", err.what());
+ IDSetSwitch(&ABSP, NULL);
+ return false;
+ }
+
+ ABSP.s = IPS_OK;
+ IDSetSwitch(&ABSP, NULL);
+ return true;
+ }
+
+
if (!strcmp(name, FanSP.name))
{
int prevFan = IUFindOnSwitchIndex(&FanSP);
diff -ur indi-qsi/qsi_ccd.h indi-qsi-mod/qsi_ccd.h
--- indi-qsi/qsi_ccd.h 2015-09-06 15:21:05.000000000 +0200
+++ indi-qsi-mod/qsi_ccd.h 2015-12-22 12:10:59.908730313 +0100
@@ -67,10 +67,13 @@
ISwitch GainS[3];
ISwitchVectorProperty GainSP;
+ ISwitch ABS[3];
+ ISwitchVectorProperty ABSP;
+
ISwitch FanS[3];
ISwitchVectorProperty FanSP;
- bool canAbort, canSetGain, canControlFan, canChangeReadoutSpeed;
+ bool canAbort, canSetGain, canControlAB, canControlFan, canChangeReadoutSpeed;
short targetFilter;
double ccdTemp, targetTemperature;
double minDuration;
Please Log in or Create an account to join the conversation.
Scanning dependencies of target indi_qsi_ccd
[100%] Building CXX object CMakeFiles/indi_qsi_ccd.dir/qsi_ccd.o
/home/pi/indi-qsi/qsi_ccd.cpp: In member function ‘virtual bool QSICCD::initProperties()’:
/home/pi/indi-qsi/qsi_ccd.cpp:203:51: error: ‘getInterfaceDescriptor’ was not declared in this scope
setInterfaceDescriptor(getInterfaceDescriptor() | FILTER_INTERFACE);
^
/home/pi/indi-qsi/qsi_ccd.cpp:203:71: error: ‘setInterfaceDescriptor’ was not declared in this scope
setInterfaceDescriptor(getInterfaceDescriptor() | FILTER_INTERFACE);
^
/home/pi/indi-qsi/qsi_ccd.cpp: In member function ‘virtual bool QSICCD::Connect()’:
/home/pi/indi-qsi/qsi_ccd.cpp:1041:27: error: expected ‘;’ before ‘cap’
CCDCapability cap;
^
/home/pi/indi-qsi/qsi_ccd.cpp:1043:13: error: ‘cap’ was not declared in this scope
cap.canAbort = canAbort;
^
CMakeFiles/indi_qsi_ccd.dir/build.make:54: recipe for target 'CMakeFiles/indi_qsi_ccd.dir/qsi_ccd.o' failed
make[2]: *** [CMakeFiles/indi_qsi_ccd.dir/qsi_ccd.o] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/indi_qsi_ccd.dir/all' failed
make[1]: *** [CMakeFiles/indi_qsi_ccd.dir/all] Error 2
Makefile:117: recipe for target 'all' failed
make: *** [all] Error 2
ii indi-asicam 0.4 armhf INDI Driver for ZWO Optics ASI cameras
ii indi-bin 1.1.0 armhf INDI server, drivers and tools
ii indi-qsi 0.4.1 armhf INDI QSI CCD Driver.
ii libindi-data 1.1.0 all Instrument-Neutral Device Interface library -- shared data
ii libindi-dev 1.1.0 armhf Instrument-Neutral Device Interface library -- development files
ii libindi1:armhf 1.1.0 armhf Instrument-Neutral Device Interface library -- shared library
ii libqsi-dev 7.2.0 armhf Quantum Scientific Imaging (QSI) development headers.
ii libqsi7 7.2.0 armhf Quantum Scientific Imaging (QSI) library.
--- indi-qsi/qsi_ccd.h 2015-12-22 16:48:36.794864050 +0000
+++ indi-qsi_backup/qsi_ccd.h 2015-12-22 16:34:11.860132294 +0000
@@ -67,10 +67,13 @@
ISwitch GainS[3];
ISwitchVectorProperty GainSP;
+ ISwitch ABS[2];
+ ISwitchVectorProperty ABSP;
+
ISwitch FanS[3];
ISwitchVectorProperty FanSP;
- bool canAbort, canSetGain, canControlFan, canChangeReadoutSpeed;
+ bool canAbort, canSetGain, canSetAB, canControlFan, canChangeReadoutSpeed;
short targetFilter;
double ccdTemp, targetTemperature;
double minDuration;
--- indi-qsi/qsi_ccd.cpp 2015-12-22 16:48:36.724864472 +0000
+++ indi-qsi_backup/qsi_ccd.cpp 2015-12-22 16:45:41.775920438 +0000
@@ -16,6 +16,7 @@
2015:
+ Added Fan speed option
+ Added Gain option
+ + Added AntiBlooming option
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -144,6 +145,7 @@
{
targetFilter = 0;
canSetGain = false;
+ canSetAB = false;
canControlFan = false;
canChangeReadoutSpeed = false;
@@ -191,6 +193,10 @@
IUFillSwitch(&GainS[2], "Auto", "", ISS_ON);
IUFillSwitchVector(&GainSP, GainS, 3, getDeviceName(), "Gain", "", OPTIONS_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE);
+ IUFillSwitch(&ABS[0], "Normal", "", ISS_ON);
+ IUFillSwitch(&ABS[1], "High", "", ISS_OFF);
+ IUFillSwitchVector(&ABSP, ABS, 2, getDeviceName(), "AntiBlooming", "", OPTIONS_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE);
+
IUFillSwitch(&FanS[0], "Off", "", ISS_OFF);
IUFillSwitch(&FanS[1], "Quiet", "", ISS_OFF);
IUFillSwitch(&FanS[2], "Full", "", ISS_ON);
@@ -235,7 +241,10 @@
if (canSetGain)
deleteProperty(GainSP.name);
-
+
+ if (canSetAB)
+ deleteProperty(ABSP.name);
+
if (canControlFan)
deleteProperty(FanSP.name);
@@ -375,10 +384,31 @@
}
}
+ QSICamera::AntiBloom cAB = QSICamera::AntiBloomNormal;
+ canSetAB = true;
+
+ try
+ {
+ QSICam.get_AntiBlooming(&cAB);
+ }
+ catch (std::runtime_error err)
+ {
+ DEBUGF(INDI::Logger::DBG_DEBUG, "Camera does not support AntiBlooming control. %s.", err.what());
+ canSetAB = false;
+ }
+
+ if (canSetAB)
+ {
+ IUResetSwitch(&ABSP);
+ ABS[cAB].s = ISS_ON;
+ defineSwitch(&ABSP);
+ }
+
QSICamera::FanMode fMode = QSICamera::fanOff;
canControlFan = true;
+
try
{
QSICam.get_FanMode(fMode);
@@ -575,6 +605,40 @@
return true;
}
+
+ if (!strcmp(name, ABSP.name))
+ {
+ int prevAB = IUFindOnSwitchIndex(&ABSP);
+ IUUpdateSwitch(&ABSP, states, names, n);
+ int targetAB = IUFindOnSwitchIndex(&ABSP);
+
+ if (prevAB == targetAB)
+ {
+ ABSP.s = IPS_OK;
+ IDSetSwitch(&ABSP, NULL);
+ return true;
+ }
+
+ try
+ {
+ QSICam.put_AntiBlooming( ((QSICamera::AntiBloom) targetAB));
+
+ } catch (std::runtime_error err)
+ {
+ IUResetSwitch(&ABSP);
+ ABS[prevAB].s = ISS_ON;
+ ABSP.s = IPS_ALERT;
+ DEBUGF(INDI::Logger::DBG_ERROR, "put_AntiBlooming failed. %s.", err.what());
+ IDSetSwitch(&ABSP, NULL);
+ return false;
+ }
+
+ ABSP.s = IPS_OK;
+ IDSetSwitch(&ABSP, NULL);
+ return true;
+ }
+
+
if (!strcmp(name, FanSP.name))
{
int prevFan = IUFindOnSwitchIndex(&FanSP);
@@ -1032,7 +1096,8 @@
try
{
QSICam.get_CanAbortExposure(&canAbort);
- } catch (std::runtime_error err)
+ }
+ catch (std::runtime_error err)
{
DEBUGF(INDI::Logger::DBG_ERROR, "get_CanAbortExposure() failed. %s.", err.what());
return false;
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.