File indexing completed on 2024-05-05 07:42:14
0001 /* 0002 SPDX-FileCopyrightText: 2023 Wolfgang Reissenberger <sterne-jaeger@openfuture.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "QString" 0010 0011 namespace Ekos 0012 { 0013 typedef enum 0014 { 0015 STARTUP_IDLE, 0016 STARTUP_SCRIPT, 0017 STARTUP_UNPARK_DOME, 0018 STARTUP_UNPARKING_DOME, 0019 STARTUP_UNPARK_MOUNT, 0020 STARTUP_UNPARKING_MOUNT, 0021 STARTUP_UNPARK_CAP, 0022 STARTUP_UNPARKING_CAP, 0023 STARTUP_ERROR, 0024 STARTUP_COMPLETE 0025 } StartupState; 0026 typedef enum 0027 { 0028 SHUTDOWN_IDLE, 0029 SHUTDOWN_PARK_CAP, 0030 SHUTDOWN_PARKING_CAP, 0031 SHUTDOWN_PARK_MOUNT, 0032 SHUTDOWN_PARKING_MOUNT, 0033 SHUTDOWN_PARK_DOME, 0034 SHUTDOWN_PARKING_DOME, 0035 SHUTDOWN_SCRIPT, 0036 SHUTDOWN_SCRIPT_RUNNING, 0037 SHUTDOWN_ERROR, 0038 SHUTDOWN_COMPLETE 0039 } ShutdownState; 0040 typedef enum 0041 { 0042 PARKWAIT_IDLE, 0043 PARKWAIT_PARK, 0044 PARKWAIT_PARKING, 0045 PARKWAIT_PARKED, 0046 PARKWAIT_UNPARK, 0047 PARKWAIT_UNPARKING, 0048 PARKWAIT_UNPARKED, 0049 PARKWAIT_ERROR 0050 } ParkWaitState; 0051 // overall states of EKOS 0052 typedef enum { EKOS_IDLE, EKOS_STARTING, EKOS_STOPPING, EKOS_READY } EkosState; 0053 // overall states of INDI 0054 typedef enum { INDI_IDLE, INDI_CONNECTING, INDI_DISCONNECTING, INDI_PROPERTY_CHECK, INDI_READY } INDIState; 0055 0056 /** @brief options what should happen if an error or abort occurs */ 0057 typedef enum 0058 { 0059 ERROR_DONT_RESTART, 0060 ERROR_RESTART_AFTER_TERMINATION, 0061 ERROR_RESTART_IMMEDIATELY 0062 } ErrorHandlingStrategy; 0063 0064 /** @brief Algorithms, in the same order as UI. */ 0065 typedef enum 0066 { 0067 ALGORITHM_GREEDY = 1 0068 } SchedulerAlgorithm; 0069 0070 0071 /** @brief Conditions under which a SchedulerJob may start. */ 0072 typedef enum 0073 { 0074 START_ASAP = 0, 0075 START_AT = 2 0076 } StartupCondition; 0077 0078 /** @brief Conditions under which a SchedulerJob may complete. */ 0079 typedef enum 0080 { 0081 FINISH_SEQUENCE, 0082 FINISH_REPEAT, 0083 FINISH_LOOP, 0084 FINISH_AT 0085 } CompletionCondition; 0086 0087 /** @brief IterationTypes, the different types of scheduler iterations that are run. */ 0088 typedef enum 0089 { 0090 RUN_WAKEUP = 0, 0091 RUN_SCHEDULER, 0092 RUN_JOBCHECK, 0093 RUN_SHUTDOWN, 0094 RUN_NOTHING 0095 } SchedulerTimerState; 0096 0097 /** @brief States of a SchedulerJob. */ 0098 typedef enum 0099 { 0100 SCHEDJOB_IDLE, /**< Job was just created, and is not evaluated yet */ 0101 SCHEDJOB_EVALUATION, /**< Job is being evaluated */ 0102 SCHEDJOB_SCHEDULED, /**< Job was evaluated, and has a schedule */ 0103 SCHEDJOB_BUSY, /**< Job is being processed */ 0104 SCHEDJOB_ERROR, /**< Job encountered a fatal issue while processing, and must be reset manually */ 0105 SCHEDJOB_ABORTED, /**< Job encountered a transitory issue while processing, and will be rescheduled */ 0106 SCHEDJOB_INVALID, /**< Job has an incorrect configuration, and cannot proceed */ 0107 SCHEDJOB_COMPLETE /**< Job finished all required captures */ 0108 } SchedulerJobStatus; 0109 0110 /** @brief Running stages of a SchedulerJob. */ 0111 typedef enum 0112 { 0113 SCHEDSTAGE_IDLE, 0114 SCHEDSTAGE_SLEWING, 0115 SCHEDSTAGE_SLEW_COMPLETE, 0116 SCHEDSTAGE_FOCUSING, 0117 SCHEDSTAGE_FOCUS_COMPLETE, 0118 SCHEDSTAGE_ALIGNING, 0119 SCHEDSTAGE_ALIGN_COMPLETE, 0120 SCHEDSTAGE_RESLEWING, 0121 SCHEDSTAGE_RESLEWING_COMPLETE, 0122 SCHEDSTAGE_POSTALIGN_FOCUSING, 0123 SCHEDSTAGE_POSTALIGN_FOCUSING_COMPLETE, 0124 SCHEDSTAGE_GUIDING, 0125 SCHEDSTAGE_GUIDING_COMPLETE, 0126 SCHEDSTAGE_CAPTURING, 0127 SCHEDSTAGE_COMPLETE 0128 } SchedulerJobStage; 0129 0130 /** @brief mapping signature --> frames count */ 0131 typedef QMap<QString, uint16_t> CapturedFramesMap; 0132 0133 // Functions to make human-readable debug messages for the various enums. 0134 0135 QString ekosStateString(EkosState state); 0136 QString indiStateString(INDIState state); 0137 QString startupStateString(StartupState state); 0138 QString shutdownStateString(ShutdownState state); 0139 QString parkWaitStateString(ParkWaitState state); 0140 QString timerStr(SchedulerTimerState state); 0141 QString startupConditionString(StartupCondition condition); 0142 QString completionConditionString(CompletionCondition condition); 0143 0144 } // Ekos namespace