2022-05-18 16:02:23 +02:00
|
|
|
"""HK Handling for EIVE OBSW"""
|
2022-09-29 17:41:37 +02:00
|
|
|
# from pus_tm.tcp_server_objects import TCP_SEVER_SENSOR_TEMPERATURES
|
2022-11-03 22:04:21 +01:00
|
|
|
from tmtc.acs.acs_ctrl import handle_acs_ctrl_mgm_data
|
2022-05-24 02:16:54 +02:00
|
|
|
from pus_tm.devs.plpcdu import handle_plpcdu_hk
|
2022-05-23 15:38:05 +02:00
|
|
|
from pus_tm.devs.rad_sensor import handle_rad_sensor_data
|
2022-05-27 09:54:06 +02:00
|
|
|
from pus_tm.devs.sus import handle_sus_hk
|
2022-06-01 10:47:57 +02:00
|
|
|
from pus_tm.system.tcs import handle_thermal_controller_hk_data
|
2022-11-03 22:04:21 +01:00
|
|
|
from tmtc.payload.ploc_supervisor import handle_supv_hk_data
|
2022-10-18 17:26:43 +02:00
|
|
|
from tmtc.acs.reaction_wheels import handle_rw_hk_data
|
2022-05-18 16:02:23 +02:00
|
|
|
from tmtccmd.tm.pus_3_fsfw_hk import (
|
|
|
|
Service3Base,
|
|
|
|
HkContentType,
|
|
|
|
Service3FsfwTm,
|
|
|
|
)
|
2022-07-08 16:25:46 +02:00
|
|
|
from tmtccmd.util.obj_id import ObjectIdU32, ObjectIdDictT
|
2022-05-19 13:20:22 +02:00
|
|
|
from tmtccmd.logging import get_console_logger
|
2022-05-18 16:02:23 +02:00
|
|
|
|
2022-05-19 13:20:22 +02:00
|
|
|
from pus_tm.devs.bpx_bat import handle_bpx_hk_data
|
|
|
|
from pus_tm.devs.gps import handle_gps_data
|
|
|
|
from pus_tm.devs.gyros import handle_gyros_hk_data
|
2022-08-25 16:14:21 +02:00
|
|
|
from tmtc.power.tm import handle_pdu_data, handle_p60_hk_data, handle_acu_hk_data
|
2022-05-19 13:20:22 +02:00
|
|
|
from pus_tm.devs.syrlinks import handle_syrlinks_hk_data
|
2022-10-21 11:28:33 +02:00
|
|
|
from tmtc.acs.imtq import (
|
|
|
|
ImtqSetIds,
|
|
|
|
handle_self_test_data,
|
|
|
|
handle_eng_set,
|
|
|
|
handle_calibrated_mtm_measurement,
|
|
|
|
handle_raw_mtm_measurement,
|
|
|
|
)
|
2022-06-01 10:47:57 +02:00
|
|
|
from pus_tm.defs import FsfwTmTcPrinter
|
2022-05-19 13:20:22 +02:00
|
|
|
from pus_tm.system.core import handle_core_hk_data
|
|
|
|
from pus_tm.devs.mgms import handle_mgm_hk_data
|
|
|
|
import config.object_ids as obj_ids
|
2022-05-18 16:02:23 +02:00
|
|
|
|
|
|
|
|
|
|
|
LOGGER = get_console_logger()
|
|
|
|
|
|
|
|
|
2022-08-19 14:48:10 +02:00
|
|
|
FORWARD_SENSOR_TEMPS = False
|
|
|
|
|
|
|
|
|
2022-05-18 16:02:23 +02:00
|
|
|
def handle_hk_packet(
|
|
|
|
raw_tm: bytes,
|
|
|
|
obj_id_dict: ObjectIdDictT,
|
|
|
|
printer: FsfwTmTcPrinter,
|
|
|
|
):
|
|
|
|
tm_packet = Service3FsfwTm.unpack(raw_telemetry=raw_tm, custom_hk_handling=False)
|
|
|
|
named_obj_id = obj_id_dict.get(tm_packet.object_id.as_bytes)
|
|
|
|
if named_obj_id is None:
|
|
|
|
named_obj_id = tm_packet.object_id
|
|
|
|
if tm_packet.subservice == 25 or tm_packet.subservice == 26:
|
|
|
|
hk_data = tm_packet.tm_data[8:]
|
2022-08-19 14:48:10 +02:00
|
|
|
if FORWARD_SENSOR_TEMPS:
|
2022-09-29 17:41:37 +02:00
|
|
|
# TODO: Maybe use singleton?
|
|
|
|
# TCP_SEVER_SENSOR_TEMPERATURES.report_raw_hk_data(
|
|
|
|
# object_id=named_obj_id, set_id=tm_packet.set_id, hk_data=hk_data
|
|
|
|
# )
|
|
|
|
pass
|
2022-05-18 16:02:23 +02:00
|
|
|
printer.generic_hk_tm_print(
|
|
|
|
content_type=HkContentType.HK,
|
|
|
|
object_id=named_obj_id,
|
|
|
|
set_id=tm_packet.set_id,
|
|
|
|
hk_data=hk_data,
|
|
|
|
)
|
2022-05-23 14:04:34 +02:00
|
|
|
try:
|
|
|
|
handle_regular_hk_print(
|
|
|
|
printer=printer,
|
|
|
|
object_id=named_obj_id,
|
|
|
|
hk_packet=tm_packet,
|
|
|
|
hk_data=hk_data,
|
|
|
|
)
|
|
|
|
except ValueError as e:
|
|
|
|
LOGGER.exception(
|
|
|
|
f"{e} error when parsing HK data coming from {named_obj_id}"
|
|
|
|
)
|
2022-05-18 16:02:23 +02:00
|
|
|
if tm_packet.subservice == 10 or tm_packet.subservice == 12:
|
|
|
|
LOGGER.warning("HK definitions printout not implemented yet")
|
|
|
|
|
2022-05-19 13:20:22 +02:00
|
|
|
|
2022-05-18 16:02:23 +02:00
|
|
|
def handle_regular_hk_print(
|
|
|
|
printer: FsfwTmTcPrinter,
|
2022-07-05 02:12:54 +02:00
|
|
|
object_id: ObjectIdU32,
|
2022-05-18 16:02:23 +02:00
|
|
|
hk_packet: Service3Base,
|
|
|
|
hk_data: bytes,
|
|
|
|
):
|
|
|
|
objb = object_id.as_bytes
|
|
|
|
set_id = hk_packet.set_id
|
|
|
|
"""This function is called when a Service 3 Housekeeping packet is received."""
|
2022-07-05 02:12:54 +02:00
|
|
|
if objb in [obj_ids.RW1_ID, obj_ids.RW2_ID, obj_ids.RW3_ID, obj_ids.RW4_ID]:
|
2022-05-18 16:02:23 +02:00
|
|
|
handle_rw_hk_data(printer, object_id, set_id, hk_data)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb == obj_ids.SYRLINKS_HANDLER_ID:
|
2022-05-19 13:20:22 +02:00
|
|
|
handle_syrlinks_hk_data(printer=printer, hk_data=hk_data, set_id=set_id)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb == obj_ids.IMTQ_HANDLER_ID:
|
2022-05-18 16:02:23 +02:00
|
|
|
if (set_id >= ImtqSetIds.POSITIVE_X_TEST) and (
|
|
|
|
set_id <= ImtqSetIds.NEGATIVE_Z_TEST
|
|
|
|
):
|
|
|
|
return handle_self_test_data(printer, hk_data)
|
2022-05-24 18:57:52 +02:00
|
|
|
elif set_id == ImtqSetIds.ENG_HK_SET:
|
|
|
|
return handle_eng_set(printer, hk_data)
|
|
|
|
elif set_id == ImtqSetIds.CAL_MTM_SET:
|
|
|
|
return handle_calibrated_mtm_measurement(printer, hk_data)
|
|
|
|
elif set_id == ImtqSetIds.RAW_MTM_SET:
|
|
|
|
return handle_raw_mtm_measurement(printer, hk_data)
|
2022-05-18 16:02:23 +02:00
|
|
|
else:
|
2022-05-24 18:57:52 +02:00
|
|
|
LOGGER.info("Service 3 TM: IMTQ handler reply with unknown set id")
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb == obj_ids.GPS_CONTROLLER:
|
|
|
|
return handle_gps_data(printer=printer, hk_data=hk_data)
|
2022-05-27 14:32:58 +02:00
|
|
|
elif objb == obj_ids.BPX_HANDLER_ID:
|
2022-05-18 16:02:23 +02:00
|
|
|
handle_bpx_hk_data(hk_data=hk_data, set_id=set_id, printer=printer)
|
2022-05-27 14:32:58 +02:00
|
|
|
elif objb == obj_ids.CORE_CONTROLLER_ID:
|
2022-05-19 13:20:22 +02:00
|
|
|
return handle_core_hk_data(printer=printer, hk_data=hk_data, set_id=set_id)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb == obj_ids.PDU_1_HANDLER_ID:
|
2022-05-18 16:02:23 +02:00
|
|
|
return handle_pdu_data(
|
|
|
|
printer=printer, pdu_idx=1, set_id=set_id, hk_data=hk_data
|
|
|
|
)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb == obj_ids.PDU_2_HANDLER_ID:
|
2022-05-18 16:02:23 +02:00
|
|
|
return handle_pdu_data(
|
|
|
|
printer=printer, pdu_idx=2, set_id=set_id, hk_data=hk_data
|
|
|
|
)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb == obj_ids.ACU_HANDLER_ID:
|
2022-05-23 13:47:01 +02:00
|
|
|
return handle_acu_hk_data(printer=printer, hk_data=hk_data, set_id=set_id)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb == obj_ids.RAD_SENSOR_ID:
|
2022-05-23 15:38:05 +02:00
|
|
|
return handle_rad_sensor_data(printer=printer, hk_data=hk_data, set_id=set_id)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb in [obj_ids.RW1_ID, obj_ids.RW2_ID, obj_ids.RW3_ID, obj_ids.RW4_ID]:
|
2022-05-18 16:02:23 +02:00
|
|
|
return handle_rw_hk_data(
|
|
|
|
printer=printer, object_id=object_id, set_id=set_id, hk_data=hk_data
|
|
|
|
)
|
2022-05-27 09:54:06 +02:00
|
|
|
if objb in [
|
|
|
|
obj_ids.SUS_0_N_LOC_XFYFZM_PT_XF,
|
|
|
|
obj_ids.SUS_1_N_LOC_XBYFZM_PT_XB,
|
|
|
|
obj_ids.SUS_2_N_LOC_XFYBZB_PT_YB,
|
|
|
|
obj_ids.SUS_3_N_LOC_XFYBZF_PT_YF,
|
|
|
|
obj_ids.SUS_4_N_LOC_XMYFZF_PT_ZF,
|
|
|
|
obj_ids.SUS_5_N_LOC_XFYMZB_PT_ZB,
|
|
|
|
obj_ids.SUS_6_R_LOC_XFYBZM_PT_XF,
|
|
|
|
obj_ids.SUS_7_R_LOC_XBYBZM_PT_XB,
|
|
|
|
obj_ids.SUS_8_R_LOC_XBYBZB_PT_YB,
|
|
|
|
obj_ids.SUS_9_R_LOC_XBYBZB_PT_YF,
|
|
|
|
obj_ids.SUS_10_R_LOC_XMYBZF_PT_ZF,
|
|
|
|
obj_ids.SUS_11_R_LOC_XBYMZB_PT_ZB,
|
|
|
|
]:
|
|
|
|
handle_sus_hk(
|
|
|
|
object_id=object_id, hk_data=hk_data, printer=printer, set_id=set_id
|
|
|
|
)
|
2022-05-27 14:32:58 +02:00
|
|
|
elif objb == obj_ids.P60_DOCK_HANDLER:
|
2022-05-18 16:02:23 +02:00
|
|
|
handle_p60_hk_data(printer=printer, set_id=set_id, hk_data=hk_data)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb in [
|
2022-05-19 13:58:43 +02:00
|
|
|
obj_ids.GYRO_0_ADIS_HANDLER_ID,
|
|
|
|
obj_ids.GYRO_1_L3G_HANDLER_ID,
|
|
|
|
obj_ids.GYRO_2_ADIS_HANDLER_ID,
|
|
|
|
obj_ids.GYRO_3_L3G_HANDLER_ID,
|
2022-05-19 13:20:22 +02:00
|
|
|
]:
|
|
|
|
handle_gyros_hk_data(
|
|
|
|
object_id=object_id, hk_data=hk_data, printer=printer, set_id=set_id
|
|
|
|
)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb in [
|
2022-05-19 13:58:43 +02:00
|
|
|
obj_ids.MGM_0_LIS3_HANDLER_ID,
|
|
|
|
obj_ids.MGM_1_RM3100_HANDLER_ID,
|
|
|
|
obj_ids.MGM_2_LIS3_HANDLER_ID,
|
|
|
|
obj_ids.MGM_3_RM3100_HANDLER_ID,
|
2022-05-19 13:20:22 +02:00
|
|
|
]:
|
|
|
|
handle_mgm_hk_data(
|
|
|
|
object_id=object_id, hk_data=hk_data, printer=printer, set_id=set_id
|
|
|
|
)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb == obj_ids.PL_PCDU_ID:
|
2022-05-24 02:16:54 +02:00
|
|
|
handle_plpcdu_hk(set_id=set_id, hk_data=hk_data, printer=printer)
|
2022-05-24 01:49:57 +02:00
|
|
|
elif objb == obj_ids.THERMAL_CONTROLLER_ID:
|
2022-05-19 13:20:22 +02:00
|
|
|
handle_thermal_controller_hk_data(
|
|
|
|
object_id=object_id, printer=printer, set_id=set_id, hk_data=hk_data
|
|
|
|
)
|
2022-08-19 14:48:10 +02:00
|
|
|
elif objb == obj_ids.PLOC_SUPV_ID:
|
|
|
|
handle_supv_hk_data(set_id=set_id, hk_data=hk_data, printer=printer)
|
2022-08-16 11:48:53 +02:00
|
|
|
elif objb == obj_ids.ACS_CONTROLLER:
|
2022-08-16 12:51:31 +02:00
|
|
|
handle_acs_ctrl_mgm_data(printer, hk_data)
|
2022-05-18 16:02:23 +02:00
|
|
|
else:
|
2022-05-25 10:37:38 +02:00
|
|
|
LOGGER.info(
|
|
|
|
f"Service 3 TM: Parsing for object {object_id} and set ID {set_id} "
|
|
|
|
f"has not been implemented."
|
|
|
|
)
|