From dc37a29d347f57265da4ab1a78c9f67bab57846c Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 31 Jan 2024 15:21:32 +0100 Subject: [PATCH] cleaned up event handling code a bit --- eive_tmtc/pus_tm/event_handler.py | 54 +++++++++++++++++-------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/eive_tmtc/pus_tm/event_handler.py b/eive_tmtc/pus_tm/event_handler.py index 496c28b..e1dc53f 100644 --- a/eive_tmtc/pus_tm/event_handler.py +++ b/eive_tmtc/pus_tm/event_handler.py @@ -1,26 +1,24 @@ -import logging import datetime +import logging import sys +from spacepackets.ccsds.time import CdsShortTimestamp +from tmtccmd.fsfw import EventInfo +from tmtccmd.pus.s5_fsfw_event import EventDefinition, Service5Tm +from tmtccmd.pus.s200_fsfw_mode import Mode +from tmtccmd.pus.s201_fsfw_health import FsfwHealth + from eive_tmtc.config.events import get_event_dict from eive_tmtc.config.object_ids import get_object_ids from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.verification_handler import generic_retval_printout from eive_tmtc.tmtc.acs.subsystem import AcsMode -from eive_tmtc.tmtc.core import SdState, SdCardSelect -from tmtccmd.pus.s200_fsfw_mode import Mode -from tmtccmd.pus.s201_fsfw_health import FsfwHealth - -from tmtccmd.pus.s5_fsfw_event import Service5Tm -from tmtccmd.fsfw import EventInfo -from spacepackets.ccsds.time import CdsShortTimestamp +from eive_tmtc.tmtc.core import SdCardSelect, SdState _LOGGER = logging.getLogger(__name__) -def handle_event_packet( # noqa C901: Complexity okay here - raw_tm: bytes, pw: PrintWrapper -): # noqa C901: Complexity okay here +def handle_event_packet(raw_tm: bytes, pw: PrintWrapper): tm = Service5Tm.unpack(data=raw_tm, time_reader=CdsShortTimestamp.empty()) event_dict = get_event_dict() event_def = tm.event_definition @@ -36,16 +34,30 @@ def handle_event_packet( # noqa C901: Complexity okay here obj_name = event_def.reporter_id.hex(sep=",") else: obj_name = obj_id_obj.name + assert tm.time_provider is not None generic_event_string = ( f"Object {obj_name} generated Event {info.name} (ID: {event_def.event_id:#04x})" f" at {tm.time_provider.as_date_time()}" ) _LOGGER.info(generic_event_string) - pw.file_logger.info( - f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}:" - f" {generic_event_string}" - ) - specific_handler = False + if pw.file_logger is not None: + pw.file_logger.info( + f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}:" + f" {generic_event_string}" + ) + specific_handler = handle_specific_events(pw, obj_name, info, event_def) + if not specific_handler: + additional_event_info = ( + f"Additional info: {info.info} | P1: {event_def.param1} | " + f"P2: {event_def.param2}" + ) + pw.dlog(additional_event_info) + + +def handle_specific_events( + pw: PrintWrapper, obj_name: str, info: EventInfo, event_def: EventDefinition +) -> bool: + specific_handler = True if info.name == "MODE_TRANSITION_FAILED": reason = generic_retval_printout(event_def.param1) for string in reason: @@ -151,12 +163,4 @@ def handle_event_packet( # noqa C901: Complexity okay here mode = event_def.param1 submode = event_def.param2 pw.dlog(f"Mode Number {mode}, Submode: {submode}") - if not specific_handler: - additional_event_info = ( - f"Additional info: {info.info} | P1: {event_def.param1} | " - f"P2: {event_def.param2}" - ) - pw.dlog(additional_event_info) - if not specific_handler: - # printer.handle_long_tm_print(packet_if=tm.pus_tm, info_if=tm.pus_tm) - pass + return specific_handler