#!/usr/bin/env python3 """EIVE TMTC Commander""" import sys import traceback try: import tmtccmd.runner as tmtccmd from tmtccmd.config import default_json_path, SetupArgs, CoreGlobalIds from tmtccmd.config.definitions import CoreModeList from tmtccmd.config.args import ( create_default_args_parser, add_default_tmtccmd_args, parse_default_input_arguments, handle_unspecified_args, ) from tmtccmd.ccsds.handler import CcsdsTmHandler, ApidHandler from tmtccmd.logging import get_console_logger from tmtccmd.logging.pus import create_tmtc_logger except ImportError as error: run_tmtc_commander = None initialize_tmtc_commander = None tb = traceback.format_exc() print(tb) print("Python tmtccmd submodule could not be imported") sys.exit(1) try: import spacepackets except ImportError as error: print(error) print("Python spacepackets module could not be imported") print( 'Install with "cd spacepackets && python3 -m pip intall -e ." for interative installation' ) sys.exit(1) from config.definitions import PUS_APID from pus_tc.procedure_packer import pre_tc_send_cb from pus_tm.factory_hook import ccsds_tm_handler from tmtcc import tmtcc_pre_args def main(): hook_obj = tmtcc_pre_args() arg_parser = create_default_args_parser() add_default_tmtccmd_args(arg_parser) args = parse_default_input_arguments(arg_parser, hook_obj) setup_args = SetupArgs( hook_obj=hook_obj, use_gui=False, apid=PUS_APID, cli_args=args ) apid_handler = ApidHandler(cb=ccsds_tm_handler, queue_len=50, user_args=None) ccsds_handler = CcsdsTmHandler() ccsds_handler.add_tm_handler(apid=PUS_APID, handler=apid_handler) tmtccmd.setup(setup_args=setup_args) tmtccmd.add_ccsds_handler(ccsds_handler) tmtc_backend = tmtccmd.create_default_tmtc_backend( setup_args=setup_args, tm_handler=ccsds_handler, ) tmtc_file_logger = create_tmtc_logger() tmtc_backend.usr_send_wrapper = (pre_tc_send_cb, tmtc_file_logger) tmtc_backend.set_mode(CoreModeList.CONTINUOUS_MODE) # get_console_logger().info("Disabling console logger for continuous operation") # get_console_logger().setLevel("ERROR") tmtccmd.init_and_start_daemons(tmtc_backend=tmtc_backend) tmtc_backend.perform_operation() # remove cmdline args so that we can reuse code sys.argv = sys.argv[:1] while True: args.service = None args.op_code = None handle_unspecified_args(args, hook_obj.get_service_op_code_dictionary()) tmtc_backend.set_service(args.service) tmtc_backend.set_opcode(args.op_code) tmtc_backend.set_mode(CoreModeList.CONTINUOUS_MODE) tmtc_backend.perform_operation() if __name__ == "__main__": main()