From 40c086086b6ad0a3707420a12d6185e8dcf2abf2 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 21 Jul 2023 10:26:37 +0200 Subject: [PATCH 1/4] new event --- eive_tmtc/config/events.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/eive_tmtc/config/events.csv b/eive_tmtc/config/events.csv index 228b75b..33223d9 100644 --- a/eive_tmtc/config/events.csv +++ b/eive_tmtc/config/events.csv @@ -273,6 +273,7 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path 14011;0x36bb;I2C_REBOOT;HIGH;I2C is unavailable. Recovery did not work, performing full reboot.;mission/sysDefs.h 14012;0x36bc;PDEC_REBOOT;HIGH;PDEC recovery through reset was not possible, performing full reboot.;mission/sysDefs.h 14013;0x36bd;FIRMWARE_INFO;INFO;Version information of the firmware (not OBSW). P1: Byte 0: Major, Byte 1: Minor, Byte 2: Patch, Byte 3: Has Git Hash P2: First four letters of Git SHA is the last byte of P1 is set.;mission/sysDefs.h +14014;0x36be;ACTIVE_SD_INFO;INFO;Active SD card info. 0: OFF, 1: ON, 2: MOUNTED. P1: SD Card 0, P2: SD Card 2.;mission/sysDefs.h 14100;0x3714;NO_VALID_SENSOR_TEMPERATURE;MEDIUM;No description;mission/controller/tcsDefs.h 14101;0x3715;NO_HEALTHY_HEATER_AVAILABLE;MEDIUM;No description;mission/controller/tcsDefs.h 14102;0x3716;SYRLINKS_OVERHEATING;HIGH;No description;mission/controller/tcsDefs.h From fd6b76bfdde8351bcf848e5a13700fee14ae1254 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 21 Jul 2023 11:04:32 +0200 Subject: [PATCH 2/4] update events.csv --- eive_tmtc/config/events.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eive_tmtc/config/events.csv b/eive_tmtc/config/events.csv index 33223d9..61e3a82 100644 --- a/eive_tmtc/config/events.csv +++ b/eive_tmtc/config/events.csv @@ -273,7 +273,7 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path 14011;0x36bb;I2C_REBOOT;HIGH;I2C is unavailable. Recovery did not work, performing full reboot.;mission/sysDefs.h 14012;0x36bc;PDEC_REBOOT;HIGH;PDEC recovery through reset was not possible, performing full reboot.;mission/sysDefs.h 14013;0x36bd;FIRMWARE_INFO;INFO;Version information of the firmware (not OBSW). P1: Byte 0: Major, Byte 1: Minor, Byte 2: Patch, Byte 3: Has Git Hash P2: First four letters of Git SHA is the last byte of P1 is set.;mission/sysDefs.h -14014;0x36be;ACTIVE_SD_INFO;INFO;Active SD card info. 0: OFF, 1: ON, 2: MOUNTED. P1: SD Card 0, P2: SD Card 2.;mission/sysDefs.h +14014;0x36be;ACTIVE_SD_INFO;INFO;Active SD card info. 0: OFF, 1: ON, 2: MOUNTED. P1: SD Card 0, P2: SD Card 1.;mission/sysDefs.h 14100;0x3714;NO_VALID_SENSOR_TEMPERATURE;MEDIUM;No description;mission/controller/tcsDefs.h 14101;0x3715;NO_HEALTHY_HEATER_AVAILABLE;MEDIUM;No description;mission/controller/tcsDefs.h 14102;0x3716;SYRLINKS_OVERHEATING;HIGH;No description;mission/controller/tcsDefs.h From 87b766dfb8726444fa7a7326aa510b0d229e986e Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 21 Jul 2023 11:36:01 +0200 Subject: [PATCH 3/4] active SD info --- eive_tmtc/pus_tm/event_handler.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/eive_tmtc/pus_tm/event_handler.py b/eive_tmtc/pus_tm/event_handler.py index fdd5e89..77c8a1e 100644 --- a/eive_tmtc/pus_tm/event_handler.py +++ b/eive_tmtc/pus_tm/event_handler.py @@ -126,6 +126,13 @@ def handle_event_packet( # noqa C901: Complexity okay here time = event_def.param1 + event_def.param2 / 1000.0 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}" + ) if info.name == "HEALTH_INFO": specific_handler = True health = FsfwHealth(event_def.param1) From a82cbff5a83eb37c68234bdeecd3b7d308d65eb1 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 21 Jul 2023 11:47:37 +0200 Subject: [PATCH 4/4] works well --- eive_tmtc/pus_tm/event_handler.py | 16 ++++++++++++---- eive_tmtc/tmtc/core.py | 13 +++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) 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