- Consider a mount that cannot park is always unparked. This fixes the state of the mount as seen by the Scheduler when the mount cannot park.
- Ensure getting parking state returns a valid state, even if last action was failed. This fixes an issue arising when parking operation is aborted, that caused the Mount interface to always return PARKING_ERROR.
- Make the Scheduler use isMountParked when starting in case the state machine is not up-to-date. This fixes the issue where the Scheduler is started with a mount parking state that was manipulated from the INDI panel in-between.
- Fix remaining issues in transitions of the parking engine states. This fixes incorrect transitions in the state machine, unrelated to the actual state they were attempted in.
The next changes prepare the rework of the D-Bus connection of the Scheduler towards an event-driven implementation.
These improve Scheduler robustness by managing device events that are not reflected in the state machine.
They consolidate on the parking state changes, and are pushed now because they fix remaining issues with job startup.
- Refactor INDI connection status test, to avoid depending on the machine state.
- Move unpark check down to the slew procedure.
- Refactor state checks into a call to checkStatus, managing most external events.
- Move job startup from evaluateJobs to executeJob.
The big change in this differential is that the first job is executed AFTER the observatory starts up.
This makes Ekos take control of the observatory at the moment the Scheduler is started, with device connections and setup unparks.
The advantage of this method is that any device issue will fire when the end-user presses the start button, not a few hours later when the Scheduler wakes up.