|
|
|
@ -6,7 +6,7 @@ from pathlib import Path
|
|
|
|
|
from typing import Tuple
|
|
|
|
|
|
|
|
|
|
from spacepackets.ecss import PusTelecommand
|
|
|
|
|
from tmtccmd.config import CmdTreeNode, TmtcDefinitionWrapper
|
|
|
|
|
from tmtccmd.config import CmdTreeNode
|
|
|
|
|
|
|
|
|
|
from tmtccmd.tmtc import DefaultPusQueueHelper
|
|
|
|
|
from tmtccmd.pus.s8_fsfw_action import create_action_cmd
|
|
|
|
@ -15,14 +15,12 @@ from tmtccmd.pus.s20_fsfw_param import (
|
|
|
|
|
create_scalar_u8_parameter,
|
|
|
|
|
create_load_param_cmd,
|
|
|
|
|
)
|
|
|
|
|
from tmtccmd.config.tmtc import OpCodeEntry, tmtc_definitions_provider
|
|
|
|
|
from tmtccmd.fsfw.tmtc_printer import FsfwTmTcPrinter
|
|
|
|
|
from tmtccmd.pus.s11_tc_sched import (
|
|
|
|
|
create_enable_tc_sched_cmd,
|
|
|
|
|
create_disable_tc_sched_cmd,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
from eive_tmtc.config.definitions import CustomServiceList
|
|
|
|
|
from eive_tmtc.config.object_ids import CORE_CONTROLLER_ID
|
|
|
|
|
from eive_tmtc.pus_tm.defs import PrintWrapper
|
|
|
|
|
|
|
|
|
@ -71,6 +69,7 @@ class ActionId(enum.IntEnum):
|
|
|
|
|
RM_HELPER = 54
|
|
|
|
|
MKDIR_HELPER = 55
|
|
|
|
|
ENABLE_SCHEDULER = 56
|
|
|
|
|
UPDATE_LEAP_SECONRS = 60
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ParamId(enum.IntEnum):
|
|
|
|
@ -122,6 +121,7 @@ class OpCode:
|
|
|
|
|
AUTO_SWITCH_DISABLE = "auto_switch_disable"
|
|
|
|
|
ENABLE_SCHEDULER = "enable_scheduler"
|
|
|
|
|
DISABLE_SCHEDULER = "disable_scheduler"
|
|
|
|
|
UPDATE_LEAP_SECONDS = "leap_seconds_update"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Info:
|
|
|
|
@ -165,6 +165,7 @@ class Info:
|
|
|
|
|
AUTO_SWITCH_DISABLE = "Disable Auto-Switch Feature"
|
|
|
|
|
ENABLE_SCHEDULER = "Enable scheduler"
|
|
|
|
|
DISABLE_SCHEDULER = "Disable scheduler"
|
|
|
|
|
UPDATE_LEAP_SECONDS = "Updates the Leap Seconds"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Chip(enum.IntEnum):
|
|
|
|
@ -197,90 +198,6 @@ def create_core_node() -> CmdTreeNode:
|
|
|
|
|
return node
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@tmtc_definitions_provider
|
|
|
|
|
def add_core_controller_definitions(defs: TmtcDefinitionWrapper):
|
|
|
|
|
oce = OpCodeEntry()
|
|
|
|
|
oce.add(keys=OpCode.ANNOUNCE_VERSION, info=Info.ANNOUNCE_VERSION)
|
|
|
|
|
oce.add(keys=OpCode.ANNOUNCE_CURRENT_IMAGE, info=Info.ANNOUNCE_CURRENT_IMAGE)
|
|
|
|
|
oce.add(keys=OpCode.ANNOUNCE_BOOT_COUNTS, info=Info.ANNOUNCE_BOOT_COUNTS)
|
|
|
|
|
oce.add(keys=OpCode.REBOOT_XSC, info=Info.REBOOT_XSC)
|
|
|
|
|
oce.add(keys=OpCode.REBOOT_XSC, info=Info.REBOOT_XSC)
|
|
|
|
|
oce.add(keys=OpCode.REBOOT_FULL, info=Info.REBOOT_FULL)
|
|
|
|
|
oce.add(keys=OpCode.XSC_REBOOT_SELF, info="Reboot Self")
|
|
|
|
|
oce.add(keys=OpCode.XSC_REBOOT_0_0, info="Reboot 0 0")
|
|
|
|
|
oce.add(keys=OpCode.XSC_REBOOT_0_1, info="Reboot 0 1")
|
|
|
|
|
oce.add(keys=OpCode.XSC_REBOOT_1_0, info="Reboot 1 0")
|
|
|
|
|
oce.add(keys=OpCode.XSC_REBOOT_1_1, info="Reboot 1 1")
|
|
|
|
|
oce.add(keys=OpCode.SET_PREF_SD, info=Info.SET_PREF_SD)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.READ_REBOOT_MECHANISM_INFO, info=Info.READ_REBOOT_MECHANISM_INFO
|
|
|
|
|
)
|
|
|
|
|
oce.add(keys=OpCode.OBSW_UPDATE_FROM_TMP, info=Info.OBSW_UPDATE_FROM_TMP)
|
|
|
|
|
oce.add(keys=OpCode.OBSW_UPDATE_FROM_SD_0, info=Info.OBSW_UPDATE_FROM_SD_0)
|
|
|
|
|
oce.add(keys=OpCode.OBSW_UPDATE_FROM_SD_1, info=Info.OBSW_UPDATE_FROM_SD_1)
|
|
|
|
|
oce.add(keys=OpCode.AUTO_SWITCH_ENABLE, info=Info.AUTO_SWITCH_ENABLE)
|
|
|
|
|
oce.add(keys=OpCode.AUTO_SWITCH_DISABLE, info=Info.AUTO_SWITCH_DISABLE)
|
|
|
|
|
oce.add(keys=OpCode.SYSTEMCTL_CMD_EXECUTOR, info=Info.SYSTEMCTL_CMD_EXECUTOR)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.EXECUTE_SHELL_CMD_BLOCKING, info=Info.EXECUTE_SHELL_CMD_BLOCKING
|
|
|
|
|
)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.EXECUTE_SHELL_CMD_NON_BLOCKING,
|
|
|
|
|
info=Info.EXECUTE_SHELL_CMD_NON_BLOCKING,
|
|
|
|
|
)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.GET_HK,
|
|
|
|
|
info="Request housekeeping set",
|
|
|
|
|
)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.ENABLE_REBOOT_FILE_HANDLING,
|
|
|
|
|
info="Enable reboot file handling",
|
|
|
|
|
)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.DISABLE_REBOOT_FILE_HANDLING,
|
|
|
|
|
info="Disable reboot file handling",
|
|
|
|
|
)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.RESET_ALL_REBOOT_COUNTERS,
|
|
|
|
|
info="Reset all reboot counters",
|
|
|
|
|
)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.RWD_RESET_REBOOT_COUNTER_00,
|
|
|
|
|
info="Reset reboot counter 0 0",
|
|
|
|
|
)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.RWD_RESET_REBOOT_COUNTER_01,
|
|
|
|
|
info="Reset reboot counter 0 1",
|
|
|
|
|
)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.RWD_RESET_REBOOT_COUNTER_10,
|
|
|
|
|
info="Reset reboot counter 1 0",
|
|
|
|
|
)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.RWD_RESET_REBOOT_COUNTER_11,
|
|
|
|
|
info="Reset reboot counter 1 1",
|
|
|
|
|
)
|
|
|
|
|
oce.add(
|
|
|
|
|
keys=OpCode.RWD_SET_MAX_REBOOT_CNT,
|
|
|
|
|
info="Reset max reboot count for reboot watchdog",
|
|
|
|
|
)
|
|
|
|
|
oce.add(keys=OpCode.OBSW_UPDATE_FROM_SD_0, info=Info.OBSW_UPDATE_FROM_SD_0)
|
|
|
|
|
oce.add(keys=OpCode.OBSW_UPDATE_FROM_SD_1, info=Info.OBSW_UPDATE_FROM_SD_1)
|
|
|
|
|
oce.add(keys=OpCode.OBSW_UPDATE_FROM_TMP, info=Info.OBSW_UPDATE_FROM_TMP)
|
|
|
|
|
oce.add(keys=OpCode.SWITCH_TO_SD_0, info=Info.SWITCH_TO_SD_0)
|
|
|
|
|
oce.add(keys=OpCode.SWITCH_TO_SD_1, info=Info.SWITCH_TO_SD_1)
|
|
|
|
|
oce.add(keys=OpCode.SWITCH_TO_BOTH_SD_CARDS, info=Info.SWITCH_TO_BOTH_SD_CARDS)
|
|
|
|
|
oce.add(keys=OpCode.LIST_DIR_INTO_FILE, info=Info.LIST_DIR_INTO_FILE)
|
|
|
|
|
oce.add(keys=OpCode.LIST_DIR_DUMP_DIRECTLY, info=Info.LIST_DIR_DUMP_DIRECTLY)
|
|
|
|
|
oce.add(keys=OpCode.MV_HELPER, info=Info.MV_HELPER)
|
|
|
|
|
oce.add(keys=OpCode.CP_HELPER, info=Info.CP_HELPER)
|
|
|
|
|
oce.add(keys=OpCode.RM_HELPER, info=Info.RM_HELPER)
|
|
|
|
|
oce.add(keys=OpCode.MKDIR_HELPER, info=Info.MKDIR_HELPER)
|
|
|
|
|
oce.add(keys=OpCode.ENABLE_SCHEDULER, info=Info.ENABLE_SCHEDULER)
|
|
|
|
|
oce.add(keys=OpCode.DISABLE_SCHEDULER, info=Info.DISABLE_SCHEDULER)
|
|
|
|
|
defs.add_service(CustomServiceList.CORE.value, "Core Controller", oce)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def pack_core_commands( # noqa C901
|
|
|
|
|
q: DefaultPusQueueHelper, cmd_str: str
|
|
|
|
|
): # noqa: C901 , complexity okay here
|
|
|
|
@ -557,6 +474,16 @@ def pack_core_commands( # noqa C901
|
|
|
|
|
elif cmd_str == OpCode.DISABLE_SCHEDULER:
|
|
|
|
|
q.add_log_cmd(Info.DISABLE_SCHEDULER)
|
|
|
|
|
q.add_pus_tc(create_disable_tc_sched_cmd())
|
|
|
|
|
elif cmd_str == OpCode.UPDATE_LEAP_SECONDS:
|
|
|
|
|
q.add_log_cmd(Info.UPDATE_LEAP_SECONDS)
|
|
|
|
|
leap_seconds = int(input("Specify new Leap Seconds Value: ")).to_bytes(
|
|
|
|
|
length=2, signed=False, byteorder="big"
|
|
|
|
|
)
|
|
|
|
|
q.add_pus_tc(
|
|
|
|
|
create_action_cmd(
|
|
|
|
|
CORE_CONTROLLER_ID, ActionId.UPDATE_LEAP_SECONRS, leap_seconds
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
else:
|
|
|
|
|
_LOGGER.warning(
|
|
|
|
|
f"Unknown operation code {cmd_str} for core controller commands"
|
|
|
|
|