Skip to content
Snippets Groups Projects
Forked from an inaccessible project.
obsw_tc_core.py 1.59 KiB
from typing import Deque

from config.obsw_config import CORE_CONTROLLER_ID
from tc.obsw_tc_service8 import make_action_id
from tmtc_core.tc.obsw_pus_tc_base import PusTelecommand


def pack_core_command(tc_queue: Deque, op_code, ssc: int = 0):
    if op_code.lower() == "a0":
        tc_queue.appendleft(("print", "Generating OBC run time stats"))
        command = generate_run_time_stats_generation_command(ssc=ssc)
        tc_queue.appendleft(command.pack_command_tuple())
    if op_code.lower() == "a10":
        tc_queue.appendleft(("print", "Resetting OBC."))
        command = generate_reset_obc_command(ssc=ssc)
        tc_queue.appendleft(command.pack_command_tuple())
    if op_code.lower() == "a11":
        tc_queue.appendleft(("print", "Power cycling OBC."))
        command = generate_power_cycle_obc_command(ssc=ssc)
        tc_queue.appendleft(command.pack_command_tuple())


def generate_reset_obc_command(ssc: int, object_id: bytearray = CORE_CONTROLLER_ID):
    app_data = bytearray(object_id)
    app_data += make_action_id(10)
    return PusTelecommand(service=8, subservice=128, ssc=ssc, app_data=app_data)


def generate_power_cycle_obc_command(ssc: int, object_id: bytearray = CORE_CONTROLLER_ID):
    app_data = bytearray(object_id)
    app_data += make_action_id(11)
    return PusTelecommand(service=8, subservice=128, ssc=ssc, app_data=app_data)


def generate_run_time_stats_generation_command(ssc: int, object_id: bytearray = CORE_CONTROLLER_ID):
    app_data = bytearray(object_id)
    app_data += make_action_id(0)
    return PusTelecommand(service=8, subservice=128, ssc=ssc, app_data=app_data)