ACS updates #365
@ -121,6 +121,9 @@ void satsystem::acs::init() {
|
|||||||
buildDetumbleSequence(ACS_SUBSYSTEM, entry);
|
buildDetumbleSequence(ACS_SUBSYSTEM, entry);
|
||||||
buildIdleSequence(ACS_SUBSYSTEM, entry);
|
buildIdleSequence(ACS_SUBSYSTEM, entry);
|
||||||
buildTargetPtSequence(ACS_SUBSYSTEM, entry);
|
buildTargetPtSequence(ACS_SUBSYSTEM, entry);
|
||||||
|
buildTargetPtGsSequence(ACS_SUBSYSTEM, entry);
|
||||||
|
buildTargetPtNadirSequence(ACS_SUBSYSTEM, entry);
|
||||||
|
buildTargetPtInertialSequence(ACS_SUBSYSTEM, entry);
|
||||||
ACS_SUBSYSTEM.setInitialMode(::acs::CtrlSubmode::SAFE);
|
ACS_SUBSYSTEM.setInitialMode(::acs::CtrlSubmode::SAFE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,7 +315,7 @@ void buildIdleSequence(Subsystem& ss, ModeListEntry& eh) {
|
|||||||
// Build IDLE sequence
|
// Build IDLE sequence
|
||||||
ihs(ACS_SEQUENCE_IDLE.second, ACS_TABLE_IDLE_TGT.first, 0, true);
|
ihs(ACS_SEQUENCE_IDLE.second, ACS_TABLE_IDLE_TGT.first, 0, true);
|
||||||
ihs(ACS_SEQUENCE_IDLE.second, ACS_TABLE_IDLE_TRANS_0.first, 0, true);
|
ihs(ACS_SEQUENCE_IDLE.second, ACS_TABLE_IDLE_TRANS_0.first, 0, true);
|
||||||
ihs(ACS_SEQUENCE_IDLE.second, ACS_TABLE_IDLE_TRANS_1.first, 0, false);
|
ihs(ACS_SEQUENCE_IDLE.second, ACS_TABLE_IDLE_TRANS_1.first, 0, true);
|
||||||
ss.addSequence(&ACS_SEQUENCE_IDLE.second, ACS_SEQUENCE_IDLE.first, ACS_SEQUENCE_SAFE.first, false,
|
ss.addSequence(&ACS_SEQUENCE_IDLE.second, ACS_SEQUENCE_IDLE.first, ACS_SEQUENCE_SAFE.first, false,
|
||||||
true);
|
true);
|
||||||
}
|
}
|
||||||
@ -359,7 +362,7 @@ void buildTargetPtSequence(Subsystem& ss, ModeListEntry& eh) {
|
|||||||
// Build IDLE sequence
|
// Build IDLE sequence
|
||||||
ihs(ACS_SEQUENCE_PTG_TARGET.second, ACS_TABLE_PTG_TARGET_TGT.first, 0, true);
|
ihs(ACS_SEQUENCE_PTG_TARGET.second, ACS_TABLE_PTG_TARGET_TGT.first, 0, true);
|
||||||
ihs(ACS_SEQUENCE_PTG_TARGET.second, ACS_TABLE_PTG_TRANS_0.first, 0, true);
|
ihs(ACS_SEQUENCE_PTG_TARGET.second, ACS_TABLE_PTG_TRANS_0.first, 0, true);
|
||||||
ihs(ACS_SEQUENCE_PTG_TARGET.second, ACS_TABLE_PTG_TARGET_TRANS_1.first, 0, false);
|
ihs(ACS_SEQUENCE_PTG_TARGET.second, ACS_TABLE_PTG_TARGET_TRANS_1.first, 0, true);
|
||||||
check(ss.addSequence(&ACS_SEQUENCE_PTG_TARGET.second, ACS_SEQUENCE_PTG_TARGET.first,
|
check(ss.addSequence(&ACS_SEQUENCE_PTG_TARGET.second, ACS_SEQUENCE_PTG_TARGET.first,
|
||||||
ACS_SEQUENCE_IDLE.first, false, true),
|
ACS_SEQUENCE_IDLE.first, false, true),
|
||||||
ctxc);
|
ctxc);
|
||||||
@ -409,14 +412,62 @@ void buildTargetPtNadirSequence(Subsystem& ss, ModeListEntry& eh) {
|
|||||||
// Build IDLE sequence
|
// Build IDLE sequence
|
||||||
ihs(ACS_SEQUENCE_PTG_TARGET_NADIR.second, ACS_TABLE_PTG_TARGET_NADIR_TGT.first, 0, true);
|
ihs(ACS_SEQUENCE_PTG_TARGET_NADIR.second, ACS_TABLE_PTG_TARGET_NADIR_TGT.first, 0, true);
|
||||||
ihs(ACS_SEQUENCE_PTG_TARGET_NADIR.second, ACS_TABLE_PTG_TARGET_NADIR_TRANS_0.first, 0, true);
|
ihs(ACS_SEQUENCE_PTG_TARGET_NADIR.second, ACS_TABLE_PTG_TARGET_NADIR_TRANS_0.first, 0, true);
|
||||||
ihs(ACS_SEQUENCE_PTG_TARGET_NADIR.second, ACS_TABLE_PTG_TARGET_NADIR_TRANS_1.first, 0, false);
|
ihs(ACS_SEQUENCE_PTG_TARGET_NADIR.second, ACS_TABLE_PTG_TARGET_NADIR_TRANS_1.first, 0, true);
|
||||||
check(
|
check(
|
||||||
ss.addSequence(SequenceEntry(ACS_SEQUENCE_PTG_TARGET_NADIR.first,
|
ss.addSequence(SequenceEntry(ACS_SEQUENCE_PTG_TARGET_NADIR.first,
|
||||||
&ACS_SEQUENCE_PTG_TARGET_NADIR.second, ACS_SEQUENCE_IDLE.first)),
|
&ACS_SEQUENCE_PTG_TARGET_NADIR.second, ACS_SEQUENCE_IDLE.first)),
|
||||||
ctxc);
|
ctxc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void buildTargetPtGsSequence(Subsystem& ss, ModeListEntry& entryHelper) {}
|
void buildTargetPtGsSequence(Subsystem& ss, ModeListEntry& eh) {
|
||||||
|
std::string context = "satsystem::acs::buildTargetPtGsSequence";
|
||||||
|
auto ctxc = context.c_str();
|
||||||
|
// Insert Helper Table
|
||||||
|
auto iht = [&](object_id_t obj, Mode_t mode, Submode_t submode,
|
||||||
|
ArrayList<ModeListEntry>& sequence) {
|
||||||
|
eh.setObject(obj);
|
||||||
|
eh.setMode(mode);
|
||||||
|
eh.setSubmode(submode);
|
||||||
|
check(sequence.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);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Build TARGET PT table
|
||||||
|
iht(objects::ACS_CONTROLLER, NML, acs::CtrlSubmode::PTG_TARGET_GS,
|
||||||
|
ACS_TABLE_PTG_TARGET_NADIR_TGT.second);
|
||||||
|
iht(objects::IMTQ_HANDLER, NML, 0, ACS_TABLE_PTG_TARGET_GS_TGT.second);
|
||||||
|
iht(objects::SUS_BOARD_ASS, NML, 0, ACS_TABLE_PTG_TARGET_GS_TGT.second);
|
||||||
|
iht(objects::ACS_BOARD_ASS, NML, 0, ACS_TABLE_PTG_TARGET_GS_TGT.second);
|
||||||
|
iht(objects::RW_ASS, NML, 0, ACS_TABLE_PTG_TARGET_GS_TGT.second);
|
||||||
|
iht(objects::STAR_TRACKER, NML, 0, ACS_TABLE_PTG_TARGET_GS_TGT.second);
|
||||||
|
check(ss.addTable(
|
||||||
|
TableEntry(ACS_TABLE_PTG_TARGET_GS_TGT.first, &ACS_TABLE_PTG_TARGET_GS_TGT.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
check(ss.addTable(TableEntry(ACS_TABLE_PTG_TRANS_0.first, &ACS_TABLE_PTG_TRANS_0.second)), ctxc);
|
||||||
|
|
||||||
|
// Build TARGET PT transition 1
|
||||||
|
iht(objects::ACS_CONTROLLER, NML, acs::CtrlSubmode::PTG_TARGET_GS,
|
||||||
|
ACS_TABLE_PTG_TARGET_GS_TRANS_1.second);
|
||||||
|
check(ss.addTable(TableEntry(ACS_TABLE_PTG_TARGET_GS_TRANS_1.first,
|
||||||
|
&ACS_TABLE_PTG_TARGET_GS_TRANS_1.second)),
|
||||||
|
ctxc);
|
||||||
|
|
||||||
|
// Build IDLE sequence
|
||||||
|
ihs(ACS_SEQUENCE_PTG_TARGET_GS.second, ACS_TABLE_PTG_TARGET_GS_TGT.first, 0, true);
|
||||||
|
ihs(ACS_SEQUENCE_PTG_TARGET_GS.second, ACS_TABLE_PTG_TARGET_GS_TRANS_0.first, 0, true);
|
||||||
|
ihs(ACS_SEQUENCE_PTG_TARGET_GS.second, ACS_TABLE_PTG_TARGET_GS_TRANS_1.first, 0, true);
|
||||||
|
check(ss.addSequence(SequenceEntry(ACS_SEQUENCE_PTG_TARGET_GS.first,
|
||||||
|
&ACS_SEQUENCE_PTG_TARGET_GS.second, ACS_SEQUENCE_IDLE.first)),
|
||||||
|
ctxc);
|
||||||
|
}
|
||||||
|
|
||||||
void buildTargetPtInertialSequence(Subsystem& ss, ModeListEntry& entryHelper) {}
|
void buildTargetPtInertialSequence(Subsystem& ss, ModeListEntry& entryHelper) {}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user