From 77c45c5709ad2a42b4802cb982a01ac1bdaa064e Mon Sep 17 00:00:00 2001 From: Jasem Mutlaq Date: Sat, 4 Feb 2017 12:36:31 +0300 Subject: [PATCH] Get pixel size info from CCD chip. Add warnings for DSLRs in case CCD info is incomplete --- kstars/ekos/capture/capture.cpp | 9 ++++++++- kstars/indi/indiccd.cpp | 31 +++++++++++++++++++++++++++++++ kstars/indi/indiccd.h | 4 ++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/kstars/ekos/capture/capture.cpp b/kstars/ekos/capture/capture.cpp index cb215e5cb..91ca33d2f 100644 --- a/kstars/ekos/capture/capture.cpp +++ b/kstars/ekos/capture/capture.cpp @@ -612,6 +612,13 @@ void Capture::checkCCD(int ccdNum) appendLogText(i18n("Using FITS transfer format from DSLR camera. Configure DSLR transfer format in options.")); else appendLogText(i18n("Using native transfer format from DSLR camera. Configure DSLR transfer format in options.")); + + double pixelX=0, pixelY=0; + bool rc = targetChip->getPixelSize(pixelX, pixelY); + if (rc == false || pixelX == 0 || pixelY == 0) + { + appendLogText(i18n("DSLR CCD Information is incomplete. Please update CCD Information in Image Info section in the INDI Control Panel.")); + } } liveVideoB->setEnabled(currentCCD->hasVideoStream()); @@ -1480,7 +1487,7 @@ void Capture::setExposureProgress(ISD::CCDChip * tChip, double value, IPState st activeJob->setCaptureRetires(retries); - appendLogText(i18n("Capture failed.")); + appendLogText(i18n("Capture failed. Check INDI Control Panel for details.")); if (retries == 3) { diff --git a/kstars/indi/indiccd.cpp b/kstars/indi/indiccd.cpp index d2217393c..80ba85a05 100644 --- a/kstars/indi/indiccd.cpp +++ b/kstars/indi/indiccd.cpp @@ -187,6 +187,37 @@ bool CCDChip::getFrameMinMax(int *minX, int *maxX, int *minY, int *maxY, int *mi } +bool CCDChip::getPixelSize(double & x, double & y) +{ + INumberVectorProperty *ccdInfoProp = NULL; + + switch (type) + { + case PRIMARY_CCD: + ccdInfoProp = baseDevice->getNumber("CCD_INFO"); + break; + + case GUIDE_CCD: + ccdInfoProp = baseDevice->getNumber("GUIDER_INFO"); + break; + + } + + if (ccdInfoProp == NULL) + return false; + + INumber *pixelX = IUFindNumber(ccdInfoProp, "CCD_PIXEL_SIZE_X"); + INumber *pixelY = IUFindNumber(ccdInfoProp, "CCD_PIXEL_SIZE_Y"); + + if (pixelX == NULL || pixelY == NULL) + return false; + + x = pixelX->value; + y = pixelY->value; + + return true; +} + bool CCDChip::getFrame(int *x, int *y, int *w, int *h) { diff --git a/kstars/indi/indiccd.h b/kstars/indi/indiccd.h index 226f4b98b..7384634ee 100644 --- a/kstars/indi/indiccd.h +++ b/kstars/indi/indiccd.h @@ -57,6 +57,10 @@ public: bool getFrame(int *x, int *y, int *w, int *h); bool getFrameMinMax(int *minX, int *maxX, int *minY, int *maxY, int *minW, int *maxW, int *minH, int *maxH); bool setFrame(int x, int y, int w, int h); + + // Pixel size + bool getPixelSize(double &x, double &y); + //bool getFocusFrame(int *x, int *y, int *w, int *h); //bool setFocusFrame(int x, int y, int w, int h); bool resetFrame(); -- GitLab