Robin Mueller
e17b8d2ec4
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
100 lines
4.4 KiB
C++
100 lines
4.4 KiB
C++
#ifndef MISSION_SYSDEFS_H_
|
|
#define MISSION_SYSDEFS_H_
|
|
|
|
#include <atomic>
|
|
|
|
#include "acs/defs.h"
|
|
|
|
extern std::atomic_uint16_t I2C_FATAL_ERRORS;
|
|
|
|
namespace satsystem {
|
|
|
|
enum Mode : Mode_t { BOOT = 5, SAFE = acs::AcsMode::SAFE, PTG_IDLE = acs::AcsMode::PTG_IDLE };
|
|
|
|
}
|
|
|
|
namespace xsc {
|
|
|
|
enum Chip : int { CHIP_0, CHIP_1, NO_CHIP, SELF_CHIP, ALL_CHIP };
|
|
enum Copy : int { COPY_0, COPY_1, NO_COPY, SELF_COPY, ALL_COPY };
|
|
|
|
} // namespace xsc
|
|
|
|
namespace core {
|
|
|
|
// TODO: Support for status? Or maybe some command to quickly get information whether a unit
|
|
// is running.
|
|
enum SystemctlCmd : uint8_t { START = 0, STOP = 1, RESTART = 2, NUM_CMDS = 3 };
|
|
|
|
static constexpr char CONF_FOLDER[] = "conf";
|
|
|
|
static constexpr char VERSION_FILE_NAME[] = "version.txt";
|
|
static constexpr char REBOOT_FILE_NAME[] = "reboot.txt";
|
|
static constexpr char TIME_FILE_NAME[] = "time_backup.txt";
|
|
|
|
static constexpr ActionId_t LIST_DIRECTORY_INTO_FILE = 0;
|
|
static constexpr ActionId_t ANNOUNCE_VERSION = 1;
|
|
static constexpr ActionId_t ANNOUNCE_CURRENT_IMAGE = 2;
|
|
static constexpr ActionId_t ANNOUNCE_BOOT_COUNTS = 3;
|
|
static constexpr ActionId_t SWITCH_REBOOT_FILE_HANDLING = 5;
|
|
static constexpr ActionId_t RESET_REBOOT_COUNTERS = 6;
|
|
static constexpr ActionId_t SWITCH_IMG_LOCK = 7;
|
|
static constexpr ActionId_t SET_MAX_REBOOT_CNT = 8;
|
|
|
|
static constexpr ActionId_t OBSW_UPDATE_FROM_SD_0 = 10;
|
|
static constexpr ActionId_t OBSW_UPDATE_FROM_SD_1 = 11;
|
|
static constexpr ActionId_t OBSW_UPDATE_FROM_TMP = 12;
|
|
|
|
static constexpr ActionId_t SWITCH_TO_SD_0 = 16;
|
|
static constexpr ActionId_t SWITCH_TO_SD_1 = 17;
|
|
static constexpr ActionId_t SWITCH_TO_BOTH_SD_CARDS = 18;
|
|
|
|
//! Reboot using the xsc_boot_copy command
|
|
static constexpr ActionId_t XSC_REBOOT_OBC = 32;
|
|
static constexpr ActionId_t MOUNT_OTHER_COPY = 33;
|
|
//! Reboot using the reboot command
|
|
static constexpr ActionId_t REBOOT_OBC = 34;
|
|
|
|
static constexpr ActionId_t EXECUTE_SHELL_CMD_BLOCKING = 40;
|
|
static constexpr ActionId_t EXECUTE_SHELL_CMD_NON_BLOCKING = 41;
|
|
static constexpr ActionId_t SYSTEMCTL_CMD_EXECUTOR = 42;
|
|
|
|
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::CORE;
|
|
|
|
static constexpr Event ALLOC_FAILURE = event::makeEvent(SUBSYSTEM_ID, 0, severity::MEDIUM);
|
|
//! [EXPORT] : [COMMENT] Software reboot occurred. Can also be a systemd reboot.
|
|
//! P1: Current Chip, P2: Current Copy
|
|
static constexpr Event REBOOT_SW = event::makeEvent(SUBSYSTEM_ID, 1, severity::LOW);
|
|
//! [EXPORT] : [COMMENT] The reboot mechanism was triggered.
|
|
//! P1: First 16 bits: Last Chip, Last 16 bits: Last Copy,
|
|
//! P2: Each byte is the respective reboot count for the slots
|
|
static constexpr Event REBOOT_MECHANISM_TRIGGERED =
|
|
event::makeEvent(SUBSYSTEM_ID, 2, severity::MEDIUM);
|
|
//! Trying to find a way how to determine that the reboot came from ProASIC3 or PCDU..
|
|
static constexpr Event REBOOT_HW = event::makeEvent(SUBSYSTEM_ID, 3, severity::MEDIUM);
|
|
//! [EXPORT] : [COMMENT] No SD card was active. Core controller will attempt to re-initialize
|
|
//! a SD card.
|
|
static constexpr Event NO_SD_CARD_ACTIVE = event::makeEvent(SUBSYSTEM_ID, 4, severity::HIGH);
|
|
//! [EXPORT] : [COMMENT]
|
|
//! P1: Byte 0: Major, Byte 1: Minor, Byte 2: Patch, Byte 3: Has Git Hash
|
|
//! P2: First four letters of Git SHA is the last byte of P1 is set.
|
|
static constexpr Event VERSION_INFO = event::makeEvent(SUBSYSTEM_ID, 5, severity::INFO);
|
|
//! [EXPORT] : [COMMENT] P1: Current Chip, P2: Current Copy
|
|
static constexpr Event CURRENT_IMAGE_INFO = event::makeEvent(SUBSYSTEM_ID, 6, severity::INFO);
|
|
//! [EXPORT] : [COMMENT] Total reboot counter, which is the sum of the boot count of all
|
|
//! individual images.
|
|
static constexpr Event REBOOT_COUNTER = event::makeEvent(SUBSYSTEM_ID, 7, severity::INFO);
|
|
//! [EXPORT] : [COMMENT] Get the boot count of the individual images.
|
|
//! P1: First 16 bits boot count of image 0 0, last 16 bits boot count of image 0 1.
|
|
//! P2: First 16 bits boot count of image 1 0, last 16 bits boot count of image 1 1.
|
|
static constexpr Event INDIVIDUAL_BOOT_COUNTS = event::makeEvent(SUBSYSTEM_ID, 8, severity::INFO);
|
|
//! [EXPORT] : [COMMENT] I2C is unavailable. Trying recovery of I2C bus by power cycling all I2C
|
|
//! devices.
|
|
static constexpr Event TRYING_I2C_RECOVERY = event::makeEvent(SUBSYSTEM_ID, 10, severity::MEDIUM);
|
|
//! [EXPORT] : [COMMENT] I2C is unavailable. Recovery did not work, performing full reboot.
|
|
static constexpr Event I2C_REBOOT = event::makeEvent(SUBSYSTEM_ID, 11, severity::MEDIUM);
|
|
|
|
} // namespace core
|
|
|
|
#endif /* MISSION_SYSDEFS_H_ */
|