from tmtccmd.tc import QueueHelper from tmtccmd.tc.pus_200_fsfw_modes import Modes from tmtccmd.utility import ObjectId from .common import command_mode import config.object_ids as obj_ids from pus_tc.prompt_parameters import prompt_parameters class OpCodes: THERMAL_CONTROLLER = [obj_ids.THERMAL_CONTROLLER_ID.hex(), "ctrl-th"] CORE_CONTROLLER = [obj_ids.CORE_CONTROLLER_ID.hex(), "ctrl-core"] class Info: THERMAL_CONTROLLER = "Thermal controller" CORE_CONTROLLER = "ACS controller" def pack_cmd_ctrl_to_prompted_mode(q: QueueHelper, object_id: ObjectId): parameters = prompt_parameters( [ {"name": "Mode", "defaultValue": "2"}, {"name": "Submode", "defaultValue": "0"}, ] ) mode = int(parameters["Mode"]) if mode < 0 or mode > 2: print("Invalid Mode, defaulting to OFF") mode = 0 submode = int(parameters["Submode"]) command_mode( object_id=object_id.as_bytes, mode=mode, submode=submode, q=q, info=f"Commanding {object_id} to {mode}, {submode}", ) def pack_cmd_ctrl_to_off(q: QueueHelper, object_id: ObjectId): command_mode( object_id=object_id.as_bytes, mode=Modes.OFF, submode=0, q=q, info=f"Commanding {object_id} OFF", ) def pack_cmd_ctrl_to_on(q: QueueHelper, object_id: ObjectId): command_mode( object_id=object_id.as_bytes, mode=Modes.ON, submode=0, q=q, info=f"Commanding {object_id} ON", ) def pack_cmd_ctrl_to_nml(q: QueueHelper, object_id: ObjectId): command_mode( object_id=object_id.as_bytes, mode=Modes.NORMAL, submode=0, q=q, info=f"Commanding {object_id} NORMAL", ) def get_object_from_op_code(op_code: str): try: return bytes.fromhex(op_code) except: pass if op_code in OpCodes.THERMAL_CONTROLLER: return obj_ids.THERMAL_CONTROLLER_ID if op_code in OpCodes.CORE_CONTROLLER: return obj_ids.CORE_CONTROLLER_ID