from eive_tmtc.config.definitions import CustomServiceList from eive_tmtc.tmtc.acs.subsystem import AcsMode from tmtccmd.config.tmtc import ( tmtc_definitions_provider, TmtcDefinitionWrapper, OpCodeEntry, ) from tmtccmd.tc import service_provider from eive_tmtc.config.object_ids import EIVE_SYSTEM_ID from tmtccmd.tc.pus_200_fsfw_mode import ( create_mode_command, Mode, create_announce_mode_recursive_command, ) from tmtccmd.tc.decorator import ServiceProviderParams class SystemMode: BOOT = 5 SAFE = AcsMode.SAFE IDLE = AcsMode.IDLE class OpCode: BOOT_MODE = "boot" SAFE_MODE = "safe" IDLE_MODE = "idle" ANNOUNCE_MODES = "announce_modes" class Info: BOOT_MODE = "Command System into Boot Mode" SAFE_MODE = "Command System into Safe Mode" IDLE_MODE = "Command System into Idle Pointing Mode" ANNOUNCE_MODES = "Announce mode recursively" @service_provider(CustomServiceList.SYSTEM.value) def build_system_cmds(p: ServiceProviderParams): o = p.op_code q = p.queue_helper prefix = "EIVE System" if o == OpCode.SAFE_MODE: q.add_log_cmd(f"{prefix}: {Info.SAFE_MODE}") q.add_pus_tc(create_mode_command(EIVE_SYSTEM_ID, SystemMode.SAFE, 0)) elif o == OpCode.IDLE_MODE: q.add_log_cmd(f"{prefix}: {Info.IDLE_MODE}") q.add_pus_tc(create_mode_command(EIVE_SYSTEM_ID, SystemMode.IDLE, 0)) elif o == OpCode.ANNOUNCE_MODES: q.add_log_cmd(f"{prefix}: {Info.ANNOUNCE_MODES}") q.add_pus_tc(create_announce_mode_recursive_command(EIVE_SYSTEM_ID)) elif o == OpCode.BOOT_MODE: q.add_log_cmd(f"{prefix}: {Info.BOOT_MODE}") q.add_pus_tc(create_mode_command(EIVE_SYSTEM_ID, SystemMode.BOOT, 0)) @tmtc_definitions_provider def add_system_cmd_defs(defs: TmtcDefinitionWrapper): oce = OpCodeEntry() oce.add(keys=OpCode.BOOT_MODE, info=Info.BOOT_MODE) oce.add(keys=OpCode.SAFE_MODE, info=Info.SAFE_MODE) oce.add(keys=OpCode.IDLE_MODE, info=Info.IDLE_MODE) oce.add(keys=OpCode.ANNOUNCE_MODES, info=Info.ANNOUNCE_MODES) defs.add_service( name=CustomServiceList.SYSTEM.value, info="EIVE system commands", op_code_entry=oce, ) pass