import argparse from typing import Union, Dict, Tuple from tmtccmd.config.definitions import ServiceOpCodeDictT from tmtccmd.pus_tm.service_3_base import Service3Base from tmtccmd.ecss.tm import PusTelemetry from tmtccmd.pus_tc.definitions import TcQueueT from tmtccmd.com_if.com_interface_base import CommunicationInterface from tmtccmd.core.backend import TmTcHandler from tmtccmd.config.hook import TmTcHookBase from tmtccmd.utility.tmtc_printer import TmTcPrinter class EiveHookObject(TmTcHookBase): def get_service_op_code_dictionary(self) -> ServiceOpCodeDictT: from tmtccmd.config.globals import get_default_service_op_code_dict return get_default_service_op_code_dict() def get_json_config_file_path(self) -> str: """ The user can specify a path and filename for the JSON configuration file by overriding this function. :return: """ return "config/tmtc_config.json" def get_version(self) -> str: from config.version import SW_NAME, VERSION_MAJOR, VERSION_MINOR, VERSION_SUBMINOR return f"{SW_NAME} {VERSION_MAJOR}.{VERSION_MINOR}.{VERSION_SUBMINOR}" def add_globals_pre_args_parsing(self, gui: bool = False): from config.globals_config import set_globals_pre_args_parsing set_globals_pre_args_parsing(gui=gui) def add_globals_post_args_parsing(self, args: argparse.Namespace): from config.globals_config import add_globals_post_args_parsing 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]: from tmtccmd.config.com_if import create_communication_interface_default return create_communication_interface_default( com_if_key=com_if_key, tmtc_printer=tmtc_printer, json_cfg_path=self.get_json_config_file_path() ) def perform_mode_operation(self, tmtc_backend: TmTcHandler, mode: int): from config.custom_mode_op import custom_mode_operation 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 pack_service_queue_user(service=service, op_code=op_code, service_queue=service_queue) def tm_user_factory_hook(self, raw_tm_packet: bytearray) -> PusTelemetry: from pus_tm.factory_hook import tm_user_factory_hook return tm_user_factory_hook(raw_tm_packet=raw_tm_packet) def get_object_ids(self) -> Dict[bytes, list]: from config.object_ids import get_object_ids return get_object_ids() @staticmethod def handle_service_8_telemetry( object_id: bytes, action_id: int, custom_data: bytearray ) -> Tuple[list, list]: from pus_tm.service_8_hook import user_analyze_service_8_data return user_analyze_service_8_data( object_id=object_id, action_id=action_id, custom_data=custom_data ) @staticmethod def handle_service_3_housekeeping( object_id: int, set_id: int, hk_data: bytearray, service3_packet: Service3Base ) -> Tuple[list, list, bytearray, int]: from pus_tm.hk_handling import handle_user_hk_packet return handle_user_hk_packet( object_id=object_id, set_id=set_id, hk_data=hk_data, service3_packet=service3_packet )