From 195d5343bcf65e9be49db9181347feb38147862c Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 18 Oct 2022 10:44:32 +0200 Subject: [PATCH 01/13] clean up power module a bit --- gomspace/gomspace_common.py | 29 ------------- tmtc/power/acu.py | 25 ++--------- tmtc/power/common_power.py | 71 +++++++++++++++++++++++------- tmtc/power/p60dock.py | 9 +++- tmtc/power/pdu1.py | 34 +++++++++++++-- tmtc/power/pdu2.py | 30 +++++++++++-- tmtc/power/power.py | 87 ++++++++++++------------------------- 7 files changed, 152 insertions(+), 133 deletions(-) diff --git a/gomspace/gomspace_common.py b/gomspace/gomspace_common.py index 0c1e0a8..456d261 100644 --- a/gomspace/gomspace_common.py +++ b/gomspace/gomspace_common.py @@ -31,35 +31,6 @@ class GomspaceDeviceActionIds(enum.IntEnum): PRINT_LATCHUPS = 33 -class GomspaceOpCodes: - # Request HK - REQUEST_CORE_HK_ONCE = ["hk_core"] - REQUEST_AUX_HK_ONCE = ["hk_aux"] - PRINT_SWITCH_V_I = ["print_switch_vi"] - PRINT_LATCHUPS = ["print_latchups"] - GET_PARAM = ["get_param"] - SET_INTEGER_PARAM = ["set_int_param"] - SAVE_TABLE = ["save_table"] - RESET_GND_WATCHDOG = ["reset_gnd_wdt"] - SAVE_TABLE_DEFAULT = ["save_table_default"] - LOAD_TABLE = ["load_table"] - REQUEST_CONFIG_TABLE = ["cfg_table"] - - -class GsInfo: - REQUEST_CORE_HK_ONCE = "Requesting Core HK once" - REQUEST_AUX_HK_ONCE = "Requesting Aux HK once" - PRINT_SWITCH_V_I = "Print Switch V I Info" - PRINT_LATCHUPS = "Print latchups" - GET_PARAMETER = "Get parameter" - SET_PARAMETER = "Set integer parameter" - REQUEST_CONFIG_TABLE = "Request Config Table" - RESET_GND_WATCHDOG = "Reset GND watchdog" - SAVE_TABLE = "Save table non-volatile (file)" - SAVE_TABLE_DEFAULT = "Save table non-volatile (default)" - LOAD_TABLE = "Load Table" - - class SetIds: PDU_1_CORE = 1 PDU_1_AUX = 2 diff --git a/tmtc/power/acu.py b/tmtc/power/acu.py index 5c1dad3..fcb9db9 100644 --- a/tmtc/power/acu.py +++ b/tmtc/power/acu.py @@ -6,25 +6,17 @@ from config.definitions import CustomServiceList from tmtc.power.common_power import ( - pack_gomspace_cmds, + pack_common_gomspace_cmds, add_gomspace_cmd_defs, req_hk_cmds, + pack_common_power_cmds, ) from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry from tmtccmd.config.tmtc import tmtc_definitions_provider from tmtccmd.tc import DefaultPusQueueHelper -from tmtccmd.tc.pus_3_fsfw_hk import ( - make_sid, - generate_one_diag_command, - generate_one_hk_command, -) import gomspace.gomspace_common as gs -from gomspace.gomspace_common import GomspaceOpCodes -from gomspace.gomspace_common import GsInfo as GsInfo from config.object_ids import ACU_HANDLER_ID -from tmtc.power.p60dock import P60DockConfigTable -from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd from tmtccmd.util import ObjectIdU32 @@ -68,7 +60,8 @@ def add_acu_cmds(defs: TmtcDefinitionWrapper): def pack_acu_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str): q.add_log_cmd("Handling ACU command") - pack_gomspace_cmds("ACU", object_id, q, op_code) + pack_common_power_cmds("ACU", object_id, q, op_code) + pack_common_gomspace_cmds("ACU", object_id, q, op_code) acu_req_hk_cmds(q, op_code) pack_test_cmds(object_id=object_id, q=q) @@ -173,13 +166,3 @@ def pack_test_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper): ACUConfigTable.ov_mode.parameter_size, ) ) - if ACUTestProcedure.all or ACUTestProcedure.off: - q.add_log_cmd("P60 Dock: Turning off ACU") - q.add_pus_tc( - gs.pack_set_param_command( - ACU_HANDLER_ID, - P60DockConfigTable.out_en_0.parameter_address, - P60DockConfigTable.out_en_0.parameter_size, - gs.Channel.off, - ) - ) diff --git a/tmtc/power/common_power.py b/tmtc/power/common_power.py index 20d8d06..ea3ec71 100644 --- a/tmtc/power/common_power.py +++ b/tmtc/power/common_power.py @@ -1,8 +1,6 @@ from gomspace.gomspace_common import ( pack_set_u8_param_command, Channel, - GomspaceOpCodes, - GsInfo, GomspaceDeviceActionIds, prompt_and_pack_set_integer_param_command, prompt_and_pack_get_param_command, @@ -23,11 +21,37 @@ from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd from tmtccmd.util import ObjectIdU32, ObjectIdBase +class GomspaceOpCodes: + GET_PARAM = ["get_param"] + SET_INTEGER_PARAM = ["set_int_param"] + SAVE_TABLE = ["save_table"] + RESET_GND_WATCHDOG = ["reset_gnd_wdt"] + SAVE_TABLE_DEFAULT = ["save_table_default"] + LOAD_TABLE = ["load_table"] + REQUEST_CONFIG_TABLE = ["cfg_table"] + + +class GsInfo: + GET_PARAMETER = "Get parameter" + SET_PARAMETER = "Set integer parameter" + REQUEST_CONFIG_TABLE = "Request Config Table" + RESET_GND_WATCHDOG = "Reset GND watchdog" + SAVE_TABLE = "Save table non-volatile (file)" + SAVE_TABLE_DEFAULT = "Save table non-volatile (default)" + LOAD_TABLE = "Load Table" + + class PowerInfo: INFO_CORE = "Core Information" INFO_AUX = "Auxiliary Information" INFO_ALL = "All Information" + ENABLE_INFO_HK = "Enable Core Info HK" + DISABLE_INFO_HK = "Disable Core Info HK" RESET_ALL_GND_WDTS = "Reset all Ground Watchdogs" + REQUEST_CORE_HK_ONCE = "Requesting Core HK once" + REQUEST_AUX_HK_ONCE = "Requesting Aux HK once" + PRINT_SWITCH_V_I = "Print Switch V I Info" + PRINT_LATCHUPS = "Print latchups" class PowerOpCodes: @@ -68,24 +92,39 @@ class PowerOpCodes: PL_CAM_OFF = ["cam_off"] INFO_CORE = ["info"] + ENABLE_INFO_HK = ["info_hk_on"] + DISABLE_INFO_HK = ["info_hk_off"] INFO_AUX = ["info_aux"] INFO_ALL = ["info_all"] RESET_ALL_GND_WDTS = ["reset_gnd_wdts"] + # Request HK + REQUEST_CORE_HK_ONCE = ["hk_core"] + REQUEST_AUX_HK_ONCE = ["hk_aux"] + PRINT_SWITCH_V_I = ["print_switch_vi"] + PRINT_LATCHUPS = ["print_latchups"] -def pack_gomspace_cmds( +def pack_common_power_cmds( prefix: str, object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str ): objb = object_id.as_bytes - if op_code in GomspaceOpCodes.PRINT_SWITCH_V_I: - q.add_log_cmd(f"{prefix}: {GsInfo.PRINT_SWITCH_V_I}") + if op_code in PowerOpCodes.ENABLE_INFO_HK: + pass + + +def pack_common_gomspace_cmds( + prefix: str, object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str +): + objb = object_id.as_bytes + if op_code in PowerOpCodes.PRINT_SWITCH_V_I: + q.add_log_cmd(f"{prefix}: {PowerInfo.PRINT_SWITCH_V_I}") q.add_pus_tc( make_fsfw_action_cmd( object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I ) ) - if op_code in GomspaceOpCodes.PRINT_LATCHUPS: - q.add_log_cmd(f"{prefix}: {GsInfo.PRINT_LATCHUPS}") + if op_code in PowerOpCodes.PRINT_LATCHUPS: + q.add_log_cmd(f"{prefix}: {PowerInfo.PRINT_LATCHUPS}") q.add_pus_tc( make_fsfw_action_cmd( object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS @@ -189,12 +228,12 @@ def req_hk_cmds( obj_id: bytes, set_id_pair: [int, int], ): - if op_code in GomspaceOpCodes.REQUEST_CORE_HK_ONCE: - q.add_log_cmd(f"{prefix}: {GsInfo.REQUEST_CORE_HK_ONCE}") + if op_code in PowerOpCodes.REQUEST_CORE_HK_ONCE: + q.add_log_cmd(f"{prefix}: {PowerInfo.REQUEST_CORE_HK_ONCE}") hk_sid = make_sid(object_id=obj_id, set_id=set_id_pair[0]) q.add_pus_tc(generate_one_diag_command(sid=hk_sid)) - if op_code in GomspaceOpCodes.REQUEST_AUX_HK_ONCE: - q.add_log_cmd(f"{prefix}: {GsInfo.REQUEST_AUX_HK_ONCE}") + if op_code in PowerOpCodes.REQUEST_AUX_HK_ONCE: + q.add_log_cmd(f"{prefix}: {PowerInfo.REQUEST_AUX_HK_ONCE}") hk_sid = make_sid(object_id=obj_id, set_id=set_id_pair[1]) q.add_pus_tc(generate_one_hk_command(sid=hk_sid)) @@ -231,15 +270,15 @@ def generic_off_cmd( def add_gomspace_cmd_defs(oce: OpCodeEntry): oce.add( - keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE, - info=GsInfo.REQUEST_CORE_HK_ONCE, + keys=PowerOpCodes.REQUEST_CORE_HK_ONCE, + info=PowerInfo.REQUEST_CORE_HK_ONCE, ) oce.add( - keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE, - info=GsInfo.REQUEST_AUX_HK_ONCE, + keys=PowerOpCodes.REQUEST_AUX_HK_ONCE, + info=PowerInfo.REQUEST_AUX_HK_ONCE, ) + oce.add(keys=PowerOpCodes.PRINT_LATCHUPS, info=PowerInfo.PRINT_LATCHUPS) oce.add(keys=GomspaceOpCodes.GET_PARAM, info=GsInfo.GET_PARAMETER) - oce.add(keys=GomspaceOpCodes.PRINT_LATCHUPS, info=GsInfo.PRINT_LATCHUPS) oce.add(keys=GomspaceOpCodes.SET_INTEGER_PARAM, info=GsInfo.SET_PARAMETER) oce.add(keys=GomspaceOpCodes.REQUEST_CONFIG_TABLE, info=GsInfo.REQUEST_CONFIG_TABLE) oce.add(keys=GomspaceOpCodes.SAVE_TABLE, info=GsInfo.SAVE_TABLE) diff --git a/tmtc/power/p60dock.py b/tmtc/power/p60dock.py index 993fa86..4ba11ed 100644 --- a/tmtc/power/p60dock.py +++ b/tmtc/power/p60dock.py @@ -5,7 +5,11 @@ @author J. Meier @date 13.12.2020 """ -from tmtc.power.common_power import pack_gomspace_cmds, req_hk_cmds +from tmtc.power.common_power import ( + pack_common_gomspace_cmds, + req_hk_cmds, + pack_common_power_cmds, +) from tmtccmd.tc import DefaultPusQueueHelper from gomspace.gomspace_common import ( TableEntry, @@ -96,7 +100,8 @@ class P60DockHkTable: def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str): objb = object_id.as_bytes - pack_gomspace_cmds("P60 Dock", object_id, q, op_code) + pack_common_power_cmds("P60 Dock", object_id, q, op_code) + pack_common_gomspace_cmds("P60 Dock", object_id, q, op_code) p60_dock_req_hk_cmds(q, op_code) if op_code in P60OpCodes.STACK_3V3_ON: q.add_log_cmd(P60Info.STACK_3V3_ON) diff --git a/tmtc/power/pdu1.py b/tmtc/power/pdu1.py index 7220632..6ab112f 100644 --- a/tmtc/power/pdu1.py +++ b/tmtc/power/pdu1.py @@ -3,18 +3,25 @@ @author J. Meier @date 17.12.2020 """ +from config.definitions import CustomServiceList from config.object_ids import PDU_1_HANDLER_ID from tmtc.power.common_power import ( - pack_gomspace_cmds, + pack_common_gomspace_cmds, req_hk_cmds, PowerOpCodes, generic_on_cmd, generic_off_cmd, + add_gomspace_cmd_defs, + pack_common_power_cmds, + GomspaceOpCodes, + GsInfo, + PowerInfo, ) from gomspace.gomspace_common import * from gomspace.gomspace_pdu_definitions import * -from tmtccmd.config import OpCodeEntry +from tmtccmd.config import OpCodeEntry, TmtcDefinitionWrapper +from tmtccmd.config.tmtc import tmtc_definitions_provider class Pdu1InfoBase: @@ -61,7 +68,8 @@ def pack_pdu1_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code objb = object_id.as_bytes pdu1_cmds(q, op_code) pdu1_req_hk_cmds(q, op_code) - pack_gomspace_cmds("PDU1", object_id, q, op_code) + pack_common_power_cmds("PDU1", object_id, q, op_code) + pack_common_gomspace_cmds("PDU1", object_id, q, op_code) if PDU1TestProcedure.all or PDU1TestProcedure.ping: q.add_log_cmd("PDU1: Ping Test") ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) @@ -146,6 +154,26 @@ def add_pdu1_common_defs(oce: OpCodeEntry): oce.add(keys=PowerOpCodes.SCEX_OFF, info=info_off_pdu1(Pdu1InfoBase.SCEX)) +@tmtc_definitions_provider +def add_pdu1_cmds(defs: TmtcDefinitionWrapper): + oce = OpCodeEntry() + add_pdu1_common_defs(oce) + add_gomspace_cmd_defs(oce) + oce.add(keys=PowerOpCodes.REQUEST_CORE_HK_ONCE, info=PowerInfo.REQUEST_CORE_HK_ONCE) + oce.add(keys=PowerOpCodes.REQUEST_AUX_HK_ONCE, info=PowerInfo.REQUEST_AUX_HK_ONCE) + oce.add( + keys=PowerOpCodes.PRINT_SWITCH_V_I, + info="PDU1: Print Switches, Voltages, Currents", + ) + oce.add(keys=GomspaceOpCodes.GET_PARAM, info=GsInfo.GET_PARAMETER) + + defs.add_service( + name=CustomServiceList.PDU1.value, + info="PDU1 Device", + op_code_entry=oce, + ) + + def tcs_on_cmd(q: DefaultPusQueueHelper): generic_on_cmd(PDU_1_HANDLER_ID, q, Pdu1InfoBase.TCS, Pdu1ChIndex.TCS) diff --git a/tmtc/power/pdu2.py b/tmtc/power/pdu2.py index 683cd39..576a47b 100644 --- a/tmtc/power/pdu2.py +++ b/tmtc/power/pdu2.py @@ -8,15 +8,18 @@ """ from config.object_ids import PDU_2_HANDLER_ID from tmtc.power.common_power import ( - pack_gomspace_cmds, + pack_common_gomspace_cmds, req_hk_cmds, PowerOpCodes, generic_on_cmd, generic_off_cmd, + add_gomspace_cmd_defs, + pack_common_power_cmds, ) from gomspace.gomspace_common import * from gomspace.gomspace_pdu_definitions import * -from tmtccmd.config import OpCodeEntry +from tmtccmd.config import OpCodeEntry, TmtcDefinitionWrapper +from tmtccmd.config.tmtc import tmtc_definitions_provider class Pdu2InfoBase: @@ -74,7 +77,8 @@ def pack_pdu2_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code objb = object_id.as_bytes pdu2_cmds(q, op_code) pdu2_req_hk_cmds(q, op_code) - pack_gomspace_cmds("PDU2", object_id, q, op_code) + pack_common_power_cmds("PDU2", object_id, q, op_code) + pack_common_gomspace_cmds("PDU2", object_id, q, op_code) if PDU2TestProcedure.all or PDU2TestProcedure.reboot: q.add_log_cmd("PDU2: Reboot") q.add_pus_tc(pack_reboot_command(object_id)) @@ -130,6 +134,26 @@ def pack_pdu2_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code q.add_pus_tc(pack_request_full_hk_table_command(object_id)) +@tmtc_definitions_provider +def add_pdu2_cmds(defs: TmtcDefinitionWrapper): + oce = OpCodeEntry() + add_pdu2_common_defs(oce) + add_gomspace_cmd_defs(oce) + oce.add( + keys=PowerOpCodes.PRINT_SWITCH_V_I, + info="PDU2: Print Switches, Voltages, Currents", + ) + oce.add( + keys=PowerOpCodes.PRINT_LATCHUPS, + info="PDU2: Print Latchups", + ) + defs.add_service( + name="pdu2", + info="PDU2 Device", + op_code_entry=oce, + ) + + def pdu2_cmds(q: DefaultPusQueueHelper, op_code: str): if op_code in PowerOpCodes.PL_PCDU_VBAT_NOM_ON: pl_pcdu_bat_nom_on_cmd(q) diff --git a/tmtc/power/power.py b/tmtc/power/power.py index 7391fbc..3e08059 100644 --- a/tmtc/power/power.py +++ b/tmtc/power/power.py @@ -1,4 +1,3 @@ -from gomspace.gomspace_common import GsInfo, GomspaceOpCodes from tmtc.power.common_power import ( PowerOpCodes, PowerInfo, @@ -13,8 +12,18 @@ from config.object_ids import ( PDU_2_HANDLER_ID, get_object_ids, ) -from tmtc.power.pdu1 import pdu1_req_hk_cmds, pdu1_cmds, add_pdu1_common_defs -from tmtc.power.pdu2 import pdu2_req_hk_cmds, add_pdu2_common_defs, pdu2_cmds +from tmtc.power.pdu1 import ( + pdu1_req_hk_cmds, + pdu1_cmds, + add_pdu1_common_defs, + add_pdu1_cmds, +) +from tmtc.power.pdu2 import ( + pdu2_req_hk_cmds, + add_pdu2_common_defs, + pdu2_cmds, + add_pdu2_cmds, +) from tmtccmd import get_console_logger from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry @@ -31,26 +40,26 @@ def pack_power_commands(q: DefaultPusQueueHelper, op_code: str): pdu1_cmds(q, op_code) pdu2_cmds(q, op_code) if op_code in PowerOpCodes.INFO_CORE: - pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0]) - pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0]) - p60_dock_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0]) - acu_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0]) + pdu1_req_hk_cmds(q, PowerOpCodes.REQUEST_CORE_HK_ONCE[0]) + pdu2_req_hk_cmds(q, PowerOpCodes.REQUEST_CORE_HK_ONCE[0]) + p60_dock_req_hk_cmds(q, PowerOpCodes.REQUEST_CORE_HK_ONCE[0]) + acu_req_hk_cmds(q, PowerOpCodes.REQUEST_CORE_HK_ONCE[0]) q.add_wait_seconds(8.0) elif op_code in PowerOpCodes.INFO_AUX: - pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0]) - pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0]) - p60_dock_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0]) - acu_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0]) + pdu1_req_hk_cmds(q, PowerOpCodes.REQUEST_AUX_HK_ONCE[0]) + pdu2_req_hk_cmds(q, PowerOpCodes.REQUEST_AUX_HK_ONCE[0]) + p60_dock_req_hk_cmds(q, PowerOpCodes.REQUEST_AUX_HK_ONCE[0]) + acu_req_hk_cmds(q, PowerOpCodes.REQUEST_AUX_HK_ONCE[0]) q.add_wait_seconds(8.0) elif op_code in PowerOpCodes.INFO_ALL: - pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0]) - pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0]) - pdu1_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0]) - pdu2_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0]) - p60_dock_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0]) - p60_dock_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0]) - acu_req_hk_cmds(q, GomspaceOpCodes.REQUEST_CORE_HK_ONCE[0]) - acu_req_hk_cmds(q, GomspaceOpCodes.REQUEST_AUX_HK_ONCE[0]) + pdu1_req_hk_cmds(q, PowerOpCodes.REQUEST_CORE_HK_ONCE[0]) + pdu2_req_hk_cmds(q, PowerOpCodes.REQUEST_CORE_HK_ONCE[0]) + pdu1_req_hk_cmds(q, PowerOpCodes.REQUEST_AUX_HK_ONCE[0]) + pdu2_req_hk_cmds(q, PowerOpCodes.REQUEST_AUX_HK_ONCE[0]) + p60_dock_req_hk_cmds(q, PowerOpCodes.REQUEST_CORE_HK_ONCE[0]) + p60_dock_req_hk_cmds(q, PowerOpCodes.REQUEST_AUX_HK_ONCE[0]) + acu_req_hk_cmds(q, PowerOpCodes.REQUEST_CORE_HK_ONCE[0]) + acu_req_hk_cmds(q, PowerOpCodes.REQUEST_AUX_HK_ONCE[0]) q.add_wait_seconds(8.0) elif op_code in PowerOpCodes.RESET_ALL_GND_WDTS: oids = get_object_ids() @@ -93,46 +102,6 @@ def add_power_cmd_defs(defs: TmtcDefinitionWrapper): ) -@tmtc_definitions_provider -def add_pdu1_cmds(defs: TmtcDefinitionWrapper): - oce = OpCodeEntry() - add_pdu1_common_defs(oce) - add_gomspace_cmd_defs(oce) - oce.add(keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE, info=GsInfo.REQUEST_CORE_HK_ONCE) - oce.add(keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE, info=GsInfo.REQUEST_AUX_HK_ONCE) - oce.add( - keys=GomspaceOpCodes.PRINT_SWITCH_V_I, - info="PDU1: Print Switches, Voltages, Currents", - ) - oce.add(keys=GomspaceOpCodes.GET_PARAM, info=GsInfo.GET_PARAMETER) - - defs.add_service( - name=CustomServiceList.PDU1.value, - info="PDU1 Device", - op_code_entry=oce, - ) - - -@tmtc_definitions_provider -def add_pdu2_cmds(defs: TmtcDefinitionWrapper): - oce = OpCodeEntry() - add_pdu2_common_defs(oce) - add_gomspace_cmd_defs(oce) - oce.add( - keys=GomspaceOpCodes.PRINT_SWITCH_V_I, - info="PDU2: Print Switches, Voltages, Currents", - ) - oce.add( - keys=GomspaceOpCodes.PRINT_LATCHUPS, - info="PDU2: Print Latchups", - ) - defs.add_service( - name="pdu2", - info="PDU2 Device", - op_code_entry=oce, - ) - - def add_pcdu_cmds(defs: TmtcDefinitionWrapper): add_p60_cmds(defs) add_pdu1_cmds(defs) From 9171f23d9373fcba6b75d2f75d1b4764180bb7b5 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 18 Oct 2022 11:01:01 +0200 Subject: [PATCH 02/13] some more cleaning and set ID updates --- gomspace/gomspace_common.py | 11 ----------- pus_tc/system/proc.py | 26 ++++++++++++-------------- tmtc/power/acu.py | 5 ++--- tmtc/power/common_power.py | 19 ++++++++++++++++++- tmtc/power/pdu1.py | 4 ++-- tmtc/power/power.py | 4 ++-- tmtc/power/tm.py | 3 ++- 7 files changed, 38 insertions(+), 34 deletions(-) diff --git a/gomspace/gomspace_common.py b/gomspace/gomspace_common.py index 456d261..1ce71a5 100644 --- a/gomspace/gomspace_common.py +++ b/gomspace/gomspace_common.py @@ -31,17 +31,6 @@ class GomspaceDeviceActionIds(enum.IntEnum): PRINT_LATCHUPS = 33 -class SetIds: - PDU_1_CORE = 1 - PDU_1_AUX = 2 - PDU_2_CORE = 3 - PDU_2_AUX = 4 - P60_CORE = 5 - P60_AUX = 6 - ACU_CORE = 7 - ACU_AUX = 8 - - class ParamTypes(enum.Enum): U8 = 0 U16 = 1 diff --git a/pus_tc/system/proc.py b/pus_tc/system/proc.py index 7782176..dbae86a 100644 --- a/pus_tc/system/proc.py +++ b/pus_tc/system/proc.py @@ -22,15 +22,13 @@ import config.object_ids as oids from pus_tc.system.tcs import OpCodes as TcsOpCodes from pus_tc.devs.bpx_batt import BpxSetIds from pus_tc.system.core import SetIds as CoreSetIds -from gomspace.gomspace_common import SetIds as GsSetIds +from tmtc.power.common_power import SetIds as GsSetIds from pus_tc.devs.rad_sensor import SetIds as RadSetIds 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 @@ -247,14 +245,14 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str): if op_code in OpCodes.PCDU_FT: key = KAI.PCDU_FT[0] pcdu_pairs = [ - (oids.P60_DOCK_HANDLER, GsSetIds.P60_CORE), - (oids.PDU_1_HANDLER_ID, GsSetIds.PDU_1_CORE), - (oids.PDU_2_HANDLER_ID, GsSetIds.PDU_2_CORE), - (oids.ACU_HANDLER_ID, GsSetIds.ACU_CORE), - (oids.P60_DOCK_HANDLER, GsSetIds.P60_AUX), - (oids.PDU_1_HANDLER_ID, GsSetIds.PDU_1_AUX), - (oids.PDU_2_HANDLER_ID, GsSetIds.PDU_2_AUX), - (oids.ACU_HANDLER_ID, GsSetIds.ACU_AUX), + (oids.P60_DOCK_HANDLER, GsSetIds.CORE), + (oids.PDU_1_HANDLER_ID, GsSetIds.CORE), + (oids.PDU_2_HANDLER_ID, GsSetIds.CORE), + (oids.ACU_HANDLER_ID, GsSetIds.CORE), + (oids.P60_DOCK_HANDLER, GsSetIds.AUX), + (oids.PDU_1_HANDLER_ID, GsSetIds.AUX), + (oids.PDU_2_HANDLER_ID, GsSetIds.AUX), + (oids.ACU_HANDLER_ID, GsSetIds.AUX), ] diag_list = [ @@ -587,10 +585,10 @@ def pack_proc_commands(q: DefaultPusQueueHelper, op_code: str): ] # HK listening pack_generic_hk_listening_cmds( - tc_queue=tc_queue, + q=q, proc_key=key, sid_list=sid_list, - diag=False, + diag_list=[False], cfg=GenericHkListeningCfg.default(), ) if op_code in OpCodes.STR_FT: @@ -726,7 +724,7 @@ def enable_listen_to_hk_for_x_seconds( ): q.add_log_cmd(f"Enabling periodic HK for {device}") cmd_tuple = enable_periodic_hk_command_with_interval( - diag=diag, sid=sid, interval_seconds=interval_seconds, ssc=0 + diag=diag, sid=sid, interval_seconds=interval_seconds ) for cmd in cmd_tuple: q.add_pus_tc(cmd) diff --git a/tmtc/power/acu.py b/tmtc/power/acu.py index fcb9db9..9da4bc5 100644 --- a/tmtc/power/acu.py +++ b/tmtc/power/acu.py @@ -10,6 +10,7 @@ from tmtc.power.common_power import ( add_gomspace_cmd_defs, req_hk_cmds, pack_common_power_cmds, + SetIds, ) from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry from tmtccmd.config.tmtc import tmtc_definitions_provider @@ -67,9 +68,7 @@ def pack_acu_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: def acu_req_hk_cmds(q: DefaultPusQueueHelper, op_code: str): - req_hk_cmds( - "ACU", q, op_code, ACU_HANDLER_ID, [gs.SetIds.ACU_CORE, gs.SetIds.ACU_AUX] - ) + req_hk_cmds("ACU", q, op_code, ACU_HANDLER_ID, [SetIds.CORE, SetIds.AUX]) class ACUTestProcedure: diff --git a/tmtc/power/common_power.py b/tmtc/power/common_power.py index ea3ec71..d566859 100644 --- a/tmtc/power/common_power.py +++ b/tmtc/power/common_power.py @@ -16,6 +16,8 @@ from tmtccmd.tc.pus_3_fsfw_hk import ( make_sid, generate_one_diag_command, generate_one_hk_command, + enable_periodic_hk_command_with_interval, + disable_periodic_hk_command, ) from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd from tmtccmd.util import ObjectIdU32, ObjectIdBase @@ -104,12 +106,27 @@ class PowerOpCodes: PRINT_LATCHUPS = ["print_latchups"] +class SetIds: + CORE = 1 + AUX = 2 + CONFIG = 3 + + def pack_common_power_cmds( prefix: str, object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str ): objb = object_id.as_bytes if op_code in PowerOpCodes.ENABLE_INFO_HK: - pass + interval = float(input("Specify HK interval in floating point seconds: ")) + q.add_log_cmd(f"{prefix}: {PowerInfo.ENABLE_INFO_HK} with interval {interval}") + cmds = enable_periodic_hk_command_with_interval( + True, make_sid(objb, SetIds.CORE), interval + ) + for cmd in cmds: + q.add_pus_tc(cmd) + if op_code in PowerOpCodes.DISABLE_INFO_HK: + q.add_log_cmd(f"{prefix}: {PowerInfo.DISABLE_INFO_HK}") + q.add_pus_tc(disable_periodic_hk_command(True, make_sid(objb, SetIds.CORE))) def pack_common_gomspace_cmds( diff --git a/tmtc/power/pdu1.py b/tmtc/power/pdu1.py index 6ab112f..784264b 100644 --- a/tmtc/power/pdu1.py +++ b/tmtc/power/pdu1.py @@ -66,7 +66,7 @@ class PDU1TestProcedure: def pack_pdu1_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: str): q.add_log_cmd("Commanding PDU1") objb = object_id.as_bytes - pdu1_cmds(q, op_code) + pdu1_switch_cmds(q, op_code) pdu1_req_hk_cmds(q, op_code) pack_common_power_cmds("PDU1", object_id, q, op_code) pack_common_gomspace_cmds("PDU1", object_id, q, op_code) @@ -100,7 +100,7 @@ def info_off_pdu1(base: str) -> str: return "PDU1: " + base + " off" -def pdu1_cmds(q: DefaultPusQueueHelper, op_code: str): +def pdu1_switch_cmds(q: DefaultPusQueueHelper, op_code: str): if op_code in PowerOpCodes.TCS_ON: tcs_on_cmd(q) elif op_code in PowerOpCodes.TCS_OFF: diff --git a/tmtc/power/power.py b/tmtc/power/power.py index 3e08059..50d4d96 100644 --- a/tmtc/power/power.py +++ b/tmtc/power/power.py @@ -14,7 +14,7 @@ from config.object_ids import ( ) from tmtc.power.pdu1 import ( pdu1_req_hk_cmds, - pdu1_cmds, + pdu1_switch_cmds, add_pdu1_common_defs, add_pdu1_cmds, ) @@ -37,7 +37,7 @@ LOGGER = get_console_logger() def pack_power_commands(q: DefaultPusQueueHelper, op_code: str): - pdu1_cmds(q, op_code) + pdu1_switch_cmds(q, op_code) pdu2_cmds(q, op_code) if op_code in PowerOpCodes.INFO_CORE: pdu1_req_hk_cmds(q, PowerOpCodes.REQUEST_CORE_HK_ONCE[0]) diff --git a/tmtc/power/tm.py b/tmtc/power/tm.py index 9f918f1..4ad90d6 100644 --- a/tmtc/power/tm.py +++ b/tmtc/power/tm.py @@ -1,10 +1,11 @@ import struct from typing import List, Tuple +from tmtc.power.common_power import SetIds from tmtccmd.util import ObjectIdBase from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter from pus_tm.defs import PrintWrapper -from gomspace.gomspace_common import SetIds, GomspaceDeviceActionIds +from gomspace.gomspace_common import GomspaceDeviceActionIds from config.object_ids import ( PDU_1_HANDLER_ID, PDU_2_HANDLER_ID, From 80a57cdc70f8d88365ed6e77b075b2f7cae483d9 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 18 Oct 2022 11:08:28 +0200 Subject: [PATCH 03/13] some more fixes and improvements --- .run/PDU1.run.xml | 24 ++++++++++++++++++++++++ .run/PDU2.run.xml | 24 ++++++++++++++++++++++++ tmtc/power/common_power.py | 7 +++++++ tmtc/power/p60dock.py | 6 ++---- tmtc/power/pdu1.py | 9 ++++----- tmtc/power/pdu2.py | 7 ++++--- tmtc/power/tm.py | 12 ++++++------ 7 files changed, 71 insertions(+), 18 deletions(-) create mode 100644 .run/PDU1.run.xml create mode 100644 .run/PDU2.run.xml diff --git a/.run/PDU1.run.xml b/.run/PDU1.run.xml new file mode 100644 index 0000000..29529fa --- /dev/null +++ b/.run/PDU1.run.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/.run/PDU2.run.xml b/.run/PDU2.run.xml new file mode 100644 index 0000000..e26009d --- /dev/null +++ b/.run/PDU2.run.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/tmtc/power/common_power.py b/tmtc/power/common_power.py index d566859..59f6b2c 100644 --- a/tmtc/power/common_power.py +++ b/tmtc/power/common_power.py @@ -285,6 +285,13 @@ def generic_off_cmd( ) +def add_common_power_defs(oce: OpCodeEntry): + oce.add(keys=PowerOpCodes.REQUEST_CORE_HK_ONCE, info=PowerInfo.REQUEST_CORE_HK_ONCE) + oce.add(keys=PowerOpCodes.REQUEST_AUX_HK_ONCE, info=PowerInfo.REQUEST_AUX_HK_ONCE) + oce.add(keys=PowerOpCodes.ENABLE_INFO_HK, info=PowerInfo.ENABLE_INFO_HK) + oce.add(keys=PowerOpCodes.DISABLE_INFO_HK, info=PowerInfo.DISABLE_INFO_HK) + + def add_gomspace_cmd_defs(oce: OpCodeEntry): oce.add( keys=PowerOpCodes.REQUEST_CORE_HK_ONCE, diff --git a/tmtc/power/p60dock.py b/tmtc/power/p60dock.py index 4ba11ed..e9fed56 100644 --- a/tmtc/power/p60dock.py +++ b/tmtc/power/p60dock.py @@ -9,6 +9,7 @@ from tmtc.power.common_power import ( pack_common_gomspace_cmds, req_hk_cmds, pack_common_power_cmds, + SetIds, ) from tmtccmd.tc import DefaultPusQueueHelper from gomspace.gomspace_common import ( @@ -21,7 +22,6 @@ from gomspace.gomspace_common import ( pack_reboot_command, pack_set_u8_param_command, pack_set_u16_param_command, - SetIds, ) from config.object_ids import P60_DOCK_HANDLER from tmtccmd.util import ObjectIdU32 @@ -238,6 +238,4 @@ def pack_p60dock_cmds(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code: def p60_dock_req_hk_cmds(q: DefaultPusQueueHelper, op_code: str): - req_hk_cmds( - "P60 Dock", q, op_code, P60_DOCK_HANDLER, [SetIds.P60_CORE, SetIds.P60_AUX] - ) + req_hk_cmds("P60 Dock", q, op_code, P60_DOCK_HANDLER, [SetIds.CORE, SetIds.AUX]) diff --git a/tmtc/power/pdu1.py b/tmtc/power/pdu1.py index 784264b..2ee949c 100644 --- a/tmtc/power/pdu1.py +++ b/tmtc/power/pdu1.py @@ -16,6 +16,8 @@ from tmtc.power.common_power import ( GomspaceOpCodes, GsInfo, PowerInfo, + add_common_power_defs, + SetIds, ) from gomspace.gomspace_common import * @@ -87,9 +89,7 @@ def pack_pdu1_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code def pdu1_req_hk_cmds(q: DefaultPusQueueHelper, op_code: str): - req_hk_cmds( - "PDU1", q, op_code, PDU_1_HANDLER_ID, [SetIds.PDU_1_CORE, SetIds.PDU_1_AUX] - ) + req_hk_cmds("PDU1", q, op_code, PDU_1_HANDLER_ID, [SetIds.CORE, SetIds.AUX]) def info_on_pdu1(base: str) -> str: @@ -158,9 +158,8 @@ def add_pdu1_common_defs(oce: OpCodeEntry): def add_pdu1_cmds(defs: TmtcDefinitionWrapper): oce = OpCodeEntry() add_pdu1_common_defs(oce) + add_common_power_defs(oce) add_gomspace_cmd_defs(oce) - oce.add(keys=PowerOpCodes.REQUEST_CORE_HK_ONCE, info=PowerInfo.REQUEST_CORE_HK_ONCE) - oce.add(keys=PowerOpCodes.REQUEST_AUX_HK_ONCE, info=PowerInfo.REQUEST_AUX_HK_ONCE) oce.add( keys=PowerOpCodes.PRINT_SWITCH_V_I, info="PDU1: Print Switches, Voltages, Currents", diff --git a/tmtc/power/pdu2.py b/tmtc/power/pdu2.py index 576a47b..6ae17f5 100644 --- a/tmtc/power/pdu2.py +++ b/tmtc/power/pdu2.py @@ -15,6 +15,8 @@ from tmtc.power.common_power import ( generic_off_cmd, add_gomspace_cmd_defs, pack_common_power_cmds, + SetIds, + add_common_power_defs, ) from gomspace.gomspace_common import * from gomspace.gomspace_pdu_definitions import * @@ -138,6 +140,7 @@ def pack_pdu2_commands(object_id: ObjectIdU32, q: DefaultPusQueueHelper, op_code def add_pdu2_cmds(defs: TmtcDefinitionWrapper): oce = OpCodeEntry() add_pdu2_common_defs(oce) + add_common_power_defs(oce) add_gomspace_cmd_defs(oce) oce.add( keys=PowerOpCodes.PRINT_SWITCH_V_I, @@ -235,9 +238,7 @@ def add_pdu2_common_defs(oce: OpCodeEntry): def pdu2_req_hk_cmds(q: DefaultPusQueueHelper, op_code: str): - req_hk_cmds( - "PDU2", q, op_code, PDU_2_HANDLER_ID, [SetIds.PDU_2_CORE, SetIds.PDU_2_AUX] - ) + req_hk_cmds("PDU2", q, op_code, PDU_2_HANDLER_ID, [SetIds.CORE, SetIds.AUX]) def pl_pcdu_bat_nom_on_cmd(q: DefaultPusQueueHelper): diff --git a/tmtc/power/tm.py b/tmtc/power/tm.py index 4ad90d6..93f32d2 100644 --- a/tmtc/power/tm.py +++ b/tmtc/power/tm.py @@ -146,7 +146,7 @@ def handle_pdu_data( pw = PrintWrapper(printer=printer) current_idx = 0 priv_idx = pdu_idx - 1 - if set_id == SetIds.PDU_1_AUX or set_id == SetIds.PDU_2_AUX: + if set_id == SetIds.AUX or set_id == SetIds.AUX: fmt_str = "!hhBBBIIH" inc_len = struct.calcsize(fmt_str) ( @@ -183,7 +183,7 @@ def handle_pdu_data( wdt.print() pw.dlog(f"PDU Device Types: 0:FRAM|1:ADC|2:ADC|3:TempSens|4,5,6,7:Reserved") dev_parser.print(pw=pw) - if set_id == SetIds.PDU_1_CORE or set_id == SetIds.PDU_2_CORE: + if set_id == SetIds.CORE or set_id == SetIds.CORE: pw.dlog(f"Received PDU HK from PDU {pdu_idx}") current_list = [] for idx in range(len(PDU1_CHANNELS_NAMES)): @@ -224,7 +224,7 @@ def handle_pdu_data( def handle_p60_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): pw = PrintWrapper(printer=printer) - if set_id == SetIds.P60_CORE: + if set_id == SetIds.CORE: pw.dlog("Received P60 Core HK. Voltages in mV, currents in mA") current_idx = 0 current_list = [] @@ -271,7 +271,7 @@ def handle_p60_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): pw.dlog(temps) pw.dlog(batt_info) printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=9) - if set_id == SetIds.P60_AUX: + if set_id == SetIds.AUX: pw.dlog("Received P60 AUX HK. Voltages in mV, currents in mA") current_idx = 0 latchup_list = [] @@ -350,7 +350,7 @@ def gen_six_entry_u16_list(hk_data: bytes, current_idx: int) -> Tuple[int, List[ def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): pw = PrintWrapper(printer=printer) - if set_id == SetIds.ACU_CORE: + if set_id == SetIds.CORE: mppt_mode = hk_data[0] current_idx = 1 current_idx, currents = gen_six_entry_u16_list( @@ -394,7 +394,7 @@ def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): printer.print_validity_buffer( validity_buffer=hk_data[current_idx:], num_vars=12 ) - if set_id == SetIds.ACU_AUX: + if set_id == SetIds.AUX: current_idx = 0 fmt_str = "!BBB" inc_len = struct.calcsize(fmt_str) From 0ddb9587ba48ff9108fb5da9ef39b646960d6022 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 18 Oct 2022 11:41:14 +0200 Subject: [PATCH 04/13] improvements for op codes --- .run/PDU1.run.xml | 2 +- .run/PDU2.run.xml | 2 +- pus_tc/system/acs.py | 22 +++++++++++----------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.run/PDU1.run.xml b/.run/PDU1.run.xml index 29529fa..f93718a 100644 --- a/.run/PDU1.run.xml +++ b/.run/PDU1.run.xml @@ -13,7 +13,7 @@