53 lines
2.1 KiB
Python
53 lines
2.1 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
"""
|
||
|
@file tmtcc_tc_service200_mode.py
|
||
|
@brief PUS Service 200: PUS custom service 200: Mode commanding
|
||
|
@author R. Mueller
|
||
|
@date 02.05.2020
|
||
|
"""
|
||
|
from tmtc_core.pus_tc.tmtcc_pus_tc_base import PusTelecommand
|
||
|
from tmtc_core.pus_tc.tmtcc_pus_tc_packer import TcQueueT
|
||
|
from tmtc_core.core.tmtcc_object_id_manager import get_object_id
|
||
|
from config.tmtcc_object_ids import ObjectIds
|
||
|
import struct
|
||
|
|
||
|
TEST_DEVICE_ID = get_object_id(ObjectIds.TEST_DEVICE)
|
||
|
|
||
|
|
||
|
def pack_service200_test_into(tc_queue: TcQueueT) -> TcQueueT:
|
||
|
tc_queue.appendleft(("print", "Testing Service 200"))
|
||
|
# Object ID: Dummy Device
|
||
|
object_id = TEST_DEVICE_ID
|
||
|
# Set On Mode
|
||
|
tc_queue.appendleft(("print", "Testing Service 200: Set Mode On"))
|
||
|
mode_data = pack_mode_data(object_id, 1, 0)
|
||
|
command = PusTelecommand(service=200, subservice=1, ssc=2000, app_data=mode_data)
|
||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||
|
# Set Normal mode
|
||
|
tc_queue.appendleft(("print", "Testing Service 200: Set Mode Normal"))
|
||
|
mode_data = pack_mode_data(object_id, 2, 0)
|
||
|
command = PusTelecommand(service=200, subservice=1, ssc=2010, app_data=mode_data)
|
||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||
|
# Set Raw Mode
|
||
|
tc_queue.appendleft(("print", "Testing Service 200: Set Mode Raw"))
|
||
|
mode_data = pack_mode_data(object_id, 3, 0)
|
||
|
command = PusTelecommand(service=200, subservice=1, ssc=2020, app_data=mode_data)
|
||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||
|
# Set Off Mode
|
||
|
tc_queue.appendleft(("print", "Testing Service 200: Set Mode Off"))
|
||
|
mode_data = pack_mode_data(object_id, 0, 0)
|
||
|
command = PusTelecommand(service=200, subservice=1, ssc=2030, app_data=mode_data)
|
||
|
tc_queue.appendleft(command.pack_command_tuple())
|
||
|
tc_queue.appendleft(("export", "log/tmtc_log_service200.txt"))
|
||
|
return tc_queue
|
||
|
|
||
|
|
||
|
# Mode 0: Off, Mode 1: Mode On, Mode 2: Mode Normal, Mode 3: Mode Raw
|
||
|
def pack_mode_data(object_id: bytearray, mode_: int, submode_: int) -> bytearray:
|
||
|
# Normal mode
|
||
|
mode = struct.pack(">I", mode_)
|
||
|
# Submode default
|
||
|
submode = struct.pack('B', submode_)
|
||
|
mode_data = object_id + mode + submode
|
||
|
return mode_data
|