import struct

from pus_tm.defs import PrintWrapper
from pus_tc.system.core import SetIds
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter


def handle_core_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
    if set_id == SetIds.HK:
        pw = PrintWrapper(printer)
        fmt_str = "!fff"
        inc_len = struct.calcsize(fmt_str)
        (temperature, ps_voltage, pl_voltage) = struct.unpack(
            fmt_str, hk_data[0 : 0 + inc_len]
        )
        printout = (
            f"Chip Temperature [°C] {temperature} | PS Voltage [mV] {ps_voltage} | "
            f"PL Voltage [mV] {pl_voltage}"
        )
        pw.dlog(printout)
        printer.print_validity_buffer(validity_buffer=hk_data[inc_len:], num_vars=3)