eive-tmtc/config/hook_implementations.py

363 lines
14 KiB
Python
Raw Normal View History

2021-03-19 17:39:52 +01:00
import argparse
2022-03-04 10:41:05 +01:00
from typing import Union, Dict
2021-03-19 17:39:52 +01:00
2022-02-03 16:02:55 +01:00
from tmtccmd.config.definitions import (
ServiceOpCodeDictT,
HkReplyUnpacked,
DataReplyUnpacked,
)
from tmtccmd.tm.service_3_base import Service3Base
from tmtccmd.tc.definitions import TcQueueT
2022-03-04 14:27:19 +01:00
from tmtccmd.utility.retval import RetvalDictT
from tmtccmd.pus.obj_id import ObjectIdDictT
2021-03-23 13:44:33 +01:00
from tmtccmd.com_if.com_interface_base import CommunicationInterface
from tmtccmd.core.backend import TmTcHandler
2021-05-17 17:42:04 +02:00
from tmtccmd.config.hook import TmTcHookBase
2021-03-19 17:39:52 +01:00
from tmtccmd.utility.tmtc_printer import TmTcPrinter
2022-02-03 16:02:55 +01:00
from tmtccmd.config.globals import OpCodeDictKeys
2021-05-17 17:59:24 +02:00
from config.definitions import CustomServiceList
2022-03-04 14:27:19 +01:00
from config.retvals import get_retval_dict
2021-03-19 17:39:52 +01:00
2021-03-19 17:42:36 +01:00
class EiveHookObject(TmTcHookBase):
2021-05-17 17:42:04 +02:00
def get_service_op_code_dictionary(self) -> ServiceOpCodeDictT:
from tmtccmd.config.globals import get_default_service_op_code_dict
2022-01-18 14:03:56 +01:00
2021-05-17 17:59:24 +02:00
service_op_code_dict = get_default_service_op_code_dict()
2021-09-15 15:09:13 +02:00
2021-09-07 13:28:36 +02:00
get_eive_service_op_code_dict(service_op_code_dict=service_op_code_dict)
2021-09-15 15:09:13 +02:00
2021-05-17 17:59:24 +02:00
return service_op_code_dict
2021-05-17 17:42:04 +02:00
def get_json_config_file_path(self) -> str:
2021-08-16 14:20:22 +02:00
"""The user can specify a path and filename for the JSON configuration file by overriding
this function.
2021-05-17 17:42:04 +02:00
:return:
"""
return "config/tmtc_config.json"
2021-03-19 17:39:52 +01:00
def add_globals_pre_args_parsing(self, gui: bool = False):
2021-03-19 17:50:09 +01:00
from config.globals_config import set_globals_pre_args_parsing
2022-01-18 14:03:56 +01:00
2021-03-19 17:50:09 +01:00
set_globals_pre_args_parsing(gui=gui)
2021-03-19 17:39:52 +01:00
def add_globals_post_args_parsing(self, args: argparse.Namespace):
from config.globals_config import add_globals_post_args_parsing
2022-01-18 14:03:56 +01:00
add_globals_post_args_parsing(
args=args, json_cfg_path=self.get_json_config_file_path()
)
def assign_communication_interface(
self, com_if_key: str, tmtc_printer: TmTcPrinter
) -> Union[CommunicationInterface, None]:
2021-05-17 17:42:04 +02:00
from tmtccmd.config.com_if import create_communication_interface_default
2022-01-18 14:03:56 +01:00
2021-05-17 17:42:04 +02:00
return create_communication_interface_default(
2022-01-18 14:03:56 +01:00
com_if_key=com_if_key,
tmtc_printer=tmtc_printer,
json_cfg_path=self.get_json_config_file_path(),
space_packet_ids=(0x0865,),
2021-05-17 17:42:04 +02:00
)
2021-03-19 17:39:52 +01:00
def perform_mode_operation(self, tmtc_backend: TmTcHandler, mode: int):
from config.custom_mode_op import custom_mode_operation
2022-01-18 14:03:56 +01:00
2021-03-19 17:39:52 +01:00
custom_mode_operation(mode=mode, tmtc_backend=tmtc_backend)
def pack_service_queue(self, service: int, op_code: str, service_queue: TcQueueT):
from pus_tc.tc_packer_hook import pack_service_queue_user
2022-01-18 14:03:56 +01:00
pack_service_queue_user(
service=service, op_code=op_code, service_queue=service_queue
)
2021-03-19 17:39:52 +01:00
2022-03-04 14:27:19 +01:00
def get_object_ids(self) -> ObjectIdDictT:
2021-05-17 17:42:04 +02:00
from config.object_ids import get_object_ids
return get_object_ids()
2021-03-19 17:39:52 +01:00
@staticmethod
def handle_service_8_telemetry(
2022-01-18 14:03:56 +01:00
object_id: bytes, action_id: int, custom_data: bytearray
) -> DataReplyUnpacked:
2021-03-19 17:39:52 +01:00
from pus_tm.service_8_hook import user_analyze_service_8_data
2022-02-03 16:02:55 +01:00
2021-03-19 17:39:52 +01:00
return user_analyze_service_8_data(
object_id=object_id, action_id=action_id, custom_data=custom_data
)
@staticmethod
def handle_service_3_housekeeping(
2021-06-12 13:48:31 +02:00
object_id: bytes, set_id: int, hk_data: bytearray, service3_packet: Service3Base
) -> HkReplyUnpacked:
2021-03-19 17:39:52 +01:00
from pus_tm.hk_handling import handle_user_hk_packet
2022-02-03 16:02:55 +01:00
2021-03-19 17:39:52 +01:00
return handle_user_hk_packet(
2022-01-18 14:03:56 +01:00
object_id=object_id,
set_id=set_id,
hk_data=hk_data,
service3_packet=service3_packet,
2021-03-19 17:43:18 +01:00
)
2021-06-29 16:10:03 +02:00
@staticmethod
def handle_service_5_event(
2022-01-18 14:03:56 +01:00
object_id: bytes, event_id: int, param_1: int, param_2: int
2021-06-29 16:10:03 +02:00
) -> str:
2022-03-04 10:41:05 +01:00
from pus_tm.event_handler import handle_event_packet
2022-03-04 10:44:55 +01:00
return handle_event_packet(
2022-03-04 10:44:55 +01:00
object_id=object_id, event_id=event_id, param_1=param_1, param_2=param_2
)
2021-09-07 13:28:36 +02:00
2022-03-04 14:27:19 +01:00
def get_retval_dict(self) -> RetvalDictT:
return get_retval_dict()
2021-09-07 13:28:36 +02:00
def get_eive_service_op_code_dict(service_op_code_dict: ServiceOpCodeDictT):
2022-03-04 10:41:05 +01:00
from pus_tc.cmd_definitions import (
2022-02-03 16:02:55 +01:00
add_bpx_cmd_definitions,
add_core_controller_definitions,
add_pcdu_cmds,
2022-03-01 18:12:31 +01:00
add_pl_pcdu_cmds,
2022-03-02 11:44:39 +01:00
add_imtq_cmds,
add_rw_cmds,
add_rad_sens_cmds,
add_ploc_cmds,
2022-02-03 16:02:55 +01:00
)
2022-03-04 10:41:05 +01:00
from pus_tc.devs.gps import GpsOpCodes
2022-01-18 14:03:56 +01:00
2022-02-03 16:02:55 +01:00
add_bpx_cmd_definitions(cmd_dict=service_op_code_dict)
add_core_controller_definitions(cmd_dict=service_op_code_dict)
2022-02-25 19:25:14 +01:00
add_pl_pcdu_cmds(cmd_dict=service_op_code_dict)
2022-03-02 11:44:39 +01:00
add_pcdu_cmds(cmd_dict=service_op_code_dict)
add_imtq_cmds(cmd_dict=service_op_code_dict)
add_rad_sens_cmds(cmd_dict=service_op_code_dict)
add_rw_cmds(cmd_dict=service_op_code_dict)
add_ploc_cmds(cmd_dict=service_op_code_dict)
2021-09-07 13:28:36 +02:00
2021-09-08 14:47:33 +02:00
op_code_dict = {
2022-01-18 14:03:56 +01:00
GpsOpCodes.RESET_GNSS.value: ("Reset GPS", {OpCodeDictKeys.TIMEOUT: 2.0})
2021-09-08 14:47:33 +02:00
}
2022-01-18 14:03:56 +01:00
service_tuple = ("GPS 0", op_code_dict)
2021-09-08 14:47:33 +02:00
service_op_code_dict[CustomServiceList.GPS_0.value] = service_tuple
service_op_code_dict[CustomServiceList.GPS_1.value] = service_tuple
2021-09-07 13:28:36 +02:00
op_code_dict = {
"0": ("ACU: Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
"51": ("ACU: Print channel statistics", {OpCodeDictKeys.TIMEOUT: 2.0}),
2021-09-07 13:28:36 +02:00
}
service_tuple = ("ACU Devices", op_code_dict)
service_op_code_dict[CustomServiceList.ACU.value] = service_tuple
op_code_dict = {
"0": ("TMP1075 Tests", {OpCodeDictKeys.TIMEOUT: 2.2}),
}
service_tuple = ("TMP1075 1", op_code_dict)
service_op_code_dict[CustomServiceList.TMP1075_1.value] = service_tuple
service_tuple = ("TMP1075 2", op_code_dict)
service_op_code_dict[CustomServiceList.TMP1075_2.value] = service_tuple
op_code_dict_srv_heater = {
"0": ("Heater Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
}
service_heater_tuple = ("Heater Device", op_code_dict_srv_heater)
op_code_dict_srv_star_tracker = {
2022-02-27 16:17:24 +01:00
"0": (
"Star Tracker: Mode On, Submode Bootloader",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-23 18:16:10 +01:00
"1": ("Star Tracker: Mode On, Submode Firmware", {OpCodeDictKeys.TIMEOUT: 2.0}),
"2": ("Star Tracker: Mode Normal", {OpCodeDictKeys.TIMEOUT: 2.0}),
"3": ("Star Tracker: Mode Off", {OpCodeDictKeys.TIMEOUT: 2.0}),
"4": ("Star Tracker: Mode Raw", {OpCodeDictKeys.TIMEOUT: 2.0}),
"5": ("Star Tracker: Ping", {OpCodeDictKeys.TIMEOUT: 2.0}),
"6": (
2022-01-18 14:03:56 +01:00
"Star Tracker: Switch to bootloader program",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-23 18:16:10 +01:00
"7": ("Star Tracker: Request temperature", {OpCodeDictKeys.TIMEOUT: 2.0}),
"8": ("Star Tracker: Request version", {OpCodeDictKeys.TIMEOUT: 2.0}),
"9": ("Star Tracker: Request interface", {OpCodeDictKeys.TIMEOUT: 2.0}),
"10": ("Star Tracker: Request power", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-01-18 14:03:56 +01:00
"11": (
2022-02-27 16:17:24 +01:00
"Star Tracker: Set subscription parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-23 18:16:10 +01:00
"12": (
2022-01-18 14:03:56 +01:00
"Star Tracker: Boot image (requires bootloader mode)",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-23 18:16:10 +01:00
"13": ("Star Tracker: Request time", {OpCodeDictKeys.TIMEOUT: 2.0}),
"14": ("Star Tracker: Request solution", {OpCodeDictKeys.TIMEOUT: 2.0}),
"15": ("Star Tracker: Upload image", {OpCodeDictKeys.TIMEOUT: 2.0}),
"16": ("Star Tracker: Download image", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-02-27 16:17:24 +01:00
"17": ("Star Tracker: Set limit parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
"18": ("Star Tracker: Set tracking parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
"19": ("Star Tracker: Set mounting parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
"20": ("Star Tracker: Set camera parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
"22": (
"Star Tracker: Set centroiding parameters",
2022-01-18 14:03:56 +01:00
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-27 16:17:24 +01:00
"23": ("Star Tracker: Set LISA parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
"24": ("Star Tracker: Set matching parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
"25": (
"Star Tracker: Set validation parameters",
2022-01-27 16:38:20 +01:00
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-27 16:17:24 +01:00
"26": ("Star Tracker: Set algo parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-02-23 18:16:10 +01:00
"27": ("Star Tracker: Take image", {OpCodeDictKeys.TIMEOUT: 2.0}),
"28": ("Star Tracker: Stop str helper", {OpCodeDictKeys.TIMEOUT: 2.0}),
"30": (
2022-01-18 14:03:56 +01:00
"Star Tracker: Set name of download image",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-23 18:16:10 +01:00
"31": ("Star Tracker: Request histogram", {OpCodeDictKeys.TIMEOUT: 2.0}),
"32": ("Star Tracker: Request contrast", {OpCodeDictKeys.TIMEOUT: 2.0}),
"33": ("Star Tracker: Set json filename", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-02-27 16:17:24 +01:00
"35": ("Star Tracker: Flash read", {OpCodeDictKeys.TIMEOUT: 2.0}),
"36": ("Star Tracker: Set flash read filename", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-02-23 18:16:10 +01:00
"37": ("Star Tracker: Get checksum", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-02-27 16:17:24 +01:00
"49": ("Star Tracker: Request camera parameter", {OpCodeDictKeys.TIMEOUT: 2.0}),
"50": ("Star Tracker: Request limits", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-02-03 16:02:55 +01:00
"51": (
"Star Tracker: Set image processor parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-27 16:17:24 +01:00
"52": (
"Star Tracker: (EGSE only) Load camera ground config ",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"53": (
"Star Tracker: (EGSE only) Load camera flight config",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"54": (
"Star Tracker: Request log level parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"55": (
"Star Tracker: Request mounting parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"56": (
"Star Tracker: Request image processor parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"57": (
"Star Tracker: Request centroiding parameters",
2022-01-18 14:03:56 +01:00
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-23 18:16:10 +01:00
"58": ("Star Tracker: Request lisa parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-02-27 16:17:24 +01:00
"59": (
"Star Tracker: Request matching parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"60": (
"Star Tracker: Request tracking parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"61": (
"Star Tracker: Request validation parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-23 18:16:10 +01:00
"62": ("Star Tracker: Request algo parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-02-27 16:17:24 +01:00
"63": (
"Star Tracker: Request subscription parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"64": (
"Star Tracker: Request log subscription parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"65": (
"Star Tracker: Request debug camera parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-23 18:16:10 +01:00
"66": ("Star Tracker: Set log level parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-02-27 16:17:24 +01:00
"67": (
"Star Tracker: Set log subscription parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"68": (
"Star Tracker: Set debug camera parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2022-02-23 18:16:10 +01:00
"69": ("Star Tracker: Firmware update", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-03-01 18:12:31 +01:00
"70": (
"Star Tracker: Disable timestamp generation",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"71": (
"Star Tracker: Enable timestamp generation",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2021-09-07 13:28:36 +02:00
}
service_star_tracker_tuple = ("Star tracker", op_code_dict_srv_star_tracker)
2021-11-24 15:56:25 +01:00
op_code_dict_srv_ccsds_handler = {
"0": ("CCSDS Handler: Set low rate", {OpCodeDictKeys.TIMEOUT: 2.0}),
"1": ("CCSDS Handler: Set high rate", {OpCodeDictKeys.TIMEOUT: 2.0}),
"2": ("CCSDS Handler: Enable transmitter", {OpCodeDictKeys.TIMEOUT: 2.0}),
"3": ("CCSDS Handler: Disable transmitter", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-01-25 18:23:02 +01:00
"4": ("CCSDS Handler: Set arbitrary bitrate", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-02-03 16:02:55 +01:00
"5": (
"CCSDS Handler: Enable tx clock manipulator",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"6": (
"CCSDS Handler: Disable tx clock manipulator",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"7": (
"CCSDS Handler: Update tx data on rising edge",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"8": (
"CCSDS Handler: Update tx data on falling edge",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2021-11-24 15:56:25 +01:00
}
service_ccsds_handler_tuple = ("CCSDS Handler", op_code_dict_srv_ccsds_handler)
op_code_dict_srv_pdec_handler = {
"0": ("PDEC Handler: Print CLCW", {OpCodeDictKeys.TIMEOUT: 2.0}),
"1": ("PDEC Handler: Print PDEC monitor", {OpCodeDictKeys.TIMEOUT: 2.0}),
2021-11-24 15:56:25 +01:00
}
service_pdec_handler_tuple = ("PDEC Handler", op_code_dict_srv_pdec_handler)
2021-12-02 09:25:31 +01:00
op_code_dict_srv_syrlinks_handler = {
"0": ("Syrlinks Handler: Set TX standby", {OpCodeDictKeys.TIMEOUT: 2.0}),
"1": ("Syrlinks Handler: Set TX modulation", {OpCodeDictKeys.TIMEOUT: 2.0}),
"2": ("Syrlinks Handler: Set TX carrier wave", {OpCodeDictKeys.TIMEOUT: 2.0}),
"5": ("Syrlinks Handler: Read TX status", {OpCodeDictKeys.TIMEOUT: 2.0}),
"6": ("Syrlinks Handler: Read TX waveform", {OpCodeDictKeys.TIMEOUT: 2.0}),
2022-01-18 14:03:56 +01:00
"7": (
"Syrlinks Handler: Read TX AGC value high byte ",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
"8": (
"Syrlinks Handler: Read TX AGC value low byte ",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
2021-12-02 09:25:31 +01:00
}
2022-01-18 14:03:56 +01:00
service_syrlinks_handler_tuple = (
"Syrlinks Handler",
op_code_dict_srv_syrlinks_handler,
)
2021-09-07 13:28:36 +02:00
service_op_code_dict[CustomServiceList.HEATER.value] = service_heater_tuple
2022-01-18 14:03:56 +01:00
service_op_code_dict[
CustomServiceList.STAR_TRACKER.value
] = service_star_tracker_tuple
service_op_code_dict[
CustomServiceList.CCSDS_HANDLER.value
] = service_ccsds_handler_tuple
service_op_code_dict[
CustomServiceList.PDEC_HANDLER.value
] = service_pdec_handler_tuple
service_op_code_dict[
CustomServiceList.SYRLINKS.value
] = service_syrlinks_handler_tuple