eive-tmtc/pus_tc/system/controllers.py

82 lines
2.0 KiB
Python

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