Merge remote-tracking branch 'origin/mueller/acs-ss-init' into mueller/pl-ss
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
#include "AcsBoardFdir.h"
|
||||
|
||||
#include <common/config/commonObjects.h>
|
||||
#include "eive/objects.h"
|
||||
|
||||
AcsBoardFdir::AcsBoardFdir(object_id_t sensorId)
|
||||
: DeviceHandlerFailureIsolation(sensorId, objects::ACS_BOARD_ASS) {}
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "RtdFdir.h"
|
||||
|
||||
#include <common/config/commonObjects.h>
|
||||
#include "eive/objects.h"
|
||||
|
||||
RtdFdir::RtdFdir(object_id_t sensorId)
|
||||
: DeviceHandlerFailureIsolation(sensorId, objects::TCS_BOARD_ASS) {}
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "SusFdir.h"
|
||||
|
||||
#include <common/config/commonObjects.h>
|
||||
#include "eive/objects.h"
|
||||
|
||||
SusFdir::SusFdir(object_id_t sensorId)
|
||||
: DeviceHandlerFailureIsolation(sensorId, objects::SUS_BOARD_ASS) {}
|
||||
|
@ -6,11 +6,10 @@
|
||||
|
||||
#include "OBSWConfig.h"
|
||||
|
||||
AcsBoardAssembly::AcsBoardAssembly(object_id_t objectId, object_id_t parentId,
|
||||
PowerSwitchIF* switcher, AcsBoardHelper helper, GpioIF* gpioIF)
|
||||
: DualLaneAssemblyBase(objectId, parentId, switcher, SWITCH_A, SWITCH_B,
|
||||
POWER_STATE_MACHINE_TIMEOUT, SIDE_SWITCH_TRANSITION_NOT_ALLOWED,
|
||||
TRANSITION_OTHER_SIDE_FAILED),
|
||||
AcsBoardAssembly::AcsBoardAssembly(object_id_t objectId, PowerSwitchIF* switcher,
|
||||
AcsBoardHelper helper, GpioIF* gpioIF)
|
||||
: DualLaneAssemblyBase(objectId, switcher, SWITCH_A, SWITCH_B, POWER_STATE_MACHINE_TIMEOUT,
|
||||
SIDE_SWITCH_TRANSITION_NOT_ALLOWED, TRANSITION_OTHER_SIDE_FAILED),
|
||||
helper(helper),
|
||||
gpioIF(gpioIF) {
|
||||
if (switcher == nullptr) {
|
||||
@ -275,42 +274,4 @@ void AcsBoardAssembly::refreshHelperModes() {
|
||||
}
|
||||
}
|
||||
|
||||
ReturnValue_t AcsBoardAssembly::initialize() {
|
||||
ReturnValue_t result = registerChild(helper.gyro0AdisIdSideA);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
result = registerChild(helper.gyro1L3gIdSideA);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
result = registerChild(helper.gyro2AdisIdSideB);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
result = registerChild(helper.gyro3L3gIdSideB);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
result = registerChild(helper.mgm0Lis3IdSideA);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
result = registerChild(helper.mgm1Rm3100IdSideA);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
result = registerChild(helper.mgm2Lis3IdSideB);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
result = registerChild(helper.mgm3Rm3100IdSideB);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
result = registerChild(helper.gpsId);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
return AssemblyBase::initialize();
|
||||
}
|
||||
ReturnValue_t AcsBoardAssembly::initialize() { return AssemblyBase::initialize(); }
|
||||
|
@ -1,13 +1,13 @@
|
||||
#ifndef MISSION_SYSTEM_ACSBOARDASSEMBLY_H_
|
||||
#define MISSION_SYSTEM_ACSBOARDASSEMBLY_H_
|
||||
|
||||
#include <common/config/commonSubsystemIds.h>
|
||||
#include <devices/powerSwitcherList.h>
|
||||
#include <fsfw/objectmanager/frameworkObjects.h>
|
||||
#include <fsfw_hal/common/gpio/gpioDefinitions.h>
|
||||
|
||||
#include "DualLaneAssemblyBase.h"
|
||||
#include "DualLanePowerStateMachine.h"
|
||||
#include "eive/eventSubsystemIds.h"
|
||||
|
||||
struct AcsBoardHelper {
|
||||
AcsBoardHelper(object_id_t mgm0Id, object_id_t mgm1Id, object_id_t mgm2Id, object_id_t mgm3Id,
|
||||
@ -94,8 +94,8 @@ class AcsBoardAssembly : public DualLaneAssemblyBase {
|
||||
|
||||
static constexpr uint8_t NUMBER_DEVICES_MODE_TABLE = 9;
|
||||
|
||||
AcsBoardAssembly(object_id_t objectId, object_id_t parentId, PowerSwitchIF* pwrSwitcher,
|
||||
AcsBoardHelper helper, GpioIF* gpioIF);
|
||||
AcsBoardAssembly(object_id_t objectId, PowerSwitchIF* pwrSwitcher, AcsBoardHelper helper,
|
||||
GpioIF* gpioIF);
|
||||
|
||||
/**
|
||||
* In dual mode, the A side or the B side GPS device can be used, but not both.
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "AcsSubsystem.h"
|
||||
|
||||
AcsSubsystem::AcsSubsystem(object_id_t setObjectId, object_id_t parent,
|
||||
uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables)
|
||||
: Subsystem(setObjectId, parent, maxNumberOfSequences, maxNumberOfTables) {}
|
||||
AcsSubsystem::AcsSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences,
|
||||
uint32_t maxNumberOfTables)
|
||||
: Subsystem(setObjectId, maxNumberOfSequences, maxNumberOfTables) {}
|
||||
|
@ -5,8 +5,7 @@
|
||||
|
||||
class AcsSubsystem : public Subsystem {
|
||||
public:
|
||||
AcsSubsystem(object_id_t setObjectId, object_id_t parent, uint32_t maxNumberOfSequences,
|
||||
uint32_t maxNumberOfTables);
|
||||
AcsSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables);
|
||||
|
||||
private:
|
||||
};
|
||||
|
@ -1,14 +1,13 @@
|
||||
target_sources(${LIB_EIVE_MISSION} PRIVATE
|
||||
EiveSystem.cpp
|
||||
AcsSubsystem.cpp
|
||||
ComSubsystem.cpp
|
||||
PayloadSubsystem.cpp
|
||||
|
||||
AcsBoardAssembly.cpp
|
||||
SusAssembly.cpp
|
||||
RwAssembly.cpp
|
||||
DualLanePowerStateMachine.cpp
|
||||
PowerStateMachineBase.cpp
|
||||
DualLaneAssemblyBase.cpp
|
||||
TcsBoardAssembly.cpp
|
||||
)
|
||||
target_sources(
|
||||
${LIB_EIVE_MISSION}
|
||||
PRIVATE EiveSystem.cpp
|
||||
AcsSubsystem.cpp
|
||||
ComSubsystem.cpp
|
||||
PayloadSubsystem.cpp
|
||||
AcsBoardAssembly.cpp
|
||||
SusAssembly.cpp
|
||||
RwAssembly.cpp
|
||||
DualLanePowerStateMachine.cpp
|
||||
PowerStateMachineBase.cpp
|
||||
DualLaneAssemblyBase.cpp
|
||||
TcsBoardAssembly.cpp)
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "ComSubsystem.h"
|
||||
|
||||
ComSubsystem::ComSubsystem(object_id_t setObjectId, object_id_t parent,
|
||||
uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables)
|
||||
: Subsystem(setObjectId, parent, maxNumberOfSequences, maxNumberOfTables) {}
|
||||
ComSubsystem::ComSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences,
|
||||
uint32_t maxNumberOfTables)
|
||||
: Subsystem(setObjectId, maxNumberOfSequences, maxNumberOfTables) {}
|
||||
|
@ -5,8 +5,7 @@
|
||||
|
||||
class ComSubsystem : public Subsystem {
|
||||
public:
|
||||
ComSubsystem(object_id_t setObjectId, object_id_t parent, uint32_t maxNumberOfSequences,
|
||||
uint32_t maxNumberOfTables);
|
||||
ComSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables);
|
||||
|
||||
private:
|
||||
};
|
||||
|
@ -4,12 +4,11 @@
|
||||
|
||||
#include "OBSWConfig.h"
|
||||
|
||||
DualLaneAssemblyBase::DualLaneAssemblyBase(object_id_t objectId, object_id_t parentId,
|
||||
PowerSwitchIF* pwrSwitcher, pcdu::Switches switch1,
|
||||
pcdu::Switches switch2, Event pwrTimeoutEvent,
|
||||
Event sideSwitchNotAllowedEvent,
|
||||
DualLaneAssemblyBase::DualLaneAssemblyBase(object_id_t objectId, PowerSwitchIF* pwrSwitcher,
|
||||
pcdu::Switches switch1, pcdu::Switches switch2,
|
||||
Event pwrTimeoutEvent, Event sideSwitchNotAllowedEvent,
|
||||
Event transitionOtherSideFailedEvent)
|
||||
: AssemblyBase(objectId, parentId, 20),
|
||||
: AssemblyBase(objectId, 20),
|
||||
pwrStateMachine(switch1, switch2, pwrSwitcher),
|
||||
pwrTimeoutEvent(pwrTimeoutEvent),
|
||||
sideSwitchNotAllowedEvent(sideSwitchNotAllowedEvent),
|
||||
|
@ -18,8 +18,8 @@ class DualLaneAssemblyBase : public AssemblyBase, public ConfirmsFailuresIF {
|
||||
static constexpr UniqueEventId_t POWER_STATE_MACHINE_TIMEOUT_ID = 2;
|
||||
static constexpr UniqueEventId_t SIDE_SWITCH_TRANSITION_NOT_ALLOWED_ID = 3;
|
||||
|
||||
DualLaneAssemblyBase(object_id_t objectId, object_id_t parentId, PowerSwitchIF* pwrSwitcher,
|
||||
pcdu::Switches switch1, pcdu::Switches switch2, Event pwrSwitchTimeoutEvent,
|
||||
DualLaneAssemblyBase(object_id_t objectId, PowerSwitchIF* pwrSwitcher, pcdu::Switches switch1,
|
||||
pcdu::Switches switch2, Event pwrSwitchTimeoutEvent,
|
||||
Event sideSwitchNotAllowedEvent, Event transitionOtherSideFailedEvent);
|
||||
|
||||
protected:
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "EiveSystem.h"
|
||||
|
||||
EiveSystem::EiveSystem(object_id_t setObjectId, object_id_t parent, uint32_t maxNumberOfSequences,
|
||||
EiveSystem::EiveSystem(object_id_t setObjectId, uint32_t maxNumberOfSequences,
|
||||
uint32_t maxNumberOfTables)
|
||||
: Subsystem(setObjectId, parent, maxNumberOfSequences, maxNumberOfTables) {}
|
||||
: Subsystem(setObjectId, maxNumberOfSequences, maxNumberOfTables) {}
|
||||
|
@ -5,8 +5,7 @@
|
||||
|
||||
class EiveSystem : public Subsystem {
|
||||
public:
|
||||
EiveSystem(object_id_t setObjectId, object_id_t parent, uint32_t maxNumberOfSequences,
|
||||
uint32_t maxNumberOfTables);
|
||||
EiveSystem(object_id_t setObjectId, uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables);
|
||||
|
||||
private:
|
||||
};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "PayloadSubsystem.h"
|
||||
|
||||
PayloadSubsystem::PayloadSubsystem(object_id_t setObjectId, object_id_t parent,
|
||||
uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables)
|
||||
: Subsystem(setObjectId, parent, maxNumberOfSequences, maxNumberOfTables) {}
|
||||
PayloadSubsystem::PayloadSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences,
|
||||
uint32_t maxNumberOfTables)
|
||||
: Subsystem(setObjectId, maxNumberOfSequences, maxNumberOfTables) {}
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
class PayloadSubsystem : public Subsystem {
|
||||
public:
|
||||
PayloadSubsystem(object_id_t setObjectId, object_id_t parent, uint32_t maxNumberOfSequences,
|
||||
PayloadSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences,
|
||||
uint32_t maxNumberOfTables);
|
||||
|
||||
private:
|
||||
|
@ -1,8 +1,8 @@
|
||||
#include "RwAssembly.h"
|
||||
|
||||
RwAssembly::RwAssembly(object_id_t objectId, object_id_t parentId, PowerSwitchIF* pwrSwitcher,
|
||||
power::Switch_t switcher, RwHelper helper)
|
||||
: AssemblyBase(objectId, parentId), helper(helper), switcher(pwrSwitcher, switcher) {
|
||||
RwAssembly::RwAssembly(object_id_t objectId, PowerSwitchIF* pwrSwitcher, power::Switch_t switcher,
|
||||
RwHelper helper)
|
||||
: AssemblyBase(objectId), helper(helper), switcher(pwrSwitcher, switcher) {
|
||||
ModeListEntry entry;
|
||||
for (uint8_t idx = 0; idx < NUMBER_RWS; idx++) {
|
||||
entry.setObject(helper.rwIds[idx]);
|
||||
@ -167,16 +167,7 @@ bool RwAssembly::isUseable(object_id_t object, Mode_t mode) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ReturnValue_t RwAssembly::initialize() {
|
||||
ReturnValue_t result = returnvalue::OK;
|
||||
for (const auto& obj : helper.rwIds) {
|
||||
result = registerChild(obj);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return SubsystemBase::initialize();
|
||||
}
|
||||
ReturnValue_t RwAssembly::initialize() { return SubsystemBase::initialize(); }
|
||||
|
||||
void RwAssembly::handleModeTransitionFailed(ReturnValue_t result) {
|
||||
if (targetMode == MODE_OFF) {
|
||||
|
@ -12,8 +12,8 @@ struct RwHelper {
|
||||
|
||||
class RwAssembly : public AssemblyBase {
|
||||
public:
|
||||
RwAssembly(object_id_t objectId, object_id_t parentId, PowerSwitchIF* pwrSwitcher,
|
||||
power::Switch_t switcher, RwHelper helper);
|
||||
RwAssembly(object_id_t objectId, PowerSwitchIF* pwrSwitcher, power::Switch_t switcher,
|
||||
RwHelper helper);
|
||||
|
||||
private:
|
||||
static constexpr uint8_t NUMBER_RWS = 4;
|
||||
|
@ -4,9 +4,8 @@
|
||||
#include <fsfw/power/PowerSwitchIF.h>
|
||||
#include <fsfw/serviceinterface.h>
|
||||
|
||||
SusAssembly::SusAssembly(object_id_t objectId, object_id_t parentId, PowerSwitchIF* pwrSwitcher,
|
||||
SusAssHelper helper)
|
||||
: DualLaneAssemblyBase(objectId, parentId, pwrSwitcher, SWITCH_NOM, SWITCH_RED,
|
||||
SusAssembly::SusAssembly(object_id_t objectId, PowerSwitchIF* pwrSwitcher, SusAssHelper helper)
|
||||
: DualLaneAssemblyBase(objectId, pwrSwitcher, SWITCH_NOM, SWITCH_RED,
|
||||
POWER_STATE_MACHINE_TIMEOUT, SIDE_SWITCH_TRANSITION_NOT_ALLOWED,
|
||||
TRANSITION_OTHER_SIDE_FAILED),
|
||||
helper(helper),
|
||||
@ -121,16 +120,7 @@ ReturnValue_t SusAssembly::checkChildrenStateOn(Mode_t wantedMode, Submode_t wan
|
||||
return returnvalue::OK;
|
||||
}
|
||||
|
||||
ReturnValue_t SusAssembly::initialize() {
|
||||
ReturnValue_t result = returnvalue::OK;
|
||||
for (const auto& id : helper.susIds) {
|
||||
result = registerChild(id);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return AssemblyBase::initialize();
|
||||
}
|
||||
ReturnValue_t SusAssembly::initialize() { return AssemblyBase::initialize(); }
|
||||
|
||||
bool SusAssembly::isUseable(object_id_t object, Mode_t mode) {
|
||||
if (healthHelper.healthTable->isFaulty(object)) {
|
||||
|
@ -5,6 +5,8 @@
|
||||
#include <fsfw/devicehandlers/AssemblyBase.h>
|
||||
|
||||
#include "DualLaneAssemblyBase.h"
|
||||
#include "events/subsystemIdRanges.h"
|
||||
#include "returnvalues/classIds.h"
|
||||
|
||||
struct SusAssHelper {
|
||||
public:
|
||||
@ -38,8 +40,7 @@ class SusAssembly : public DualLaneAssemblyBase {
|
||||
static constexpr Event SIDE_SWITCH_TRANSITION_NOT_ALLOWED =
|
||||
event::makeEvent(SUBSYSTEM_ID, 3, severity::LOW);
|
||||
|
||||
SusAssembly(object_id_t objectId, object_id_t parentId, PowerSwitchIF* pwrSwitcher,
|
||||
SusAssHelper helper);
|
||||
SusAssembly(object_id_t objectId, PowerSwitchIF* pwrSwitcher, SusAssHelper helper);
|
||||
|
||||
private:
|
||||
enum class States { IDLE, SWITCHING_POWER, MODE_COMMANDING } state = States::IDLE;
|
||||
|
@ -3,10 +3,9 @@
|
||||
#include <fsfw/devicehandlers/DeviceHandlerIF.h>
|
||||
#include <fsfw/ipc/QueueFactory.h>
|
||||
|
||||
TcsBoardAssembly::TcsBoardAssembly(object_id_t objectId, object_id_t parentId,
|
||||
PowerSwitchIF* pwrSwitcher, power::Switch_t theSwitch,
|
||||
TcsBoardHelper helper)
|
||||
: AssemblyBase(objectId, parentId, 24), switcher(pwrSwitcher, theSwitch), helper(helper) {
|
||||
TcsBoardAssembly::TcsBoardAssembly(object_id_t objectId, PowerSwitchIF* pwrSwitcher,
|
||||
power::Switch_t theSwitch, TcsBoardHelper helper)
|
||||
: AssemblyBase(objectId, 24), switcher(pwrSwitcher, theSwitch), helper(helper) {
|
||||
eventQueue = QueueFactory::instance()->createMessageQueue(24);
|
||||
ModeListEntry entry;
|
||||
for (uint8_t idx = 0; idx < NUMBER_RTDS; idx++) {
|
||||
@ -90,16 +89,7 @@ ReturnValue_t TcsBoardAssembly::isModeCombinationValid(Mode_t mode, Submode_t su
|
||||
return HasModesIF::INVALID_MODE;
|
||||
}
|
||||
|
||||
ReturnValue_t TcsBoardAssembly::initialize() {
|
||||
ReturnValue_t result = returnvalue::OK;
|
||||
for (const auto& obj : helper.rtdInfos) {
|
||||
result = registerChild(obj.first);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return SubsystemBase::initialize();
|
||||
}
|
||||
ReturnValue_t TcsBoardAssembly::initialize() { return AssemblyBase::initialize(); }
|
||||
|
||||
void TcsBoardAssembly::startTransition(Mode_t mode, Submode_t submode) {
|
||||
if (mode != MODE_OFF) {
|
||||
|
@ -5,6 +5,9 @@
|
||||
#include <fsfw/devicehandlers/AssemblyBase.h>
|
||||
#include <fsfw/power/PowerSwitcher.h>
|
||||
|
||||
#include "events/subsystemIdRanges.h"
|
||||
#include "returnvalues/classIds.h"
|
||||
|
||||
struct TcsBoardHelper {
|
||||
TcsBoardHelper(std::array<std::pair<object_id_t, std::string>, 16> rtdInfos)
|
||||
: rtdInfos(std::move(rtdInfos)) {}
|
||||
@ -17,8 +20,8 @@ class TcsBoardAssembly : public AssemblyBase, public ConfirmsFailuresIF {
|
||||
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::TCS_BOARD_ASS;
|
||||
static constexpr Event CHILDREN_LOST_MODE = event::makeEvent(SUBSYSTEM_ID, 0, severity::MEDIUM);
|
||||
|
||||
TcsBoardAssembly(object_id_t objectId, object_id_t parentId, PowerSwitchIF* pwrSwitcher,
|
||||
power::Switch_t switcher, TcsBoardHelper helper);
|
||||
TcsBoardAssembly(object_id_t objectId, PowerSwitchIF* pwrSwitcher, power::Switch_t switcher,
|
||||
TcsBoardHelper helper);
|
||||
|
||||
ReturnValue_t initialize() override;
|
||||
|
||||
|
@ -1,6 +1,2 @@
|
||||
target_sources(${LIB_EIVE_MISSION} PRIVATE
|
||||
acsModeTree.cpp
|
||||
payloadModeTree.cpp
|
||||
system.cpp
|
||||
util.cpp
|
||||
)
|
||||
target_sources(${LIB_EIVE_MISSION} PRIVATE acsModeTree.cpp payloadModeTree.cpp
|
||||
system.cpp util.cpp)
|
||||
|
@ -1,16 +1,22 @@
|
||||
#include "acsModeTree.h"
|
||||
|
||||
#include <commonObjects.h>
|
||||
#include <fsfw/container/FixedMap.h>
|
||||
#include <fsfw/devicehandlers/DeviceHandlerIF.h>
|
||||
#include <fsfw/modes/HasModesIF.h>
|
||||
#include <fsfw/subsystem/Subsystem.h>
|
||||
#include <fsfw/subsystem/modes/ModeDefinitions.h>
|
||||
|
||||
#include "eive/objects.h"
|
||||
#include "mission/controller/controllerdefinitions/AcsControllerDefinitions.h"
|
||||
#include "util.h"
|
||||
|
||||
// Alias for checker function
|
||||
Subsystem satsystem::acs::ACS_SUBSYSTEM(objects::ACS_SUBSYSTEM, 12, 24);
|
||||
|
||||
namespace {
|
||||
// Alias for checker function
|
||||
const auto check = subsystem::checkInsert;
|
||||
|
||||
void checkInsert(ReturnValue_t result, const char* ctx);
|
||||
void buildOffSequence(Subsystem* ss, ModeListEntry& eh);
|
||||
void buildDetumbleSequence(Subsystem* ss, ModeListEntry& entryHelper);
|
||||
void buildSafeSequence(Subsystem* ss, ModeListEntry& entryHelper);
|
||||
@ -19,7 +25,7 @@ void buildIdleChargeSequence(Subsystem* ss, ModeListEntry& entryHelper);
|
||||
void buildTargetPtSequence(Subsystem* ss, ModeListEntry& entryHelper);
|
||||
} // namespace
|
||||
|
||||
const auto check = subsystem::checkInsert;
|
||||
|
||||
static const auto OFF = HasModesIF::MODE_OFF;
|
||||
static const auto NML = DeviceHandlerIF::MODE_NORMAL;
|
||||
|
||||
@ -69,7 +75,7 @@ auto ACS_TABLE_IDLE_CHRG_TRANS_1 = std::make_pair(
|
||||
auto ACS_SEQUENCE_TARGET_PT =
|
||||
std::make_pair(acs::CtrlModes::TARGET_PT, FixedArrayList<ModeListEntry, 3>());
|
||||
auto ACS_TABLE_TARGET_PT_TGT =
|
||||
std::make_pair((acs::CtrlModes::TARGET_PT << 24) | 1, FixedArrayList<ModeListEntry, 5>());
|
||||
std::make_pair((acs::CtrlModes::TARGET_PT << 24) | 1, FixedArrayList<ModeListEntry, 6>());
|
||||
auto ACS_TABLE_TARGET_PT_TRANS_0 =
|
||||
std::make_pair((acs::CtrlModes::TARGET_PT << 24) | 2, FixedArrayList<ModeListEntry, 5>());
|
||||
auto ACS_TABLE_TARGET_PT_TRANS_1 =
|
||||
@ -77,14 +83,13 @@ auto ACS_TABLE_TARGET_PT_TRANS_1 =
|
||||
|
||||
void satsystem::acs::init() {
|
||||
ModeListEntry entry;
|
||||
Subsystem* acsSubsystem = new Subsystem(objects::ACS_SUBSYSTEM, objects::EIVE_SYSTEM, 12, 24);
|
||||
buildOffSequence(acsSubsystem, entry);
|
||||
buildSafeSequence(acsSubsystem, entry);
|
||||
buildDetumbleSequence(acsSubsystem, entry);
|
||||
buildIdleSequence(acsSubsystem, entry);
|
||||
buildIdleChargeSequence(acsSubsystem, entry);
|
||||
buildTargetPtSequence(acsSubsystem, entry);
|
||||
acsSubsystem->setInitialMode(OFF);
|
||||
buildOffSequence(&ACS_SUBSYSTEM, entry);
|
||||
buildSafeSequence(&ACS_SUBSYSTEM, entry);
|
||||
buildDetumbleSequence(&ACS_SUBSYSTEM, entry);
|
||||
buildIdleSequence(&ACS_SUBSYSTEM, entry);
|
||||
buildIdleChargeSequence(&ACS_SUBSYSTEM, entry);
|
||||
buildTargetPtSequence(&ACS_SUBSYSTEM, entry);
|
||||
ACS_SUBSYSTEM.setInitialMode(HasModesIF::MODE_OFF);
|
||||
}
|
||||
|
||||
namespace {
|
||||
@ -152,7 +157,7 @@ void buildSafeSequence(Subsystem* ss, ModeListEntry& eh) {
|
||||
iht(objects::IMTQ_HANDLER, NML, 0, ACS_TABLE_SAFE_TGT.second);
|
||||
iht(objects::SUS_BOARD_ASS, NML, 0, ACS_TABLE_SAFE_TGT.second);
|
||||
iht(objects::ACS_BOARD_ASS, NML, 0, ACS_TABLE_SAFE_TGT.second);
|
||||
check(ss->addTable(&ACS_TABLE_SAFE_TGT.second, ACS_TABLE_OFF_TGT.first, false, true), ctxc);
|
||||
check(ss->addTable(&ACS_TABLE_SAFE_TGT.second, ACS_TABLE_SAFE_TGT.first, false, true), ctxc);
|
||||
|
||||
// Build SAFE transition 0
|
||||
iht(objects::IMTQ_HANDLER, NML, 0, ACS_TABLE_SAFE_TRANS_0.second);
|
||||
@ -172,7 +177,7 @@ void buildSafeSequence(Subsystem* ss, ModeListEntry& eh) {
|
||||
ihs(ACS_SEQUENCE_SAFE.second, ACS_TABLE_SAFE_TGT.first, 0, true);
|
||||
ihs(ACS_SEQUENCE_SAFE.second, ACS_TABLE_SAFE_TRANS_0.first, 0, false);
|
||||
ihs(ACS_SEQUENCE_SAFE.second, ACS_TABLE_SAFE_TRANS_1.first, 0, false);
|
||||
check(ss->addSequence(&ACS_SEQUENCE_SAFE.second, ACS_SEQUENCE_SAFE.first, ACS_SEQUENCE_OFF.first,
|
||||
check(ss->addSequence(&ACS_SEQUENCE_SAFE.second, ACS_SEQUENCE_SAFE.first, ACS_SEQUENCE_SAFE.first,
|
||||
false, true),
|
||||
ctxc);
|
||||
}
|
||||
@ -385,4 +390,17 @@ void buildTargetPtSequence(Subsystem* ss, ModeListEntry& eh) {
|
||||
ctxc);
|
||||
}
|
||||
|
||||
void checkInsert(ReturnValue_t result, const char* ctx) {
|
||||
if (result != returnvalue::OK) {
|
||||
sif::warning << "satsystem::checkInsert: Insertion failed at " << ctx;
|
||||
if (result == mapdefs::KEY_ALREADY_EXISTS) {
|
||||
sif::warning << ": Key already exists" << std::endl;
|
||||
} else if (result == mapdefs::MAP_FULL) {
|
||||
sif::warning << ": Map full" << std::endl;
|
||||
} else {
|
||||
sif::warning << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@ -5,7 +5,8 @@ class Subsystem;
|
||||
namespace satsystem {
|
||||
namespace acs {
|
||||
|
||||
extern Subsystem ACS_SUBSYSTEM;
|
||||
void init();
|
||||
|
||||
}
|
||||
} // namespace acs
|
||||
} // namespace satsystem
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "payloadModeTree.h"
|
||||
|
||||
#include <commonObjects.h>
|
||||
#include "eive/objects.h"
|
||||
#include <fsfw/devicehandlers/DeviceHandlerIF.h>
|
||||
#include <fsfw/modes/HasModesIF.h>
|
||||
#include <fsfw/retval.h>
|
||||
@ -74,7 +74,7 @@ auto PL_TABLE_SCEX_TRANS_0 =
|
||||
|
||||
void satsystem::pl::init() {
|
||||
ModeListEntry entry;
|
||||
Subsystem* plSubsystem = new Subsystem(objects::PL_SUBSYSTEM, objects::EIVE_SYSTEM, 12, 24);
|
||||
Subsystem* plSubsystem = new Subsystem(objects::PL_SUBSYSTEM, 12, 24);
|
||||
initOffSequence(plSubsystem, entry);
|
||||
initPlMpsocStreamSequence(plSubsystem, entry);
|
||||
initPlCamStreamSequence(plSubsystem, entry);
|
||||
@ -112,7 +112,7 @@ void initOffSequence(Subsystem* ss, ModeListEntry& eh) {
|
||||
// Build OFF transition 0
|
||||
iht(objects::PLOC_SWITCHER, OFF, 0, PL_TABLE_OFF_TRANS.second);
|
||||
iht(objects::CAM_SWITCHER, OFF, 0, PL_TABLE_OFF_TRANS.second);
|
||||
iht(objects::SCEX_HANDLER, OFF, 0, PL_TABLE_OFF_TRANS.second);
|
||||
iht(objects::SCEX, OFF, 0, PL_TABLE_OFF_TRANS.second);
|
||||
iht(objects::PLPCDU_HANDLER, OFF, 0, PL_TABLE_OFF_TRANS.second);
|
||||
iht(objects::PLOC_SUBSYSTEM, OFF, 0, PL_TABLE_OFF_TRANS.second);
|
||||
check(ss->addTable(TableEntry(PL_TABLE_OFF_TRANS.first, &PL_TABLE_OFF_TRANS.second)), ctxc);
|
||||
@ -158,7 +158,7 @@ void initPlMpsocStreamSequence(Subsystem* ss, ModeListEntry& eh) {
|
||||
// Build MPSoC stream transition 0
|
||||
iht(objects::PLOC_SWITCHER, ON, 0, PL_TABLE_MPSOC_STREAM_TRANS_0.second);
|
||||
iht(objects::CAM_SWITCHER, OFF, 0, PL_TABLE_MPSOC_STREAM_TRANS_0.second);
|
||||
iht(objects::SCEX_HANDLER, OFF, 0, PL_TABLE_MPSOC_STREAM_TRANS_0.second);
|
||||
iht(objects::SCEX, OFF, 0, PL_TABLE_MPSOC_STREAM_TRANS_0.second);
|
||||
check(ss->addTable(
|
||||
TableEntry(PL_TABLE_MPSOC_STREAM_TRANS_0.first, &PL_TABLE_MPSOC_STREAM_TRANS_0.second)),
|
||||
ctxc);
|
||||
@ -209,7 +209,7 @@ void initPlCamStreamSequence(Subsystem* ss, ModeListEntry& eh) {
|
||||
// PLOC is actively commanded off here
|
||||
iht(objects::PLOC_SUBSYSTEM, OFF, 0, PL_TABLE_MPSOC_STREAM_TRANS_0.second);
|
||||
iht(objects::CAM_SWITCHER, ON, 0, PL_TABLE_MPSOC_STREAM_TRANS_0.second);
|
||||
iht(objects::SCEX_HANDLER, OFF, 0, PL_TABLE_MPSOC_STREAM_TRANS_0.second);
|
||||
iht(objects::SCEX, OFF, 0, PL_TABLE_MPSOC_STREAM_TRANS_0.second);
|
||||
check(ss->addTable(
|
||||
TableEntry(PL_TABLE_MPSOC_STREAM_TRANS_0.first, &PL_TABLE_MPSOC_STREAM_TRANS_0.second)),
|
||||
ctxc);
|
||||
@ -345,12 +345,12 @@ void initScexSequence(Subsystem* ss, ModeListEntry& eh) {
|
||||
};
|
||||
|
||||
// Build SCEX target
|
||||
iht(objects::SCEX_HANDLER, NML, 0, PL_TABLE_SCEX_TGT.second);
|
||||
iht(objects::SCEX, NML, 0, PL_TABLE_SCEX_TGT.second);
|
||||
check(ss->addTable(TableEntry(PL_TABLE_EARTH_OBSV_TGT.first, &PL_TABLE_EARTH_OBSV_TGT.second)),
|
||||
ctxc);
|
||||
|
||||
// Build SCEX transition 0
|
||||
iht(objects::SCEX_HANDLER, NML, 0, PL_TABLE_SCEX_TGT.second);
|
||||
iht(objects::SCEX, NML, 0, PL_TABLE_SCEX_TGT.second);
|
||||
check(ss->addTable(TableEntry(PL_TABLE_SCEX_TRANS_0.first, &PL_TABLE_SCEX_TRANS_0.second)), ctxc);
|
||||
|
||||
// Build SCEX sequence
|
||||
|
Reference in New Issue
Block a user