summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasem Mutlaq <mutlaqja@ikarustech.com>2016-09-18 10:50:13 (GMT)
committerJasem Mutlaq <mutlaqja@ikarustech.com>2016-09-18 10:50:13 (GMT)
commit67128cab72e3a1f60c38198bb38d85d6ad4268bc (patch)
treea76916e31e48df80081afa7c96a31aa370e0bf85
parent125d114ff35eeaca569f8f4b71bfc35422ef631e (diff)
All modules should use status to indicate what they are doing
-rw-r--r--kstars/ekos/align.cpp92
-rw-r--r--kstars/ekos/align.h24
-rw-r--r--kstars/ekos/align.ui14
-rw-r--r--kstars/ekos/capture.cpp35
-rw-r--r--kstars/ekos/capture.h14
-rw-r--r--kstars/ekos/ekos.cpp1
-rw-r--r--kstars/ekos/ekos.h6
-rw-r--r--kstars/ekos/ekosmanager.cpp12
-rw-r--r--kstars/ekos/ekosmanager.h2
-rw-r--r--kstars/ekos/focus.h2
-rw-r--r--kstars/org.kde.kstars.Ekos.Align.xml7
-rw-r--r--kstars/skymapdrawabstract.cpp3
12 files changed, 143 insertions, 69 deletions
diff --git a/kstars/ekos/align.cpp b/kstars/ekos/align.cpp
index 0dd69e3..46463b3 100644
--- a/kstars/ekos/align.cpp
+++ b/kstars/ekos/align.cpp
@@ -58,6 +58,9 @@ Align::Align()
dirPath = QDir::homePath();
+ state = ALIGN_IDLE;
+ focusState = FOCUS_IDLE;
+
currentCCD = NULL;
currentTelescope = NULL;
currentFilter = NULL;
@@ -65,11 +68,11 @@ Align::Align()
canSync = false;
loadSlewMode = false;
loadSlewState=IPS_IDLE;
- m_isSolverComplete = false;
- m_isSolverSuccessful = false;
+ //m_isSolverComplete = false;
+ //m_isSolverSuccessful = false;
m_slewToTargetSelected=false;
m_wcsSynced=false;
- isFocusBusy=false;
+ //isFocusBusy=false;
ccd_hor_pixel = ccd_ver_pixel = focal_length = aperture = sOrientation = sRA = sDEC = -1;
decDeviation = azDeviation = altDeviation = 0;
@@ -106,13 +109,10 @@ Align::Align()
connect(correctAzB, SIGNAL(clicked()), this, SLOT(correctAzError()));
connect(loadSlewB, SIGNAL(clicked()), this, SLOT(loadAndSlew()));
- unsigned int solverGotoOption = Options::solverGotoOption();
- if (solverGotoOption == 0)
- syncR->setChecked(true);
- else if (solverGotoOption == 1)
- slewR->setChecked(true);
- else
- nothingR->setChecked(true);
+ connect(gotoModeButtonGroup, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, [=](int id){ this->currentGotoMode = static_cast<GotoMode>(id); });
+
+ currentGotoMode = static_cast<GotoMode>(Options::solverGotoOption());
+ gotoModeButtonGroup->button(currentGotoMode)->setChecked(true);
syncBoxesB->setIcon(QIcon::fromTheme("edit-copy"));
clearBoxesB->setIcon(QIcon::fromTheme("edit-clear"));
@@ -560,7 +560,7 @@ void Align::clearCoordBoxes()
bool Align::captureAndSolve()
{
- m_isSolverComplete = false;
+ //m_isSolverComplete = false;
if (currentCCD == NULL)
return false;
@@ -595,7 +595,7 @@ bool Align::captureAndSolve()
ISD::CCDChip *targetChip = currentCCD->getChip(useGuideHead ? ISD::CCDChip::GUIDE_CCD : ISD::CCDChip::PRIMARY_CCD);
- if (isFocusBusy)
+ if (focusState >= FOCUS_PROGRESS)
{
appendLogText(i18n("Cannot capture while focus module is busy! Retrying..."));
QTimer::singleShot(1000, this, SLOT(captureAndSolve()));
@@ -653,6 +653,9 @@ bool Align::captureAndSolve()
stopB->setEnabled(true);
pi->startAnimation();
+ state = ALIGN_PROGRESS;
+ emit newStatus(state);
+
appendLogText(i18n("Capturing image..."));
return true;
@@ -763,8 +766,8 @@ void Align::startSolving(const QString &filename, bool isGenerated)
solverGotoOption = 2;
Options::setSolverGotoOption(solverGotoOption);
- m_isSolverComplete = false;
- m_isSolverSuccessful = false;
+ //m_isSolverComplete = false;
+ //m_isSolverSuccessful = false;
parser->verifyIndexFiles(fov_x, fov_y);
@@ -783,7 +786,10 @@ void Align::startSolving(const QString &filename, bool isGenerated)
if (slewR->isChecked())
appendLogText(i18n("Solver iteration #%1", solverIterations+1));
- parser->startSovler(filename, solverArgs, isGenerated);
+ state = ALIGN_PROGRESS;
+ emit newStatus(state);
+
+ parser->startSovler(filename, solverArgs, isGenerated);
}
@@ -822,8 +828,11 @@ void Align::solverFinished(double orientation, double ra, double dec, double pix
// Get horizontal coords
alignCoord.EquatorialToHorizontal(KStarsData::Instance()->lst(), KStarsData::Instance()->geo()->lat());
- double raDiff = fabs(alignCoord.ra().Degrees()-targetCoord.ra().Degrees()) * 3600;
- double deDiff = fabs(alignCoord.dec().Degrees()-targetCoord.dec().Degrees()) * 3600;
+ double raDiff = (alignCoord.ra().Degrees()-targetCoord.ra().Degrees()) * 3600;
+ double deDiff = (alignCoord.dec().Degrees()-targetCoord.dec().Degrees()) * 3600;
+
+ emit newSolutionDeviation(raDiff, deDiff);
+
targetDiff = sqrt(raDiff*raDiff + deDiff*deDiff);
solverFOV->setCenter(alignCoord);
@@ -861,9 +870,7 @@ void Align::solverFinished(double orientation, double ra, double dec, double pix
}
}
}
- }
-
- KNotification::event( QLatin1String( "AlignSuccessful"), i18n("Astrometry alignment completed successfully") );
+ }
retries=0;
@@ -874,16 +881,24 @@ void Align::solverFinished(double orientation, double ra, double dec, double pix
appendLogText(i18n("Target is within %1 degrees of solution coordinates.", diffDeg.toDMSString()));
}
+ if (rememberUploadMode != currentCCD->getUploadMode())
+ currentCCD->setUploadMode(rememberUploadMode);
+
+ //if (syncR->isChecked() || nothingR->isChecked() || targetDiff <= accuracySpin->value())
+ // CONTINUE HERE
if (syncR->isChecked() || nothingR->isChecked() || targetDiff <= accuracySpin->value())
{
- m_isSolverComplete = true;
- m_isSolverSuccessful = true;
+ // FIXME remove un-needed stuff here
+ //m_isSolverComplete = true;
+ //m_isSolverSuccessful = true;
solverIterations=0;
- emit solverComplete(true);
- }
+ //emit solverComplete(true);
- if (rememberUploadMode != currentCCD->getUploadMode())
- currentCCD->setUploadMode(rememberUploadMode);
+ KNotification::event( QLatin1String( "AlignSuccessful"), i18n("Astrometry alignment completed successfully") );
+
+ state = ALIGN_COMPLETE;
+ emit newStatus(state);
+ }
executeMode();
}
@@ -901,13 +916,16 @@ void Align::solverFailed()
loadSlewMode = false;
loadSlewState=IPS_ALERT;
- m_isSolverComplete = true;
- m_isSolverSuccessful = false;
+ //m_isSolverComplete = true;
+ //m_isSolverSuccessful = false;
m_slewToTargetSelected=false;
solverIterations=0;
retries=0;
- emit solverComplete(false);
+ //emit solverComplete(false);
+
+ state = ALIGN_FAILED;
+ emit newStatus(state);
}
void Align::abort()
@@ -922,11 +940,11 @@ void Align::abort()
loadSlewMode = false;
loadSlewState=IPS_IDLE;
- m_isSolverComplete = false;
- m_isSolverSuccessful = false;
+ //m_isSolverComplete = false;
+ //m_isSolverSuccessful = false;
m_slewToTargetSelected=false;
solverIterations=0;
- retries=0;
+ retries=0;
//currentCCD->disconnect(this);
disconnect(currentCCD, SIGNAL(BLOBUpdated(IBLOB*)), this, SLOT(newFITS(IBLOB*)));
@@ -948,6 +966,9 @@ void Align::abort()
int elapsed = (int) round(solverTimer.elapsed()/1000.0);
appendLogText(i18np("Solver aborted after %1 second.", "Solver aborted after %1 seconds", elapsed));
}
+
+ state = ALIGN_ABORTED;
+ emit newStatus(state);
}
QList<double> Align::getSolutionResult()
@@ -1140,6 +1161,9 @@ void Align::SlewToTarget()
currentTelescope->Slew(&targetCoord);
appendLogText(i18n("Slewing to target coordinates: RA (%1) DEC (%2).", targetCoord.ra().toHMSString(), targetCoord.dec().toDMSString()));
+
+ state = ALIGN_SLEWING;
+ emit newStatus(state);
}
void Align::checkPolarAlignment()
@@ -1770,9 +1794,9 @@ void Align::checkCCDExposureProgress(ISD::CCDChip *targetChip, double remaining,
}
}
-void Align::updateFocusStatus(Ekos::FocusState state)
+void Align::setFocusStatus(Ekos::FocusState state)
{
- isFocusBusy = state >= Ekos::FOCUS_PROGRESS;
+ focusState = state;
}
QStringList Align::getSolverOptionsFromFITS(const QString &filename)
diff --git a/kstars/ekos/align.h b/kstars/ekos/align.h
index 5b77889..609136b 100644
--- a/kstars/ekos/align.h
+++ b/kstars/ekos/align.h
@@ -91,6 +91,13 @@ public:
Q_SCRIPTABLE QList<double> getSolutionResult();
/** DBUS interface function.
+ * Returns the solver's current status
+ * @return Returns solver status (Ekos::AlignState)
+ */
+ Q_SCRIPTABLE int getStatus() { return state; }
+
+#if 0
+ /** DBUS interface function.
* @return Returns true if the solver process completed or aborted, false otherwise.
*/
Q_SCRIPTABLE bool isSolverComplete() { return m_isSolverComplete; }
@@ -99,6 +106,7 @@ public:
* @return Returns true if the solver process completed successfully, false otherwise.
*/
Q_SCRIPTABLE bool isSolverSuccessful() { return m_isSolverSuccessful; }
+#endif
/** DBUS interface function.
* @return Returns State of load slew procedure. Idle if not started. Busy if in progress. Ok if complete. Alert if procedure failed.
@@ -261,7 +269,7 @@ public slots:
void setLockedFilter(ISD::GDInterface *filter, int lockedPosition);
- void updateFocusStatus(Ekos::FocusState state);
+ void setFocusStatus(Ekos::FocusState state);
// Log
void appendLogText(const QString &);
@@ -292,6 +300,8 @@ signals:
void newLog();
void solverComplete(bool);
void solverSlewComplete();
+ void newStatus(Ekos::AlignState state);
+ void newSolutionDeviation(double ra_arcsecs, double de_arcsecs);
private:
/**
@@ -364,12 +374,12 @@ private:
uint8_t solverIterations;
// Keep track of solver status
- bool m_isSolverComplete;
- bool m_isSolverSuccessful;
+ //bool m_isSolverComplete;
+ //bool m_isSolverSuccessful;
bool m_slewToTargetSelected;
// Focus
- bool isFocusBusy;
+ //bool isFocusBusy;
// FOV
double ccd_hor_pixel, ccd_ver_pixel, focal_length, aperture, fov_x, fov_y;
@@ -433,9 +443,15 @@ private:
// Capture retries
int retries;
+ // State
+ AlignState state;
+ FocusState focusState;
+
// Track which upload mode the CCD is set to. If set to UPLOAD_LOCAL, then we need to switch it to UPLOAD_CLIENT in order to do focusing, and then switch it back to UPLOAD_LOCAL
ISD::CCD::UploadMode rememberUploadMode;
+ GotoMode currentGotoMode;
+
QString dirPath;
};
diff --git a/kstars/ekos/align.ui b/kstars/ekos/align.ui
index 94c5aec..0d2a690 100644
--- a/kstars/ekos/align.ui
+++ b/kstars/ekos/align.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>765</width>
- <height>330</height>
+ <width>771</width>
+ <height>351</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
@@ -147,6 +147,9 @@
<property name="checked">
<bool>true</bool>
</property>
+ <attribute name="buttonGroup">
+ <string notr="true">gotoModeButtonGroup</string>
+ </attribute>
</widget>
</item>
<item>
@@ -160,6 +163,9 @@
<property name="text">
<string>S&amp;lew to Target</string>
</property>
+ <attribute name="buttonGroup">
+ <string notr="true">gotoModeButtonGroup</string>
+ </attribute>
</widget>
</item>
<item>
@@ -173,6 +179,9 @@
<property name="text">
<string>&amp;Nothing</string>
</property>
+ <attribute name="buttonGroup">
+ <string notr="true">gotoModeButtonGroup</string>
+ </attribute>
</widget>
</item>
</layout>
@@ -884,5 +893,6 @@
<connections/>
<buttongroups>
<buttongroup name="solverTypeGroup"/>
+ <buttongroup name="gotoModeButtonGroup"/>
</buttongroups>
</ui>
diff --git a/kstars/ekos/capture.cpp b/kstars/ekos/capture.cpp
index c4a18a8..6383593 100644
--- a/kstars/ekos/capture.cpp
+++ b/kstars/ekos/capture.cpp
@@ -60,6 +60,9 @@ Capture::Capture()
dirPath = QUrl(QDir::homePath());
state = CAPTURE_IDLE;
+ focusState = FOCUS_IDLE;
+ guideState = GUIDE_IDLE;
+ alignState = ALIGN_IDLE;
currentCCD = NULL;
currentTelescope = NULL;
@@ -175,8 +178,7 @@ Capture::Capture()
fileHFR=0;
useGuideHead = false;
guideDither = false;
- firstAutoFocus = true;
- isFocusBusy = false;
+ firstAutoFocus = true;
foreach(QString filter, FITSViewer::filterTypes)
filterCombo->addItem(filter);
@@ -1151,7 +1153,7 @@ void Capture::captureImage()
//bool isDark=false;
SequenceJob::CAPTUREResult rc=SequenceJob::CAPTURE_OK;
- if (isFocusBusy)
+ if (focusState >= FOCUS_PROGRESS)
{
appendLogText(i18n("Cannot capture while focus module is busy."));
abort();
@@ -1979,16 +1981,27 @@ void Capture::setAutoguiding(bool enable)
isAutoGuiding = enable;
}
-void Capture::updateFocusStatus(FocusState state)
+void Capture::setGuideStatus(GuideState state)
{
- isFocusBusy = state >= Ekos::FOCUS_PROGRESS;
+ guideState = state;
+}
+
+void Capture::setAlignStatus(AlignState state)
+{
+ alignState = state;
+}
+
+void Capture::setFocusStatus(FocusState state)
+{
+ focusState = state;
}
void Capture::updateAutofocusStatus(bool status, double HFR)
{
- autoFocusStatus = status;
+ if (focusState > FOCUS_ABORTED)
+ return;
- if (status)
+ if (focusState == FOCUS_COMPLETE)
{
autofocusCheck->setEnabled(true);
HFRPixels->setEnabled(true);
@@ -2003,7 +2016,7 @@ void Capture::updateAutofocusStatus(bool status, double HFR)
if (activeJob && (activeJob->getStatus() == SequenceJob::JOB_ABORTED || activeJob->getStatus() == SequenceJob::JOB_IDLE))
{
- if (status)
+ if (focusState == FOCUS_COMPLETE)
{
HFRPixels->setValue(HFR + (HFR * 0.025));
appendLogText(i18n("Focus complete."));
@@ -2021,7 +2034,7 @@ void Capture::updateAutofocusStatus(bool status, double HFR)
if (isAutoFocus && activeJob && activeJob->getStatus() == SequenceJob::JOB_BUSY)
{
- if (status)
+ if (focusState == FOCUS_COMPLETE)
{
appendLogText(i18n("Focus complete."));
startNextExposure();
@@ -3760,11 +3773,9 @@ void Capture::setNewRemoteFile(QString file)
void Capture::startPostFilterAutoFocus()
{
- if (isFocusBusy)
+ if (focusState >= FOCUS_PROGRESS)
return;
- isFocusBusy = true;
-
secondsLabel->setText(i18n("Focusing..."));
state = CAPTURE_FOCUSING;
diff --git a/kstars/ekos/capture.h b/kstars/ekos/capture.h
index 2923471..ef62ba6 100644
--- a/kstars/ekos/capture.h
+++ b/kstars/ekos/capture.h
@@ -399,6 +399,13 @@ public slots:
// Logs
void appendLogText(const QString &);
+ // Auto Focus
+ void setFocusStatus(Ekos::FocusState state);
+ // Guide
+ void setGuideStatus(Ekos::GuideState state);
+ // Align
+ void setAlignStatus(Ekos::AlignState state);
+
private slots:
/**
@@ -434,8 +441,7 @@ private slots:
void checkAlignmentSlewComplete();
void enableAlignmentFlag();
- // Auto Focus
- void updateFocusStatus(Ekos::FocusState state);
+ // Auto Focus
void updateAutofocusStatus(bool status, double HFR);
void startPostFilterAutoFocus();
@@ -546,7 +552,6 @@ private:
bool isAutoFocus;
bool autoFocusStatus;
bool firstAutoFocus;
- bool isFocusBusy;
//Meridan flip
double initialHA;
@@ -578,6 +583,9 @@ private:
// State
CaptureState state;
+ FocusState focusState;
+ GuideState guideState;
+ AlignState alignState;
PauseFunctionPointer pauseFunction;
diff --git a/kstars/ekos/ekos.cpp b/kstars/ekos/ekos.cpp
index b63a741..f8a5df2 100644
--- a/kstars/ekos/ekos.cpp
+++ b/kstars/ekos/ekos.cpp
@@ -5,4 +5,5 @@ namespace Ekos
const QString & getGuideStatusString(GuideState state) { return guideStates[state]; }
const QString & getCaptureStatusString(CaptureState state) { return captureStates[state]; }
const QString & getFocusStatusString(FocusState state) { return focusStates[state]; }
+ const QString & getAlignStatusString(AlignState state) { return alignStates[state]; }
}
diff --git a/kstars/ekos/ekos.h b/kstars/ekos/ekos.h
index 1a4e4b7..2b4ccf6 100644
--- a/kstars/ekos/ekos.h
+++ b/kstars/ekos/ekos.h
@@ -34,6 +34,12 @@ namespace Ekos
const QString &getFocusStatusString(FocusState state);
+ // Align States
+ static const QStringList alignStates = { I18N_NOOP("Idle"), I18N_NOOP("Complete"), I18N_NOOP("Failed"), I18N_NOOP("Aborted"), I18N_NOOP("In Progress"), I18N_NOOP("Slewing")};
+
+ typedef enum { ALIGN_IDLE, ALIGN_COMPLETE, ALIGN_FAILED, ALIGN_ABORTED, ALIGN_PROGRESS, ALIGN_SLEWING} AlignState;
+
+ const QString &getAlignStatusString(AlignState state);
}
#endif // EKOS_H
diff --git a/kstars/ekos/ekosmanager.cpp b/kstars/ekos/ekosmanager.cpp
index 0ad41f0..5b47285 100644
--- a/kstars/ekos/ekosmanager.cpp
+++ b/kstars/ekos/ekosmanager.cpp
@@ -1354,7 +1354,7 @@ void EkosManager::initCapture()
// Autofocus
connect(captureProcess, SIGNAL(checkFocus(double)), focusProcess, SLOT(checkFocus(double)), Qt::UniqueConnection);
connect(focusProcess, SIGNAL(autoFocusFinished(bool, double)), captureProcess, SLOT(updateAutofocusStatus(bool, double)), Qt::UniqueConnection);
- connect(focusProcess, SIGNAL(newStatus(Ekos::FocusState)), captureProcess, SLOT(updateFocusStatus(Ekos::FocusState)), Qt::UniqueConnection);
+ connect(focusProcess, SIGNAL(newStatus(Ekos::FocusState)), captureProcess, SLOT(setFocusStatus(Ekos::FocusState)), Qt::UniqueConnection);
// Meridian Flip
connect(captureProcess, SIGNAL(meridianFlipStarted()), focusProcess, SLOT(resetFrame()), Qt::UniqueConnection);
@@ -1408,7 +1408,7 @@ void EkosManager::initAlign()
{
// Filter lock
connect(focusProcess, SIGNAL(filterLockUpdated(ISD::GDInterface*,int)), alignProcess, SLOT(setLockedFilter(ISD::GDInterface*,int)), Qt::UniqueConnection);
- connect(focusProcess, SIGNAL(newStatus(Ekos::FocusState)) , alignProcess, SLOT(updateFocusStatus(Ekos::FocusState)), Qt::UniqueConnection);
+ connect(focusProcess, SIGNAL(newStatus(Ekos::FocusState)) , alignProcess, SLOT(setFocusStatus(Ekos::FocusState)), Qt::UniqueConnection);
}
}
@@ -1422,7 +1422,7 @@ void EkosManager::initFocus()
int index = toolsWidget->addTab( focusProcess, QIcon(":/icons/ekos_focus.png"), "");
toolsWidget->tabBar()->setTabToolTip(index, i18n("Focus"));
connect(focusProcess, SIGNAL(newLog()), this, SLOT(updateLog()));
- connect(focusProcess, SIGNAL(newStatus(Ekos::FocusState)), this, SLOT(updateFocusStatus(Ekos::FocusState)));
+ connect(focusProcess, SIGNAL(newStatus(Ekos::FocusState)), this, SLOT(setFocusStatus(Ekos::FocusState)));
connect(focusProcess, SIGNAL(newStarPixmap(QPixmap&)), this, SLOT(updateFocusStarPixmap(QPixmap&)));
connect(focusProcess, SIGNAL(newProfilePixmap(QPixmap&)), this, SLOT(updateFocusProfilePixmap(QPixmap&)));
@@ -1436,7 +1436,7 @@ void EkosManager::initFocus()
// Autofocus
connect(captureProcess, SIGNAL(checkFocus(double)), focusProcess, SLOT(checkFocus(double)), Qt::UniqueConnection);
connect(focusProcess, SIGNAL(autoFocusFinished(bool, double)), captureProcess, SLOT(updateAutofocusStatus(bool, double)), Qt::UniqueConnection);
- connect(focusProcess, SIGNAL(newStatus(Ekos::FocusState)), captureProcess, SLOT(updateFocusStatus(Ekos::FocusState)), Qt::UniqueConnection);
+ connect(focusProcess, SIGNAL(newStatus(Ekos::FocusState)), captureProcess, SLOT(setFocusStatus(Ekos::FocusState)), Qt::UniqueConnection);
// Meridian Flip
connect(captureProcess, SIGNAL(meridianFlipStarted()), focusProcess, SLOT(resetFrame()), Qt::UniqueConnection);
@@ -1452,7 +1452,7 @@ void EkosManager::initFocus()
{
// Filter lock
connect(focusProcess, SIGNAL(filterLockUpdated(ISD::GDInterface*,int)), alignProcess, SLOT(setLockedFilter(ISD::GDInterface*,int)), Qt::UniqueConnection);
- connect(focusProcess, SIGNAL(newStatus(Ekos::FocusState)), alignProcess, SLOT(updateFocusStatus(FocusState)), Qt::UniqueConnection);
+ connect(focusProcess, SIGNAL(newStatus(Ekos::FocusState)), alignProcess, SLOT(setFocusStatus(FocusState)), Qt::UniqueConnection);
}
}
@@ -1895,7 +1895,7 @@ void EkosManager::updateFocusProfilePixmap(QPixmap &profilePixmap)
focusProfileImage->setToolTip(QString("<img src='%1'>").arg(focusProfileFile.fileName()));
}
-void EkosManager::updateFocusStatus(Ekos::FocusState status)
+void EkosManager::setFocusStatus(Ekos::FocusState status)
{
focusStatus->setText(Ekos::getFocusStatusString(status));
diff --git a/kstars/ekos/ekosmanager.h b/kstars/ekos/ekosmanager.h
index d5bdbcc..a0ad660 100644
--- a/kstars/ekos/ekosmanager.h
+++ b/kstars/ekos/ekosmanager.h
@@ -194,7 +194,7 @@ private slots:
void updateCaptureCountDown();
// Focus summary
- void updateFocusStatus(Ekos::FocusState status);
+ void setFocusStatus(Ekos::FocusState status);
void updateFocusStarPixmap(QPixmap &starPixmap);
void updateFocusProfilePixmap(QPixmap &profilePixmap);
diff --git a/kstars/ekos/focus.h b/kstars/ekos/focus.h
index 93b90fc..7864861 100644
--- a/kstars/ekos/focus.h
+++ b/kstars/ekos/focus.h
@@ -272,7 +272,7 @@ public slots:
void checkFocus(double requiredHFR);
/**
- * @brief updateFocusStatus Upon completion of the focusing process, set its status (fail or pass) and reset focus process to clean state.
+ * @brief setFocusStatus Upon completion of the focusing process, set its status (fail or pass) and reset focus process to clean state.
* @param status If true, the focus process finished successfully. Otherwise, it failed.
*/
void setAutoFocusResult(bool status);
diff --git a/kstars/org.kde.kstars.Ekos.Align.xml b/kstars/org.kde.kstars.Ekos.Align.xml
index 0d6ac3c..b9367f9 100644
--- a/kstars/org.kde.kstars.Ekos.Align.xml
+++ b/kstars/org.kde.kstars.Ekos.Align.xml
@@ -32,11 +32,8 @@
<arg type="ad" direction="out"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QList&lt;double&gt;"/>
</method>
- <method name="isSolverComplete">
- <arg type="b" direction="out"/>
- </method>
- <method name="isSolverSuccessful">
- <arg type="b" direction="out"/>
+ <method name="getStatus">
+ <arg type="i" direction="out"/>
</method>
<method name="getLoadAndSlewStatus">
<arg type="i" direction="out"/>
diff --git a/kstars/skymapdrawabstract.cpp b/kstars/skymapdrawabstract.cpp
index 5d7637d..fb04db3 100644
--- a/kstars/skymapdrawabstract.cpp
+++ b/kstars/skymapdrawabstract.cpp
@@ -187,7 +187,8 @@ void SkyMapDrawAbstract::drawSolverFOV(QPainter &psky)
#ifdef HAVE_INDI
Ekos::Align *align = KStars::Instance()->ekosManager()->alignModule();
- if (align && align->isSolverComplete())
+ //if (align && align->isSolverComplete())
+ if (align && align->getStatus() == Ekos::ALIGN_COMPLETE)
{
bool isVisible = false;
FOV * fov = align->fov();