Bi-monthly release with minor bug fixes and improvements
[ERROR] Telescope coordinates missing. Make sure telescope is connected and its name is set in CCD Options.
# Ensure the CCD simulator snoops the telescope simulator
# otherwise you may not have a picture of vega
ccd_active_devices=device_ccd.getText("ACTIVE_DEVICES")
while not(ccd_active_devices):
time.sleep(0.5)
ccd_active_devices=device_ccd.getText("ACTIVE_DEVICES")
ccd_active_devices[0].text="Telescope Simulator"
indiclient.sendNewText(ccd_active_devices)
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
2018-01-03T16:55:01: Client 0: read newNumberVector CCD Simulator EQUATORIAL_PE
RA_PE='12'
DEC_PE='45'
2018-01-03T16:55:01: Driver indi_simulator_ccd: queuing responsible for <newNumberVector device='CCD Simulator' name='EQUATORIAL_PE'>
2018-01-03T16:55:01: Driver indi_simulator_ccd: sending msg copy 1 nq 1:
<newNumberVector device="CCD Simulator" name="EQUATORIAL_PE">
<oneNumber name="RA_PE">
12
</oneNumber>
<oneNumber name="DEC_PE">
45
</oneNumber>
</newNumberVector>
2018-01-03T16:55:01: Driver indi_simulator_ccd: read setNumberVector CCD Simulator EQUATORIAL_PE Ok
RA_PE='12'
DEC_PE='45'
2018-01-03T16:55:01: Client 0: queuing <setNumberVector device='CCD Simulator' name='EQUATORIAL_PE'>
2018-01-03T16:55:01: Client 0: sending msg copy 1 nq 1:
<setNumberVector device="CCD Simulator" name="EQUATORIAL_PE" state="Ok" timeout="60" timestamp="2018-01-03T16:55:01">
<oneNumber name="RA_PE">
12
</oneNumber>
<oneNumber name="DEC_PE">
45
</oneNumber>
</setNumberVector>
2018-01-03T16:55:01: Client 0: read newNumberVector CCD Simulator CCD_EXPOSURE
CCD_EXPOSURE_VALUE='5'
2018-01-03T16:55:01: Driver indi_simulator_ccd: queuing responsible for <newNumberVector device='CCD Simulator' name='CCD_EXPOSURE'>
2018-01-03T16:55:01: Driver indi_simulator_ccd: sending msg copy 1 nq 1:
<newNumberVector device="CCD Simulator" name="CCD_EXPOSURE">
<oneNumber name="CCD_EXPOSURE_VALUE">
5
</oneNumber>
</newNumberVector>
2018-01-03T16:55:01: Driver indi_simulator_ccd: read message CCD Simulator '[ERROR] Telescope coordinates missing. Make sure telescope is connected and its name is set in CCD Options.'
Please Log in or Create an account to join the conversation.
libindi/libs/indibase/indiccd.cpp
I added a property to CCD Simulator "EQUATORIAL_PE" with members "RA_PE" and "DEC_PE". You can set those before you capture and you won't get this message
cat ./libindi/drivers/ccd/ccd_simulator.cpp | grep RA
but WITHOUT ANY WARRANTY; without even the implied warranty of
raPE = RA;
IUFillNumber(&SimulatorSettingsN[6], "SIM_SATURATION", "Saturation Mag", "%4.1f", 0, 20, 0, 1.0);
IUFillNumber(&EqPEN[0], "RA_PE", "RA (hh:mm:ss)", "%010.6m", 0, 24, 0, 0);
cap |= CCD_CAN_SUBFRAME;
if (std::isnan(RA) && std::isnan(Dec))
raPE = RA;
INDI::CCDChip::CCD_FRAME ftype = targetChip->getFrameType();
if (ftype == INDI::CCDChip::LIGHT_FRAME)
if (ftype == INDI::CCDChip::LIGHT_FRAME || ftype == INDI::CCDChip::FLAT_FRAME)
if (ftype == INDI::CCDChip::FLAT_FRAME)
epochPos.ra = EqPEN[AXIS_RA].value * 15.0;
if (!strcmp(elemName, "RA_PE"))
EqPEN[AXIS_RA].value = newra;
cat ./libindi/libs/indibase/indiccd.cpp | grep RA
but WITHOUT ANY WARRANTY; without even the implied warranty of
const char *RAPIDGUIDE_TAB = "Rapid Guide";
FrameType = LIGHT_FRAME;
void CCDChip::setFrameType(CCD_FRAME type)
ImageFrameN[FRAME_X].min = 0;
ImageFrameN[FRAME_X].max = x - 1;
ImageFrameN[FRAME_Y].min = 0;
ImageFrameN[FRAME_Y].max = y - 1;
ImageFrameN[FRAME_W].min = 1;
ImageFrameN[FRAME_W].max = x;
ImageFrameN[FRAME_H].max = 1;
ImageFrameN[FRAME_H].max = y;
ImageFrameN[FRAME_X].value = SubX;
ImageFrameN[FRAME_Y].value = SubY;
ImageFrameN[FRAME_W].value = SubW;
ImageFrameN[FRAME_H].value = SubH;
const char *CCDChip::getFrameTypeName(CCD_FRAME fType)
RA = std::numeric_limits<double>::quiet_NaN();
J2000RA = std::numeric_limits<double>::quiet_NaN();
IUFillNumber(&TemperatureN[0], "CCD_TEMPERATURE_VALUE", "Temperature (C)", "%5.2f", -50.0, 50.0, 0., 0.);
IUFillNumberVector(&TemperatureNP, TemperatureN, 1, getDeviceName(), "CCD_TEMPERATURE", "Temperature",
IUFillNumberVector(&PrimaryCCD.ImageFrameNP, PrimaryCCD.ImageFrameN, 4, getDeviceName(), "CCD_FRAME", "Frame",
IUFillSwitch(&PrimaryCCD.FrameTypeS[0], "FRAME_LIGHT", "Light", ISS_ON);
IUFillSwitch(&PrimaryCCD.FrameTypeS[1], "FRAME_BIAS", "Bias", ISS_OFF);
IUFillSwitch(&PrimaryCCD.FrameTypeS[2], "FRAME_DARK", "Dark", ISS_OFF);
IUFillSwitch(&PrimaryCCD.FrameTypeS[3], "FRAME_FLAT", "Flat", ISS_OFF);
IUFillSwitchVector(&PrimaryCCD.FrameTypeSP, PrimaryCCD.FrameTypeS, 4, getDeviceName(), "CCD_FRAME_TYPE",
IUFillSwitch(&PrimaryCCD.CompressS[1], "CCD_RAW", "Raw", ISS_ON);
IUFillSwitchVector(&PrimaryCCD.ResetSP, PrimaryCCD.ResetS, 1, getDeviceName(), "CCD_FRAME_RESET", "Frame Values",
IUFillSwitchVector(&PrimaryCCD.RapidGuideSP, PrimaryCCD.RapidGuideS, 2, getDeviceName(), "CCD_RAPID_GUIDE",
"CCD_RAPID_GUIDE_SETUP", "Rapid Guide Setup", RAPIDGUIDE_TAB, IP_RW, ISR_NOFMANY, 0, IPS_IDLE);
"CCD_RAPID_GUIDE_DATA", "Rapid Guide Data", RAPIDGUIDE_TAB, IP_RO, 60, IPS_IDLE);
IUFillNumberVector(&GuideCCD.ImageFrameNP, GuideCCD.ImageFrameN, 4, getDeviceName(), "GUIDER_FRAME", "Frame",
IUFillSwitch(&GuideCCD.FrameTypeS[0], "FRAME_LIGHT", "Light", ISS_ON);
IUFillSwitch(&GuideCCD.FrameTypeS[1], "FRAME_BIAS", "Bias", ISS_OFF);
IUFillSwitch(&GuideCCD.FrameTypeS[2], "FRAME_DARK", "Dark", ISS_OFF);
IUFillSwitch(&GuideCCD.FrameTypeS[3], "FRAME_FLAT", "Flat", ISS_OFF);
IUFillSwitchVector(&GuideCCD.FrameTypeSP, GuideCCD.FrameTypeS, 4, getDeviceName(), "GUIDER_FRAME_TYPE",
IUFillSwitch(&GuideCCD.CompressS[1], "GUIDER_RAW", "Raw", ISS_ON);
IUFillSwitchVector(&GuideCCD.RapidGuideSP, GuideCCD.RapidGuideS, 2, getDeviceName(), "GUIDER_RAPID_GUIDE",
"GUIDER_RAPID_GUIDE_SETUP", "Rapid Guide Setup", RAPIDGUIDE_TAB, IP_RW, ISR_NOFMANY, 0,
"GUIDER_RAPID_GUIDE_DATA", "Rapid Guide Data", RAPIDGUIDE_TAB, IP_RO, 60, IPS_IDLE);
// Snooped RA/DEC Property
IUFillNumber(&EqN[0], "RA", "Ra (hh:mm:ss)", "%010.6m", 0, 24, 0, 0);
IDSnoopDevice(ActiveDeviceT[SNOOP_MOUNT].text, "GEOGRAPHIC_COORD");
if ((newra != RA) || (newdec != Dec))
//IDLog("RA %4.2f Dec %4.2f Snooped RA %4.2f Dec %4.2f\n",RA,Dec,newra,newdec);
RA = newra;
else if (!strcmp(propName, "GEOGRAPHIC_COORD"))
IDSnoopDevice(ActiveDeviceT[SNOOP_MOUNT].text, "GEOGRAPHIC_COORD");
RA = std::numeric_limits<double>::quiet_NaN();
J2000RA = std::numeric_limits<double>::quiet_NaN();
if (PrimaryCCD.getFrameType() != CCDChip::BIAS_FRAME &&
if (PrimaryCCD.getFrameType() == CCDChip::BIAS_FRAME)
if (PrimaryCCD.getFrameType() == CCDChip::LIGHT_FRAME && !std::isnan(RA) && !std::isnan(Dec))
epochPos.ra = RA * 15.0;
J2000RA = J2000Pos.ra / 15.0;
if (GuideCCD.getFrameType() != CCDChip::BIAS_FRAME &&
if (GuideCCD.getFrameType() == CCDChip::BIAS_FRAME)
if (!strcmp(name, "CCD_FRAME"))
if (!strcmp(name, "GUIDER_FRAME"))
// CCD TEMPERATURE:
PrimaryCCD.setFrameType(CCDChip::LIGHT_FRAME);
PrimaryCCD.setFrameType(CCDChip::BIAS_FRAME);
PrimaryCCD.setFrameType(CCDChip::DARK_FRAME);
PrimaryCCD.setFrameType(CCDChip::FLAT_FRAME);
GuideCCD.setFrameType(CCDChip::LIGHT_FRAME);
GuideCCD.setFrameType(CCDChip::BIAS_FRAME);
GuideCCD.setFrameType(CCDChip::DARK_FRAME);
GuideCCD.setFrameType(CCDChip::FLAT_FRAME);
bool CCD::UpdateCCDFrameType(CCDChip::CCD_FRAME fType)
bool CCD::UpdateGuiderFrameType(CCDChip::CCD_FRAME fType)
case CCDChip::LIGHT_FRAME:
case CCDChip::BIAS_FRAME:
case CCDChip::FLAT_FRAME:
case CCDChip::DARK_FRAME:
if (targetChip->getFrameType() == CCDChip::DARK_FRAME)
fits_update_key_s(fptr, TSTRING, "FRAME", frame_s, "Frame Type", &status);
if (targetChip->getFrameType() == CCDChip::LIGHT_FRAME && !std::isnan(J2000RA) && !std::isnan(J2000DE))
fs_sexa(ra_str, J2000RA, 2, 360000);
fits_update_key_s(fptr, TSTRING, "OBJCTRA", ra_str, "Object RA", &status);
double J2000RAHours = J2000RA * 15;
fits_update_key_s(fptr, TDOUBLE, "CRVAL1", &J2000RAHours, "CRVAL1", &status);
char ctype1[16] = "RA---TAN";
fits_update_key_s(fptr, TSTRING, "RADECSYS", radecsys, "RADECSYS", &status);
if (targetChip->getFrameType() == CCDChip::LIGHT_FRAME && !std::isnan(RA) && !std::isnan(Dec))
epochPos.ra = RA * 15.0;
J2000RA = J2000Pos.ra / 15.0;
bool CCD::ISSnoopDevice(XMLEle *root)
{
XMLEle *ep = nullptr;
const char *propName = findXMLAttValu(root, "name");
if (IUSnoopNumber(root, &EqNP) == 0)
{
float newra, newdec;
newra = EqN[0].value;
newdec = EqN[1].value;
if ((newra != RA) || (newdec != Dec))
{
//IDLog("RA %4.2f Dec %4.2f Snooped RA %4.2f Dec %4.2f\n",RA,Dec,newra,newdec);
RA = newra;
Dec = newdec;
}
}
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.
./indiserver -vvv ./indi_simulator_ccd
Please Log in or Create an account to join the conversation.