from tmtccmd.config import ( add_op_code_entry, add_service_op_code_entry, generate_op_code_options, ServiceOpCodeDictT, OpCodeDictKeys, ) from config.definitions import CustomServiceList from pus_tc.bpx_batt import BpxOpCodes def add_bpx_cmd_definitions(cmd_dict: ServiceOpCodeDictT): op_code_dict = dict() add_op_code_entry( op_code_dict=op_code_dict, keys=BpxOpCodes.HK, info="Request BPX HK" ) add_op_code_entry( op_code_dict=op_code_dict, keys=BpxOpCodes.RST_BOOT_CNT, info="Reset Boot Count" ) add_op_code_entry( op_code_dict=op_code_dict, keys=BpxOpCodes.REQUEST_CFG, info="Request Configuration Struct (Step 1)", ) add_op_code_entry( op_code_dict=op_code_dict, keys=BpxOpCodes.REQUEST_CFG_HK, info="Request Configuration Struct HK (Step 2)", ) add_op_code_entry( op_code_dict=op_code_dict, keys=BpxOpCodes.REBOOT, info="Reboot Command" ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name=CustomServiceList.BPX_BATTERY.value, info="BPX Battery Handler", op_code_entry=op_code_dict, ) def add_core_controller_definitions(cmd_dict: ServiceOpCodeDictT): from pus_tc.core import OpCodes od = dict() add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT, info="Reboot with Prompt") add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_SELF, info="Reboot Self") add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_0_0, info="Reboot 0 0") add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_0_1, info="Reboot 0 1") add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_1_0, info="Reboot 1 0") add_op_code_entry(op_code_dict=od, keys=OpCodes.REBOOT_1_1, info="Reboot 1 1") add_op_code_entry( op_code_dict=od, keys=OpCodes.ENABLE_REBOOT_FILE_HANDLING, info="Enable reboot file handling", ) add_op_code_entry( op_code_dict=od, keys=OpCodes.DISABLE_REBOOT_FILE_HANDLING, info="Disable reboot file handling", ) add_op_code_entry( op_code_dict=od, keys=OpCodes.RESET_ALL_REBOOT_COUNTERS, info="Reset all reboot counters", ) add_op_code_entry( op_code_dict=od, keys=OpCodes.RESET_REBOOT_COUNTER_00, info="Reset reboot counter 0 0", ) add_op_code_entry( op_code_dict=od, keys=OpCodes.RESET_REBOOT_COUNTER_01, info="Reset reboot counter 0 1", ) add_op_code_entry( op_code_dict=od, keys=OpCodes.RESET_REBOOT_COUNTER_10, info="Reset reboot counter 1 0", ) add_op_code_entry( op_code_dict=od, keys=OpCodes.RESET_REBOOT_COUNTER_11, info="Reset reboot counter 1 1", ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name=CustomServiceList.CORE.value, info="Reboot Self", op_code_entry=od, ) def add_pl_pcdu_cmds(cmd_dict: ServiceOpCodeDictT): from pus_tc.plpcdu import OpCodes op_code_dict = dict() add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.SWITCH_ON, info="Switch PL PCDU on" ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.SWITCH_ADC_NORMAL, info="Switch PL PCDU ADC normal, submode ADC ON" ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.SWITCH_OFF, info="Switch PL PCDU off" ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.SWITCH_ALL_NORMAL, info="Switch all PL PCDU modules normal, submode ALL ON", options=generate_op_code_options(enter_listener_mode=True) ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.UPDATE_DRO_TO_X8_WAIT, info="Update DRO to X8 wait time", ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.INJECT_SSR_TO_DRO_FAILURE, info="Inject failure SSR to DRO transition" ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.INJECT_DRO_TO_X8_FAILURE, info="Inject failure in DRO to X8 transition" ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.INJECT_X8_TO_TX_FAILURE, info="Inject failure in X8 to TX transition" ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.INJECT_TX_TO_MPA_FAILURE, info="Inject failure in TX to MPA transition" ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.INJECT_MPA_TO_HPA_FAILURE, info="Inject failure in MPA to HPA transition" ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.INJECT_ALL_ON_FAILURE, info="Inject failure in all on mode" ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name=CustomServiceList.PL_PCDU.value, info="PL PCDU", op_code_entry=op_code_dict, ) def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT): from pus_tc.p60dock import P60OpCodes, GomspaceOpCodes from pus_tc.pdu1 import Pdu1OpCodes from pus_tc.pdu2 import Pdu2OpCodes op_code_dict = dict() add_op_code_entry(op_code_dict=op_code_dict, keys="0", info="P60 Tests") add_op_code_entry( op_code_dict=op_code_dict, keys=P60OpCodes.STACK_3V3_ON.value, info="P60 Dock: Turn stack 3V3 on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=P60OpCodes.STACK_3V3_OFF.value, info="P60 Dock: Turn stack 3V3 off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=P60OpCodes.STACK_5V_ON.value, info="P60 Dock: Turn stack 5V on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=P60OpCodes.STACK_5V_OFF.value, info="P60 Dock: Turn stack 5V off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.PRINT_SWITCH_V_I.value, info="P60 Dock: Print Switches, Voltages, Currents", ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name=CustomServiceList.P60DOCK.value, info="P60 Device", op_code_entry=op_code_dict, ) op_code_dict = dict() add_op_code_entry(op_code_dict=op_code_dict, keys="0", info="PDU1 Tests") add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.TCS_BOARD_ON.value, info="PDU1: Turn TCS board on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.TCS_BOARD_OFF.value, info="PDU1: Turn TCS board off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.STAR_TRACKER_ON.value, info="PDU1: Turn star tracker on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.STAR_TRACKER_OFF.value, info="PDU1: Turn star tracker off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.SUS_NOMINAL_ON.value, info="PDU1: Turn SUS nominal on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.SUS_NOMINAL_OFF.value, info="PDU1: Turn SUS nominal off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.ACS_A_SIDE_ON.value, info="PDU1: Turn ACS A side on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.ACS_A_SIDE_OFF.value, info="PDU1: Turn ACS A side off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.SYRLINKS_ON.value, info="PDU1: Turn Syrlinks on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.SYRLINKS_OFF.value, info="PDU1: Turn Syrlinks off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.MGT_ON.value, info="PDU1: Turn MGT on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.MGT_OFF.value, info="PDU1: Turn MGT on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.SCEX_ON.value, info="PDU1: Turn Solar Cell Experiment on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.SCEX_OFF.value, info="PDU1: Turn Solar Cell Experiment off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.PRINT_SWITCH_V_I.value, info="PDU1: Print Switches, Voltages, Currents", ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name=CustomServiceList.PDU1.value, info="PDU1 Device", op_code_entry=op_code_dict, ) op_code_dict = dict() add_op_code_entry( op_code_dict=op_code_dict, keys="0", info="PDU2 Tests", options={OpCodeDictKeys.TIMEOUT: 2.0}, ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.ACS_SIDE_B_ON.value, info="PDU2: Turn ACS Side B on", options={OpCodeDictKeys.TIMEOUT: 2.0}, ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.ACS_SIDE_B_OFF.value, info="PDU2: Turn ACS Side B off", options={OpCodeDictKeys.TIMEOUT: 2.0}, ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.SUS_REDUNDANT_ON.value, info="PDU2: Turn SUS redundant on", options={OpCodeDictKeys.TIMEOUT: 2.0}, ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.SUS_REDUNDANT_OFF.value, info="PDU2: Turn SUS redundant off", options={OpCodeDictKeys.TIMEOUT: 2.0}, ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.RW_ON.value, info="PDU2: Turn reaction wheels on", options={OpCodeDictKeys.TIMEOUT: 2.0}, ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.RW_OFF.value, info="PDU2: Turn reaction wheels off", options={OpCodeDictKeys.TIMEOUT: 2.0}, ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.Q7S_OFF.value, info="Q7S Off", options={OpCodeDictKeys.TIMEOUT: 2.0}, ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.PRINT_SWITCH_V_I.value, info="PDU2: Print Switches, Voltages, Currents", options={OpCodeDictKeys.TIMEOUT: 2.0}, ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name="pdu2", info="PDU2 Device", op_code_entry=op_code_dict, ) def add_imtq_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict_srv_imtq = { "0": ("IMTQ Tests All", {OpCodeDictKeys.TIMEOUT: 2.0}), "1": ("IMTQ perform pos X self test", {OpCodeDictKeys.TIMEOUT: 2.0}), "2": ("IMTQ perform neg X self test", {OpCodeDictKeys.TIMEOUT: 2.0}), "3": ("IMTQ perform pos Y self test", {OpCodeDictKeys.TIMEOUT: 2.0}), "4": ("IMTQ perform neg Y self test", {OpCodeDictKeys.TIMEOUT: 2.0}), "5": ("IMTQ perform pos Z self test", {OpCodeDictKeys.TIMEOUT: 2.0}), "6": ("IMTQ perform neg Z self test", {OpCodeDictKeys.TIMEOUT: 2.0}), "7": ("IMTQ command dipole", {OpCodeDictKeys.TIMEOUT: 2.0}), "8": ("IMTQ get commanded dipole", {OpCodeDictKeys.TIMEOUT: 2.0}), } service_imtq_tuple = ("IMTQ Device", op_code_dict_srv_imtq) cmd_dict[CustomServiceList.IMTQ.value] = service_imtq_tuple def add_rw_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict_srv_rw = { "0": ("Reaction Wheel: Run all commands", {OpCodeDictKeys.TIMEOUT: 2.0}), "1": ("Reaction Wheel: Set speed", {OpCodeDictKeys.TIMEOUT: 2.0}), "2": ("Reaction Wheel: Set mode on", {OpCodeDictKeys.TIMEOUT: 2.0}), "3": ("Reaction Wheel: Set mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}), "4": ("Reaction Wheel: Set mode off", {OpCodeDictKeys.TIMEOUT: 2.0}), "5": ( "Reaction Wheel: Send get-telemetry-command", {OpCodeDictKeys.TIMEOUT: 2.0}, ), } service_rw_tuple = ("Reaction Wheel", op_code_dict_srv_rw) cmd_dict[CustomServiceList.REACTION_WHEEL_1.value] = service_rw_tuple cmd_dict[CustomServiceList.REACTION_WHEEL_2.value] = service_rw_tuple cmd_dict[CustomServiceList.REACTION_WHEEL_3.value] = service_rw_tuple cmd_dict[CustomServiceList.REACTION_WHEEL_4.value] = service_rw_tuple def add_rad_sens_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict_srv_rad_sensor = { "0": ("Radiation Sensor: Set mode on", {OpCodeDictKeys.TIMEOUT: 2.0}), "1": ("Radiation Sensor: Set mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}), "2": ("Radiation Sensor: Set mode off", {OpCodeDictKeys.TIMEOUT: 2.0}), } service_rad_sensor_tuple = ("Radiation Sensor", op_code_dict_srv_rad_sensor) cmd_dict[CustomServiceList.RAD_SENSOR.value] = service_rad_sensor_tuple def add_ploc_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict_ploc_mem_dumper = { "0": ("PLOC Memory Dumper: MRAM dump", {OpCodeDictKeys.TIMEOUT: 2.0}), } service_ploc_memory_dumper_tuple = ( "PLOC Memory Dumper", op_code_dict_ploc_mem_dumper, ) op_code_dict_srv_ploc_supv = { "0": ("PLOC Supervisor: Set mode on", {OpCodeDictKeys.TIMEOUT: 2.0}), "1": ("PLOC Supervisor: Set mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}), "2": ("PLOC Supervisor: Set mode off", {OpCodeDictKeys.TIMEOUT: 2.0}), "3": ("PLOC Supervisor: Get HK Report", {OpCodeDictKeys.TIMEOUT: 2.0}), "4": ("PLOC Supervisor: Restart MPSoC", {OpCodeDictKeys.TIMEOUT: 2.0}), "5": ("PLOC Supervisor: Start MPSoC", {OpCodeDictKeys.TIMEOUT: 2.0}), "6": ("PLOC Supervisor: Shutdown MPSoC", {OpCodeDictKeys.TIMEOUT: 2.0}), "7": ( "PLOC Supervisor: Select MPSoC boot image", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "8": ("PLOC Supervisor: Set max restart tries", {OpCodeDictKeys.TIMEOUT: 2.0}), "9": ("PLOC Supervisor: Reset MPSoC", {OpCodeDictKeys.TIMEOUT: 2.0}), "10": ("PLOC Supervisor: Set time reference", {OpCodeDictKeys.TIMEOUT: 2.0}), "11": ("PLOC Supervisor: Set boot timeout", {OpCodeDictKeys.TIMEOUT: 2.0}), "12": ("PLOC Supervisor: Disable Hk", {OpCodeDictKeys.TIMEOUT: 2.0}), "13": ( "PLOC Supervisor: Request boot status report", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "14": ("PLOC Supervisor: Update available", {OpCodeDictKeys.TIMEOUT: 2.0}), "15": ("PLOC Supervisor: Watchdogs enable", {OpCodeDictKeys.TIMEOUT: 2.0}), "16": ( "PLOC Supervisor: Watchdog Configure Timeout", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "17": ("PLOC Supervisor: Enable latchup alert", {OpCodeDictKeys.TIMEOUT: 2.0}), "18": ("PLOC Supervisor: Disable latchup alert", {OpCodeDictKeys.TIMEOUT: 2.0}), "19": ("PLOC Supervisor: Auto calibrate alert", {OpCodeDictKeys.TIMEOUT: 2.0}), "20": ("PLOC Supervisor: Set alert limit", {OpCodeDictKeys.TIMEOUT: 2.0}), "21": ("PLOC Supervisor: Set alert irq filter", {OpCodeDictKeys.TIMEOUT: 2.0}), "22": ("PLOC Supervisor: Set ADC sweep period", {OpCodeDictKeys.TIMEOUT: 2.0}), "23": ( "PLOC Supervisor: Set ADC enabled channels", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "24": ( "PLOC Supervisor: Set ADC window and stride", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "25": ("PLOC Supervisor: Set ADC threshold", {OpCodeDictKeys.TIMEOUT: 2.0}), "26": ( "PLOC Supervisor: Request latchup status report", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "27": ("PLOC Supervisor: Copy ADC data to MRAM", {OpCodeDictKeys.TIMEOUT: 2.0}), "28": ( "PLOC Supervisor: Enable/Disable NVM0/1/3", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "29": ("PLOC Supervisor: Select NVM", {OpCodeDictKeys.TIMEOUT: 2.0}), "30": ("PLOC Supervisor: Run auto EM tests", {OpCodeDictKeys.TIMEOUT: 2.0}), "31": ("PLOC Supervisor: MRAM Wipe", {OpCodeDictKeys.TIMEOUT: 2.0}), "33": ("PLOC Supervisor: Print CPU stats", {OpCodeDictKeys.TIMEOUT: 2.0}), "34": ("PLOC Supervisor: Set debug verbosity", {OpCodeDictKeys.TIMEOUT: 2.0}), "35": ("PLOC Supervisor: Set GPIO", {OpCodeDictKeys.TIMEOUT: 2.0}), "36": ("PLOC Supervisor: Read GPIO", {OpCodeDictKeys.TIMEOUT: 2.0}), "37": ("PLOC Supervisor: Restart supervisor", {OpCodeDictKeys.TIMEOUT: 2.0}), "38": ( "PLOC Supervisor: Factory reset clear all", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "39": ( "PLOC Supervisor: Factory reset clear mirror entries", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "40": ( "PLOC Supervisor: Factory reset clear circular entries", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "41": ("PLOC Supervisor: CAN loopback test", {OpCodeDictKeys.TIMEOUT: 2.0}), } service_ploc_supv_tuple = ("PLOC Supervisor", op_code_dict_srv_ploc_supv) op_code_dict_srv_ploc_updater = { "0": ( "Ploc Updater: Update uboot on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "1": ( "Ploc Updater: Update bitstream on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "2": ( "Ploc Updater: Update linux on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "3": ( "Ploc Updater: Update application on partition A", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "4": ( "Ploc Updater: Update uboot on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "5": ( "Ploc Updater: Update bitstream on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "6": ( "Ploc Updater: Update linux on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "7": ( "Ploc Updater: Update application on partition B", {OpCodeDictKeys.TIMEOUT: 2.0}, ), } service_ploc_updater_tuple = ("Ploc Updater", op_code_dict_srv_ploc_updater) cmd_dict[CustomServiceList.PLOC_SUPV.value] = service_ploc_supv_tuple cmd_dict[CustomServiceList.PLOC_UPDATER.value] = service_ploc_updater_tuple cmd_dict[CustomServiceList.PLOC_MEMORY_DUMPER.value] = service_ploc_memory_dumper_tuple