diff --git a/.gitmodules b/.gitmodules index f3030eb..30a6863 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "STM32CubeH7"] path = STM32CubeH7 url = https://github.com/STMicroelectronics/STM32CubeH7.git +[submodule "tmtc/common_tmtc"] + path = tmtc/common_tmtc + url = https://egit.irs.uni-stuttgart.de/fsfw/fsfw-example-tmtc-common.git diff --git a/tmtc/common_tmtc b/tmtc/common_tmtc new file mode 160000 index 0000000..85abe63 --- /dev/null +++ b/tmtc/common_tmtc @@ -0,0 +1 @@ +Subproject commit 85abe6371b1e4a4c31650028ba779cdc38bdefb3 diff --git a/tmtc/config/__init__.py b/tmtc/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tmtc/tmtc_client_cli.py b/tmtc/tmtc_client_cli.py new file mode 100755 index 0000000..d22134a --- /dev/null +++ b/tmtc/tmtc_client_cli.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +""" +@brief TMTC Commander entry point for command line mode. +@details +This client was developed by KSat for the SOURCE project to test the on-board software but +has evolved into a more generic tool for satellite developers to perform TMTC (Telemetry and Telecommand) +handling and testing via different communication interfaces. Currently, only the PUS standard is +implemented as a packet standard. + +Run this file with the -h flag to display options. + +@license +Copyright 2020 KSat e.V. Stuttgart + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +@author R. Mueller +""" +import sys + +from common_tmtc.config.hook_implementation import FsfwHookBase +from common_tmtc.config.definitions import PUS_APID +from common_tmtc.pus_tm.factory_hook import ccsds_tm_handler +try: + from tmtccmd.runner import run_tmtc_commander, initialize_tmtc_commander, add_ccsds_handler + from tmtccmd.ccsds.handler import CcsdsTmHandler +except ImportError as error: + run_tmtc_commander = None + initialize_tmtc_commander = None + print(error) + print("Python tmtccmd submodule could not be imported") + print("Install with \"cd tmtccmd && python3 -m pip install -e .\" for interactive installation") + sys.exit(0) + + +def main(): + hook_obj = FsfwHookBase() + initialize_tmtc_commander(hook_object=hook_obj) + ccsds_handler = CcsdsTmHandler() + ccsds_handler.add_tm_handler(apid=PUS_APID, pus_tm_handler=ccsds_tm_handler, max_queue_len=50) + add_ccsds_handler(ccsds_handler) + run_tmtc_commander(use_gui=False, app_name="TMTC Commander FSFW") + + +if __name__ == "__main__": + main() diff --git a/tmtc/tmtc_client_gui.py b/tmtc/tmtc_client_gui.py new file mode 100644 index 0000000..cde216e --- /dev/null +++ b/tmtc/tmtc_client_gui.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +""" +@brief TMTC Commander entry point for command line mode. +@details +This client was developed by KSat for the SOURCE project to test the on-board software but +has evolved into a more generic tool for satellite developers to perform TMTC (Telemetry and Telecommand) +handling and testing via different communication interfaces. Currently, only the PUS standard is +implemented as a packet standard. + +Run this file with the -h flag to display options. + +@license +Copyright 2020 KSat e.V. Stuttgart + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +@author R. Mueller +""" +import sys + +from common_tmtc.config.hook_implementation import FsfwHookBase +from common_tmtc.config.definitions import PUS_APID +from common_tmtc.pus_tm.factory_hook import ccsds_tm_handler +try: + from tmtccmd.runner import run_tmtc_commander, initialize_tmtc_commander, add_ccsds_handler + from tmtccmd.ccsds.handler import CcsdsTmHandler +except ImportError as error: + run_tmtc_commander = None + initialize_tmtc_commander = None + print(error) + print("Python tmtccmd submodule could not be imported") + print("Install with \"cd tmtccmd && python3 -m pip install -e .\" for interactive installation") + sys.exit(0) + + +def main(): + hook_obj = FsfwHookBase() + initialize_tmtc_commander(hook_object=hook_obj) + ccsds_handler = CcsdsTmHandler() + ccsds_handler.add_tm_handler(apid=PUS_APID, pus_tm_handler=ccsds_tm_handler, max_queue_len=50) + add_ccsds_handler(ccsds_handler) + run_tmtc_commander(use_gui=True, app_name="TMTC Commander FSFW") + + +if __name__ == "__main__": + main()