32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
import struct
|
|
from spacepackets.ecss import PusTc
|
|
from tmtccmd.pus.s200_fsfw_mode import Mode, Subservice
|
|
from tmtccmd.tmtc import DefaultPusQueueHelper
|
|
|
|
|
|
def create_set_mode_cmd(apid: int, unique_id: int, mode: int, submode: int) -> PusTc:
|
|
app_data = bytearray()
|
|
app_data.extend(struct.pack("!I", unique_id))
|
|
app_data.extend(struct.pack("!I", mode))
|
|
app_data.extend(struct.pack("!H", submode))
|
|
return PusTc(
|
|
service=200,
|
|
subservice=Subservice.TC_MODE_COMMAND,
|
|
apid=apid,
|
|
app_data=app_data,
|
|
)
|
|
|
|
|
|
def handle_set_mode_cmd(
|
|
q: DefaultPusQueueHelper, target_str: str, mode_str: str, apid: int, unique_id: int
|
|
):
|
|
if mode_str == "off":
|
|
q.add_log_cmd(f"Sending Mode OFF to {target_str}")
|
|
q.add_pus_tc(create_set_mode_cmd(apid, unique_id, Mode.OFF, 0))
|
|
elif mode_str == "on":
|
|
q.add_log_cmd(f"Sending Mode ON to {target_str}")
|
|
q.add_pus_tc(create_set_mode_cmd(apid, unique_id, Mode.ON, 0))
|
|
elif mode_str == "normal":
|
|
q.add_log_cmd(f"Sending Mode NORMAL to {target_str}")
|
|
q.add_pus_tc(create_set_mode_cmd(apid, unique_id, Mode.NORMAL, 0))
|