add new mem check cmd for plocsupv

This commit is contained in:
2022-08-22 11:47:12 +02:00
parent d51fb53f0e
commit edb71ad90b
12 changed files with 74 additions and 52 deletions

View File

@ -19,6 +19,7 @@ from tmtccmd.logging import get_console_logger
from tmtccmd.tc import service_provider
from tmtccmd.tc.decorator import ServiceProviderParams
from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes
from tmtccmd.tc.pus_8_funccmd import make_fsfw_action_cmd
from tmtccmd.util.tmtc_printer import FsfwTmTcPrinter
from utility.input_helper import InputHelper
@ -106,6 +107,7 @@ class SupvActionIds:
RESET_PL = 58
ENABLE_NVMS = 59
CONTINUE_UPDATE = 60
MEM_CHECK = 61
class SetIds:
@ -127,6 +129,7 @@ class OpCodes:
STOP_MPSOC = ["6", "mpsoc-stop"]
START_UPDATE = ["42", "start-update"]
PERFORM_UPDATE = ["update"]
MEM_CHECK = ["mem-check"]
class Info(str, enum.Enum):
@ -136,6 +139,7 @@ class Info(str, enum.Enum):
NML = "Switch Normal"
HK_TO_OBC = "Request HK from PLOC SUPV"
REQUEST_HK = "Request HK set from PLOC Handler"
MEM_CHECK = "Memory Check"
@tmtc_definitions_provider
@ -187,6 +191,7 @@ def add_ploc_supv_cmds(defs: TmtcDefinitionWrapper):
oce.add("56", "PLOC Supervisor: Reset PL")
oce.add("57", "PLOC Supervisor: Enable NVMs")
oce.add("58", "PLOC Supervisor: Continue update")
oce.add(OpCodes.MEM_CHECK, Info.MEM_CHECK)
defs.add_service(CustomServiceList.PLOC_SUPV.value, "PLOC Supervisor", oce)
@ -424,6 +429,22 @@ def pack_ploc_supv_commands(p: ServiceProviderParams):
q.add_log_cmd("PLOC Supervisor: Continue update")
command = object_id.as_bytes + struct.pack("!I", SupvActionIds.CONTINUE_UPDATE)
q.add_pus_tc(PusTelecommand(service=8, subservice=128, app_data=command))
if op_code in OpCodes.MEM_CHECK:
custom_data = bytearray()
memory_id = int(input("Specify memory ID: "))
start_address = int(input("Specify start address: 0x"), 16)
check_size = int(input("Specify check size: 0x"))
custom_data.extend(struct.pack("!B", memory_id))
custom_data.extend(struct.pack("!I", start_address))
custom_data.extend(struct.pack("!I", check_size))
q.add_log_cmd(
f"{prefix}: {Info.MEM_CHECK} for memory ID {memory_id} at start "
f"address {start_address} with check size {check_size}"
)
command = make_fsfw_action_cmd(
object_id.as_bytes, SupvActionIds.MEM_CHECK, custom_data
)
q.add_pus_tc(command)
def pack_sel_boot_image_cmd(