diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f20da8..f7ae431 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ list yields a list of all related PRs for each release. # [unreleased] +## Added + +- Internal error reporter dataset handling. + # [v5.0.0] ## Changed diff --git a/eive_tmtc/config/object_ids.py b/eive_tmtc/config/object_ids.py index 21e7822..4d09d9e 100644 --- a/eive_tmtc/config/object_ids.py +++ b/eive_tmtc/config/object_ids.py @@ -18,6 +18,7 @@ __OBJECT_ID_DICT = None # Core Object IDs SOLAR_ARRAY_DEPLOYMENT_ID = bytes([0x44, 0x41, 0x00, 0xA2]) +INTERNAL_ERROR_REPORTER_ID = bytes([0x53, 0x04, 0x00, 0x00]) # Power Object IDs PCDU_HANDLER_ID = bytes([0x44, 0x20, 0x00, 0xA1]) diff --git a/eive_tmtc/pus_tm/hk_handling.py b/eive_tmtc/pus_tm/hk_handling.py index e149371..ca81bb3 100644 --- a/eive_tmtc/pus_tm/hk_handling.py +++ b/eive_tmtc/pus_tm/hk_handling.py @@ -3,6 +3,7 @@ import logging # from pus_tm.tcp_server_objects import TCP_SEVER_SENSOR_TEMPERATURES from eive_tmtc.tmtc.acs.acs_ctrl import handle_acs_ctrl_hk_data +from eive_tmtc.tmtc.internal_err_reporter import handle_ier_hk_data from eive_tmtc.tmtc.payload.ploc_mpsoc import handle_ploc_mpsoc_hk_data from eive_tmtc.tmtc.tcs.rtd import RTD_NAMES, handle_rtd_hk from eive_tmtc.tmtc.acs.star_tracker import handle_str_hk_data @@ -122,6 +123,8 @@ def handle_regular_hk_print( # noqa C901: Complexity okay here return handle_ploc_mpsoc_hk_data(pw=pw, hk_data=hk_data, set_id=set_id) elif objb == obj_ids.ACU_HANDLER_ID: return handle_acu_hk_data(pw=pw, hk_data=hk_data, set_id=set_id) + elif objb == obj_ids.INTERNAL_ERROR_REPORTER_ID: + return handle_ier_hk_data(pw=pw, hk_data=hk_data, set_id=set_id) elif objb == obj_ids.RAD_SENSOR_ID: return handle_rad_sensor_data(pw=pw, hk_data=hk_data, set_id=set_id) elif objb in [obj_ids.RW1_ID, obj_ids.RW2_ID, obj_ids.RW3_ID, obj_ids.RW4_ID]: diff --git a/eive_tmtc/pus_tm/factory_hook.py b/eive_tmtc/pus_tm/pus_demux.py similarity index 100% rename from eive_tmtc/pus_tm/factory_hook.py rename to eive_tmtc/pus_tm/pus_demux.py diff --git a/eive_tmtc/tmtc/internal_err_reporter.py b/eive_tmtc/tmtc/internal_err_reporter.py new file mode 100644 index 0000000..6c26c5f --- /dev/null +++ b/eive_tmtc/tmtc/internal_err_reporter.py @@ -0,0 +1,24 @@ +import enum +import struct + +from tmtccmd.fsfw.tmtc_printer import FsfwTmTcPrinter + +from eive_tmtc.pus_tm.defs import PrintWrapper + + +class SetId(enum.IntEnum): + ERROR_ID = 0 + + +def handle_ier_hk_data(pw: PrintWrapper, hk_data: bytes, set_id: int): + pw.dlog(f"Received internal error reporter HK data with set ID {set_id}") + if set_id == SetId.ERROR_ID: + fmt_str = "!III" + inc_len = struct.calcsize(fmt_str) + (tm_errors, queue_errors, store_hits) = struct.unpack( + fmt_str, hk_data[:inc_len] + ) + pw.dlog(f"TM Errors: {tm_errors}") + pw.dlog(f"Queue Errors: {queue_errors}") + pw.dlog(f"Store Errors: {store_hits}") + pw.dlog(FsfwTmTcPrinter.get_validity_buffer(hk_data[inc_len:], 3)) diff --git a/tmtcc.py b/tmtcc.py index 739ecf0..94a8d84 100755 --- a/tmtcc.py +++ b/tmtcc.py @@ -94,7 +94,7 @@ from eive_tmtc.config.definitions import ( CFDP_REMOTE_ENTITY_ID, ) from eive_tmtc.config.hook import EiveHookObject -from eive_tmtc.pus_tm.factory_hook import pus_factory_hook +from eive_tmtc.pus_tm.pus_demux import pus_factory_hook from eive_tmtc.pus_tc.procedure_packer import handle_default_procedure _LOGGER = APP_LOGGER