import enum import pprint import struct from eive_tmtc.pus_tm.defs import PrintWrapper from tmtccmd.util import ObjectIdU32 from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter class SetIds(enum.IntEnum): SENSOR_TEMPERATURE_SET = 0 DEVICE_TEMPERATURE_SET = 1 SUS_TEMPERATURE_SET = 2 def handle_thermal_controller_hk_data( object_id: ObjectIdU32, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes ): # need a better solutuon for this is this is used again.. """ if TCP_TEMP_SENS_SERVER is None: TCP_TEMP_SENS_SERVER = TmTcpServer("localhost", 7305) if TCP_TEMP_DEV_SERVER: TCP_TEMP_DEV_SERVER = TmTcpServer("localhost", 7306) """ if set_id == SetIds.SENSOR_TEMPERATURE_SET: pw = PrintWrapper(printer) pw.dlog("Received sensor temperature data") # get all the floats tm_data = struct.unpack("!ffffffffffffffffff", hk_data[: 18 * 4]) parsed_data = { "SENSOR_PLOC_HEATSPREADER": tm_data[0], "SENSOR_PLOC_MISSIONBOARD": tm_data[1], "SENSOR_4K_CAMERA": tm_data[2], "SENSOR_DAC_HEATSPREADER": tm_data[3], "SENSOR_STARTRACKER": tm_data[4], "SENSOR_RW1": tm_data[5], "SENSOR_DRO": tm_data[6], "SENSOR_SCEX": tm_data[7], "SENSOR_X8": tm_data[8], "SENSOR_HPA": tm_data[9], "SENSOR_TX_MODUL": tm_data[10], "SENSOR_MPA": tm_data[11], "SENSOR_ACU": tm_data[12], "SENSOR_PLPCDU_HEATSPREADER": tm_data[13], "SENSOR_TCS_BOARD": tm_data[14], "SENSOR_MAGNETTORQUER": tm_data[15], "TMP1075 1": tm_data[16], "TMP1075 2": tm_data[17], } printer.file_logger.info(str(parsed_data)) pp = pprint.PrettyPrinter(depth=4) pp.pprint(parsed_data) # tcp_server_sensor_temperatures.report_parsed_hk_data( # object_id, set_id, parsed_data # ) elif set_id == SetIds.DEVICE_TEMPERATURE_SET: pw = PrintWrapper(printer) pw.dlog("Received device temperature data") fmt_str = "!fhhhhiiiifffhffffffffffffff" tm_data = struct.unpack(fmt_str, hk_data[:98]) parsed_data = { "Q7S_TEMPERATURE": tm_data[0], "BATTERY_TEMPERATURE_1": tm_data[1], "BATTERY_TEMPERATURE_2": tm_data[2], "BATTERY_TEMPERATURE_3": tm_data[3], "BATTERY_TEMPERATURE_4": tm_data[4], "RW_1_TEMPERATURE": tm_data[5], "RW_2_TEMPERATURE": tm_data[6], "RW_3_TEMPERATURE": tm_data[7], "RW_4_TEMPERATURE": tm_data[8], "STARTRACKER_TEMPERATURE": tm_data[9], "SYRLINKS_POWER_AMPLIFIER_TEMPERATURE": tm_data[10], "SYRLINKS_BASEBAND_BOARD_TEMPERATURE": tm_data[11], "MGT_TEMPERATURE": tm_data[12], "ACU_TEMPERATURE_1": tm_data[13], "ACU_TEMPERATURE_2": tm_data[14], "ACU_TEMPERATURE_3": tm_data[15], "PDU1_TEMPERATURE": tm_data[16], "PDU2_TEMPERATURE": tm_data[17], "P60DOCK_TEMPERATURE_1": tm_data[18], "P60DOCK_TEMPERATURE_2": tm_data[19], "GYRO_0_TEMPERATURE": tm_data[20], "GYRO_1_TEMPERATURE": tm_data[21], "GYRO_2_TEMPERATURE": tm_data[22], "GYRO_3_TEMPERATURE": tm_data[23], "MGM_0_TEMPERATURE": tm_data[24], "MGM_1_TEMPERATURE": tm_data[25], "ADC_PL_PCDU_TEMPERATURE": tm_data[26], } printer.file_logger.info(str(parsed_data)) pp = pprint.PrettyPrinter(depth=4) pp.pprint(parsed_data) # print(parsed_data) # tcp_server_device_temperatures.report_parsed_hk_data( # object_id, set_id, parsed_data # ) elif set_id == SetIds.SUS_TEMPERATURE_SET: pass # pw = PrintWrapper(printer) # pw.dlog("Received SUS temperature data") # fmt_str = "!ffffffffffffffffff" # tm_data = struct.unpack(fmt_str, hk_data[:4 * 18]) # parsed_data = { # "SUS_0": tm_data[0], # "SUS_1": tm_data[1], # "SUS_2": tm_data[2], # "SUS_3": tm_data[3], # "SUS_4": tm_data[4], # "SUS_5": tm_data[5], # "SUS_6": tm_data[6], # "SUS_7": tm_data[7], # "SUS_8": tm_data[8], # "SUS_9": tm_data[9], # "SUS_10": tm_data[10], # "SUS_11": tm_data[11], # } # print(parsed_data) # TODO: Forward data to space simulator