diff --git a/tmtcloop.py b/tmtcloop.py new file mode 100755 index 0000000..d2cfb5b --- /dev/null +++ b/tmtcloop.py @@ -0,0 +1,85 @@ +#!/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, + ) + 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.tc_packer_hook 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().disabled = True + + tmtccmd.init_and_start_daemons(tmtc_backend=tmtc_backend) + tmtccmd.performOperation(tmtc_backend=tmtc_backend) + + # remove cmdline args so that we can reuse code + sys.argv = sys.argv[:1] + + while True: + 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 + ) + tmtccmd.setup(setup_args=setup_args) + tmtc_backend.set_mode(CoreModeList.CONTINUOUS_MODE) + + tmtccmd.performOperation(tmtc_backend=tmtc_backend) + + +if __name__ == "__main__": + main()