From 3c302bd4e8cd42a0ac568bfc6029a00418487a20 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 5 Apr 2022 15:19:46 +0200 Subject: [PATCH] tmtccmd refactoring --- pus_tc/tc_packer_hook.py | 7 +++++++ pus_tm/factory_hook.py | 4 ++++ tmtccli.py | 23 +++++++++++++---------- tmtccmd | 2 +- tmtcgui.py | 8 ++++---- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/pus_tc/tc_packer_hook.py b/pus_tc/tc_packer_hook.py index d1be4fc..84e7d3d 100644 --- a/pus_tc/tc_packer_hook.py +++ b/pus_tc/tc_packer_hook.py @@ -6,6 +6,7 @@ from typing import Union from tmtccmd.config.definitions import CoreServiceList from tmtccmd.logging import get_console_logger +from tmtccmd.logging.pus import log_pus_tc from tmtccmd.tc.definitions import TcQueueT from tmtccmd.tc.service_5_event import pack_generic_service5_test_into from tmtccmd.pus.service_17_test import pack_service_17_ping_command @@ -68,6 +69,12 @@ from config.object_ids import ( LOGGER = get_console_logger() +def pre_tc_send_cb(packet: bytes, user_args: any): + service = packet[7] + subservice = packet[8] + log_pus_tc(packet=packet, srv_subservice=(service, subservice)) + + def pack_service_queue_user( service: Union[str, int], op_code: str, service_queue: TcQueueT ): diff --git a/pus_tm/factory_hook.py b/pus_tm/factory_hook.py index 78b0fea..150cd1e 100644 --- a/pus_tm/factory_hook.py +++ b/pus_tm/factory_hook.py @@ -6,6 +6,7 @@ from tmtccmd.tm.service_8_fsfw_functional_cmd import Service8FsfwTm from spacepackets.ecss.tm import PusTelemetry from tmtccmd.logging import get_console_logger +from tmtccmd.logging.pus import log_pus_tm, log_unknown_packet, PacketTypes from tmtccmd.pus.service_1_verification import Service1TMExtended from tmtccmd.pus.service_17_test import Service17TMExtended @@ -32,6 +33,7 @@ def pus_factory_hook(raw_tm_packet: bytes, tmtc_printer: FsfwTmTcPrinter): LOGGER.warning("Detected packet shorter than 8 bytes!") return service_type = raw_tm_packet[7] + subservice_type = raw_tm_packet[8] tm_packet = None try: if service_type == 1: @@ -57,9 +59,11 @@ def pus_factory_hook(raw_tm_packet: bytes, tmtc_printer: FsfwTmTcPrinter): tm_packet = PusTelemetry.unpack(raw_telemetry=raw_tm_packet) tm_packet.print_source_data(PrintFormats.HEX) LOGGER.info(f"Received packet with service {service_type}") + log_pus_tm(packet=raw_tm_packet, srv_subservice=(service_type, subservice_type)) # tmtc_printer.print_telemetry( # packet_if=tm_packet, info_if=tm_packet, print_raw_tm=False # ) except ValueError: # TODO: Log faulty packet LOGGER.warning("Invalid packet format detected") + log_unknown_packet(packet=raw_tm_packet, packet_type=PacketTypes.TM) diff --git a/tmtccli.py b/tmtccli.py index de60094..77c269d 100755 --- a/tmtccli.py +++ b/tmtccli.py @@ -26,16 +26,11 @@ limitations under the License. @author R. Mueller """ -import logging import sys import traceback try: - from tmtccmd.runner import ( - initialize_tmtc_commander, - run_tmtc_commander, - add_ccsds_handler, - ) + import tmtccmd.runner as tmtccmd from tmtccmd.ccsds.handler import CcsdsTmHandler, ApidHandler from tmtccmd.logging import init_console_logger except ImportError as error: @@ -59,20 +54,28 @@ except ImportError as error: from config.hook_implementations import EiveHookObject from config.version import __version__ from config.definitions import PUS_APID +from pus_tc.tc_packer_hook import pre_tc_send_cb from pus_tm.factory_hook import ccsds_tm_handler def main(): - hook_obj = EiveHookObject() print(f"-- eive tmtc version {__version__} --") print(f"-- spacepackets version {spacepackets.__version__} --") - initialize_tmtc_commander(hook_object=hook_obj) + hook_obj = EiveHookObject() + tmtccmd.init_tmtccmd(hook_object=hook_obj) ccsds_handler = CcsdsTmHandler() init_console_logger() pus_handler = ApidHandler(cb=ccsds_tm_handler, queue_len=50, user_args=None) ccsds_handler.add_tm_handler(apid=PUS_APID, handler=pus_handler) - add_ccsds_handler(ccsds_handler) - run_tmtc_commander(False) + tmtccmd.add_ccsds_handler(ccsds_handler) + tmtccmd.setup_tmtccmd(use_gui=False, reduced_printout=False) + tmtc_backend = tmtccmd.get_default_tmtc_backend( + hook_obj=hook_obj, + json_cfg_path=hook_obj.get_json_config_file_path(), + tm_handler=ccsds_handler + ) + tmtc_backend.set_pre_send_cb(callable=pre_tc_send_cb, user_args=None) + tmtccmd.run_tmtccmd(False, tmtc_backend=tmtc_backend, run_setup=False) if __name__ == "__main__": diff --git a/tmtccmd b/tmtccmd index 0107689..092babf 160000 --- a/tmtccmd +++ b/tmtccmd @@ -1 +1 @@ -Subproject commit 0107689ce4362a315fd06642322e0487ab17ca90 +Subproject commit 092babfe1430c756f0b3b1eb55333c8771b3e2b9 diff --git a/tmtcgui.py b/tmtcgui.py index c5a7978..16759bc 100755 --- a/tmtcgui.py +++ b/tmtcgui.py @@ -35,8 +35,8 @@ from pus_tm.factory_hook import ccsds_tm_handler try: from tmtccmd.runner import ( - initialize_tmtc_commander, - run_tmtc_commander, + init_tmtccmd, + run_tmtccmd, add_ccsds_handler, ) from tmtccmd.ccsds.handler import CcsdsTmHandler @@ -56,13 +56,13 @@ def main(): hook_obj = EiveHookObject() print(f"-- eive tmtc version {__version__}") print(f"-- spacepackets version {spacepackets.__version__} --") - initialize_tmtc_commander(hook_object=hook_obj) + init_tmtccmd(hook_object=hook_obj) ccsds_handler = CcsdsTmHandler() ccsds_handler.add_tm_handler( apid=PUS_APID, pus_tm_handler=ccsds_tm_handler, max_queue_len=50 ) add_ccsds_handler(ccsds_handler) - run_tmtc_commander(use_gui=True) + run_tmtccmd(use_gui=True) if __name__ == "__main__":