from pus_tc.devs.gps import GpsOpCodes 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.devs.heater import add_heater_cmds from pus_tc.devs.reaction_wheels import add_rw_cmds from pus_tc.devs.bpx_batt import BpxOpCodes def get_eive_service_op_code_dict(service_op_code_dict: ServiceOpCodeDictT): add_bpx_cmd_definitions(cmd_dict=service_op_code_dict) add_core_controller_definitions(cmd_dict=service_op_code_dict) add_pl_pcdu_cmds(cmd_dict=service_op_code_dict) add_pcdu_cmds(cmd_dict=service_op_code_dict) add_imtq_cmds(cmd_dict=service_op_code_dict) add_rad_sens_cmds(cmd_dict=service_op_code_dict) add_rw_cmds(cmd_dict=service_op_code_dict) add_ploc_mpsoc_cmds(cmd_dict=service_op_code_dict) add_ploc_supv_cmds(cmd_dict=service_op_code_dict) add_system_cmds(cmd_dict=service_op_code_dict) add_time_cmds(cmd_dict=service_op_code_dict) add_syrlinks_cmds(cmd_dict=service_op_code_dict) add_gps_cmds(cmd_dict=service_op_code_dict) add_str_cmds(cmd_dict=service_op_code_dict) add_ccsds_cmds(cmd_dict=service_op_code_dict) add_pdec_cmds(cmd_dict=service_op_code_dict) add_heater_cmds(cmd_dict=service_op_code_dict) add_tmp_sens_cmds(cmd_dict=service_op_code_dict) def add_tmp_sens_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict = { "0": ("TMP1075 Tests", {OpCodeDictKeys.TIMEOUT: 2.2}), } service_tuple = ("TMP1075 1", op_code_dict) cmd_dict[CustomServiceList.TMP1075_1.value] = service_tuple service_tuple = ("TMP1075 2", op_code_dict) cmd_dict[CustomServiceList.TMP1075_2.value] = service_tuple def add_pdec_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict_srv_pdec_handler = { "0": ("PDEC Handler: Print CLCW", {OpCodeDictKeys.TIMEOUT: 2.0}), "1": ("PDEC Handler: Print PDEC monitor", {OpCodeDictKeys.TIMEOUT: 2.0}), } service_pdec_handler_tuple = ("PDEC Handler", op_code_dict_srv_pdec_handler) cmd_dict[CustomServiceList.PDEC_HANDLER.value] = service_pdec_handler_tuple def add_ccsds_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict_srv_ccsds_handler = { "0": ("CCSDS Handler: Set low rate", {OpCodeDictKeys.TIMEOUT: 2.0}), "1": ("CCSDS Handler: Set high rate", {OpCodeDictKeys.TIMEOUT: 2.0}), "2": ("CCSDS Handler: Enable transmitter", {OpCodeDictKeys.TIMEOUT: 2.0}), "3": ("CCSDS Handler: Disable transmitter", {OpCodeDictKeys.TIMEOUT: 2.0}), "4": ("CCSDS Handler: Set arbitrary bitrate", {OpCodeDictKeys.TIMEOUT: 2.0}), "5": ( "CCSDS Handler: Enable tx clock manipulator", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "6": ( "CCSDS Handler: Disable tx clock manipulator", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "7": ( "CCSDS Handler: Update tx data on rising edge", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "8": ( "CCSDS Handler: Update tx data on falling edge", {OpCodeDictKeys.TIMEOUT: 2.0}, ), } service_ccsds_handler_tuple = ("CCSDS Handler", op_code_dict_srv_ccsds_handler) cmd_dict[CustomServiceList.CCSDS_HANDLER.value] = service_ccsds_handler_tuple def add_gps_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict = { GpsOpCodes.RESET_GNSS.value: ("Reset GPS", {OpCodeDictKeys.TIMEOUT: 2.0}) } service_tuple = ("GPS 0", op_code_dict) cmd_dict[CustomServiceList.GPS_0.value] = service_tuple cmd_dict[CustomServiceList.GPS_1.value] = service_tuple def add_str_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict_srv_star_tracker = { "0": ( "Star Tracker: Mode On, Submode Bootloader", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "1": ("Star Tracker: Mode On, Submode Firmware", {OpCodeDictKeys.TIMEOUT: 2.0}), "2": ("Star Tracker: Mode Normal", {OpCodeDictKeys.TIMEOUT: 2.0}), "3": ("Star Tracker: Mode Off", {OpCodeDictKeys.TIMEOUT: 2.0}), "4": ("Star Tracker: Mode Raw", {OpCodeDictKeys.TIMEOUT: 2.0}), "5": ("Star Tracker: Ping", {OpCodeDictKeys.TIMEOUT: 5.0}), "6": ( "Star Tracker: Switch to bootloader program", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "7": ("Star Tracker: Request temperature", {OpCodeDictKeys.TIMEOUT: 2.0}), "8": ("Star Tracker: Request version", {OpCodeDictKeys.TIMEOUT: 2.0}), "9": ("Star Tracker: Request interface", {OpCodeDictKeys.TIMEOUT: 2.0}), "10": ("Star Tracker: Request power", {OpCodeDictKeys.TIMEOUT: 2.0}), "11": ( "Star Tracker: Set subscription parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "12": ( "Star Tracker: Boot image (requires bootloader mode)", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "13": ("Star Tracker: Request time", {OpCodeDictKeys.TIMEOUT: 2.0}), "14": ("Star Tracker: Request solution", {OpCodeDictKeys.TIMEOUT: 2.0}), "15": ("Star Tracker: Upload image", {OpCodeDictKeys.TIMEOUT: 2.0}), "16": ("Star Tracker: Download image", {OpCodeDictKeys.TIMEOUT: 2.0}), "17": ("Star Tracker: Set limit parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), "18": ("Star Tracker: Set tracking parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), "19": ("Star Tracker: Set mounting parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), "20": ("Star Tracker: Set camera parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), "22": ( "Star Tracker: Set centroiding parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "23": ("Star Tracker: Set LISA parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), "24": ("Star Tracker: Set matching parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), "25": ( "Star Tracker: Set validation parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "26": ("Star Tracker: Set algo parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), "27": ("Star Tracker: Take image", {OpCodeDictKeys.TIMEOUT: 2.0}), "28": ("Star Tracker: Stop str helper", {OpCodeDictKeys.TIMEOUT: 2.0}), "30": ( "Star Tracker: Set name of download image", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "31": ("Star Tracker: Request histogram", {OpCodeDictKeys.TIMEOUT: 2.0}), "32": ("Star Tracker: Request contrast", {OpCodeDictKeys.TIMEOUT: 2.0}), "33": ("Star Tracker: Set json filename", {OpCodeDictKeys.TIMEOUT: 2.0}), "35": ("Star Tracker: Flash read", {OpCodeDictKeys.TIMEOUT: 2.0}), "36": ("Star Tracker: Set flash read filename", {OpCodeDictKeys.TIMEOUT: 2.0}), "37": ("Star Tracker: Get checksum", {OpCodeDictKeys.TIMEOUT: 2.0}), "49": ("Star Tracker: Request camera parameter", {OpCodeDictKeys.TIMEOUT: 2.0}), "50": ("Star Tracker: Request limits", {OpCodeDictKeys.TIMEOUT: 2.0}), "51": ( "Star Tracker: Set image processor parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "52": ( "Star Tracker: (EGSE only) Load camera ground config ", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "53": ( "Star Tracker: (EGSE only) Load camera flight config", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "54": ( "Star Tracker: Request log level parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "55": ( "Star Tracker: Request mounting parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "56": ( "Star Tracker: Request image processor parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "57": ( "Star Tracker: Request centroiding parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "58": ("Star Tracker: Request lisa parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), "59": ( "Star Tracker: Request matching parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "60": ( "Star Tracker: Request tracking parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "61": ( "Star Tracker: Request validation parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "62": ("Star Tracker: Request algo parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), "63": ( "Star Tracker: Request subscription parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "64": ( "Star Tracker: Request log subscription parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "65": ( "Star Tracker: Request debug camera parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "66": ("Star Tracker: Set log level parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), "67": ( "Star Tracker: Set log subscription parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "68": ( "Star Tracker: Set debug camera parameters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "69": ("Star Tracker: Firmware update", {OpCodeDictKeys.TIMEOUT: 2.0}), "70": ( "Star Tracker: Disable timestamp generation", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "71": ( "Star Tracker: Enable timestamp generation", {OpCodeDictKeys.TIMEOUT: 2.0}, ), } service_star_tracker_tuple = ("Star tracker", op_code_dict_srv_star_tracker) cmd_dict[CustomServiceList.STAR_TRACKER.value] = service_star_tracker_tuple def add_syrlinks_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict_srv_syrlinks_handler = { "0": ("Syrlinks Handler: Set mode off", {OpCodeDictKeys.TIMEOUT: 2.0}), "1": ("Syrlinks Handler: Set mode on", {OpCodeDictKeys.TIMEOUT: 2.0}), "2": ("Syrlinks Handler: Set mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}), "3": ("Syrlinks Handler: Set TX standby", {OpCodeDictKeys.TIMEOUT: 2.0}), "4": ("Syrlinks Handler: Set TX modulation", {OpCodeDictKeys.TIMEOUT: 2.0}), "5": ("Syrlinks Handler: Set TX carrier wave", {OpCodeDictKeys.TIMEOUT: 2.0}), "6": ("Syrlinks Handler: Read TX status", {OpCodeDictKeys.TIMEOUT: 2.0}), "7": ("Syrlinks Handler: Read TX waveform", {OpCodeDictKeys.TIMEOUT: 2.0}), "8": ( "Syrlinks Handler: Read TX AGC value high byte ", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "9": ( "Syrlinks Handler: Read TX AGC value low byte ", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "12": ( "Syrlinks Handler: Write LCL config", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "13": ( "Syrlinks Handler: Read RX status registers", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "14": ( "Syrlinks Handler: Read LCL config register", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "15": ( "Syrlinks Handler: Set waveform OQPSK", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "16": ( "Syrlinks Handler: Set waveform BPSK", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "17": ( "Syrlinks Handler: Set second config", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "18": ( "Syrlinks Handler: Enable debug output", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "19": ( "Syrlinks Handler: Disable debug output", {OpCodeDictKeys.TIMEOUT: 2.0}, ), } service_syrlinks_handler_tuple = ( "Syrlinks Handler", op_code_dict_srv_syrlinks_handler, ) cmd_dict[CustomServiceList.SYRLINKS.value] = service_syrlinks_handler_tuple 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.system.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_op_code_entry( op_code_dict=od, keys=OpCodes.GET_HK, info="Request housekeeping set", ) 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.devs.plpcdu import OpCodes, Info op_code_dict = dict() add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.SWITCH_ON, info=Info.SWITCH_ON ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.NORMAL_SSR, info=Info.NORMAL_SSR, ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.NORMAL_DRO, info=Info.NORMAL_DRO, ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.NORMAL_X8, info=Info.NORMAL_X8, ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.NORMAL_TX, info=Info.NORMAL_TX, ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.NORMAL_MPA, info=Info.NORMAL_MPA, ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.NORMAL_HPA, info=Info.NORMAL_HPA, ) add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.SWITCH_OFF, info=Info.SWITCH_OFF ) 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_time_cmds(cmd_dict: ServiceOpCodeDictT): from pus_tc.system.time import OpCodes, Info op_code_dict = dict() add_op_code_entry( op_code_dict=op_code_dict, keys=OpCodes.SET_CURRENT_TIME, info=Info.SET_CURRENT_TIME, ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name=CustomServiceList.TIME.value, info="Time Service", op_code_entry=op_code_dict, ) def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT): from pus_tc.devs.p60dock import P60OpCodes, GomspaceOpCodes, Info from pus_tc.devs.pdu1 import Pdu1OpCodes from pus_tc.devs.pdu2 import Pdu2OpCodes from gomspace.gomspace_common import Info as GsInfo op_code_dict = dict() add_op_code_entry( op_code_dict=op_code_dict, keys=P60OpCodes.STACK_3V3_ON, info=Info.STACK_3V3_ON, ) add_op_code_entry( op_code_dict=op_code_dict, keys=P60OpCodes.STACK_3V3_OFF, info=Info.STACK_3V3_OFF, ) add_op_code_entry( op_code_dict=op_code_dict, keys=P60OpCodes.STACK_5V_ON, info=Info.STACK_5V_ON, ) add_op_code_entry( op_code_dict=op_code_dict, keys=P60OpCodes.STACK_5V_OFF, info=Info.STACK_5V_OFF, ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE, info=GsInfo.REQUEST_CORE_HK_ONCE, ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE, info=GsInfo.REQUEST_AUX_HK_ONCE, ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.PRINT_SWITCH_V_I, info="P60 Dock: Print Switches, Voltages, Currents", ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.PRINT_LATCHUPS, info="P60 Dock: Print Latchups", ) add_op_code_entry(op_code_dict=op_code_dict, keys=P60OpCodes.TEST, info="P60 Tests") 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=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 off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.PLOC_ON.value, info="PDU1: Turn PLOC on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.PLOC_OFF.value, info="PDU1: Turn PLOC off", ) 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.REQUEST_CORE_HK_ONCE, info=GsInfo.REQUEST_CORE_HK_ONCE, ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE, info=GsInfo.REQUEST_AUX_HK_ONCE, ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.PRINT_SWITCH_V_I, info="PDU1: Print Switches, Voltages, Currents", ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.PRINT_LATCHUPS, info="PDU1: Print Latchups", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu1OpCodes.TESTS.value, info="PDU1 Tests" ) 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") add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.ACS_SIDE_B_ON.value, info="PDU2: Turn ACS Side B on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.ACS_SIDE_B_OFF.value, info="PDU2: Turn ACS Side B off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.SUS_REDUNDANT_ON.value, info="PDU2: Turn SUS redundant on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.SUS_REDUNDANT_OFF.value, info="PDU2: Turn SUS redundant off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.RW_ON.value, info="PDU2: Turn reaction wheels on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.RW_OFF.value, info="PDU2: Turn reaction wheels off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.PL_PCDU_VBAT_NOM_ON.value, info="PDU2: PL PCDU Switch Channel Nominal (1) on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.PL_PCDU_VBAT_NOM_OFF.value, info="PDU2: PL PCDU Switch Channel Nominal (1) off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.PL_PCDU_VBAT_RED_ON.value, info="PDU2: PL PCDU Switch Channel Redundant (1) on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.PL_PCDU_VBAT_RED_OFF.value, info="PDU2: PL PCDU Switch Channel Redundant (1) off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.TCS_HEATER_IN_ON.value, info="PDU2: Switch TCS Heater Input on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.TCS_HEATER_IN_OFF.value, info="PDU2: Switch TCS Heater Input off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.SOLAR_ARRAY_DEPL_ON.value, info="PDU2: Switch Solar Array Deployment On", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.SOLAR_ARRAY_DEPL_OFF.value, info="PDU2: Switch Solar Array Deployment Off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.PL_CAMERA_ON.value, info="PDU2: Turn payload camera on", ) add_op_code_entry( op_code_dict=op_code_dict, keys=Pdu2OpCodes.PL_CAMERA_OFF.value, info="PDU2: Turn payload camera off", ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE, info=GsInfo.REQUEST_CORE_HK_ONCE, ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE, info=GsInfo.REQUEST_AUX_HK_ONCE, ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.PRINT_SWITCH_V_I, info="PDU2: Print Switches, Voltages, Currents", options={OpCodeDictKeys.TIMEOUT: 2.0}, ) add_op_code_entry( op_code_dict=op_code_dict, keys=GomspaceOpCodes.PRINT_LATCHUPS, info="PDU2: Print Latchups", ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name="pdu2", info="PDU2 Device", op_code_entry=op_code_dict, ) op_code_dict = { "0": ("ACU: Tests", {OpCodeDictKeys.TIMEOUT: 2.0}), "51": ("ACU: Print channel statistics", {OpCodeDictKeys.TIMEOUT: 2.0}), } service_tuple = ("ACU Devices", op_code_dict) cmd_dict[CustomServiceList.ACU.value] = service_tuple 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_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}), "3": ("Radiation Sensor: Start conversions", {OpCodeDictKeys.TIMEOUT: 2.0}), "4": ("Radiation Sensor: Read conversions", {OpCodeDictKeys.TIMEOUT: 2.0}), "5": ("Radiation Sensor: Enable debug output", {OpCodeDictKeys.TIMEOUT: 2.0}), "6": ("Radiation Sensor: Disable debug putput", {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_mpsoc_cmds(cmd_dict: ServiceOpCodeDictT): op_code_dict_srv_ploc_mpsoc = { "0": ("Ploc MPSoC: Set mode off", {OpCodeDictKeys.TIMEOUT: 2.0}), "1": ("Ploc MPSoC: Set mode on", {OpCodeDictKeys.TIMEOUT: 2.0}), "2": ("Ploc MPSoC: Set mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}), "3": ("Ploc MPSoC: Memory write", {OpCodeDictKeys.TIMEOUT: 2.0}), "4": ("Ploc MPSoC: Memory read", {OpCodeDictKeys.TIMEOUT: 2.0}), "5": ("Ploc MPSoC: Flash write", {OpCodeDictKeys.TIMEOUT: 2.0}), "6": ("Ploc MPSoC: Flash delete", {OpCodeDictKeys.TIMEOUT: 2.0}), "7": ("Ploc MPSoC: Replay start", {OpCodeDictKeys.TIMEOUT: 2.0}), "8": ("Ploc MPSoC: Replay stop", {OpCodeDictKeys.TIMEOUT: 2.0}), "9": ("Ploc MPSoC: Downlink pwr on", {OpCodeDictKeys.TIMEOUT: 2.0}), "10": ("Ploc MPSoC: Downlink pwr off", {OpCodeDictKeys.TIMEOUT: 2.0}), "11": ("Ploc MPSoC: Replay write sequence", {OpCodeDictKeys.TIMEOUT: 2.0}), "12": ("Ploc MPSoC: OBSW reset sequence count", {OpCodeDictKeys.TIMEOUT: 2.0}), "13": ("Ploc MPSoC: Read DEADBEEF address", {OpCodeDictKeys.TIMEOUT: 2.0}), "14": ("Ploc MPSoC: Mode replay", {OpCodeDictKeys.TIMEOUT: 2.0}), "15": ("Ploc MPSoC: Mode idle", {OpCodeDictKeys.TIMEOUT: 2.0}), "16": ("Ploc MPSoC: Tc cam command send", {OpCodeDictKeys.TIMEOUT: 2.0}), } service_ploc_mpsoc_tuple = ("Ploc MPSoC", op_code_dict_srv_ploc_mpsoc) cmd_dict[CustomServiceList.PLOC_MPSOC.value] = service_ploc_mpsoc_tuple def add_ploc_supv_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 off", {OpCodeDictKeys.TIMEOUT: 2.0}), "1": ("PLOC Supervisor: Set mode on", {OpCodeDictKeys.TIMEOUT: 2.0}), "2": ("PLOC Supervisor: Set mode normal", {OpCodeDictKeys.TIMEOUT: 2.0}), "3": ("PLOC Supervisor: Get HK Report", {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}, ), "17": ("PLOC Supervisor: Enable latchup alert", {OpCodeDictKeys.TIMEOUT: 2.0}), "18": ("PLOC Supervisor: Disable latchup alert", {OpCodeDictKeys.TIMEOUT: 2.0}), "20": ("PLOC Supervisor: Set alert limit", {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}), "30": ("PLOC Supervisor: Run auto EM tests", {OpCodeDictKeys.TIMEOUT: 2.0}), "31": ("PLOC Supervisor: MRAM Wipe", {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}, ), "42": ("PLOC Supervisor: Perform update", {OpCodeDictKeys.TIMEOUT: 2.0}), "43": ( "PLOC Supervisor: Terminate supervisor process", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "44": ("PLOC Supervisor: Start MPSoC quiet", {OpCodeDictKeys.TIMEOUT: 2.0}), "45": ("PLOC Supervisor: Set shutdown timeout", {OpCodeDictKeys.TIMEOUT: 2.0}), "46": ("PLOC Supervisor: Factory flash", {OpCodeDictKeys.TIMEOUT: 2.0}), "47": ("PLOC Supervisor: Enable auto TM", {OpCodeDictKeys.TIMEOUT: 2.0}), "48": ("PLOC Supervisor: Disable auto TM", {OpCodeDictKeys.TIMEOUT: 2.0}), "51": ( "PLOC Supervisor: Logging request event buffers", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "52": ( "PLOC Supervisor: Logging clear counters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "53": ("PLOC Supervisor: Logging set topic", {OpCodeDictKeys.TIMEOUT: 2.0}), "54": ( "PLOC Supervisor: Logging request counters", {OpCodeDictKeys.TIMEOUT: 2.0}, ), "55": ("PLOC Supervisor: Request ADC Report", {OpCodeDictKeys.TIMEOUT: 2.0}), "56": ("PLOC Supervisor: Reset PL", {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 def add_system_cmds(cmd_dict: ServiceOpCodeDictT): from pus_tc.system.acs import AcsOpCodes, SusOpCodes import pus_tc.system.tcs as tcs default_opts = generate_op_code_options( enter_listener_mode=False, custom_timeout=8.0 ) op_code_dict = dict() add_op_code_entry( op_code_dict=op_code_dict, keys=AcsOpCodes.ACS_ASS_A_SIDE, info="Switch to ACS board A side", options=default_opts, ) add_op_code_entry( op_code_dict=op_code_dict, keys=AcsOpCodes.ACS_ASS_B_SIDE, info="Switch to ACS board B side", options=default_opts, ) add_op_code_entry( op_code_dict=op_code_dict, keys=AcsOpCodes.ACS_ASS_DUAL_MODE, info="Switch to ACS board dual mode", options=default_opts, ) add_op_code_entry( op_code_dict=op_code_dict, keys=AcsOpCodes.ACS_ASS_A_ON, info="Switch ACS board A side on", options=default_opts, ) add_op_code_entry( op_code_dict=op_code_dict, keys=AcsOpCodes.ACS_ASS_B_ON, info="Switch ACS board B side on", options=default_opts, ) add_op_code_entry( op_code_dict=op_code_dict, keys=AcsOpCodes.ACS_ASS_DUAL_ON, info="Switch ACS board dual mode on", options=default_opts, ) add_op_code_entry( op_code_dict=op_code_dict, keys=AcsOpCodes.ACS_ASS_OFF, info="Switch off ACS board", options=default_opts, ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name=CustomServiceList.ACS_ASS.value, info="ACS Assemblies", op_code_entry=op_code_dict, ) op_code_dict = dict() add_op_code_entry( op_code_dict=op_code_dict, keys=SusOpCodes.SUS_ASS_NOM_SIDE, info="Switch SUS board to nominal side", options=default_opts, ) add_op_code_entry( op_code_dict=op_code_dict, keys=SusOpCodes.SUS_ASS_RED_SIDE, info="Switch SUS board to redundant side", options=default_opts, ) add_op_code_entry( op_code_dict=op_code_dict, keys=SusOpCodes.SUS_ASS_OFF, info="Switch off SUS board", options=default_opts, ) add_op_code_entry( op_code_dict=op_code_dict, keys=SusOpCodes.SUS_ASS_DUAL_MODE, info="Switch SUS board to dual mode", options=default_opts, ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name=CustomServiceList.SUS_ASS.value, info="SUS Assembly", op_code_entry=op_code_dict, ) op_code_dict = dict() add_op_code_entry( op_code_dict=op_code_dict, keys=tcs.OpCodes.TCS_BOARD_ASS_NORMAL, info=tcs.Info.TCS_BOARD_ASS_NORMAL, options=default_opts, ) add_op_code_entry( op_code_dict=op_code_dict, keys=tcs.OpCodes.TCS_BOARD_ASS_OFF, info=tcs.Info.TCS_BOARD_ASS_OFF, options=default_opts, ) add_service_op_code_entry( srv_op_code_dict=cmd_dict, name=CustomServiceList.TCS_ASS.value, info="TCS Board Assembly", op_code_entry=op_code_dict, )