diff --git a/eive_tmtc/pus_tm/pus_handler.py b/eive_tmtc/pus_tm/pus_handler.py index 805c6ec..e6d9d7a 100644 --- a/eive_tmtc/pus_tm/pus_handler.py +++ b/eive_tmtc/pus_tm/pus_handler.py @@ -15,7 +15,7 @@ from tmtccmd.logging.pus import RawTmtcTimedLogWrapper from tmtccmd.pus import VerificationWrapper from tmtccmd.pus.s20_fsfw_param import Service20FsfwTm, Service20ParamDumpWrapper from tmtccmd.pus.s20_fsfw_param_defs import CustomSubservice as ParamSubservice -from tmtccmd.pus.s200_fsfw_mode import Service200FsfwTm +from tmtccmd.pus.s200_fsfw_mode import Service200FsfwReader, Service200FsfwTm from tmtccmd.pus.s200_fsfw_mode import Subservice as ModeSubservice from tmtccmd.tmtc import GenericApidHandlerBase, SpecificApidHandlerBase from eive_tmtc.config.definitions import TM_DB_PATH, PUS_APID @@ -193,20 +193,19 @@ class PusHandler(SpecificApidHandlerBase): f"unknown subservice {tm_packet.subservice} for parameter service" ) - def _handle_mode_packet(self, raw_data: bytes, _: PusTelemetry) -> bool: - tm_packet = Service200FsfwTm.unpack( - raw_telemetry=raw_data, time_reader=CdsShortTimestamp.empty() - ) - if tm_packet.subservice == ModeSubservice.TM_CANT_REACH_MODE: + def _handle_mode_packet(self, pus_tm: PusTelemetry) -> bool: + tm_packet = Service200FsfwReader(pus_tm) + if tm_packet.tm.subservice == ModeSubservice.TM_CANT_REACH_MODE: obj_id = tm_packet.object_id obj_id_obj = self.obj_id_dict.get(obj_id) retval = tm_packet.return_value + assert retval is not None string_list = generic_retval_printout(retval) self.pw.dlog(f"Received Mode Reply from {obj_id_obj}: Can't reach mode.") for string in string_list: self.pw.dlog(f"Reason: {string}") return True - if tm_packet.subservice == ModeSubservice.TM_WRONG_MODE_REPLY: + if tm_packet.tm.subservice == ModeSubservice.TM_WRONG_MODE_REPLY: self.pw.dlog(f"Received Mode TM wrong mode reply, mode: {tm_packet.mode}") return False