diff --git a/bsp_q7s/core/CMakeLists.txt b/bsp_q7s/core/CMakeLists.txt index 8731b7a3..30538565 100644 --- a/bsp_q7s/core/CMakeLists.txt +++ b/bsp_q7s/core/CMakeLists.txt @@ -1,4 +1,5 @@ target_sources(${OBSW_NAME} PRIVATE + acsModeTree.cpp CoreController.cpp obsw.cpp InitMission.cpp diff --git a/bsp_q7s/core/acsModeTree.cpp b/bsp_q7s/core/acsModeTree.cpp new file mode 100644 index 00000000..c097d971 --- /dev/null +++ b/bsp_q7s/core/acsModeTree.cpp @@ -0,0 +1,72 @@ +#include + +#include "acsModeTree.h" +#include +#include +#include + +FixedArrayList ACS_SEQUENCE_OFF = FixedArrayList(); +FixedArrayList ACS_TABLE_OFF_TGT = FixedArrayList(); +FixedArrayList ACS_TABLE_OFF_TRANS = FixedArrayList(); + +static constexpr Mode_t ACS_SEQUENCE_OFF_ID = HasModesIF::MODE_OFF; +static constexpr Mode_t ACS_TABLE_OFF_TGT_ID = 0x61000000; +static constexpr Mode_t ACS_TABLE_OFF_TRANS_ID = 0x61000001; + +void satsystem::acsSubsystemInit() { + ModeListEntry entry; + Subsystem *acsSubsystem = new Subsystem(objects::ACS_SUBSYSTEM, objects::EIVE_SYSTEM, 20, 20); + buildOffSequence(acsSubsystem, entry); +} + +void satsystem::buildOffSequence(Subsystem* ss, ModeListEntry& eh) { + // Build OFF target + ss->addTable(&ACS_TABLE_OFF_TGT, ACS_TABLE_OFF_TGT_ID, false, true); + + // Build OFF transition + eh.setObject(objects::ACS_CONTROLLER); + eh.setMode(HasModesIF::MODE_OFF); + eh.setSubmode(0); + ACS_TABLE_OFF_TRANS.insert(eh); + + eh.setObject(objects::IMTQ_HANDLER); + eh.setMode(HasModesIF::MODE_OFF); + eh.setSubmode(0); + ACS_TABLE_OFF_TRANS.insert(eh); + + eh.setObject(objects::STAR_TRACKER); + eh.setMode(HasModesIF::MODE_OFF); + eh.setSubmode(0); + ACS_TABLE_OFF_TRANS.insert(eh); + + eh.setObject(objects::ACS_BOARD_ASS); + eh.setMode(HasModesIF::MODE_OFF); + eh.setSubmode(0); + ACS_TABLE_OFF_TRANS.insert(eh); + + eh.setObject(objects::SUS_BOARD_ASS); + eh.setMode(HasModesIF::MODE_OFF); + eh.setSubmode(0); + ACS_TABLE_OFF_TRANS.insert(eh); + + eh.setObject(objects::RW_ASS); + eh.setMode(HasModesIF::MODE_OFF); + eh.setSubmode(0); + ACS_TABLE_OFF_TRANS.insert(eh); + + ss->addTable(&ACS_TABLE_OFF_TRANS, ACS_TABLE_OFF_TRANS_ID, false, true); + + // Build OFF sequence + eh.setTableId(ACS_TABLE_OFF_TGT_ID); + eh.setWaitSeconds(0); + eh.setCheckSuccess(false); + ACS_SEQUENCE_OFF.insert(eh); + + eh.setTableId(ACS_TABLE_OFF_TRANS_ID); + eh.setWaitSeconds(0); + eh.setCheckSuccess(false); + ACS_SEQUENCE_OFF.insert(eh); + + ss->addSequence(&ACS_SEQUENCE_OFF, ACS_SEQUENCE_OFF_ID, ACS_SEQUENCE_OFF_ID, false, true); + ss->setInitialMode(HasModesIF::MODE_OFF); +} diff --git a/bsp_q7s/core/acsModeTree.h b/bsp_q7s/core/acsModeTree.h new file mode 100644 index 00000000..34811349 --- /dev/null +++ b/bsp_q7s/core/acsModeTree.h @@ -0,0 +1,10 @@ +#include + +class Subsystem; + +namespace satsystem { + +void acsSubsystemInit(); +void buildOffSequence(Subsystem* ss, ModeListEntry& entryHelper); + +} diff --git a/common/config/commonObjects.h b/common/config/commonObjects.h index a4f3319e..0b27a023 100644 --- a/common/config/commonObjects.h +++ b/common/config/commonObjects.h @@ -97,7 +97,10 @@ enum commonObjects: uint32_t { // 0x73 ('s') for assemblies and system/subsystem components ACS_BOARD_ASS = 0x73000001, SUS_BOARD_ASS = 0x73000002, - TCS_BOARD_ASS = 0x73000003 + TCS_BOARD_ASS = 0x73000003, + RW_ASS = 0x73000004, + ACS_SUBSYSTEM = 0x73010001, + EIVE_SYSTEM = 0x73010000, }; } diff --git a/generators/fsfwgen b/generators/fsfwgen index 5ad9fb94..19e8ee90 160000 --- a/generators/fsfwgen +++ b/generators/fsfwgen @@ -1 +1 @@ -Subproject commit 5ad9fb94af3312d29863527106396395f7b808a5 +Subproject commit 19e8ee90be12f72ceb8c2aefdfd665b5babad417