diff --git a/kstars/ekos/capture/capture.cpp b/kstars/ekos/capture/capture.cpp --- a/kstars/ekos/capture/capture.cpp +++ b/kstars/ekos/capture/capture.cpp @@ -4805,8 +4805,11 @@ } } - // step 2: check if meridian flip is required - if (meridianFlipStage != MF_NONE || checkMeridianFlip()) + // step 2: check if meridian flip already is ongoing + if (meridianFlipStage != MF_NONE) + return IPS_BUSY; + // step 3: check if meridian flip is required + if (checkMeridianFlip()) return IPS_BUSY; calibrationStage = CAL_PRECAPTURE_COMPLETE; diff --git a/kstars/ekos/mount/mount.h b/kstars/ekos/mount/mount.h --- a/kstars/ekos/mount/mount.h +++ b/kstars/ekos/mount/mount.h @@ -116,7 +116,7 @@ /** @brief Like above but RA and DEC are strings HH:MM:SS and DD:MM:SS */ - Q_INVOKABLE bool slew(const QString &RA, const QString &DEC); + Q_INVOKABLE bool slew(const QString &RA, const QString &DEC); /** DBUS interface function. * Slew the mount to the target. Target name must be valid in KStars. @@ -345,7 +345,7 @@ signals: void newLog(const QString &text); void newCoords(const QString &ra, const QString &dec, const QString &az, const QString &alt); - void newTarget(const QString &name); + void newTarget(const QString &name); void newStatus(ISD::Telescope::Status status); void newParkStatus(ISD::ParkStatus status); void pierSideChanged(ISD::Telescope::PierSide side); diff --git a/kstars/ekos/mount/mount.cpp b/kstars/ekos/mount/mount.cpp --- a/kstars/ekos/mount/mount.cpp +++ b/kstars/ekos/mount/mount.cpp @@ -489,9 +489,14 @@ ISD::Telescope::Status currentStatus = currentTelescope->status(); if (m_Status != currentStatus) { - // If we just finished a slew, let's update initialHA - if (currentStatus == ISD::Telescope::MOUNT_TRACKING && m_Status == ISD::Telescope::MOUNT_SLEWING) - setInitialHA(ha.Hours()); + qCDebug(KSTARS_EKOS_MOUNT) << "Mount status changed from " << m_Status << " to " << currentStatus; + // If we just finished a slew, let's update initialHA and the current target's position + if (currentStatus == ISD::Telescope::MOUNT_TRACKING) + { + setInitialHA((sgn == '-' ? -1: 1) * ha.Hours()); + currentTargetPosition.setRA(telescopeCoord.ra()); + currentTargetPosition.setDec(telescopeCoord.dec()); + } m_Status = currentStatus; parkB->setEnabled(!currentTelescope->isParked()); @@ -817,13 +822,11 @@ if (currentTelescope == nullptr || currentTelescope->isConnected() == false) return false; - // JM 2019-01-05: This is not required since the mount module monitors the mount status - // and sets the initialHA accordingly. -// dms lst = KStarsData::Instance()->geo()->GSTtoLST(KStarsData::Instance()->clock()->utc().gst()); -// double HA = lst.Hours() - RA; -// if (HA > 12.0) -// HA -= 24.0; -// setInitialHA(HA); + dms lst = KStarsData::Instance()->geo()->GSTtoLST(KStarsData::Instance()->clock()->utc().gst()); + double HA = lst.Hours() - RA; + if (HA > 12.0) + HA -= 24.0; + setInitialHA(HA); currentTargetPosition.setRA(RA); currentTargetPosition.setDec(DEC); @@ -843,6 +846,9 @@ return false; // execute meridian flip + qCDebug(KSTARS_EKOS_MOUNT) << "Meridian flip: slewing to RA=" << + currentTargetPosition.ra().toHMSString() << + "DEC=" << currentTargetPosition.dec().toDMSString(); slew(currentTargetPosition.ra().Hours(), currentTargetPosition.dec().Degrees()); return true;