# -*- 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 tc.obsw_pus_tc_base import PusTelecommand import config.obsw_config as g # adding custom defintion to hk using test pool variables sid_test = g.TEST_SID sid_custom = g.CUSTOM_SID sid_gps = g.GPS0_SID collection_interval_hk = struct.pack('>f', 3) collection_interval_diag = struct.pack('>f',0.8) number_of_parameters = struct.pack('>B', 5) p1 = g.TEST_ID_1 p2 = g.TEST_ID_2 p3 = g.TEST_ID_3 p4 = g.TEST_ID_4 p5 = g.TEST_ID_5 hk_definition = sid_test + collection_interval_hk + number_of_parameters + p1 + p2 + p3 + p4 + p5 diag_definition = (sid_custom + collection_interval_diag + number_of_parameters + p1 + p2 + p3 + p4 + p5) def pack_service3_test_into(tc_queue: Deque) -> Deque: tc_queue.appendleft(("print", "Testing Service 3")) # Predefined packet testing pack_predefined_tests(tc_queue) pack_custom_tests(tc_queue) tc_queue.appendleft(("export", "log/tmtc_log_service3.txt")) return tc_queue def pack_predefined_tests(tc_queue: Deque): # enable gps0 tc_queue.appendleft(("print", "Testing Service 3: Enable GPS definition")) command = PusTelecommand(service=3, subservice=5, ssc=3000, app_data=sid_gps) tc_queue.appendleft(command.pack_command_tuple()) # enable test tc_queue.appendleft(("print", "Testing Service 3: Enable test definition")) command = PusTelecommand(service=3, subservice=5, ssc=3010, app_data=sid_test) tc_queue.appendleft(command.pack_command_tuple()) # wait a bit to receive at least 2 packets.. tc_queue.appendleft(("wait", 2)) # disable gps0 tc_queue.appendleft(("print", "Testing Service 3: Disable GPS definition")) command = PusTelecommand(service=3, subservice=6, ssc=3020, app_data=sid_gps) tc_queue.appendleft(command.pack_command_tuple()) # disable test tc_queue.appendleft(("print", "Testing Service 3: Disable test definition")) command = PusTelecommand(service=3, subservice=6, ssc=3030, app_data=sid_test) tc_queue.appendleft(command.pack_command_tuple()) # report gps definition tc_queue.appendleft(("print", "Testing Service 3: Reporting GPS definition")) command = PusTelecommand(service=3, subservice=9, ssc=3040, app_data=sid_gps) tc_queue.appendleft(command.pack_command_tuple()) # report test definition tc_queue.appendleft(("print", "Testing Service 3: Reporting test definition")) command = PusTelecommand(service=3, subservice=9, ssc=3050, app_data=sid_test) tc_queue.appendleft(command.pack_command_tuple()) # generate one gps 0 definition tc_queue.appendleft(("print", "Testing Service 3: Generate one gps 0 defintion")) command = PusTelecommand(service=3, subservice=27, ssc=3060, app_data=sid_gps) tc_queue.appendleft(command.pack_command_tuple()) # generate test definition tc_queue.appendleft(("print", "Testing Service 3: Generate test defintion")) command = PusTelecommand(service=3, subservice=27, ssc=3070, app_data=sid_test) tc_queue.appendleft(command.pack_command_tuple()) def pack_custom_tests(tc_queue: Deque): # deleting pre-defined test entry tc_queue.appendleft(("print", "Testing Service 3: Deleting pre-defined HK definition")) command = PusTelecommand(service=3, subservice=3, ssc=3100, app_data=sid_test) tc_queue.appendleft(command.pack_command_tuple()) # adding pre-defined definition to hk using test pool variables tc_queue.appendleft(("print", "Testing Service 3: Adding pre-defined HK definition")) command = PusTelecommand(service=3, subservice=1, ssc=3110, app_data=hk_definition) tc_queue.appendleft(command.pack_command_tuple()) # adding custom definition to diagnostics using test pool variables tc_queue.appendleft(("print", "Testing Service 3: Adding custom diganostics definition")) command = PusTelecommand(service=3, subservice=2, ssc=3120, app_data=diag_definition) tc_queue.appendleft(command.pack_command_tuple()) # enable custom hk definition tc_queue.appendleft(("print", "Testing Service 3: Enable custom definition")) command = PusTelecommand(service=3, subservice=5, ssc=3130, app_data=hk_definition) tc_queue.appendleft(command.pack_command_tuple()) # enable custom diag definition tc_queue.appendleft(("print", "Testing Service 3: Enable custom diagnostics definition")) command = PusTelecommand(service=3, subservice=7, ssc=3140, app_data=diag_definition) tc_queue.appendleft(command.pack_command_tuple()) # Disable custom diag definition tc_queue.appendleft(("print", "Testing Service 3: Disable custom diagnostics definition")) command = PusTelecommand(service=3, subservice=8, ssc=3160, app_data=sid_custom) tc_queue.appendleft(command.pack_command_tuple()) # Disable custom hk definition tc_queue.appendleft(("print", "Testing Service 3: Disable custom definition")) command = PusTelecommand(service=3, subservice=6, ssc=3150, app_data=sid_test) tc_queue.appendleft(command.pack_command_tuple()) # report custom test definition tc_queue.appendleft(("print", "Testing Service 3: Reporting hk definition")) command = PusTelecommand(service=3, subservice=9, ssc=3170, app_data=sid_test) tc_queue.appendleft(command.pack_command_tuple()) # report custom Diag definition tc_queue.appendleft(("print", "Testing Service 3: Reporting diag definition")) command = PusTelecommand(service=3, subservice=11, ssc=3180, app_data=sid_custom) tc_queue.appendleft(command.pack_command_tuple()) # generate one custom hk definition tc_queue.appendleft(("print", "Testing Service 3: Generate one custom hk definition")) command = PusTelecommand(service=3, subservice=27, ssc=3190, app_data=sid_test) tc_queue.appendleft(command.pack_command_tuple()) # generate one custom diag definition tc_queue.appendleft(("print", "Testing Service 3: Generate one custom diagnostics definition")) command = PusTelecommand(service=3, subservice=28, ssc=3200, app_data=sid_custom) tc_queue.appendleft(command.pack_command_tuple()) # modify custom hk definition interval # new_interval = struct.pack('>f', 10.0) # new_interval_command = sid1 + new_interval # tc_queue.appendleft(("print", "Testing Service 3: Changing pre-defined HK definition interval")) # command = PusTelecommand(service=3, subservice=31, ssc=3090, app_data=new_interval_command) # tc_queue.appendleft(command.pack_command_tuple()) # report custom HK definition # tc_queue.appendleft(("print", "Testing Service 3: Reporting pre-defined HK definition with changed interval")) # command = PusTelecommand(service=3, subservice=9, ssc=3090, app_data=sid1) # tc_queue.appendleft(command.pack_command_tuple()) # modify custom diag definition interval # new_interval_command = sid2 + new_interval # tc_queue.appendleft(("print", "Testing Service 3: Changing custom diag HK definition interval")) # command = PusTelecommand(service=3, subservice=32, ssc=3090, app_data=new_interval_command) # tc_queue.appendleft(command.pack_command_tuple()) # report custom diag definition # tc_queue.appendleft(("print", "Testing Service 3: Reporting diag definition")) # command = PusTelecommand(service=3, subservice=11, ssc=3100, app_data=sid2) # tc_queue.appendleft(command.pack_command_tuple()) # append parameter to custom hk definiton # append parameter to custom diag definition # delete custom diag definition # tc_queue.appendleft(("print", "Testing Service 3: Deleting custom diagnostics definition")) # command = PusTelecommand(service=3, subservice=4, ssc=3120, app_data=sid2) # tc_queue.appendleft(command.pack_command_tuple())