Merge branch 'main' into possible_bugfix_dual_lane_assy
Some checks are pending
EIVE/eive-obsw/pipeline/pr-main Build queued...
Some checks are pending
EIVE/eive-obsw/pipeline/pr-main Build queued...
This commit is contained in:
commit
51f9d5e1fe
@ -22,8 +22,16 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
|
|
||||||
|
- Adapt EM configuration to include all GomSpace PCDU devices except the ACU. For the ACU
|
||||||
|
(which broke), a dummy will still be used.
|
||||||
- Event Manager queue depth is configurable now.
|
- Event Manager queue depth is configurable now.
|
||||||
- Do not construct and schedule broken TMP1075 device anymore.
|
- Do not construct and schedule broken TMP1075 device anymore.
|
||||||
|
- Do not track payload modes in system mode tables.
|
||||||
|
- ACS modes derived from system modes.
|
||||||
|
|
||||||
|
## Added
|
||||||
|
|
||||||
|
- Add the remaining system modes.
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
|
|
||||||
|
@ -146,8 +146,11 @@ set(OBSW_ADD_TMP_DEVICES
|
|||||||
${INIT_VAL}
|
${INIT_VAL}
|
||||||
CACHE STRING "Add TMP devices")
|
CACHE STRING "Add TMP devices")
|
||||||
set(OBSW_ADD_GOMSPACE_PCDU
|
set(OBSW_ADD_GOMSPACE_PCDU
|
||||||
${INIT_VAL}
|
1
|
||||||
CACHE STRING "Add GomSpace PCDU modules")
|
CACHE STRING "Add GomSpace PCDU modules")
|
||||||
|
set(OBSW_ADD_GOMSPACE_ACU
|
||||||
|
${INIT_VAL}
|
||||||
|
CACHE STRING "Add GomSpace ACU submodule")
|
||||||
set(OBSW_ADD_RW
|
set(OBSW_ADD_RW
|
||||||
${INIT_VAL}
|
${INIT_VAL}
|
||||||
CACHE STRING "Add RW modules")
|
CACHE STRING "Add RW modules")
|
||||||
|
@ -22,6 +22,9 @@
|
|||||||
#define OBSW_COMMAND_SAFE_MODE_AT_STARTUP 1
|
#define OBSW_COMMAND_SAFE_MODE_AT_STARTUP 1
|
||||||
|
|
||||||
#define OBSW_ADD_GOMSPACE_PCDU @OBSW_ADD_GOMSPACE_PCDU@
|
#define OBSW_ADD_GOMSPACE_PCDU @OBSW_ADD_GOMSPACE_PCDU@
|
||||||
|
// This define is necessary because the EM setup has the P60 dock module, but no ACU on the P60
|
||||||
|
// module because it broke.
|
||||||
|
#define OBSW_ADD_GOMSPACE_ACU @OBSW_ADD_GOMSPACE_ACU@
|
||||||
#define OBSW_ADD_MGT @OBSW_ADD_MGT@
|
#define OBSW_ADD_MGT @OBSW_ADD_MGT@
|
||||||
#define OBSW_ADD_BPX_BATTERY_HANDLER @OBSW_ADD_BPX_BATTERY_HANDLER@
|
#define OBSW_ADD_BPX_BATTERY_HANDLER @OBSW_ADD_BPX_BATTERY_HANDLER@
|
||||||
#define OBSW_ADD_STAR_TRACKER @OBSW_ADD_STAR_TRACKER@
|
#define OBSW_ADD_STAR_TRACKER @OBSW_ADD_STAR_TRACKER@
|
||||||
|
@ -189,7 +189,6 @@ void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF,
|
|||||||
*i2cComIF = new I2cComIF(objects::I2C_COM_IF);
|
*i2cComIF = new I2cComIF(objects::I2C_COM_IF);
|
||||||
*uartComIF = new SerialComIF(objects::UART_COM_IF);
|
*uartComIF = new SerialComIF(objects::UART_COM_IF);
|
||||||
*spiMainComIF = new SpiComIF(objects::SPI_MAIN_COM_IF, q7s::SPI_DEFAULT_DEV, **gpioComIF);
|
*spiMainComIF = new SpiComIF(objects::SPI_MAIN_COM_IF, q7s::SPI_DEFAULT_DEV, **gpioComIF);
|
||||||
//*spiRWComIF = new SpiComIF(objects::SPI_RW_COM_IF, q7s::SPI_RW_DEV, **gpioComIF);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectFactory::createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF** pwrSwitcher,
|
void ObjectFactory::createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF** pwrSwitcher,
|
||||||
@ -197,7 +196,6 @@ void ObjectFactory::createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchI
|
|||||||
CspCookie* p60DockCspCookie = new CspCookie(P60Dock::MAX_REPLY_SIZE, addresses::P60DOCK, 500);
|
CspCookie* p60DockCspCookie = new CspCookie(P60Dock::MAX_REPLY_SIZE, addresses::P60DOCK, 500);
|
||||||
CspCookie* pdu1CspCookie = new CspCookie(PDU::MAX_REPLY_SIZE, addresses::PDU1, 500);
|
CspCookie* pdu1CspCookie = new CspCookie(PDU::MAX_REPLY_SIZE, addresses::PDU1, 500);
|
||||||
CspCookie* pdu2CspCookie = new CspCookie(PDU::MAX_REPLY_SIZE, addresses::PDU2, 500);
|
CspCookie* pdu2CspCookie = new CspCookie(PDU::MAX_REPLY_SIZE, addresses::PDU2, 500);
|
||||||
CspCookie* acuCspCookie = new CspCookie(ACU::MAX_REPLY_SIZE, addresses::ACU, 500);
|
|
||||||
|
|
||||||
auto p60Fdir = new GomspacePowerFdir(objects::P60DOCK_HANDLER);
|
auto p60Fdir = new GomspacePowerFdir(objects::P60DOCK_HANDLER);
|
||||||
P60DockHandler* p60dockhandler = new P60DockHandler(objects::P60DOCK_HANDLER, objects::CSP_COM_IF,
|
P60DockHandler* p60dockhandler = new P60DockHandler(objects::P60DOCK_HANDLER, objects::CSP_COM_IF,
|
||||||
@ -211,9 +209,12 @@ void ObjectFactory::createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchI
|
|||||||
Pdu2Handler* pdu2handler = new Pdu2Handler(objects::PDU2_HANDLER, objects::CSP_COM_IF,
|
Pdu2Handler* pdu2handler = new Pdu2Handler(objects::PDU2_HANDLER, objects::CSP_COM_IF,
|
||||||
pdu2CspCookie, pdu2Fdir, enableHkSets);
|
pdu2CspCookie, pdu2Fdir, enableHkSets);
|
||||||
|
|
||||||
|
#if OBSW_ADD_GOMSPACE_ACU == 1
|
||||||
|
CspCookie* acuCspCookie = new CspCookie(ACU::MAX_REPLY_SIZE, addresses::ACU, 500);
|
||||||
auto acuFdir = new GomspacePowerFdir(objects::ACU_HANDLER);
|
auto acuFdir = new GomspacePowerFdir(objects::ACU_HANDLER);
|
||||||
ACUHandler* acuhandler = new ACUHandler(objects::ACU_HANDLER, objects::CSP_COM_IF, acuCspCookie,
|
ACUHandler* acuhandler = new ACUHandler(objects::ACU_HANDLER, objects::CSP_COM_IF, acuCspCookie,
|
||||||
acuFdir, enableHkSets);
|
acuFdir, enableHkSets);
|
||||||
|
#endif
|
||||||
auto pcduHandler = new PcduHandler(objects::PCDU_HANDLER, 50);
|
auto pcduHandler = new PcduHandler(objects::PCDU_HANDLER, 50);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -223,7 +224,9 @@ void ObjectFactory::createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchI
|
|||||||
p60dockhandler->setModeNormal();
|
p60dockhandler->setModeNormal();
|
||||||
pdu1handler->setModeNormal();
|
pdu1handler->setModeNormal();
|
||||||
pdu2handler->setModeNormal();
|
pdu2handler->setModeNormal();
|
||||||
|
#if OBSW_ADD_GOMSPACE_ACU == 1
|
||||||
acuhandler->setModeNormal();
|
acuhandler->setModeNormal();
|
||||||
|
#endif
|
||||||
if (pwrSwitcher != nullptr) {
|
if (pwrSwitcher != nullptr) {
|
||||||
*pwrSwitcher = pcduHandler;
|
*pwrSwitcher = pcduHandler;
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,8 @@ void ObjectFactory::produce(void* args) {
|
|||||||
#endif
|
#endif
|
||||||
#if OBSW_ADD_GOMSPACE_PCDU == 1
|
#if OBSW_ADD_GOMSPACE_PCDU == 1
|
||||||
dummyCfg.addPowerDummies = false;
|
dummyCfg.addPowerDummies = false;
|
||||||
|
// The ACU broke.
|
||||||
|
dummyCfg.addOnlyAcuDummy = true;
|
||||||
#endif
|
#endif
|
||||||
#if OBSW_ADD_BPX_BATTERY_HANDLER == 1
|
#if OBSW_ADD_BPX_BATTERY_HANDLER == 1
|
||||||
dummyCfg.addBpxBattDummy = false;
|
dummyCfg.addBpxBattDummy = false;
|
||||||
@ -93,7 +95,7 @@ void ObjectFactory::produce(void* args) {
|
|||||||
// createRadSensorComponent(gpioComIF);
|
// createRadSensorComponent(gpioComIF);
|
||||||
|
|
||||||
#if OBSW_ADD_ACS_BOARD == 1
|
#if OBSW_ADD_ACS_BOARD == 1
|
||||||
createAcsBoardComponents(*spiMainComIF, gpioComIF, uartComIF, *pwrSwitcher);
|
createAcsBoardComponents(*spiMainComIF, gpioComIF, uartComIF, *pwrSwitcher, true);
|
||||||
#else
|
#else
|
||||||
// Still add all GPIOs for EM.
|
// Still add all GPIOs for EM.
|
||||||
GpioCookie* acsBoardGpios = new GpioCookie();
|
GpioCookie* acsBoardGpios = new GpioCookie();
|
||||||
|
@ -77,8 +77,9 @@ void dummy::createDummies(DummyCfg cfg, PowerSwitchIF& pwrSwitcher, GpioIF* gpio
|
|||||||
auto* imtqDummy = new ImtqDummy(objects::IMTQ_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
auto* imtqDummy = new ImtqDummy(objects::IMTQ_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
||||||
imtqDummy->enableThermalModule(ThermalStateCfg());
|
imtqDummy->enableThermalModule(ThermalStateCfg());
|
||||||
imtqDummy->connectModeTreeParent(*imtqAssy);
|
imtqDummy->connectModeTreeParent(*imtqAssy);
|
||||||
if (cfg.addPowerDummies) {
|
if (cfg.addOnlyAcuDummy) {
|
||||||
new AcuDummy(objects::ACU_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
new AcuDummy(objects::ACU_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
||||||
|
} else if (cfg.addPowerDummies) {
|
||||||
new PduDummy(objects::PDU1_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
new PduDummy(objects::PDU1_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
||||||
new PduDummy(objects::PDU2_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
new PduDummy(objects::PDU2_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
||||||
new P60DockDummy(objects::P60DOCK_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
new P60DockDummy(objects::P60DOCK_HANDLER, objects::DUMMY_COM_IF, comCookieDummy);
|
||||||
|
@ -6,8 +6,11 @@ class GpioIF;
|
|||||||
|
|
||||||
namespace dummy {
|
namespace dummy {
|
||||||
|
|
||||||
|
// Default values targeted towards EM.
|
||||||
struct DummyCfg {
|
struct DummyCfg {
|
||||||
bool addCoreCtrlCfg = true;
|
bool addCoreCtrlCfg = true;
|
||||||
|
// Special variant because the ACU broke. Overrides addPowerDummies, only ACU dummy will be added.
|
||||||
|
bool addOnlyAcuDummy = false;
|
||||||
bool addPowerDummies = true;
|
bool addPowerDummies = true;
|
||||||
bool addBpxBattDummy = true;
|
bool addBpxBattDummy = true;
|
||||||
bool addSyrlinksDummies = true;
|
bool addSyrlinksDummies = true;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <eive/eventSubsystemIds.h>
|
#include <eive/eventSubsystemIds.h>
|
||||||
#include <fsfw/modes/HasModesIF.h>
|
#include <fsfw/modes/HasModesIF.h>
|
||||||
|
#include <mission/sysDefs.h>
|
||||||
|
|
||||||
namespace acs {
|
namespace acs {
|
||||||
|
|
||||||
@ -11,12 +12,12 @@ enum class SimpleSensorMode { NORMAL = 0, OFF = 1 };
|
|||||||
// These modes are the modes of the ACS controller and of the ACS subsystem.
|
// These modes are the modes of the ACS controller and of the ACS subsystem.
|
||||||
enum AcsMode : Mode_t {
|
enum AcsMode : Mode_t {
|
||||||
OFF = HasModesIF::MODE_OFF,
|
OFF = HasModesIF::MODE_OFF,
|
||||||
SAFE = 10,
|
SAFE = satsystem::Mode::SAFE,
|
||||||
PTG_IDLE = 11,
|
PTG_IDLE = satsystem::Mode::PTG_IDLE,
|
||||||
PTG_NADIR = 12,
|
PTG_NADIR = satsystem::Mode::PTG_NADIR,
|
||||||
PTG_TARGET = 13,
|
PTG_TARGET = satsystem::Mode::PTG_TARGET,
|
||||||
PTG_TARGET_GS = 14,
|
PTG_TARGET_GS = satsystem::Mode::PTG_TARGET_GS,
|
||||||
PTG_INERTIAL = 15,
|
PTG_INERTIAL = satsystem::Mode::PTG_INERTIAL,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum SafeSubmode : Submode_t { DEFAULT = 0, DETUMBLE = 1 };
|
enum SafeSubmode : Submode_t { DEFAULT = 0, DETUMBLE = 1 };
|
||||||
|
@ -1,16 +1,28 @@
|
|||||||
#ifndef MISSION_SYSDEFS_H_
|
#ifndef MISSION_SYSDEFS_H_
|
||||||
#define MISSION_SYSDEFS_H_
|
#define MISSION_SYSDEFS_H_
|
||||||
|
|
||||||
#include <atomic>
|
#include <fsfw/action/ActionMessage.h>
|
||||||
|
#include <fsfw/action/HasActionsIF.h>
|
||||||
|
#include <fsfw/modes/ModeMessage.h>
|
||||||
|
#include <fsfw/serialize/SerializeIF.h>
|
||||||
|
|
||||||
#include "acs/defs.h"
|
#include <atomic>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
extern std::atomic_uint16_t I2C_FATAL_ERRORS;
|
extern std::atomic_uint16_t I2C_FATAL_ERRORS;
|
||||||
|
|
||||||
namespace satsystem {
|
namespace satsystem {
|
||||||
|
|
||||||
enum Mode : Mode_t { BOOT = 5, SAFE = acs::AcsMode::SAFE, PTG_IDLE = acs::AcsMode::PTG_IDLE };
|
enum Mode : Mode_t {
|
||||||
|
BOOT = 5,
|
||||||
|
// DO NOT CHANGE THE ORDER starting from here, breaks ACS mode checks.
|
||||||
|
SAFE = 10,
|
||||||
|
PTG_IDLE = 11,
|
||||||
|
PTG_NADIR = 12,
|
||||||
|
PTG_TARGET = 13,
|
||||||
|
PTG_TARGET_GS = 14,
|
||||||
|
PTG_INERTIAL = 15,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace xsc {
|
namespace xsc {
|
||||||
|
@ -39,18 +39,22 @@ void EiveSystem::announceMode(bool recursive) {
|
|||||||
modeStr = "POINTING IDLE";
|
modeStr = "POINTING IDLE";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case (acs::AcsMode::PTG_INERTIAL): {
|
case (satsystem::Mode::PTG_NADIR): {
|
||||||
modeStr = "POINTING INERTIAL";
|
modeStr = "POINTING NADIR";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case (acs::AcsMode::PTG_TARGET): {
|
case (satsystem::Mode::PTG_TARGET): {
|
||||||
modeStr = "POINTING TARGET";
|
modeStr = "POINTING TARGET";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case (acs::AcsMode::PTG_TARGET_GS): {
|
case (satsystem::Mode::PTG_TARGET_GS): {
|
||||||
modeStr = "POINTING TARGET GS";
|
modeStr = "POINTING TARGET GS";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case (satsystem::Mode::PTG_INERTIAL): {
|
||||||
|
modeStr = "POINTING INERTIAL";
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sif::info << "EIVE system is now in " << modeStr << " mode" << std::endl;
|
sif::info << "EIVE system is now in " << modeStr << " mode" << std::endl;
|
||||||
return Subsystem::announceMode(recursive);
|
return Subsystem::announceMode(recursive);
|
||||||
|
@ -22,6 +22,10 @@ const auto check = subsystem::checkInsert;
|
|||||||
void buildBootSequence(Subsystem& ss, ModeListEntry& eh);
|
void buildBootSequence(Subsystem& ss, ModeListEntry& eh);
|
||||||
void buildSafeSequence(Subsystem& ss, ModeListEntry& eh);
|
void buildSafeSequence(Subsystem& ss, ModeListEntry& eh);
|
||||||
void buildIdleSequence(Subsystem& ss, ModeListEntry& eh);
|
void buildIdleSequence(Subsystem& ss, ModeListEntry& eh);
|
||||||
|
void buildPtgNadirSequence(Subsystem& ss, ModeListEntry& eh);
|
||||||
|
void buildPtgTargetSequence(Subsystem& ss, ModeListEntry& eh);
|
||||||
|
void buildPtgTargetGsSequence(Subsystem& ss, ModeListEntry& eh);
|
||||||
|
void buildPtgInertialSequence(Subsystem& ss, ModeListEntry& eh);
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
static const auto OFF = HasModesIF::MODE_OFF;
|
static const auto OFF = HasModesIF::MODE_OFF;
|
||||||
@ -40,6 +44,10 @@ void satsystem::init() {
|
|||||||
buildBootSequence(EIVE_SYSTEM, entry);
|
buildBootSequence(EIVE_SYSTEM, entry);
|
||||||
buildSafeSequence(EIVE_SYSTEM, entry);
|
buildSafeSequence(EIVE_SYSTEM, entry);
|
||||||
buildIdleSequence(EIVE_SYSTEM, entry);
|
buildIdleSequence(EIVE_SYSTEM, entry);
|
||||||
|
buildPtgNadirSequence(EIVE_SYSTEM, entry);
|
||||||
|
buildPtgTargetSequence(EIVE_SYSTEM, entry);
|
||||||
|
buildPtgTargetGsSequence(EIVE_SYSTEM, entry);
|
||||||
|
buildPtgInertialSequence(EIVE_SYSTEM, entry);
|
||||||
EIVE_SYSTEM.setInitialMode(satsystem::Mode::BOOT, 0);
|
EIVE_SYSTEM.setInitialMode(satsystem::Mode::BOOT, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,88 +76,44 @@ auto EIVE_TABLE_IDLE_TRANS_0 =
|
|||||||
auto EIVE_TABLE_IDLE_TRANS_1 =
|
auto EIVE_TABLE_IDLE_TRANS_1 =
|
||||||
std::make_pair((satsystem::Mode::PTG_IDLE << 24) | 3, FixedArrayList<ModeListEntry, 5>());
|
std::make_pair((satsystem::Mode::PTG_IDLE << 24) | 3, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
|
||||||
|
auto EIVE_SEQUENCE_PTG_NADIR =
|
||||||
|
std::make_pair(satsystem::Mode::PTG_NADIR, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_NADIR_TGT =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_NADIR << 24) | 1, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_NADIR_TRANS_0 =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_NADIR << 24) | 2, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_NADIR_TRANS_1 =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_NADIR << 24) | 3, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
|
||||||
|
auto EIVE_SEQUENCE_PTG_TARGET =
|
||||||
|
std::make_pair(satsystem::Mode::PTG_TARGET, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_TARGET_TGT =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_TARGET << 24) | 1, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_TARGET_TRANS_0 =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_TARGET << 24) | 2, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_TARGET_TRANS_1 =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_TARGET << 24) | 3, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
|
||||||
|
auto EIVE_SEQUENCE_PTG_TARGET_GS =
|
||||||
|
std::make_pair(satsystem::Mode::PTG_TARGET_GS, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_TARGET_GS_TGT =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_TARGET_GS << 24) | 1, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_TARGET_GS_TRANS_0 =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_TARGET_GS << 24) | 2, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_TARGET_GS_TRANS_1 =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_TARGET_GS << 24) | 3, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
|
||||||
|
auto EIVE_SEQUENCE_PTG_INERTIAL =
|
||||||
|
std::make_pair(satsystem::Mode::PTG_INERTIAL, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_INERTIAL_TGT =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_INERTIAL << 24) | 1, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_INERTIAL_TRANS_0 =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_INERTIAL << 24) | 2, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
auto EIVE_TABLE_PTG_INERTIAL_TRANS_1 =
|
||||||
|
std::make_pair((satsystem::Mode::PTG_INERTIAL << 24) | 3, FixedArrayList<ModeListEntry, 5>());
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
void buildSafeSequence(Subsystem& ss, ModeListEntry& eh) {
|
|
||||||
std::string context = "satsystem::buildSafeSequence";
|
|
||||||
auto ctxc = context.c_str();
|
|
||||||
// Insert Helper Table
|
|
||||||
auto iht = [&](object_id_t obj, Mode_t mode, Submode_t submode, ArrayList<ModeListEntry>& table,
|
|
||||||
bool allowAllSubmodes = false) {
|
|
||||||
eh.setObject(obj);
|
|
||||||
eh.setMode(mode);
|
|
||||||
eh.setSubmode(submode);
|
|
||||||
if (allowAllSubmodes) {
|
|
||||||
eh.allowAllSubmodes();
|
|
||||||
}
|
|
||||||
check(table.insert(eh), ctxc);
|
|
||||||
};
|
|
||||||
// Insert Helper Sequence
|
|
||||||
auto ihs = [&](ArrayList<ModeListEntry>& sequence, Mode_t tableId, uint32_t waitSeconds,
|
|
||||||
bool checkSuccess) {
|
|
||||||
eh.setTableId(tableId);
|
|
||||||
eh.setWaitSeconds(waitSeconds);
|
|
||||||
eh.setCheckSuccess(checkSuccess);
|
|
||||||
check(sequence.insert(eh), ctxc);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Do no track submode to allow transitions to DETUMBLE submode.
|
|
||||||
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::SAFE, 0, EIVE_TABLE_SAFE_TGT.second, true);
|
|
||||||
iht(objects::PL_SUBSYSTEM, OFF, 0, EIVE_TABLE_SAFE_TGT.second);
|
|
||||||
check(ss.addTable(TableEntry(EIVE_TABLE_SAFE_TGT.first, &EIVE_TABLE_SAFE_TGT.second)), ctxc);
|
|
||||||
|
|
||||||
// Build SAFE transition 0.
|
|
||||||
iht(objects::TCS_SUBSYSTEM, NML, 0, EIVE_TABLE_SAFE_TRANS_0.second);
|
|
||||||
iht(objects::PL_SUBSYSTEM, OFF, 0, EIVE_TABLE_SAFE_TRANS_0.second);
|
|
||||||
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::SAFE, 0, EIVE_TABLE_SAFE_TRANS_0.second, true);
|
|
||||||
check(ss.addTable(TableEntry(EIVE_TABLE_SAFE_TRANS_0.first, &EIVE_TABLE_SAFE_TRANS_0.second)),
|
|
||||||
ctxc);
|
|
||||||
|
|
||||||
// Build Safe sequence
|
|
||||||
ihs(EIVE_SEQUENCE_SAFE.second, EIVE_TABLE_SAFE_TGT.first, 0, false);
|
|
||||||
ihs(EIVE_SEQUENCE_SAFE.second, EIVE_TABLE_SAFE_TRANS_0.first, 0, false);
|
|
||||||
check(ss.addSequence(SequenceEntry(EIVE_SEQUENCE_SAFE.first, &EIVE_SEQUENCE_SAFE.second,
|
|
||||||
EIVE_SEQUENCE_SAFE.first)),
|
|
||||||
ctxc);
|
|
||||||
}
|
|
||||||
|
|
||||||
void buildIdleSequence(Subsystem& ss, ModeListEntry& eh) {
|
|
||||||
std::string context = "satsystem::buildIdleSequence";
|
|
||||||
auto ctxc = context.c_str();
|
|
||||||
// Insert Helper Table
|
|
||||||
auto iht = [&](object_id_t obj, Mode_t mode, Submode_t submode, ArrayList<ModeListEntry>& table) {
|
|
||||||
eh.setObject(obj);
|
|
||||||
eh.setMode(mode);
|
|
||||||
eh.setSubmode(submode);
|
|
||||||
check(table.insert(eh), ctxc);
|
|
||||||
};
|
|
||||||
// Insert Helper Sequence
|
|
||||||
auto ihs = [&](ArrayList<ModeListEntry>& sequence, Mode_t tableId, uint32_t waitSeconds,
|
|
||||||
bool checkSuccess) {
|
|
||||||
eh.setTableId(tableId);
|
|
||||||
eh.setWaitSeconds(waitSeconds);
|
|
||||||
eh.setCheckSuccess(checkSuccess);
|
|
||||||
check(sequence.insert(eh), ctxc);
|
|
||||||
};
|
|
||||||
|
|
||||||
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_IDLE, 0, EIVE_TABLE_IDLE_TGT.second);
|
|
||||||
check(ss.addTable(TableEntry(EIVE_TABLE_IDLE_TGT.first, &EIVE_TABLE_IDLE_TGT.second)), ctxc);
|
|
||||||
|
|
||||||
// Build IDLE transition 0
|
|
||||||
iht(objects::TCS_SUBSYSTEM, NML, 0, EIVE_TABLE_IDLE_TRANS_0.second);
|
|
||||||
iht(objects::PL_SUBSYSTEM, OFF, 0, EIVE_TABLE_IDLE_TRANS_0.second);
|
|
||||||
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_IDLE, 0, EIVE_TABLE_IDLE_TRANS_0.second);
|
|
||||||
check(ss.addTable(TableEntry(EIVE_TABLE_IDLE_TRANS_0.first, &EIVE_TABLE_IDLE_TRANS_0.second)),
|
|
||||||
ctxc);
|
|
||||||
|
|
||||||
// Build IDLE sequence
|
|
||||||
ihs(EIVE_SEQUENCE_IDLE.second, EIVE_TABLE_IDLE_TGT.first, 0, false);
|
|
||||||
ihs(EIVE_SEQUENCE_IDLE.second, EIVE_TABLE_IDLE_TRANS_0.first, 0, false);
|
|
||||||
check(ss.addSequence(SequenceEntry(EIVE_SEQUENCE_IDLE.first, &EIVE_SEQUENCE_IDLE.second,
|
|
||||||
EIVE_SEQUENCE_SAFE.first)),
|
|
||||||
ctxc);
|
|
||||||
}
|
|
||||||
|
|
||||||
void buildBootSequence(Subsystem& ss, ModeListEntry& eh) {
|
void buildBootSequence(Subsystem& ss, ModeListEntry& eh) {
|
||||||
std::string context = "satsystem::buildBootSequence";
|
std::string context = "satsystem::buildBootSequence";
|
||||||
auto ctxc = context.c_str();
|
auto ctxc = context.c_str();
|
||||||
@ -194,4 +158,240 @@ void buildBootSequence(Subsystem& ss, ModeListEntry& eh) {
|
|||||||
EIVE_SEQUENCE_SAFE.first)),
|
EIVE_SEQUENCE_SAFE.first)),
|
||||||
ctxc);
|
ctxc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void buildSafeSequence(Subsystem& ss, ModeListEntry& eh) {
|
||||||
|
std::string context = "satsystem::buildSafeSequence";
|
||||||
|
auto ctxc = context.c_str();
|
||||||
|
// Insert Helper Table
|
||||||
|
auto iht = [&](object_id_t obj, Mode_t mode, Submode_t submode, ArrayList<ModeListEntry>& table,
|
||||||
|
bool allowAllSubmodes = false) {
|
||||||
|
eh.setObject(obj);
|
||||||
|
eh.setMode(mode);
|
||||||
|
eh.setSubmode(submode);
|
||||||
|
if (allowAllSubmodes) {
|
||||||
|
eh.allowAllSubmodes();
|
||||||
|
}
|
||||||
|
check(table.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
// Insert Helper Sequence
|
||||||
|
auto ihs = [&](ArrayList<ModeListEntry>& sequence, Mode_t tableId, uint32_t waitSeconds,
|
||||||
|
bool checkSuccess) {
|
||||||
|
eh.setTableId(tableId);
|
||||||
|
eh.setWaitSeconds(waitSeconds);
|
||||||
|
eh.setCheckSuccess(checkSuccess);
|
||||||
|
check(sequence.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Do no track submode to allow transitions to DETUMBLE submode.
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::SAFE, 0, EIVE_TABLE_SAFE_TGT.second, true);
|
||||||
|
check(ss.addTable(TableEntry(EIVE_TABLE_SAFE_TGT.first, &EIVE_TABLE_SAFE_TGT.second)), ctxc);
|
||||||
|
|
||||||
|
// Build SAFE transition 0.
|
||||||
|
iht(objects::TCS_SUBSYSTEM, NML, 0, EIVE_TABLE_SAFE_TRANS_0.second);
|
||||||
|
iht(objects::PL_SUBSYSTEM, OFF, 0, EIVE_TABLE_SAFE_TRANS_0.second);
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::SAFE, 0, EIVE_TABLE_SAFE_TRANS_0.second, true);
|
||||||
|
check(ss.addTable(TableEntry(EIVE_TABLE_SAFE_TRANS_0.first, &EIVE_TABLE_SAFE_TRANS_0.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build Safe sequence
|
||||||
|
ihs(EIVE_SEQUENCE_SAFE.second, EIVE_TABLE_SAFE_TGT.first, 0, false);
|
||||||
|
ihs(EIVE_SEQUENCE_SAFE.second, EIVE_TABLE_SAFE_TRANS_0.first, 0, false);
|
||||||
|
check(ss.addSequence(SequenceEntry(EIVE_SEQUENCE_SAFE.first, &EIVE_SEQUENCE_SAFE.second,
|
||||||
|
EIVE_SEQUENCE_SAFE.first)),
|
||||||
|
ctxc);
|
||||||
|
}
|
||||||
|
|
||||||
|
void buildIdleSequence(Subsystem& ss, ModeListEntry& eh) {
|
||||||
|
std::string context = "satsystem::buildIdleSequence";
|
||||||
|
auto ctxc = context.c_str();
|
||||||
|
// Insert Helper Table
|
||||||
|
auto iht = [&](object_id_t obj, Mode_t mode, Submode_t submode, ArrayList<ModeListEntry>& table) {
|
||||||
|
eh.setObject(obj);
|
||||||
|
eh.setMode(mode);
|
||||||
|
eh.setSubmode(submode);
|
||||||
|
check(table.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
// Insert Helper Sequence
|
||||||
|
auto ihs = [&](ArrayList<ModeListEntry>& sequence, Mode_t tableId, uint32_t waitSeconds,
|
||||||
|
bool checkSuccess) {
|
||||||
|
eh.setTableId(tableId);
|
||||||
|
eh.setWaitSeconds(waitSeconds);
|
||||||
|
eh.setCheckSuccess(checkSuccess);
|
||||||
|
check(sequence.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_IDLE, 0, EIVE_TABLE_IDLE_TGT.second);
|
||||||
|
check(ss.addTable(TableEntry(EIVE_TABLE_IDLE_TGT.first, &EIVE_TABLE_IDLE_TGT.second)), ctxc);
|
||||||
|
|
||||||
|
// Build IDLE transition 0
|
||||||
|
iht(objects::TCS_SUBSYSTEM, NML, 0, EIVE_TABLE_IDLE_TRANS_0.second);
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_IDLE, 0, EIVE_TABLE_IDLE_TRANS_0.second);
|
||||||
|
check(ss.addTable(TableEntry(EIVE_TABLE_IDLE_TRANS_0.first, &EIVE_TABLE_IDLE_TRANS_0.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build IDLE sequence
|
||||||
|
ihs(EIVE_SEQUENCE_IDLE.second, EIVE_TABLE_IDLE_TGT.first, 0, false);
|
||||||
|
ihs(EIVE_SEQUENCE_IDLE.second, EIVE_TABLE_IDLE_TRANS_0.first, 0, false);
|
||||||
|
check(ss.addSequence(SequenceEntry(EIVE_SEQUENCE_IDLE.first, &EIVE_SEQUENCE_IDLE.second,
|
||||||
|
EIVE_SEQUENCE_SAFE.first)),
|
||||||
|
ctxc);
|
||||||
|
}
|
||||||
|
|
||||||
|
void buildPtgNadirSequence(Subsystem& ss, ModeListEntry& eh) {
|
||||||
|
std::string context = "satsystem::buildPtgNadirSequence";
|
||||||
|
auto ctxc = context.c_str();
|
||||||
|
// Insert Helper Table
|
||||||
|
auto iht = [&](object_id_t obj, Mode_t mode, Submode_t submode, ArrayList<ModeListEntry>& table) {
|
||||||
|
eh.setObject(obj);
|
||||||
|
eh.setMode(mode);
|
||||||
|
eh.setSubmode(submode);
|
||||||
|
check(table.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
// Insert Helper Sequence
|
||||||
|
auto ihs = [&](ArrayList<ModeListEntry>& sequence, Mode_t tableId, uint32_t waitSeconds,
|
||||||
|
bool checkSuccess) {
|
||||||
|
eh.setTableId(tableId);
|
||||||
|
eh.setWaitSeconds(waitSeconds);
|
||||||
|
eh.setCheckSuccess(checkSuccess);
|
||||||
|
check(sequence.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_NADIR, 0, EIVE_TABLE_PTG_NADIR_TGT.second);
|
||||||
|
check(ss.addTable(TableEntry(EIVE_TABLE_PTG_NADIR_TGT.first, &EIVE_TABLE_PTG_NADIR_TGT.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build PTG_NADIR transition 0
|
||||||
|
iht(objects::TCS_SUBSYSTEM, NML, 0, EIVE_TABLE_PTG_NADIR_TRANS_0.second);
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_NADIR, 0, EIVE_TABLE_PTG_NADIR_TRANS_0.second);
|
||||||
|
check(ss.addTable(
|
||||||
|
TableEntry(EIVE_TABLE_PTG_NADIR_TRANS_0.first, &EIVE_TABLE_PTG_NADIR_TRANS_0.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build PTG_NADIR sequence
|
||||||
|
ihs(EIVE_SEQUENCE_PTG_NADIR.second, EIVE_TABLE_PTG_NADIR_TGT.first, 0, false);
|
||||||
|
ihs(EIVE_SEQUENCE_PTG_NADIR.second, EIVE_TABLE_PTG_NADIR_TRANS_0.first, 0, false);
|
||||||
|
check(ss.addSequence(SequenceEntry(EIVE_SEQUENCE_PTG_NADIR.first, &EIVE_SEQUENCE_PTG_NADIR.second,
|
||||||
|
EIVE_SEQUENCE_IDLE.first)),
|
||||||
|
ctxc);
|
||||||
|
}
|
||||||
|
|
||||||
|
void buildPtgTargetSequence(Subsystem& ss, ModeListEntry& eh) {
|
||||||
|
std::string context = "satsystem::buildPtgTargetSequence";
|
||||||
|
auto ctxc = context.c_str();
|
||||||
|
// Insert Helper Table
|
||||||
|
auto iht = [&](object_id_t obj, Mode_t mode, Submode_t submode, ArrayList<ModeListEntry>& table) {
|
||||||
|
eh.setObject(obj);
|
||||||
|
eh.setMode(mode);
|
||||||
|
eh.setSubmode(submode);
|
||||||
|
check(table.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
// Insert Helper Sequence
|
||||||
|
auto ihs = [&](ArrayList<ModeListEntry>& sequence, Mode_t tableId, uint32_t waitSeconds,
|
||||||
|
bool checkSuccess) {
|
||||||
|
eh.setTableId(tableId);
|
||||||
|
eh.setWaitSeconds(waitSeconds);
|
||||||
|
eh.setCheckSuccess(checkSuccess);
|
||||||
|
check(sequence.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_TARGET, 0, EIVE_TABLE_PTG_TARGET_TGT.second);
|
||||||
|
check(ss.addTable(TableEntry(EIVE_TABLE_PTG_TARGET_TGT.first, &EIVE_TABLE_PTG_TARGET_TGT.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build PTG_TARGET transition 0
|
||||||
|
iht(objects::TCS_SUBSYSTEM, NML, 0, EIVE_TABLE_PTG_TARGET_TRANS_0.second);
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_TARGET, 0, EIVE_TABLE_PTG_TARGET_TRANS_0.second);
|
||||||
|
check(ss.addTable(
|
||||||
|
TableEntry(EIVE_TABLE_PTG_TARGET_TRANS_0.first, &EIVE_TABLE_PTG_TARGET_TRANS_0.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build PTG_TARGET sequence
|
||||||
|
ihs(EIVE_SEQUENCE_PTG_TARGET.second, EIVE_TABLE_PTG_TARGET_TGT.first, 0, false);
|
||||||
|
ihs(EIVE_SEQUENCE_PTG_TARGET.second, EIVE_TABLE_PTG_TARGET_TRANS_0.first, 0, false);
|
||||||
|
check(ss.addSequence(SequenceEntry(EIVE_SEQUENCE_PTG_TARGET.first,
|
||||||
|
&EIVE_SEQUENCE_PTG_TARGET.second, EIVE_SEQUENCE_IDLE.first)),
|
||||||
|
ctxc);
|
||||||
|
}
|
||||||
|
|
||||||
|
void buildPtgTargetGsSequence(Subsystem& ss, ModeListEntry& eh) {
|
||||||
|
std::string context = "satsystem::buildPtgTargetGsSequence";
|
||||||
|
auto ctxc = context.c_str();
|
||||||
|
// Insert Helper Table
|
||||||
|
auto iht = [&](object_id_t obj, Mode_t mode, Submode_t submode, ArrayList<ModeListEntry>& table) {
|
||||||
|
eh.setObject(obj);
|
||||||
|
eh.setMode(mode);
|
||||||
|
eh.setSubmode(submode);
|
||||||
|
check(table.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
// Insert Helper Sequence
|
||||||
|
auto ihs = [&](ArrayList<ModeListEntry>& sequence, Mode_t tableId, uint32_t waitSeconds,
|
||||||
|
bool checkSuccess) {
|
||||||
|
eh.setTableId(tableId);
|
||||||
|
eh.setWaitSeconds(waitSeconds);
|
||||||
|
eh.setCheckSuccess(checkSuccess);
|
||||||
|
check(sequence.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_TARGET_GS, 0, EIVE_TABLE_PTG_TARGET_GS_TGT.second);
|
||||||
|
check(ss.addTable(
|
||||||
|
TableEntry(EIVE_TABLE_PTG_TARGET_GS_TGT.first, &EIVE_TABLE_PTG_TARGET_GS_TGT.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build PTG_TARGET_GS transition 0
|
||||||
|
iht(objects::TCS_SUBSYSTEM, NML, 0, EIVE_TABLE_PTG_TARGET_GS_TRANS_0.second);
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_TARGET_GS, 0,
|
||||||
|
EIVE_TABLE_PTG_TARGET_GS_TRANS_0.second);
|
||||||
|
check(ss.addTable(TableEntry(EIVE_TABLE_PTG_TARGET_GS_TRANS_0.first,
|
||||||
|
&EIVE_TABLE_PTG_TARGET_GS_TRANS_0.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build PTG_TARGET_GS sequence
|
||||||
|
ihs(EIVE_SEQUENCE_PTG_TARGET_GS.second, EIVE_TABLE_PTG_TARGET_GS_TGT.first, 0, false);
|
||||||
|
ihs(EIVE_SEQUENCE_PTG_TARGET_GS.second, EIVE_TABLE_PTG_TARGET_GS_TRANS_0.first, 0, false);
|
||||||
|
check(
|
||||||
|
ss.addSequence(SequenceEntry(EIVE_SEQUENCE_PTG_TARGET_GS.first,
|
||||||
|
&EIVE_SEQUENCE_PTG_TARGET_GS.second, EIVE_SEQUENCE_IDLE.first)),
|
||||||
|
ctxc);
|
||||||
|
}
|
||||||
|
|
||||||
|
void buildPtgInertialSequence(Subsystem& ss, ModeListEntry& eh) {
|
||||||
|
std::string context = "satsystem::buildPtgInertialSequence";
|
||||||
|
auto ctxc = context.c_str();
|
||||||
|
// Insert Helper Table
|
||||||
|
auto iht = [&](object_id_t obj, Mode_t mode, Submode_t submode, ArrayList<ModeListEntry>& table) {
|
||||||
|
eh.setObject(obj);
|
||||||
|
eh.setMode(mode);
|
||||||
|
eh.setSubmode(submode);
|
||||||
|
check(table.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
// Insert Helper Sequence
|
||||||
|
auto ihs = [&](ArrayList<ModeListEntry>& sequence, Mode_t tableId, uint32_t waitSeconds,
|
||||||
|
bool checkSuccess) {
|
||||||
|
eh.setTableId(tableId);
|
||||||
|
eh.setWaitSeconds(waitSeconds);
|
||||||
|
eh.setCheckSuccess(checkSuccess);
|
||||||
|
check(sequence.insert(eh), ctxc);
|
||||||
|
};
|
||||||
|
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_INERTIAL, 0, EIVE_TABLE_PTG_INERTIAL_TGT.second);
|
||||||
|
check(ss.addTable(
|
||||||
|
TableEntry(EIVE_TABLE_PTG_INERTIAL_TGT.first, &EIVE_TABLE_PTG_INERTIAL_TGT.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build PTG_INERTIAL transition 0
|
||||||
|
iht(objects::TCS_SUBSYSTEM, NML, 0, EIVE_TABLE_PTG_INERTIAL_TRANS_0.second);
|
||||||
|
iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_INERTIAL, 0,
|
||||||
|
EIVE_TABLE_PTG_INERTIAL_TRANS_0.second);
|
||||||
|
check(ss.addTable(TableEntry(EIVE_TABLE_PTG_INERTIAL_TRANS_0.first,
|
||||||
|
&EIVE_TABLE_PTG_INERTIAL_TRANS_0.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build PTG_INERTIAL sequence
|
||||||
|
ihs(EIVE_SEQUENCE_PTG_INERTIAL.second, EIVE_TABLE_PTG_INERTIAL_TGT.first, 0, false);
|
||||||
|
ihs(EIVE_SEQUENCE_PTG_INERTIAL.second, EIVE_TABLE_PTG_INERTIAL_TRANS_0.first, 0, false);
|
||||||
|
check(ss.addSequence(SequenceEntry(EIVE_SEQUENCE_PTG_INERTIAL.first,
|
||||||
|
&EIVE_SEQUENCE_PTG_INERTIAL.second, EIVE_SEQUENCE_IDLE.first)),
|
||||||
|
ctxc);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
Loading…
Reference in New Issue
Block a user