From 24e9c25ba4c677ae900b6ad477272ae32bd3bc0d Mon Sep 17 00:00:00 2001 From: Jakob Meier Date: Wed, 22 Feb 2023 14:50:12 +0100 Subject: [PATCH] parameter commands for pdec handler --- eive_tmtc/pus_tc/cmd_definitions.py | 8 ---- eive_tmtc/pus_tc/procedure_packer.py | 3 +- eive_tmtc/tmtc/com/pdec_handler.py | 67 ++++++++++++++++++++++++++-- 3 files changed, 65 insertions(+), 13 deletions(-) diff --git a/eive_tmtc/pus_tc/cmd_definitions.py b/eive_tmtc/pus_tc/cmd_definitions.py index 950796a..bf2659d 100644 --- a/eive_tmtc/pus_tc/cmd_definitions.py +++ b/eive_tmtc/pus_tc/cmd_definitions.py @@ -23,14 +23,6 @@ def get_eive_service_op_code_dict() -> TmtcDefinitionWrapper: return def_wrapper -@tmtc_definitions_provider -def add_pdec_cmds(defs: TmtcDefinitionWrapper): - oce = OpCodeEntry() - oce.add("0", "PDEC Handler: Print CLCW") - oce.add("1", "PDEC Handler: Print PDEC monitor") - defs.add_service(CustomServiceList.PDEC_HANDLER.value, "PDEC Handler", oce) - - @tmtc_definitions_provider def add_str_cmds(defs: TmtcDefinitionWrapper): oce = OpCodeEntry() diff --git a/eive_tmtc/pus_tc/procedure_packer.py b/eive_tmtc/pus_tc/procedure_packer.py index 853977c..7560ca9 100644 --- a/eive_tmtc/pus_tc/procedure_packer.py +++ b/eive_tmtc/pus_tc/procedure_packer.py @@ -32,6 +32,7 @@ from eive_tmtc.tmtc.com.ccsds_handler import pack_ccsds_handler_test from eive_tmtc.tmtc.core import pack_core_commands from eive_tmtc.tmtc.acs.star_tracker import pack_star_tracker_commands from eive_tmtc.tmtc.com.syrlinks_handler import pack_syrlinks_command +from eive_tmtc.tmtc.com.pdec_handler import pack_pdec_handler_test from eive_tmtc.tmtc.acs.acs_board import pack_acs_command from eive_tmtc.config.definitions import CustomServiceList from eive_tmtc.config.object_ids import ( @@ -170,7 +171,7 @@ def handle_default_procedure( object_id=object_id, q=queue_helper, op_code=op_code ) if service == CustomServiceList.PDEC_HANDLER.value: - return pack_ccsds_handler_test( + return pack_pdec_handler_test( object_id=PDEC_HANDLER_ID, q=queue_helper, op_code=op_code ) if service == CustomServiceList.SYRLINKS.value: diff --git a/eive_tmtc/tmtc/com/pdec_handler.py b/eive_tmtc/tmtc/com/pdec_handler.py index ec60190..c11d99c 100644 --- a/eive_tmtc/tmtc/com/pdec_handler.py +++ b/eive_tmtc/tmtc/com/pdec_handler.py @@ -8,6 +8,22 @@ from spacepackets.ecss.tc import PusTelecommand from tmtccmd.tc import DefaultPusQueueHelper +from tmtccmd.tc.pus_20_fsfw_param import ( + create_load_param_cmd +) + +from tmtccmd.pus.s20_fsfw_param_defs import ( + create_scalar_u8_parameter +) + +from tmtccmd.config.tmtc import ( + tmtc_definitions_provider, + TmtcDefinitionWrapper, + OpCodeEntry, +) + +from eive_tmtc.config.definitions import CustomServiceList + class CommandId: # prints the clcw to the console. Useful for debugging @@ -16,15 +32,58 @@ class CommandId: PRINT_PDEC_MON = bytearray([0x0, 0x0, 0x0, 0x1]) +class ParameterId: + POSITIVE_WINDOW = 0 + NEGATIVE_WINDOW = 1 + + +class OpCode: + PRINT_CLCW = "print_clcw" + PRINT_MON_REG = "print_mon_reg" + POSITIVE_WINDOW = "positive_window" + NEGATIVE_WINDOW = "negative_window" + + +class Info: + PRINT_CLCW = "Will cause the OBSW to print the current CLCW to the debug console" + PRINT_MON_REG = "Will cause the OBSW to print the PDEC monitor register to the console" + POSITIVE_WINDOW = "Change positive window parameter for AD frames" + NEGATIVE_WINDOW = "Change negative window parameter for AD frames" + + def pack_pdec_handler_test( object_id: bytearray, q: DefaultPusQueueHelper, op_code: str ): q.add_log_cmd(f"Testing PDEC handler with object id: {object_id.hex()}") - if op_code == "0": - q.add_log_cmd("PDEC Handler: Print CLCW") + prefix = "PDEC Handler " + if op_code == OpCode.PRINT_CLCW: + q.add_log_cmd(f"{prefix}: {Info.PRINT_CLCW}") command = object_id + CommandId.PRINT_CLCW q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) - if op_code == "1": - q.add_log_cmd("PDEC Handler: Print PDEC monitor register") + if op_code == OpCode.PRINT_MON_REG: + q.add_log_cmd(f"{prefix}: {Info.PRINT_MON_REG}") command = object_id + CommandId.PRINT_PDEC_MON q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command)) + if op_code == OpCode.POSITIVE_WINDOW: + q.add_log_cmd(f"{prefix}: {Info.POSITIVE_WINDOW}") + pw = int(input("Specify positive window to set: ")) + q.add_pus_tc( + create_load_param_cmd( + create_scalar_u8_parameter( + object_id, + 0, + ParameterId.POSITIVE_WINDOW, + pw, + ).pack() + ) + ) + + +@tmtc_definitions_provider +def add_pdec_cmds(defs: TmtcDefinitionWrapper): + oce = OpCodeEntry() + oce.add(OpCode.PRINT_CLCW, Info.PRINT_CLCW) + oce.add(OpCode.PRINT_MON_REG, Info.PRINT_MON_REG) + oce.add(OpCode.POSITIVE_WINDOW, Info.POSITIVE_WINDOW) + oce.add(OpCode.NEGATIVE_WINDOW, Info.NEGATIVE_WINDOW) + defs.add_service(CustomServiceList.PDEC_HANDLER.value, "PDEC Handler", oce)