From 510ba82fefa3da20c7e34cf788a9637a514e0385 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 5 May 2022 02:00:18 +0200 Subject: [PATCH] rw cmds cntd --- pus_tc/devs/reaction_wheels.py | 33 ++++++++++++--------------------- pus_tc/tc_packer_hook.py | 8 ++++---- pus_tm/hk_handling.py | 14 +++++++++----- tmtccmd | 2 +- 4 files changed, 26 insertions(+), 31 deletions(-) diff --git a/pus_tc/devs/reaction_wheels.py b/pus_tc/devs/reaction_wheels.py index ffa4909..faad5cd 100644 --- a/pus_tc/devs/reaction_wheels.py +++ b/pus_tc/devs/reaction_wheels.py @@ -6,6 +6,7 @@ """ import struct from tmtccmd.config.definitions import QueueCommands, ServiceOpCodeDictT, OpCodeDictKeys +from tmtccmd.tc.service_3_housekeeping import generate_one_hk_command, make_sid from tmtccmd.config.globals import add_op_code_entry, add_service_op_code_entry from tmtccmd.tc.packer import TcQueueT from spacepackets.ecss.tc import PusTelecommand @@ -121,49 +122,39 @@ def add_rw_cmds(cmd_dict: ServiceOpCodeDictT): def pack_single_rw_test_into( - object_id: bytes, tc_queue: TcQueueT, op_code: str + object_id: bytes, rw_idx: int, tc_queue: TcQueueT, op_code: str ) -> TcQueueT: - tc_queue.appendleft( - ( - QueueCommands.PRINT, - "Testing reaction wheel handler with object id: 0x" + object_id.hex(), - ) - ) - if op_code in OpCodesDevs.SPEED: speed = int(input("Specify speed [0.1 RPM]: ")) ramp_time = int(input("Specify ramp time [ms]: ")) - tc_queue.appendleft((QueueCommands.PRINT, "Reaction Wheel: Set speed")) + tc_queue.appendleft((QueueCommands.PRINT, f"RW {rw_idx}: {InfoDevs.SPEED}")) command = pack_set_speed_command(object_id, speed, ramp_time) command = PusTelecommand(service=8, subservice=128, ssc=40, app_data=command) tc_queue.appendleft(command.pack_command_tuple()) if op_code in OpCodesDevs.ON: - tc_queue.appendleft((QueueCommands.PRINT, "Reaction Wheel: Switch to mode on")) + tc_queue.appendleft((QueueCommands.PRINT, f"RW {rw_idx}: {InfoDevs.ON}")) mode_data = pack_mode_data(object_id, Modes.ON, 0) command = PusTelecommand(service=200, subservice=1, ssc=41, app_data=mode_data) tc_queue.appendleft(command.pack_command_tuple()) if op_code in OpCodesDevs.NML: - tc_queue.appendleft( - (QueueCommands.PRINT, "Reaction Wheel: Switch to mode normal") - ) + tc_queue.appendleft((QueueCommands.PRINT, f"RW {rw_idx}: {InfoDevs.NML}")) mode_data = pack_mode_data(object_id, Modes.NORMAL, 0) command = PusTelecommand(service=200, subservice=1, ssc=42, app_data=mode_data) tc_queue.appendleft(command.pack_command_tuple()) if op_code in OpCodesDevs.OFF: - tc_queue.appendleft((QueueCommands.PRINT, "Reaction Wheel: Switch to mode off")) + tc_queue.appendleft((QueueCommands.PRINT, f"RW {rw_idx}: {InfoDevs.OFF}")) mode_data = pack_mode_data(object_id, Modes.OFF, 0) command = PusTelecommand(service=200, subservice=1, ssc=43, app_data=mode_data) tc_queue.appendleft(command.pack_command_tuple()) if op_code in OpCodesDevs.GET_TM: - tc_queue.appendleft( - (QueueCommands.PRINT, "Reaction Wheel: Send get-telemetry-command") + tc_queue.appendleft((QueueCommands.PRINT, f"RW {rw_idx}: {InfoDevs.GET_TM}")) + command = generate_one_hk_command( + sid=make_sid(object_id=object_id, set_id=RwSetIds.TM_SET), ssc=0 ) - command = object_id + RwCommandIds.GET_TM - command = PusTelecommand(service=8, subservice=128, ssc=44, app_data=command) tc_queue.appendleft(command.pack_command_tuple()) return tc_queue @@ -179,10 +170,10 @@ def pack_rw_ass_cmds(tc_queue: TcQueueT, object_id: bytes, op_code: str): def pack_set_speed_command(object_id: bytes, speed: int, ramp_time: int) -> bytearray: """With this function a command is packed to set the speed of a reaction wheel - :param object_id The object id of the reaction wheel handler. - :param speed Valid speeds are [-65000, -1000] and [1000, 65000]. Values are + :param object_id: The object id of the reaction wheel handler. + :param speed: Valid speeds are [-65000, -1000] and [1000, 65000]. Values are specified in 0.1 * RPM - :param ramp_time The time after which the reaction wheel will reached the commanded speed. + :param ramp_time: The time after which the reaction wheel will reached the commanded speed. Valid times are 10 - 10000 ms """ command_id = RwCommandIds.SET_SPEED diff --git a/pus_tc/tc_packer_hook.py b/pus_tc/tc_packer_hook.py index e6a64b2..f2148e8 100644 --- a/pus_tc/tc_packer_hook.py +++ b/pus_tc/tc_packer_hook.py @@ -148,19 +148,19 @@ def pack_service_queue_user( ) if service == CustomServiceList.REACTION_WHEEL_1.value: return pack_single_rw_test_into( - object_id=RW1_ID, tc_queue=service_queue, op_code=op_code + object_id=RW1_ID, rw_idx=1, tc_queue=service_queue, op_code=op_code ) if service == CustomServiceList.REACTION_WHEEL_2.value: return pack_single_rw_test_into( - object_id=RW2_ID, tc_queue=service_queue, op_code=op_code + object_id=RW2_ID, rw_idx=2, tc_queue=service_queue, op_code=op_code ) if service == CustomServiceList.REACTION_WHEEL_3.value: return pack_single_rw_test_into( - object_id=RW3_ID, tc_queue=service_queue, op_code=op_code + object_id=RW3_ID, rw_idx=3, tc_queue=service_queue, op_code=op_code ) if service == CustomServiceList.REACTION_WHEEL_4.value: return pack_single_rw_test_into( - object_id=RW4_ID, tc_queue=service_queue, op_code=op_code + object_id=RW4_ID, rw_idx=4, tc_queue=service_queue, op_code=op_code ) if service == CustomServiceList.RAD_SENSOR.value: object_id = RAD_SENSOR_ID diff --git a/pus_tm/hk_handling.py b/pus_tm/hk_handling.py index a21d35b..5340bc0 100644 --- a/pus_tm/hk_handling.py +++ b/pus_tm/hk_handling.py @@ -88,6 +88,10 @@ def handle_regular_hk_print( return handle_pdu_data( printer=printer, pdu_idx=2, set_id=set_id, hk_data=hk_data ) + if objb in [obj_ids.RW1_ID, obj_ids.RW2_ID, obj_ids.RW3_ID, obj_ids.RW4_ID]: + return handle_rw_hk_data( + printer=printer, object_id=object_id, set_id=set_id, hk_data=hk_data + ) if objb == obj_ids.P60_DOCK_HANDLER: handle_p60_hk_data(printer=printer, set_id=set_id, hk_data=hk_data) if objb == obj_ids.PL_PCDU_ID: @@ -707,10 +711,10 @@ def handle_p60_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes): def handle_rw_hk_data( printer: FsfwTmTcPrinter, object_id: ObjectId, set_id: int, hk_data: bytes ): - from pus_tc.devs.rws import SetIds + from pus_tc.devs.reaction_wheels import RwSetIds current_idx = 0 - if set_id == SetIds.TEMP_SET: + if set_id == RwSetIds.TEMPERATURE_SET_ID: log_to_both( printer, f"Received Temperature HK (ID {set_id}) from Reaction Wheel {object_id.name}", @@ -718,7 +722,7 @@ def handle_rw_hk_data( temp = struct.unpack("!I", hk_data[0:4]) log_to_both(printer, f"Temperature {temp}") current_idx += 4 - if set_id == SetIds.STATUS: + if set_id == RwSetIds.STATUS_SET_ID: log_to_both( printer, f"Received Status HK (ID {set_id}) from Reaction Wheel {object_id.name}", @@ -733,7 +737,7 @@ def handle_rw_hk_data( printer, f"Speed {speed} rpm | Reference Speed {ref_speed} rpm | State {state} | CLC Mode {clc_mode}", ) - if set_id == SetIds.LAST_RESET: + if set_id == RwSetIds.LAST_RESET: log_to_both( printer, f"Received Last Reset HK (ID {set_id}) from Reaction Wheel {object_id.name}", @@ -748,7 +752,7 @@ def handle_rw_hk_data( printer, f"Last Reset Status {last_reset_status} | Current Reset Status {curr_reset_status}", ) - if set_id == SetIds.TM_SET: + if set_id == RwSetIds.TM_SET: log_to_both( printer, f"Received TM HK (ID {set_id}) from Reaction Wheel {object_id.name}", diff --git a/tmtccmd b/tmtccmd index ea29923..9f566a7 160000 --- a/tmtccmd +++ b/tmtccmd @@ -1 +1 @@ -Subproject commit ea2992372f1ece7a9dab297ae390a5ab729e8f04 +Subproject commit 9f566a739ab91ed8f461cdbb6a3179faf912e4e0