@Chris,
II experiences this timeout too as well as Ekos believing flip is foinished right before slewing ended.
This is the consequence of unsynchronized process running in Ekos on one side and OnStep on the other side.
Since there is no command to initiate a flip and not command to check is if is in progress Ekos relies on coordinates, which is the reason of Ekos thinking it is done and OnStep still slewing.
I have to check how Ekos really does the thing and if the timeout could solve this synchonization issue.
This means diving into Ekos code, a new challenge
here the code where Ekos checks if flipping, now I understand why we are still sleawing when Ekos consideres flip is done
====================================
case MF_FLIPPING:
{
double ra, dec;
currentTelescope->getEqCoords(&ra, &dec);
double diffRA = getInitialMountCoords().ra().Hours() - ra;
// If the mount is actually flipping then we should see a difference in RA
// which if it exceeded MF_RA_DIFF_LIMIT (4 hours) then we consider it to be
// undertaking the flip. Otherwise, it's not flipping and let timeout takes care of
// of that
// Are there any mounts that do NOT change RA while flipping? i.e. do it silently?
// Need to investigate that bit
if (fabs(diffRA) > MF_RA_DIFF_LIMIT /* || nvp->s == IPS_OK*/)
meridianFlipStage = MF_SLEWING;
}
========================================
and here where timeout is defined (unfortunately #DEFINED, no way to set it currently
========================================
#define MF_TIMER_TIMEOUT 90000
#define GD_TIMER_TIMEOUT 60000
#define MF_RA_DIFF_LIMIT 4
========================================
and the code to check timeout, at least there are three retries at 90s before giving-up, leaves 270 seconds to do the flip
========================================
void Capture::checkMeridianFlipTimeout()
{
if (meridianFlipStage == MF_NONE)
return;
if (meridianFlipStage < MF_ALIGNING)
{
appendLogText(i18n("Telescope meridian flip timed out. Please make sure your mount supports meridian flip."));
if (++retries == 3)
{
//KNotification::event(QLatin1String("MeridianFlipFailed"), i18n("Meridian flip failed"));
KSNotification::event(QLatin1String("MeridianFlipFailed"), i18n("Meridian flip failed"), KSNotification::EVENT_ALERT);
abort();
}
else
{
if (executeMeridianFlip())
appendLogText(i18n("Retrying meridian flip again..."));
}
}
}
=================================