#ifndef MISSION_ACSDEFS_H_ #define MISSION_ACSDEFS_H_ #include #include #include namespace acs { enum class SimpleSensorMode { NORMAL = 0, OFF = 1 }; // These modes are the modes of the ACS controller and of the ACS subsystem. enum AcsMode : Mode_t { OFF = HasModesIF::MODE_OFF, SAFE = satsystem::Mode::SAFE, PTG_IDLE = satsystem::Mode::PTG_IDLE, PTG_NADIR = satsystem::Mode::PTG_NADIR, PTG_TARGET = satsystem::Mode::PTG_TARGET, PTG_TARGET_GS = satsystem::Mode::PTG_TARGET_GS, PTG_INERTIAL = satsystem::Mode::PTG_INERTIAL, }; enum SafeSubmode : Submode_t { DEFAULT = 0, DETUMBLE = 1 }; enum ControlModeStrategy : uint8_t { CTRL_OFF = 0, CTRL_NO_MAG_FIELD_FOR_CONTROL = 1, CTRL_NO_SENSORS_FOR_CONTROL = 2, // OBSW version <= v6.1.0 LEGACY_SAFECTRL_ACTIVE_MEKF = 10, LEGACY_SAFECTRL_WITHOUT_MEKF = 11, LEGACY_SAFECTRL_ECLIPSE_DAMPING = 12, LEGACY_SAFECTRL_ECLIPSE_IDELING = 13, // Added in v6.2.0 SAFECTRL_MEKF = 14, SAFECTRL_GYR = 15, SAFECTRL_SUSMGM = 16, SAFECTRL_ECLIPSE_DAMPING_GYR = 17, SAFECTRL_ECLIPSE_DAMPING_SUSMGM = 18, SAFECTRL_ECLIPSE_IDELING = 19, SAFECTRL_DETUMBLE_FULL = 20, SAFECTRL_DETUMBLE_DETERIORATED = 21, // Added in vNext PTGCTRL_MEKF = 100, PTGCTRL_STR = 101, PTGCTRL_QUEST = 102, }; namespace gps { enum Source : uint8_t { NONE, GPS, GPS_EXTRAPOLATED, SPG4, }; } namespace rotrate { enum Source : uint8_t { NONE, SUSMGM, QUEST, STR, }; } static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::ACS_SUBSYSTEM; //! [EXPORT] : [COMMENT] The limits for the rotation in safe mode were violated. static constexpr Event SAFE_RATE_VIOLATION = MAKE_EVENT(0, severity::MEDIUM); //! [EXPORT] : [COMMENT] The limits for the rotation in pointing mode were violated. static constexpr Event PTG_RATE_VIOLATION = MAKE_EVENT(10, severity::MEDIUM); //! [EXPORT] : [COMMENT] The system has recovered from a rate rotation violation. static constexpr Event RATE_RECOVERY = MAKE_EVENT(1, severity::MEDIUM); //! [EXPORT] : [COMMENT] Multiple RWs are invalid, uncommandable and therefore higher ACS modes //! cannot be maintained. static constexpr Event MULTIPLE_RW_INVALID = MAKE_EVENT(2, severity::HIGH); //! [EXPORT] : [COMMENT] MEKF was not able to compute a solution. //! P1: MEKF state on exit static constexpr Event MEKF_INVALID_INFO = MAKE_EVENT(3, severity::INFO); //! [EXPORT] : [COMMENT] MEKF is able to compute a solution again. static constexpr Event MEKF_RECOVERY = MAKE_EVENT(4, severity::INFO); //! [EXPORT] : [COMMENT] MEKF performed an automatic reset after detection of nonfinite values. static constexpr Event MEKF_AUTOMATIC_RESET = MAKE_EVENT(5, severity::INFO); //! [EXPORT] : [COMMENT] For a prolonged time, no attitude information was available for the //! Pointing Controller. Falling back to Safe Mode. static constexpr Event PTG_CTRL_NO_ATTITUDE_INFORMATION = MAKE_EVENT(6, severity::HIGH); //! [EXPORT] : [COMMENT] The ACS safe mode controller was not able to compute a solution and has //! failed. //! P1: Missing information about magnetic field, P2: Missing information about rotational rate static constexpr Event SAFE_MODE_CONTROLLER_FAILURE = MAKE_EVENT(7, severity::HIGH); //! [EXPORT] : [COMMENT] The TLE for the SGP4 Propagator has become too old. static constexpr Event TLE_TOO_OLD = MAKE_EVENT(8, severity::INFO); //! [EXPORT] : [COMMENT] The TLE could not be read from the filesystem. static constexpr Event TLE_FILE_READ_FAILED = MAKE_EVENT(9, severity::LOW); extern const char* getModeStr(AcsMode mode); } // namespace acs #endif /* MISSION_ACSDEFS_H_ */