diff --git a/mission/system/tree/tcsModeTree.cpp b/mission/system/tree/tcsModeTree.cpp index 693af140..6af8129b 100644 --- a/mission/system/tree/tcsModeTree.cpp +++ b/mission/system/tree/tcsModeTree.cpp @@ -17,10 +17,10 @@ void buildNormalSequence(Subsystem& ss, ModeListEntry& eh); static const auto OFF = HasModesIF::MODE_OFF; static const auto NML = DeviceHandlerIF::MODE_NORMAL; -auto TCS_SEQUENCE_OFF = std::make_pair(OFF << 24, FixedArrayList()); -auto TCS_TABLE_OFF_TGT = std::make_pair((OFF << 24) | 1, FixedArrayList()); -auto TCS_TABLE_OFF_TRANS_0 = std::make_pair((OFF << 24) | 2, FixedArrayList()); -auto TCS_TABLE_OFF_TRANS_1 = std::make_pair((OFF << 24) | 2, FixedArrayList()); +auto TCS_SEQUENCE_OFF = std::make_pair(OFF << 24, FixedArrayList()); +auto TCS_TABLE_OFF_TGT = std::make_pair((OFF << 24) | 1, FixedArrayList()); +auto TCS_TABLE_OFF_TRANS_0 = std::make_pair((OFF << 24) | 2, FixedArrayList()); +auto TCS_TABLE_OFF_TRANS_1 = std::make_pair((OFF << 24) | 2, FixedArrayList()); auto TCS_SEQUENCE_NORMAL = std::make_pair(NML << 24, FixedArrayList()); auto TCS_TABLE_NORMAL_TGT = std::make_pair((NML << 24) | 1, FixedArrayList()); @@ -36,8 +36,47 @@ void satsystem::tcs::init() { namespace { -void buildOffSequence(Subsystem& ss, ModeListEntry& eh) {} +void buildOffSequence(Subsystem& ss, ModeListEntry& eh) { + std::string context = "satsystem::tcs::buildOffSequence"; + auto ctxc = context.c_str(); + // Insert Helper Table + auto iht = [&](object_id_t obj, Mode_t mode, Submode_t submode, ArrayList& table) { + eh.setObject(obj); + eh.setMode(mode); + eh.setSubmode(submode); + check(table.insert(eh), ctxc); + }; + // Insert Helper Sequence + auto ihs = [&](ArrayList& sequence, Mode_t tableId, uint32_t waitSeconds, + bool checkSuccess) { + eh.setTableId(tableId); + eh.setWaitSeconds(waitSeconds); + eh.setCheckSuccess(checkSuccess); + check(sequence.insert(eh), ctxc); + }; + + // OFF target table is empty + check(ss.addTable(&TCS_TABLE_OFF_TGT.second, TCS_TABLE_OFF_TGT.first, false, true), ctxc); + + iht(objects::TCS_BOARD_ASS, OFF, 0, TCS_TABLE_OFF_TRANS_0.second); + iht(objects::TMP1075_HANDLER_TCS_0, OFF, 0, TCS_TABLE_OFF_TRANS_0.second); + iht(objects::TMP1075_HANDLER_TCS_1, OFF, 0, TCS_TABLE_OFF_TRANS_0.second); + iht(objects::TMP1075_HANDLER_PLPCDU_0, OFF, 0, TCS_TABLE_OFF_TRANS_0.second); + iht(objects::TMP1075_HANDLER_PLPCDU_1, OFF, 0, TCS_TABLE_OFF_TRANS_0.second); + iht(objects::TMP1075_HANDLER_IF_BOARD, OFF, 0, TCS_TABLE_OFF_TRANS_0.second); + check(ss.addTable(&TCS_TABLE_OFF_TRANS_0.second, TCS_TABLE_OFF_TRANS_0.first, false, true), ctxc); + + iht(objects::THERMAL_CONTROLLER, OFF, 0, TCS_TABLE_OFF_TRANS_0.second); + check(ss.addTable(&TCS_TABLE_OFF_TRANS_1.second, TCS_TABLE_OFF_TRANS_1.first, false, true), ctxc); + + ihs(TCS_SEQUENCE_OFF.second, TCS_TABLE_OFF_TGT.first, 0, false); + ihs(TCS_SEQUENCE_OFF.second, TCS_TABLE_OFF_TRANS_0.first, 0, false); + ihs(TCS_SEQUENCE_OFF.second, TCS_TABLE_OFF_TRANS_1.first, 0, false); + check(ss.addSequence(&TCS_SEQUENCE_OFF.second, TCS_SEQUENCE_OFF.first, TCS_SEQUENCE_OFF.first, + false, true), + ctxc); +} void buildNormalSequence(Subsystem& ss, ModeListEntry& eh) {} - + // TODO: Implement } // namespace