1 & 2: I've had to manually toggle the tracking off then back on to get the mount to track after a slew. Otherwise the indi driver's state shows that it is tracking, but the mount actually isn't.
3: The code in Ekos seems to always check to see if the mount is tracking before sending a command to start tracking. It is always wrapped in an if statement like this one:
if (currentTelescope && currentTelescope->canControlTrack() && currentTelescope->isTracking() == false)
Since the driver thinks the mount is tracking, it doesn't send the command.
4: Not sure about what the indi specification says, but the driver code itself as currently written DOES assume the mount will start tracking, and sets its internal state to SCOPE_TRACKING.
case SCOPE_SLEWING:
// are we done?
bool slewing;
if (driver.is_slewing(&slewing) && !slewing)
{
LOG_INFO("Slew complete, tracking...");
TrackState = SCOPE_TRACKING;
5: This patch is only run when the scope is finishing a slew command, not a park command. Here's some more context around the patch:
switch (TrackState)
{
case SCOPE_SLEWING:
// are we done?
bool slewing;
if (driver.is_slewing(&slewing) && !slewing)
{
LOG_INFO("Slew complete, tracking...");
SetTrackEnabled(true);
// update ra offset
double raoffset = targetRA - currentRA + SlewOffsetRa;
if (raoffset > 0.0 || raoffset < 10.0 / 3600.0)
{
// average last two values
SlewOffsetRa = SlewOffsetRa > 0 ? (SlewOffsetRa + raoffset) / 2 : raoffset;
LOGF_DEBUG("raoffset %4.1f, SlewOffsetRa %4.1f arcsec", raoffset * 3600 * 15, SlewOffsetRa * 3600 * 15);
}
}
break;
case SCOPE_PARKING:
// are we done?
if (driver.is_slewing(&slewing) && !slewing)
{
if (driver.set_track_mode(CTM_OFF))
LOG_DEBUG("Mount tracking is off.");
SetParked(true);