diff --git a/kstars/ekos/capture/capture.cpp b/kstars/ekos/capture/capture.cpp index cb215e5cb1fb69d90b74ecce92344e03674a094c..91ca33d2f688ad9d795f4746e9ce4f0a99da8386 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 d2217393c1848da47c227a0d9994a6cb1719672f..80ba85a054027410392d0c93daa8576917ca0812 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 226f4b98b17a456b63f53d7c1a0411382f9315ad..7384634eed9e6f54e967435de2e054b0fad0a676 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();