From a3941d7f3b064a2d93be9bab54ae33254aac2fb6 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 18 Jun 2021 16:28:53 +0200 Subject: [PATCH] refactored a lot --- tmtc/config/definitions.py | 1 + tmtc/config/hook_implementation.py | 8 +++---- tmtc/pus_tm/factory_hook.py | 34 ++++++++++++++++++++---------- tmtc/tmtc_client_cli.py | 12 ++++++++++- tmtc/tmtccmd | 2 +- 5 files changed, 39 insertions(+), 18 deletions(-) create mode 100644 tmtc/config/definitions.py diff --git a/tmtc/config/definitions.py b/tmtc/config/definitions.py new file mode 100644 index 0000000..c517c70 --- /dev/null +++ b/tmtc/config/definitions.py @@ -0,0 +1 @@ +PUS_APID = 0xef \ No newline at end of file diff --git a/tmtc/config/hook_implementation.py b/tmtc/config/hook_implementation.py index b03d7fa..c25fb26 100644 --- a/tmtc/config/hook_implementation.py +++ b/tmtc/config/hook_implementation.py @@ -11,6 +11,8 @@ from tmtccmd.pus_tm.service_3_base import Service3Base from tmtccmd.ecss.conf import PusVersion from tmtccmd.utility.tmtc_printer import TmTcPrinter +from config.definitions import PUS_APID + class FsfwHookBase(TmTcHookBase): @@ -28,7 +30,7 @@ class FsfwHookBase(TmTcHookBase): def add_globals_pre_args_parsing(self, gui: bool = False): from tmtccmd.config.globals import set_default_globals_pre_args_parsing set_default_globals_pre_args_parsing( - gui=gui, pus_tm_version=PusVersion.PUS_C, pus_tc_version=PusVersion.PUS_C, apid=0xef + gui=gui, pus_tm_version=PusVersion.PUS_C, pus_tc_version=PusVersion.PUS_C, apid=PUS_APID ) def add_globals_post_args_parsing(self, args: argparse.Namespace): @@ -50,10 +52,6 @@ class FsfwHookBase(TmTcHookBase): from pus_tc.tc_packing import pack_service_queue_user pack_service_queue_user(service=service, op_code=op_code, service_queue=service_queue) - def tm_user_factory_hook(self, raw_tm_packet: bytearray) -> Optional[PusTelemetry]: - from pus_tm.factory_hook import tm_user_factory_hook - return tm_user_factory_hook(raw_tm_packet=raw_tm_packet) - def get_object_ids(self) -> Dict[bytes, list]: from config.object_ids import get_object_ids return get_object_ids() diff --git a/tmtc/pus_tm/factory_hook.py b/tmtc/pus_tm/factory_hook.py index 8e5115a..13ac656 100644 --- a/tmtc/pus_tm/factory_hook.py +++ b/tmtc/pus_tm/factory_hook.py @@ -14,27 +14,39 @@ from tmtccmd.pus_tm.service_8_functional_cmd import Service8TM from tmtccmd.pus_tm.service_17_test import Service17TM from tmtccmd.pus_tm.service_20_parameters import Service20TM from tmtccmd.pus_tm.service_200_mode import Service200TM +from tmtccmd.utility.tmtc_printer import TmTcPrinter + +from config.definitions import PUS_APID + LOGGER = get_logger() -def tm_user_factory_hook(raw_tm_packet: bytearray) -> PusTelemetry: +def ccsds_tm_handler(apid: int, raw_tm_packet: bytearray, tmtc_printer: TmTcPrinter) -> None: + if apid == PUS_APID: + pus_packet_factory(raw_tm_packet=raw_tm_packet, tmtc_printer=tmtc_printer) + + +def pus_packet_factory(raw_tm_packet: bytearray, tmtc_printer: TmTcPrinter): service_type = raw_tm_packet[7] + tm_packet = None if service_type == 1: - return Service1TM(raw_tm_packet) + tm_packet = Service1TM(raw_tm_packet) if service_type == 2: - return Service2TM(raw_tm_packet) + tm_packet = Service2TM(raw_tm_packet) if service_type == 3: - return Service3TM(raw_tm_packet) + tm_packet = Service3TM(raw_tm_packet) if service_type == 8: - return Service8TM(raw_tm_packet) + tm_packet = Service8TM(raw_tm_packet) if service_type == 5: - return Service5TM(raw_tm_packet) + tm_packet = Service5TM(raw_tm_packet) if service_type == 17: - return Service17TM(raw_tm_packet) + tm_packet = Service17TM(raw_tm_packet) if service_type == 20: - return Service20TM(raw_tm_packet) + tm_packet = Service20TM(raw_tm_packet) if service_type == 200: - return Service200TM(raw_tm_packet) - LOGGER.info("The service " + str(service_type) + " is not implemented in Telemetry Factory") - return PusTelemetry(raw_tm_packet) + tm_packet = Service200TM(raw_tm_packet) + if tm_packet is None: + LOGGER.info("The service " + str(service_type) + " is not implemented in Telemetry Factory") + tm_packet = PusTelemetry(raw_tm_packet) + tmtc_printer.print_telemetry(packet=tm_packet) diff --git a/tmtc/tmtc_client_cli.py b/tmtc/tmtc_client_cli.py index e4a49df..f2bde8a 100755 --- a/tmtc/tmtc_client_cli.py +++ b/tmtc/tmtc_client_cli.py @@ -27,9 +27,16 @@ limitations under the License. @author R. Mueller """ import sys + +from tmtccmd.config.definitions import CoreGlobalIds +from tmtccmd.core.globals_manager import get_global + from config.hook_implementation import FsfwHookBase +from config.definitions import PUS_APID +from pus_tm.factory_hook import ccsds_tm_handler try: - from tmtccmd.runner import run_tmtc_commander, initialize_tmtc_commander + from tmtccmd.runner import run_tmtc_commander, initialize_tmtc_commander, add_ccsds_handler + from tmtccmd.ccsds.handler import CcsdsTmHandler except ImportError as error: run_tmtc_commander = None initialize_tmtc_commander = None @@ -42,6 +49,9 @@ except ImportError as error: def main(): hook_obj = FsfwHookBase() initialize_tmtc_commander(hook_object=hook_obj) + ccsds_handler = CcsdsTmHandler(tmtc_printer=None) + 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=False, app_name="TMTC Commander FSFW") diff --git a/tmtc/tmtccmd b/tmtc/tmtccmd index 9415eac..2bc1ad6 160000 --- a/tmtc/tmtccmd +++ b/tmtc/tmtccmd @@ -1 +1 @@ -Subproject commit 9415eac9eeb17dffed31f3a7a1ef849902eeb5c1 +Subproject commit 2bc1ad63657ba0f34b52f95acbbc8063030a6e64