cleaned up event handling code a bit
EIVE/-/pipeline/head This commit looks good Details

This commit is contained in:
Robin Müller 2024-01-31 15:21:32 +01:00
parent d33013ed58
commit dc37a29d34
Signed by: muellerr
GPG Key ID: A649FB78196E3849
1 changed files with 29 additions and 25 deletions

View File

@ -1,26 +1,24 @@
import logging
import datetime import datetime
import logging
import sys 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.events import get_event_dict
from eive_tmtc.config.object_ids import get_object_ids from eive_tmtc.config.object_ids import get_object_ids
from eive_tmtc.pus_tm.defs import PrintWrapper from eive_tmtc.pus_tm.defs import PrintWrapper
from eive_tmtc.pus_tm.verification_handler import generic_retval_printout from eive_tmtc.pus_tm.verification_handler import generic_retval_printout
from eive_tmtc.tmtc.acs.subsystem import AcsMode from eive_tmtc.tmtc.acs.subsystem import AcsMode
from eive_tmtc.tmtc.core import SdState, SdCardSelect from eive_tmtc.tmtc.core import SdCardSelect, SdState
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
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
def handle_event_packet( # noqa C901: Complexity okay here def handle_event_packet(raw_tm: bytes, pw: PrintWrapper):
raw_tm: bytes, pw: PrintWrapper
): # noqa C901: Complexity okay here
tm = Service5Tm.unpack(data=raw_tm, time_reader=CdsShortTimestamp.empty()) tm = Service5Tm.unpack(data=raw_tm, time_reader=CdsShortTimestamp.empty())
event_dict = get_event_dict() event_dict = get_event_dict()
event_def = tm.event_definition 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=",") obj_name = event_def.reporter_id.hex(sep=",")
else: else:
obj_name = obj_id_obj.name obj_name = obj_id_obj.name
assert tm.time_provider is not None
generic_event_string = ( generic_event_string = (
f"Object {obj_name} generated Event {info.name} (ID: {event_def.event_id:#04x})" f"Object {obj_name} generated Event {info.name} (ID: {event_def.event_id:#04x})"
f" at {tm.time_provider.as_date_time()}" f" at {tm.time_provider.as_date_time()}"
) )
_LOGGER.info(generic_event_string) _LOGGER.info(generic_event_string)
pw.file_logger.info( if pw.file_logger is not None:
f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}:" pw.file_logger.info(
f" {generic_event_string}" f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}:"
) f" {generic_event_string}"
specific_handler = False )
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": if info.name == "MODE_TRANSITION_FAILED":
reason = generic_retval_printout(event_def.param1) reason = generic_retval_printout(event_def.param1)
for string in reason: for string in reason:
@ -151,12 +163,4 @@ def handle_event_packet( # noqa C901: Complexity okay here
mode = event_def.param1 mode = event_def.param1
submode = event_def.param2 submode = event_def.param2
pw.dlog(f"Mode Number {mode}, Submode: {submode}") pw.dlog(f"Mode Number {mode}, Submode: {submode}")
if not specific_handler: return 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