Skip to content
Snippets Groups Projects
Forked from an inaccessible project.
obsw_tc_service3.py 2.28 KiB
# -*- coding: utf-8 -*-
"""
@file   obsw_tc_service3.py
@brief  PUS Service 3:  Housekeeping Service.
@author R. Mueller
@date   02.05.2020
"""
import struct
from typing import Deque
from tmtc_core.tc.obsw_pus_tc_base import PusTelecommand
import config.obsw_config as g


def make_sid(object_id: bytearray, set_id: int) -> bytearray:
    set_id_bytearray = struct.pack(">I", set_id)
    return object_id + set_id_bytearray


def make_interval(interval_seconds: float) -> bytearray:
    return bytearray(struct.pack(">f", interval_seconds))


# adding custom defintion to hk using test pool variables
sid_thermalsensor = make_sid(g.THERMAL_SENSOR_DEVICE_ID, 1)
number_of_parameters = struct.pack('>B', 5)


def pack_service3_test_into(tc_queue: Deque) -> Deque:
    tc_queue.appendleft(("print", "Testing Service 3"))
    # Predefined packet testing
    pack_test_device_test(tc_queue)
    pack_custom_tests(tc_queue)

    tc_queue.appendleft(("export", "log/tmtc_log_service3.txt"))
    return tc_queue


def pack_test_device_test(tc_queue: Deque):
    pass


def pack_custom_tests(tc_queue: Deque):
    tc_queue.appendleft(("print", "Testing Service 3: "))

    tc_queue.appendleft(("print", "Generate one thermal sensor packet: "))
    command = PusTelecommand(service=3, subservice=27, ssc=3100, app_data=sid_thermalsensor)
    tc_queue.appendleft(command.pack_command_tuple())

    tc_queue.appendleft(("print", "Enabling periodic thermal sensor packet generation: "))
    command = PusTelecommand(service=3, subservice=5, ssc=3101, app_data=sid_thermalsensor)
    tc_queue.appendleft(command.pack_command_tuple())

    tc_queue.appendleft(("wait", 6))

    new_interval = 1.2
    interval_app_data = sid_thermalsensor + make_interval(new_interval)
    tc_queue.appendleft(("print", "Setting interval to one second: "))
    command = PusTelecommand(service=3, subservice=31, ssc=3102, app_data=interval_app_data)
    tc_queue.appendleft(command.pack_command_tuple())

    tc_queue.appendleft(("wait", 3))

    tc_queue.appendleft(("print", "Disabling periodic thermal sensor packet generation: "))
    command = PusTelecommand(service=3, subservice=6, ssc=3103, app_data=sid_thermalsensor)
    tc_queue.appendleft(command.pack_command_tuple())