implemented boot report status parsing
This commit is contained in:
parent
3479f5607d
commit
bb23e4f021
@ -11,6 +11,7 @@ import struct
|
|||||||
|
|
||||||
from config.object_ids import PLOC_SUPV_ID, get_object_ids
|
from config.object_ids import PLOC_SUPV_ID, get_object_ids
|
||||||
from config.definitions import CustomServiceList
|
from config.definitions import CustomServiceList
|
||||||
|
from pus_tm.defs import PrintWrapper
|
||||||
from spacepackets.ecss.tc import PusTelecommand
|
from spacepackets.ecss.tc import PusTelecommand
|
||||||
from tmtccmd.tc.pus_3_fsfw_hk import generate_one_hk_command, make_sid
|
from tmtccmd.tc.pus_3_fsfw_hk import generate_one_hk_command, make_sid
|
||||||
from tmtccmd.config import TmtcDefinitionWrapper
|
from tmtccmd.config import TmtcDefinitionWrapper
|
||||||
@ -112,11 +113,7 @@ class SupvActionIds:
|
|||||||
|
|
||||||
class SetIds:
|
class SetIds:
|
||||||
HK_REPORT = 102
|
HK_REPORT = 102
|
||||||
|
BOOT_STATUS_REPORT = 103
|
||||||
|
|
||||||
class SupvHkIds:
|
|
||||||
HK_REPORT = 52
|
|
||||||
BOOT_STATUS_REPORT = 53
|
|
||||||
|
|
||||||
|
|
||||||
class OpCodes:
|
class OpCodes:
|
||||||
@ -127,6 +124,7 @@ class OpCodes:
|
|||||||
REQUEST_HK = ["4", "req-hk"]
|
REQUEST_HK = ["4", "req-hk"]
|
||||||
START_MPSOC = ["5", "mpsoc-start"]
|
START_MPSOC = ["5", "mpsoc-start"]
|
||||||
STOP_MPSOC = ["6", "mpsoc-stop"]
|
STOP_MPSOC = ["6", "mpsoc-stop"]
|
||||||
|
REQ_BOOT_STATUS_REPORT = ["13", "boot-report"]
|
||||||
START_UPDATE = ["42", "start-update"]
|
START_UPDATE = ["42", "start-update"]
|
||||||
PERFORM_UPDATE = ["update"]
|
PERFORM_UPDATE = ["update"]
|
||||||
MEM_CHECK = ["mem-check"]
|
MEM_CHECK = ["mem-check"]
|
||||||
@ -139,6 +137,7 @@ class Info(str, enum.Enum):
|
|||||||
NML = "Switch Normal"
|
NML = "Switch Normal"
|
||||||
HK_TO_OBC = "Request HK from PLOC SUPV"
|
HK_TO_OBC = "Request HK from PLOC SUPV"
|
||||||
REQUEST_HK = "Request HK set from PLOC Handler"
|
REQUEST_HK = "Request HK set from PLOC Handler"
|
||||||
|
REQ_BOOT_STATUS_REPORT = "Request boot status report"
|
||||||
MEM_CHECK = "Memory Check"
|
MEM_CHECK = "Memory Check"
|
||||||
|
|
||||||
|
|
||||||
@ -159,7 +158,7 @@ def add_ploc_supv_cmds(defs: TmtcDefinitionWrapper):
|
|||||||
oce.add("10", "PLOC Supervisor: Set time reference")
|
oce.add("10", "PLOC Supervisor: Set time reference")
|
||||||
oce.add("11", "PLOC Supervisor: Set boot timeout")
|
oce.add("11", "PLOC Supervisor: Set boot timeout")
|
||||||
oce.add("12", "PLOC Supervisor: Disable Hk")
|
oce.add("12", "PLOC Supervisor: Disable Hk")
|
||||||
oce.add("13", "PLOC Supervisor: Request boot status report")
|
oce.add(OpCodes.REQ_BOOT_STATUS_REPORT, Info.REQ_BOOT_STATUS_REPORT)
|
||||||
oce.add("17", "PLOC Supervisor: Enable latchup alert")
|
oce.add("17", "PLOC Supervisor: Enable latchup alert")
|
||||||
oce.add("18", "PLOC Supervisor: Disable latchup alert")
|
oce.add("18", "PLOC Supervisor: Disable latchup alert")
|
||||||
oce.add("20", "PLOC Supervisor: Set alert limit")
|
oce.add("20", "PLOC Supervisor: Set alert limit")
|
||||||
@ -224,7 +223,7 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
|
|||||||
sid = make_sid(object_id.as_bytes, SetIds.HK_REPORT)
|
sid = make_sid(object_id.as_bytes, SetIds.HK_REPORT)
|
||||||
cmd = generate_one_hk_command(sid)
|
cmd = generate_one_hk_command(sid)
|
||||||
q.add_pus_tc(cmd)
|
q.add_pus_tc(cmd)
|
||||||
elif op_code == "5":
|
elif op_code in OpCodes.START_MPSOC:
|
||||||
q.add_log_cmd("PLOC Supervisor: Start MPSoC")
|
q.add_log_cmd("PLOC Supervisor: Start MPSoC")
|
||||||
command = obyt + struct.pack("!I", SupvActionIds.START_MPSOC)
|
command = obyt + struct.pack("!I", SupvActionIds.START_MPSOC)
|
||||||
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
||||||
@ -270,12 +269,16 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
|
|||||||
q.add_log_cmd("PLOC Supervisor: Disable HK")
|
q.add_log_cmd("PLOC Supervisor: Disable HK")
|
||||||
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.DISABLE_HK)
|
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.DISABLE_HK)
|
||||||
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
||||||
if op_code == "13":
|
if op_code in OpCodes.REQ_BOOT_STATUS_REPORT:
|
||||||
q.add_log_cmd("PLOC Supervisor: Request boot status report")
|
q.add_log_cmd(Info.REQ_BOOT_STATUS_REPORT)
|
||||||
command = object_id.as_bytes + struct.pack(
|
command = object_id.as_bytes + struct.pack(
|
||||||
"!I", SupvActionIds.GET_BOOT_STATUS_REPORT
|
"!I", SupvActionIds.GET_BOOT_STATUS_REPORT
|
||||||
)
|
)
|
||||||
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
|
||||||
|
q.add_wait_seconds(2.0)
|
||||||
|
sid = make_sid(object_id.as_bytes, SetIds.BOOT_STATUS_REPORT)
|
||||||
|
req_hk = generate_one_hk_command(sid)
|
||||||
|
q.add_pus_tc(req_hk)
|
||||||
if op_code == "17":
|
if op_code == "17":
|
||||||
q.add_log_cmd("PLOC Supervisor: Enable latchup alert")
|
q.add_log_cmd("PLOC Supervisor: Enable latchup alert")
|
||||||
command = pack_lachtup_alert_cmd(object_id.as_bytes, True)
|
command = pack_lachtup_alert_cmd(object_id.as_bytes, True)
|
||||||
@ -719,4 +722,34 @@ def get_event_buffer_path() -> str:
|
|||||||
|
|
||||||
|
|
||||||
def handle_supv_hk_data(set_id: int, hk_data: bytes, printer: FsfwTmTcPrinter):
|
def handle_supv_hk_data(set_id: int, hk_data: bytes, printer: FsfwTmTcPrinter):
|
||||||
pass
|
pw = PrintWrapper(printer)
|
||||||
|
current_idx = 0
|
||||||
|
if set_id == SetIds.HK_REPORT:
|
||||||
|
pass
|
||||||
|
elif set_id == SetIds.BOOT_STATUS_REPORT:
|
||||||
|
fmt_str = "!BBIIBBBBBB"
|
||||||
|
inc_len = struct.calcsize(fmt_str)
|
||||||
|
(
|
||||||
|
soc_state,
|
||||||
|
power_cycles,
|
||||||
|
boot_after_ms,
|
||||||
|
boot_timeout_ms,
|
||||||
|
active_nvm,
|
||||||
|
bp_0_state,
|
||||||
|
bp_1_state,
|
||||||
|
bp_2_state,
|
||||||
|
boot_state,
|
||||||
|
boot_cycles
|
||||||
|
) = struct.unpack(fmt_str, hk_data[0: 0 + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
pw.dlog(
|
||||||
|
f"SoC state (0:off, 1:booting, 2:update, 3:operating, 4:shutdown, 5:reset): {soc_state}"
|
||||||
|
)
|
||||||
|
pw.dlog(f"Power Cycles {power_cycles}")
|
||||||
|
pw.dlog(f"Boot after {boot_after_ms} ms | Boot timeout {boot_timeout_ms} ms")
|
||||||
|
pw.dlog(f"Active NVM: {active_nvm}")
|
||||||
|
pw.dlog(f"BP0 State {bp_0_state} | BP1 State {bp_1_state} | BP2 State {bp_2_state}")
|
||||||
|
pw.dlog(f"Boot State {boot_state} | Boot Cycles {boot_cycles}")
|
||||||
|
pw.printer.print_validity_buffer(hk_data[current_idx:], 10)
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
Loading…
Reference in New Issue
Block a user