split up p60 hk set
This commit is contained in:
parent
25bab108df
commit
ab5cca85bf
@ -31,10 +31,11 @@ class GomspaceOpCodes:
|
|||||||
|
|
||||||
|
|
||||||
class SetIds:
|
class SetIds:
|
||||||
PDU_1 = 0x01
|
PDU_1 = 1
|
||||||
PDU_2 = 0x02
|
PDU_2 = 2
|
||||||
P60_DOCK = 0x03
|
P60_CORE = 3
|
||||||
ACU = 0x04
|
P60_AUX = 4
|
||||||
|
ACU = 5
|
||||||
|
|
||||||
|
|
||||||
class TableIds:
|
class TableIds:
|
||||||
|
@ -13,6 +13,7 @@ from tmtccmd.tm.service_3_fsfw_housekeeping import (
|
|||||||
from tmtccmd.logging import get_console_logger
|
from tmtccmd.logging import get_console_logger
|
||||||
from pus_tc.devs.bpx_batt import BpxSetIds
|
from pus_tc.devs.bpx_batt import BpxSetIds
|
||||||
from pus_tc.devs.syrlinks_hk_handler import SetIds
|
from pus_tc.devs.syrlinks_hk_handler import SetIds
|
||||||
|
from pus_tc.devs.p60dock import SetIds
|
||||||
from pus_tc.devs.imtq import ImtqSetIds
|
from pus_tc.devs.imtq import ImtqSetIds
|
||||||
from tmtccmd.pus.obj_id import ObjectId, ObjectIdDictT
|
from tmtccmd.pus.obj_id import ObjectId, ObjectIdDictT
|
||||||
from config.object_ids import (
|
from config.object_ids import (
|
||||||
@ -23,7 +24,7 @@ from config.object_ids import (
|
|||||||
BPX_HANDLER_ID,
|
BPX_HANDLER_ID,
|
||||||
CORE_CONTROLLER_ID,
|
CORE_CONTROLLER_ID,
|
||||||
P60_DOCK_HANDLER,
|
P60_DOCK_HANDLER,
|
||||||
PL_PCDU_ID
|
PL_PCDU_ID,
|
||||||
)
|
)
|
||||||
|
|
||||||
LOGGER = get_console_logger()
|
LOGGER = get_console_logger()
|
||||||
@ -429,133 +430,142 @@ P60_INDEX_LIST = [
|
|||||||
WDT_LIST = ["GND", "I2C", "CAN", "CSP0", "CSP1"]
|
WDT_LIST = ["GND", "I2C", "CAN", "CSP0", "CSP1"]
|
||||||
|
|
||||||
|
|
||||||
def handle_p60_hk_data(printer: FsfwTmTcPrinter, hk_data: bytes):
|
def handle_p60_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
|
||||||
current_idx = 0
|
if set_id == SetIds.P60_CORE:
|
||||||
current_list = []
|
log_to_both(printer, "P60 Core HK")
|
||||||
for idx in range(13):
|
current_idx = 0
|
||||||
current_list.append(
|
current_list = []
|
||||||
struct.unpack("!h", hk_data[current_idx : current_idx + 2])[0]
|
for idx in range(13):
|
||||||
|
current_list.append(
|
||||||
|
struct.unpack("!h", hk_data[current_idx : current_idx + 2])[0]
|
||||||
|
)
|
||||||
|
current_idx += 2
|
||||||
|
voltage_list = []
|
||||||
|
for idx in range(13):
|
||||||
|
voltage_list.append(
|
||||||
|
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
|
||||||
|
)
|
||||||
|
current_idx += 2
|
||||||
|
out_enb_list = []
|
||||||
|
for idx in range(13):
|
||||||
|
out_enb_list.append(hk_data[current_idx])
|
||||||
|
current_idx += 1
|
||||||
|
header_str = f"{'Name'.ljust(24)} | OutEnb | U [mV] | I [mA]"
|
||||||
|
print(header_str)
|
||||||
|
printer.file_logger.info(header_str)
|
||||||
|
for idx in range(13):
|
||||||
|
out_enb = f"{out_enb_list[idx]}".ljust(6)
|
||||||
|
content_line = (
|
||||||
|
f"{P60_INDEX_LIST[idx].ljust(24)} | {out_enb} | "
|
||||||
|
f"{voltage_list[idx]:05} | {current_list[idx]:04}"
|
||||||
|
)
|
||||||
|
log_to_both(printer, content_line)
|
||||||
|
fmt_str = "!IBhHhh"
|
||||||
|
inc_len = struct.calcsize(fmt_str)
|
||||||
|
(
|
||||||
|
boot_count,
|
||||||
|
batt_mode,
|
||||||
|
batt_current,
|
||||||
|
batt_voltage,
|
||||||
|
temp_0,
|
||||||
|
temp_1,
|
||||||
|
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
batt_info = (
|
||||||
|
f"Batt Mode {batt_mode} | Boot Count {boot_count} | "
|
||||||
|
f"Batt: Current {batt_current} | Volt {batt_voltage}"
|
||||||
)
|
)
|
||||||
current_idx += 2
|
temps = f"In C: Temp 0 {temp_0 / 10.0} | Temp 1 {temp_1 / 10.0} | "
|
||||||
voltage_list = []
|
log_to_both(printer, temps)
|
||||||
for idx in range(13):
|
log_to_both(printer, batt_info)
|
||||||
voltage_list.append(
|
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=9)
|
||||||
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
|
if set_id == SetIds.P60_AUX:
|
||||||
|
log_to_both(printer, "P60 AUX HK")
|
||||||
|
current_idx = 0
|
||||||
|
latchup_list = []
|
||||||
|
for idx in range(0, 13):
|
||||||
|
latchup_list.append(
|
||||||
|
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
|
||||||
|
)
|
||||||
|
content_line = f"{P60_INDEX_LIST[idx].ljust(24)} | {latchup_list[idx]}"
|
||||||
|
log_to_both(printer, content_line)
|
||||||
|
current_idx += 2
|
||||||
|
fmt_str = "!IIHBBHHhhB"
|
||||||
|
inc_len = struct.calcsize(fmt_str)
|
||||||
|
(
|
||||||
|
boot_cause,
|
||||||
|
uptime,
|
||||||
|
reset_cause,
|
||||||
|
heater_on,
|
||||||
|
conv_5v_on,
|
||||||
|
dock_vbat,
|
||||||
|
dock_vcc_c,
|
||||||
|
batt_temp_0,
|
||||||
|
batt_temp_1,
|
||||||
|
dearm_status,
|
||||||
|
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
wdt_reboots_list = []
|
||||||
|
for idx in range(5):
|
||||||
|
wdt_reboots_list.append(
|
||||||
|
struct.unpack("!I", hk_data[current_idx : current_idx + 4])[0]
|
||||||
|
)
|
||||||
|
current_idx += 4
|
||||||
|
time_pings_left_list = []
|
||||||
|
for idx in range(3):
|
||||||
|
time_pings_left_list.append(
|
||||||
|
struct.unpack("!I", hk_data[current_idx : current_idx + 4])[0]
|
||||||
|
)
|
||||||
|
current_idx += 4
|
||||||
|
for idx in range(2):
|
||||||
|
time_pings_left_list.append(hk_data[current_idx])
|
||||||
|
current_idx += 1
|
||||||
|
fmt_str = "!hhbb"
|
||||||
|
inc_len = struct.calcsize(fmt_str)
|
||||||
|
(
|
||||||
|
batt_charge_current,
|
||||||
|
batt_discharge_current,
|
||||||
|
ant6_depl,
|
||||||
|
ar6_depl,
|
||||||
|
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
device_types = []
|
||||||
|
device_statuses = []
|
||||||
|
for idx in range(8):
|
||||||
|
device_types.append(hk_data[current_idx])
|
||||||
|
current_idx += 1
|
||||||
|
for idx in range(8):
|
||||||
|
device_statuses.append(hk_data[current_idx])
|
||||||
|
current_idx += 1
|
||||||
|
util_info = (
|
||||||
|
f"Reset Cause {reset_cause} | Boot Cause {boot_cause} | Uptime {uptime}"
|
||||||
)
|
)
|
||||||
current_idx += 2
|
util_info_2 = (
|
||||||
out_enb_list = []
|
f"Conv 5V on {conv_5v_on} | Heater On {heater_on} | "
|
||||||
for idx in range(13):
|
f"Dock VBAT {dock_vbat} | DOCK VCC Current {dock_vcc_c}"
|
||||||
out_enb_list.append(hk_data[current_idx])
|
|
||||||
current_idx += 1
|
|
||||||
header_str = f"{'Name'.ljust(24)} | OutEnb | U [mV] | I [mA]"
|
|
||||||
print(header_str)
|
|
||||||
printer.file_logger.info(header_str)
|
|
||||||
for idx in range(13):
|
|
||||||
out_enb = f"{out_enb_list[idx]}".ljust(6)
|
|
||||||
content_line = (
|
|
||||||
f"{P60_INDEX_LIST[idx].ljust(24)} | {out_enb} | "
|
|
||||||
f"{voltage_list[idx]:05} | {current_list[idx]:04}"
|
|
||||||
)
|
)
|
||||||
print(content_line)
|
log_to_both(printer, util_info)
|
||||||
printer.file_logger.info(content_line)
|
log_to_both(printer, util_info_2)
|
||||||
fmt_str = "!hhIIIhBBB"
|
wdt_info = "WDT Type | Reboots | Time or Pings left (CSP only)"
|
||||||
inc_len = struct.calcsize(fmt_str)
|
log_to_both(printer, wdt_info)
|
||||||
(
|
for idx in range(len(wdt_reboots_list)):
|
||||||
temp0,
|
log_to_both(
|
||||||
temp1,
|
printer,
|
||||||
boot_cause,
|
f"{WDT_LIST[idx].ljust(5)} | "
|
||||||
boot_count,
|
f"{wdt_reboots_list[idx]:010} | {time_pings_left_list[idx]:010}",
|
||||||
uptime,
|
)
|
||||||
reset_cause,
|
misc_info = (
|
||||||
batt_mode,
|
f"Dearm {dearm_status} | ANT6 Depl {ant6_depl} | AR6 Deply {ar6_depl}"
|
||||||
heater_on,
|
|
||||||
conv_5v_on,
|
|
||||||
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
|
|
||||||
current_idx += inc_len
|
|
||||||
util_info = (
|
|
||||||
f"Batt Mode {batt_mode} | Boot Count {boot_count} | Heater On {heater_on}"
|
|
||||||
)
|
|
||||||
util_info2 = (
|
|
||||||
f"Reset Cause {reset_cause} | Boot Cause {boot_cause} | Uptime {uptime} | "
|
|
||||||
f"Conv 5V on {conv_5v_on}"
|
|
||||||
)
|
|
||||||
print(util_info)
|
|
||||||
print(util_info2)
|
|
||||||
printer.file_logger.info(util_info)
|
|
||||||
printer.file_logger.info(util_info2)
|
|
||||||
latchup_list = []
|
|
||||||
for idx in range(0, 13):
|
|
||||||
latchup_list.append(
|
|
||||||
struct.unpack("!H", hk_data[current_idx : current_idx + 2])[0]
|
|
||||||
)
|
)
|
||||||
current_idx += 2
|
log_to_both(printer, misc_info)
|
||||||
fmt_str = "!HhhHhh"
|
batt_info = (
|
||||||
inc_len = struct.calcsize(fmt_str)
|
f"Batt Temp 0 {batt_temp_0 / 10.0} | Batt Temp 1 {batt_temp_1 / 10.0}"
|
||||||
(
|
f"Charge Current {batt_charge_current} | Discharge Current {batt_discharge_current}"
|
||||||
dock_vbat,
|
|
||||||
dock_vcc_current,
|
|
||||||
batt_current,
|
|
||||||
batt_voltage,
|
|
||||||
batt_temp_0,
|
|
||||||
batt_temp_1,
|
|
||||||
) = struct.unpack(fmt_str, hk_data[current_idx : current_idx + inc_len])
|
|
||||||
current_idx += inc_len
|
|
||||||
device_types = []
|
|
||||||
device_statuses = []
|
|
||||||
for idx in range(8):
|
|
||||||
device_types.append(hk_data[current_idx])
|
|
||||||
current_idx += 1
|
|
||||||
for idx in range(8):
|
|
||||||
device_statuses.append(hk_data[current_idx])
|
|
||||||
current_idx += 1
|
|
||||||
dearm_status = hk_data[current_idx]
|
|
||||||
current_idx += 1
|
|
||||||
wdt_reboots_list = []
|
|
||||||
for idx in range(5):
|
|
||||||
wdt_reboots_list.append(
|
|
||||||
struct.unpack("!I", hk_data[current_idx : current_idx + 4])[0]
|
|
||||||
)
|
)
|
||||||
current_idx += 4
|
log_to_both(printer, batt_info)
|
||||||
time_pings_left_list = []
|
printer.print_validity_buffer(
|
||||||
for idx in range(3):
|
validity_buffer=hk_data[current_idx:], num_vars=27
|
||||||
time_pings_left_list.append(
|
|
||||||
struct.unpack("!I", hk_data[current_idx : current_idx + 4])[0]
|
|
||||||
)
|
)
|
||||||
current_idx += 4
|
|
||||||
for idx in range(2):
|
|
||||||
time_pings_left_list.append(hk_data[current_idx])
|
|
||||||
current_idx += 1
|
|
||||||
batt_charge_current = struct.unpack("!h", hk_data[current_idx : current_idx + 2])[0]
|
|
||||||
current_idx += 2
|
|
||||||
batt_discharge_current = struct.unpack(
|
|
||||||
"!h", hk_data[current_idx : current_idx + 2]
|
|
||||||
)[0]
|
|
||||||
current_idx += 2
|
|
||||||
ant6_depl_status = struct.unpack("!b", hk_data[current_idx : current_idx + 1])[0]
|
|
||||||
current_idx += 1
|
|
||||||
ar6_depl_status = struct.unpack("!b", hk_data[current_idx : current_idx + 1])[0]
|
|
||||||
current_idx += 1
|
|
||||||
wdt_info = "WDT Type | Reboots | Time or Pings left (CSP only)"
|
|
||||||
log_to_both(printer, wdt_info)
|
|
||||||
for idx in range(len(wdt_reboots_list)):
|
|
||||||
log_to_both(
|
|
||||||
printer,
|
|
||||||
f"{WDT_LIST[idx].ljust(5)} | "
|
|
||||||
f"{wdt_reboots_list[idx]:010} | {time_pings_left_list[idx]:010}",
|
|
||||||
)
|
|
||||||
temps = (
|
|
||||||
f"In C: Temp 0 {temp0 / 10.0} | Temp 1 {temp1 / 10.0} | "
|
|
||||||
f"Batt Temp 0 {batt_temp_0 / 10.0} | Batt Temp 1 {batt_temp_1 / 10.0}"
|
|
||||||
)
|
|
||||||
batt_info = (
|
|
||||||
f"Batt: Current {batt_current} | Volt {batt_voltage} | "
|
|
||||||
f"Charge Current {batt_charge_current} | Discharge Current {batt_discharge_current}"
|
|
||||||
)
|
|
||||||
log_to_both(printer, temps)
|
|
||||||
log_to_both(printer, batt_info)
|
|
||||||
misc_info = f"Dearm {dearm_status} | ANT6 Depl {ant6_depl_status} | AR6 Deply {ar6_depl_status}"
|
|
||||||
log_to_both(printer, misc_info)
|
|
||||||
printer.print_validity_buffer(validity_buffer=hk_data[current_idx:], num_vars=36)
|
|
||||||
|
|
||||||
|
|
||||||
def log_to_both(printer: FsfwTmTcPrinter, string: str):
|
def log_to_both(printer: FsfwTmTcPrinter, string: str):
|
||||||
|
Loading…
Reference in New Issue
Block a user