diff --git a/eive_tmtc/pus_tm/event_handler.py b/eive_tmtc/pus_tm/event_handler.py index 77c8a1e..d90d3c2 100644 --- a/eive_tmtc/pus_tm/event_handler.py +++ b/eive_tmtc/pus_tm/event_handler.py @@ -7,6 +7,7 @@ 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.tc.pus_200_fsfw_mode import Mode from tmtccmd.tc.pus_201_fsfw_health import FsfwHealth @@ -127,12 +128,19 @@ def handle_event_packet( # noqa C901: Complexity okay here time_dt = datetime.datetime.fromtimestamp(time, datetime.timezone.utc) pw.dlog(f"Current time: {time_dt}") if info.name == "ACTIVE_SD_INFO": - active_sd = event_def.param1 sd_0_state = (event_def.param2 >> 16) & 0xFFFF sd_1_state = event_def.param2 & 0xFFFF - pw.dlog( - f"Active SD card {active_sd} | SD 0 State {sd_0_state} | SD 1 State {sd_1_state}" - ) + active_sd = event_def.param1 + try: + active_sd = SdCardSelect(event_def.param1) + sd_0_state = SdState((event_def.param2 >> 16) & 0xFFFF) + sd_1_state = SdState(event_def.param2 & 0xFFFF) + except IndexError: + _LOGGER.error(f"Received invalid event fields for event {event_def}") + finally: + pw.dlog( + f"Active SD card {active_sd!r} | SD 0 State {sd_0_state!r} | SD 1 State {sd_1_state!r}" + ) if info.name == "HEALTH_INFO": specific_handler = True health = FsfwHealth(event_def.param1) diff --git a/eive_tmtc/tmtc/core.py b/eive_tmtc/tmtc/core.py index f8869fa..6a85ce2 100644 --- a/eive_tmtc/tmtc/core.py +++ b/eive_tmtc/tmtc/core.py @@ -24,6 +24,19 @@ from tmtccmd.fsfw.tmtc_printer import FsfwTmTcPrinter _LOGGER = logging.getLogger(__name__) +class SdState(enum.IntEnum): + OFF = 0 + ON = 1 + MOUNTED = 2 + + +class SdCardSelect(enum.IntEnum): + SD_0 = 0 + SD_1 = 1 + BOTH = 2 + NONE = 3 + + class ActionId(enum.IntEnum): ANNOUNCE_VERSION = 1 ANNOUNCE_CURRENT_IMAGE = 2