from config.definitions import CustomServiceList from config.object_ids import SUS_BOARD_ASS_ID from tmtc.acs_board import DualSideSubmodes from pus_tc.system.common import command_mode from tmtccmd.config.tmtc import ( tmtc_definitions_provider, TmtcDefinitionWrapper, OpCodeEntry, ) from tmtccmd.tc import DefaultPusQueueHelper from tmtccmd.tc.pus_200_fsfw_modes import Modes class SusOpCodes: SUS_ASS_NOM_SIDE = ["0", "sus-nom"] SUS_ASS_RED_SIDE = ["1", "sus-red"] SUS_ASS_DUAL_MODE = ["2", "sus-d"] SUS_ASS_OFF = ["3", "sus-off"] def pack_sus_cmds(q: DefaultPusQueueHelper, op_code: str): if op_code in SusOpCodes.SUS_ASS_NOM_SIDE: command_mode( object_id=SUS_BOARD_ASS_ID, mode=Modes.NORMAL, submode=DualSideSubmodes.A_SIDE, q=q, info="Switching to SUS board to nominal side", ) if op_code in SusOpCodes.SUS_ASS_RED_SIDE: command_mode( object_id=SUS_BOARD_ASS_ID, mode=Modes.NORMAL, submode=DualSideSubmodes.B_SIDE, q=q, info="Switching to SUS board to redundant side", ) if op_code in SusOpCodes.SUS_ASS_OFF: command_mode( object_id=SUS_BOARD_ASS_ID, mode=Modes.OFF, submode=0, q=q, info="Switching SUS board off", ) if op_code in SusOpCodes.SUS_ASS_DUAL_MODE: command_mode( object_id=SUS_BOARD_ASS_ID, mode=Modes.NORMAL, submode=DualSideSubmodes.DUAL_SIDE, q=q, info="Switching to SUS board to dual side", ) @tmtc_definitions_provider def add_sus_board_cmds(defs: TmtcDefinitionWrapper): oce = OpCodeEntry() oce.add( keys=SusOpCodes.SUS_ASS_NOM_SIDE, info="Switch SUS board to nominal side", ) oce.add( keys=SusOpCodes.SUS_ASS_RED_SIDE, info="Switch SUS board to redundant side", ) oce.add( keys=SusOpCodes.SUS_ASS_OFF, info="Switch off SUS board", ) oce.add( keys=SusOpCodes.SUS_ASS_DUAL_MODE, info="Switch SUS board to dual mode", ) defs.add_service( name=CustomServiceList.SUS_BRD_ASS.value, info="SUS Board Assembly", op_code_entry=oce, )