From b3a238b5a064f68f874b6966055014c8fa70c012 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 4 Oct 2022 14:12:33 +0200 Subject: [PATCH] add ACS subsystem commands --- config/definitions.py | 5 +- pus_tc/cmd_definitions.py | 58 +------------ pus_tc/procedure_packer.py | 3 +- pus_tc/system/proc.py | 5 +- tmtc/__init__.py | 1 + pus_tc/system/acs.py => tmtc/acs_board.py | 100 +++++++++++----------- tmtc/acs_subsystem.py | 42 +++++++++ tmtc/sus_board.py | 79 +++++++++++++++++ 8 files changed, 181 insertions(+), 112 deletions(-) rename pus_tc/system/acs.py => tmtc/acs_board.py (56%) create mode 100644 tmtc/acs_subsystem.py create mode 100644 tmtc/sus_board.py diff --git a/config/definitions.py b/config/definitions.py index f905724..a7e91ce 100644 --- a/config/definitions.py +++ b/config/definitions.py @@ -51,8 +51,9 @@ class CustomServiceList(str, enum.Enum): STR_IMG_HELPER = "str_img_helper" SYRLINKS = "syrlinks" ACS_CTRL = "acs_ctrl" - ACS_ASS = "acs_ass" - SUS_ASS = "sus_ass" + ACS_SS = "acs_subsysten" + ACS_BRD_ASS = "acs_brd_ass" + SUS_BRD_ASS = "sus_brd_ass" TCS = "tcs" TCS_ASS = "tcs_ass" TIME = "time" diff --git a/pus_tc/cmd_definitions.py b/pus_tc/cmd_definitions.py index f9fe83e..14d9fbb 100644 --- a/pus_tc/cmd_definitions.py +++ b/pus_tc/cmd_definitions.py @@ -1,6 +1,7 @@ from pus_tc.devs.bpx_batt import BpxOpCodes from config.definitions import CustomServiceList +from tmtc.sus_board import SusOpCodes from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry, CoreServiceList from tmtccmd.config.tmtc import ( tmtc_definitions_provider, @@ -207,65 +208,8 @@ def add_imtq_cmds(defs: TmtcDefinitionWrapper): @tmtc_definitions_provider def add_system_cmds(defs: TmtcDefinitionWrapper): - from pus_tc.system.acs import AcsOpCodes, SusOpCodes import pus_tc.system.controllers as controllers - oce = OpCodeEntry() - oce.add( - keys=AcsOpCodes.ACS_ASS_A_SIDE, - info="Switch to ACS board A side", - ) - oce.add( - keys=AcsOpCodes.ACS_ASS_B_SIDE, - info="Switch to ACS board B side", - ) - oce.add( - keys=AcsOpCodes.ACS_ASS_DUAL_MODE, - info="Switch to ACS board dual mode", - ) - oce.add( - keys=AcsOpCodes.ACS_ASS_A_ON, - info="Switch ACS board A side on", - ) - oce.add( - keys=AcsOpCodes.ACS_ASS_B_ON, - info="Switch ACS board B side on", - ) - oce.add( - keys=AcsOpCodes.ACS_ASS_DUAL_ON, - info="Switch ACS board dual mode on", - ) - oce.add( - keys=AcsOpCodes.ACS_ASS_OFF, - info="Switch off ACS board", - ) - defs.add_service( - name=CustomServiceList.ACS_ASS.value, info="ACS Assemblies", op_code_entry=oce - ) - - 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_ASS.value, - info="SUS Assembly", - op_code_entry=oce, - ) - oce = OpCodeEntry() oce.add( keys=controllers.OpCodes.THERMAL_CONTROLLER, diff --git a/pus_tc/procedure_packer.py b/pus_tc/procedure_packer.py index 4e3e1d9..0981288 100644 --- a/pus_tc/procedure_packer.py +++ b/pus_tc/procedure_packer.py @@ -39,7 +39,8 @@ from pus_tc.system.core import pack_core_commands from pus_tc.devs.star_tracker import pack_star_tracker_commands from pus_tc.devs.syrlinks_hk_handler import pack_syrlinks_command from pus_tc.devs.gps import pack_gps_command -from pus_tc.system.acs import pack_acs_command, pack_sus_cmds +from tmtc.acs_board import pack_acs_command +from tmtc.sus_board import pack_sus_cmds from pus_tc.devs.plpcdu import pack_pl_pcdu_commands from pus_tc.devs.str_img_helper import pack_str_img_helper_command from pus_tc.system.tcs import pack_tcs_sys_commands diff --git a/pus_tc/system/proc.py b/pus_tc/system/proc.py index 7782176..01c4abb 100644 --- a/pus_tc/system/proc.py +++ b/pus_tc/system/proc.py @@ -28,16 +28,15 @@ from pus_tc.devs.mgms import MgmLis3SetIds as MgmLis3SetIds_0_2 from pus_tc.devs.mgms import MgmRm3100SetIds as MgmRm3100SetIds_1_3 from pus_tc.devs.gyros import AdisGyroSetIds as AdisGyroSetIds_0_2 from pus_tc.devs.gyros import L3gGyroSetIds as L3gGyroSetIds_1_3 -from pus_tc.devs.syrlinks_hk_handler import OpCodes as SyrlinksOpCodes from pus_tc.devs.syrlinks_hk_handler import SetIds as SyrlinksSetIds -from pus_tc.devs.star_tracker import OpCodes as StrOpCodes from pus_tc.devs.gps import SetIds as GpsSetIds from pus_tc.devs.imtq import ImtqSetIds from pus_tc.devs.sus import SetIds from pus_tc.devs.star_tracker import SetIds as StrSetIds from pus_tc.devs.reaction_wheels import RwSetIds from pus_tc.system.controllers import pack_cmd_ctrl_to_off, pack_cmd_ctrl_to_nml -from pus_tc.system.acs import pack_acs_command, pack_sus_cmds +from tmtc.acs_board import pack_acs_command +from tmtc.sus_board import pack_sus_cmds from pus_tc.devs.imtq import pack_imtq_test_into, pack_dipole_command from pus_tc.devs.star_tracker import pack_star_tracker_commands from pus_tc.devs.reaction_wheels import pack_rw_ass_cmds, pack_set_speed_command diff --git a/tmtc/__init__.py b/tmtc/__init__.py index e69de29..8d644b7 100644 --- a/tmtc/__init__.py +++ b/tmtc/__init__.py @@ -0,0 +1 @@ +from .acs_subsystem import add_acs_subsystem_cmds diff --git a/pus_tc/system/acs.py b/tmtc/acs_board.py similarity index 56% rename from pus_tc/system/acs.py rename to tmtc/acs_board.py index 6c6005c..d62ac22 100644 --- a/pus_tc/system/acs.py +++ b/tmtc/acs_board.py @@ -1,27 +1,26 @@ import enum +from config.definitions import CustomServiceList +from tmtccmd.config.tmtc import ( + tmtc_definitions_provider, + TmtcDefinitionWrapper, + OpCodeEntry, +) from tmtccmd.tc import DefaultPusQueueHelper from tmtccmd.tc.pus_200_fsfw_modes import Modes -from config.object_ids import ACS_BOARD_ASS_ID, SUS_BOARD_ASS_ID +from config.object_ids import ACS_BOARD_ASS_ID -from .common import command_mode +from pus_tc.system.common import command_mode class AcsOpCodes: - ACS_ASS_A_SIDE = ["0", "acs-a"] - ACS_ASS_B_SIDE = ["1", "acs-b"] - ACS_ASS_DUAL_MODE = ["2", "acs-d"] - ACS_ASS_OFF = ["3", "acs-off"] - ACS_ASS_A_ON = ["4", "acs-ao"] - ACS_ASS_B_ON = ["5", "acs-bo"] - ACS_ASS_DUAL_ON = ["6", "acs-do"] - - -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"] + ACS_ASS_A_SIDE = ["0", "a"] + ACS_ASS_B_SIDE = ["1", "b"] + ACS_ASS_DUAL_MODE = ["2", "d"] + ACS_ASS_OFF = ["3", "off"] + ACS_ASS_A_ON = ["4", "ao"] + ACS_ASS_B_ON = ["5", "bo"] + ACS_ASS_DUAL_ON = ["6", "do"] class DualSideSubmodes(enum.IntEnum): @@ -89,36 +88,39 @@ def pack_acs_command(q: DefaultPusQueueHelper, op_code: str): ) -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_acs_board_cmds(defs: TmtcDefinitionWrapper): + oce = OpCodeEntry() + oce.add( + keys=AcsOpCodes.ACS_ASS_A_SIDE, + info="Switch to ACS board A side", + ) + oce.add( + keys=AcsOpCodes.ACS_ASS_B_SIDE, + info="Switch to ACS board B side", + ) + oce.add( + keys=AcsOpCodes.ACS_ASS_DUAL_MODE, + info="Switch to ACS board dual mode", + ) + oce.add( + keys=AcsOpCodes.ACS_ASS_A_ON, + info="Switch ACS board A side on", + ) + oce.add( + keys=AcsOpCodes.ACS_ASS_B_ON, + info="Switch ACS board B side on", + ) + oce.add( + keys=AcsOpCodes.ACS_ASS_DUAL_ON, + info="Switch ACS board dual mode on", + ) + oce.add( + keys=AcsOpCodes.ACS_ASS_OFF, + info="Switch off ACS board", + ) + defs.add_service( + name=CustomServiceList.ACS_BRD_ASS.value, + info="ACS Board Assemblie", + op_code_entry=oce, + ) diff --git a/tmtc/acs_subsystem.py b/tmtc/acs_subsystem.py new file mode 100644 index 0000000..277d01c --- /dev/null +++ b/tmtc/acs_subsystem.py @@ -0,0 +1,42 @@ +import enum + +from config.definitions import CustomServiceList +from tmtccmd.config.tmtc import ( + tmtc_definitions_provider, + TmtcDefinitionWrapper, + OpCodeEntry, +) +from tmtccmd.tc import service_provider +from tmtccmd.tc.decorator import ServiceProviderParams + + +class OpCodes(str, enum.Enum): + OFF = "off" + SAFE = "safe" + IDLE = "idle" + + +class Info(str, enum.Enum): + OFF = "Off Command" + SAFE = "Safe Mode Command" + IDLE = "Idle Mode Command" + + +@service_provider(CustomServiceList.ACS_SS.value) +def build_acs_subsystem_cmd(p: ServiceProviderParams): + op_code = p.op_code + if op_code == OpCodes.OFF: + pass + if op_code == OpCodes.SAFE: + pass + if op_code == OpCodes.IDLE: + pass + + +@tmtc_definitions_provider +def add_acs_subsystem_cmds(defs: TmtcDefinitionWrapper): + oce = OpCodeEntry() + oce.add(OpCodes.OFF, Info.OFF) + oce.add(OpCodes.SAFE, Info.SAFE) + oce.add(OpCodes.IDLE, Info.IDLE) + defs.add_service(CustomServiceList.ACS_SS, "ACS Subsystem", oce) diff --git a/tmtc/sus_board.py b/tmtc/sus_board.py new file mode 100644 index 0000000..2411695 --- /dev/null +++ b/tmtc/sus_board.py @@ -0,0 +1,79 @@ +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, + )