diff --git a/.run/Service 17.run.xml b/.run/Service 17.run.xml
new file mode 100644
index 0000000..db07be1
--- /dev/null
+++ b/.run/Service 17.run.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/tmtcc_Service_17.run.xml b/.run/tmtcc_Service_17.run.xml
index 01536e7..65ae35b 100644
--- a/.run/tmtcc_Service_17.run.xml
+++ b/.run/tmtcc_Service_17.run.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/config/__init__.py b/config/__init__.py
index e69de29..56db5af 100644
--- a/config/__init__.py
+++ b/config/__init__.py
@@ -0,0 +1,6 @@
+SW_NAME = "eive"
+VERSION_MAJOR = 1
+VERSION_MINOR = 9
+VERSION_SUBMINOR = 0
+
+__version__ = "1.9.0"
diff --git a/config/definitions.py b/config/definitions.py
index d9f499c..c98e7da 100644
--- a/config/definitions.py
+++ b/config/definitions.py
@@ -8,6 +8,7 @@ import enum
PUS_APID = 0x65
+SPACE_PACKET_IDS = (0x08 << 8 | PUS_APID,)
class CustomServiceList(enum.Enum):
diff --git a/config/hook_implementations.py b/config/hook_implementations.py
index bbc88ea..bf6a715 100644
--- a/config/hook_implementations.py
+++ b/config/hook_implementations.py
@@ -1,5 +1,6 @@
from typing import Union
+from config.definitions import SPACE_PACKET_IDS
from tmtccmd.config.definitions import (
ServiceOpCodeDictT,
)
@@ -19,11 +20,7 @@ class EiveHookObject(TmTcHookBase):
super().__init__(json_cfg_path=json_cfg_path)
def get_service_op_code_dictionary(self) -> ServiceOpCodeDictT:
- from tmtccmd.config.globals import get_default_service_op_code_dict
-
- service_op_code_dict = get_default_service_op_code_dict()
- get_eive_service_op_code_dict(service_op_code_dict=service_op_code_dict)
- return service_op_code_dict
+ return get_eive_service_op_code_dict()
def assign_communication_interface(
self, com_if_key: str
@@ -33,7 +30,7 @@ class EiveHookObject(TmTcHookBase):
return create_communication_interface_default(
com_if_key=com_if_key,
json_cfg_path=self.json_cfg_path,
- space_packet_ids=(0x0865,),
+ space_packet_ids=SPACE_PACKET_IDS,
)
def perform_mode_operation(self, tmtc_backend: TmTcHandler, mode: int):
diff --git a/config/version.py b/config/version.py
deleted file mode 100644
index 56db5af..0000000
--- a/config/version.py
+++ /dev/null
@@ -1,6 +0,0 @@
-SW_NAME = "eive"
-VERSION_MAJOR = 1
-VERSION_MINOR = 9
-VERSION_SUBMINOR = 0
-
-__version__ = "1.9.0"
diff --git a/pus_tc/cmd_definitions.py b/pus_tc/cmd_definitions.py
index 06e43a0..dc21110 100644
--- a/pus_tc/cmd_definitions.py
+++ b/pus_tc/cmd_definitions.py
@@ -12,7 +12,9 @@ from pus_tc.devs.reaction_wheels import add_rw_cmds
from pus_tc.devs.bpx_batt import BpxOpCodes
-def get_eive_service_op_code_dict(service_op_code_dict: ServiceOpCodeDictT):
+def get_eive_service_op_code_dict() -> ServiceOpCodeDictT:
+ from tmtccmd.config.globals import get_default_service_op_code_dict
+ service_op_code_dict = get_default_service_op_code_dict()
add_bpx_cmd_definitions(cmd_dict=service_op_code_dict)
add_core_controller_definitions(cmd_dict=service_op_code_dict)
add_pl_pcdu_cmds(cmd_dict=service_op_code_dict)
@@ -31,6 +33,7 @@ def get_eive_service_op_code_dict(service_op_code_dict: ServiceOpCodeDictT):
add_pdec_cmds(cmd_dict=service_op_code_dict)
add_heater_cmds(cmd_dict=service_op_code_dict)
add_tmp_sens_cmds(cmd_dict=service_op_code_dict)
+ return service_op_code_dict
def add_tmp_sens_cmds(cmd_dict: ServiceOpCodeDictT):
diff --git a/pus_tc/service_200_mode.py b/pus_tc/service_200_mode.py
index 345012f..1f046e7 100644
--- a/pus_tc/service_200_mode.py
+++ b/pus_tc/service_200_mode.py
@@ -38,5 +38,4 @@ def pack_service200_test_into(tc_queue: TcQueueT) -> TcQueueT:
mode_data = pack_mode_data(obj_id, Modes.OFF, 0)
command = PusTelecommand(service=200, subservice=1, ssc=2030, app_data=mode_data)
tc_queue.appendleft(command.pack_command_tuple())
- tc_queue.appendleft((QueueCommands.EXPORT_LOG, "log/tmtc_log_service200.txt"))
return tc_queue
diff --git a/pus_tc/tc_packer_hook.py b/pus_tc/tc_packer_hook.py
index b638a82..bcf9f2b 100644
--- a/pus_tc/tc_packer_hook.py
+++ b/pus_tc/tc_packer_hook.py
@@ -81,7 +81,8 @@ def pre_tc_send_cb(
):
if isinstance(queue_entry, bytes) or isinstance(queue_entry, bytearray):
log_raw_pus_tc(
- packet=queue_entry, srv_subservice=(queue_info.service, queue_info.subservice)
+ packet=queue_entry,
+ srv_subservice=(queue_info.service, queue_info.subservice),
)
tc_info_string = f"Sent {queue_info}"
LOGGER.info(tc_info_string)
@@ -91,6 +92,7 @@ def pre_tc_send_cb(
if queue_entry == QueueCommands.PRINT:
file_logger.info(queue_info)
+
def pack_service_queue_user(
service: Union[str, int], op_code: str, service_queue: TcQueueT
):
diff --git a/pus_tm/hk_handling.py b/pus_tm/hk_handling.py
index 4dd3d25..399ec5c 100644
--- a/pus_tm/hk_handling.py
+++ b/pus_tm/hk_handling.py
@@ -3,7 +3,6 @@ import struct
import os
import datetime
-from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
from tmtccmd.config.definitions import HkReplyUnpacked
from tmtccmd.tm.pus_3_fsfw_hk import (
Service3Base,
@@ -19,7 +18,7 @@ from tmtccmd.utility.obj_id import ObjectId, ObjectIdDictT
import config.object_ids as obj_ids
from pus_tm.devs.reaction_wheels import handle_rw_hk_data
-from pus_tm.defs import PrintWrapper, FsfwTmTcPrinter, log_to_both
+from pus_tm.defs import FsfwTmTcPrinter, log_to_both
LOGGER = get_console_logger()
diff --git a/tmtcc.py b/tmtcc.py
new file mode 100644
index 0000000..0dc37b3
--- /dev/null
+++ b/tmtcc.py
@@ -0,0 +1,63 @@
+import argparse
+import sys
+import traceback
+from typing import Optional
+
+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)
+
+try:
+ import tmtccmd.runner as tmtccmd
+ from tmtccmd.logging.pus import create_tmtc_logger
+ from tmtccmd.ccsds.handler import ApidHandler, CcsdsTmHandler
+ from tmtccmd.config import SetupArgs, default_json_path
+ from tmtccmd.config.args import (
+ create_default_args_parser,
+ add_default_tmtccmd_args,
+ parse_default_input_arguments,
+ )
+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)
+
+from config import __version__
+from config.definitions import PUS_APID
+from config.hook_implementations import EiveHookObject
+from pus_tm.factory_hook import ccsds_tm_handler
+from pus_tc.tc_packer_hook import pre_tc_send_cb
+
+
+def tmtcc_pre_args() -> EiveHookObject:
+ print(f"-- eive tmtc v{__version__} --")
+ print(f"-- spacepackets v{spacepackets.__version__} --")
+ tmtccmd.init_printout(False)
+ return EiveHookObject(json_cfg_path=default_json_path())
+
+
+def tmtcc_post_args(hook_obj: EiveHookObject, use_gui: bool, args: Optional[argparse.Namespace]):
+ setup_args = SetupArgs(
+ hook_obj=hook_obj, use_gui=use_gui, apid=PUS_APID, cli_args=args
+ )
+ tmtc_file_logger = create_tmtc_logger()
+ 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_backend.usr_send_wrapper = (pre_tc_send_cb, tmtc_file_logger)
+ tmtccmd.run(tmtc_backend=tmtc_backend)
diff --git a/tmtccli.py b/tmtccli.py
index c80e4ac..3541bd4 100755
--- a/tmtccli.py
+++ b/tmtccli.py
@@ -1,93 +1,15 @@
#!/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
-import traceback
-
-try:
- import tmtccmd.runner as tmtccmd
- from tmtccmd.config import default_json_path, SetupArgs
- 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 init_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.hook_implementations import EiveHookObject
-from config.version import __version__
-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
+"""TMTC commander for EIVE"""
+from tmtcc import tmtcc_post_args, tmtcc_pre_args, create_default_args_parser, \
+ add_default_tmtccmd_args, parse_default_input_arguments
def main():
- print(f"-- eive tmtc version {__version__} --")
- print(f"-- spacepackets version {spacepackets.__version__} --")
- tmtccmd.init_printout(False)
- tmtc_file_logger = create_tmtc_logger()
- hook_obj = EiveHookObject(json_cfg_path=default_json_path())
+ 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_backend.usr_send_wrapper = (pre_tc_send_cb, tmtc_file_logger)
- tmtccmd.run(tmtc_backend=tmtc_backend)
+ tmtcc_post_args(hook_obj=hook_obj, use_gui=False, args=args)
if __name__ == "__main__":
diff --git a/tmtccmd b/tmtccmd
index 6229632..14559c1 160000
--- a/tmtccmd
+++ b/tmtccmd
@@ -1 +1 @@
-Subproject commit 6229632de63a5d9eb3bb7d9971d3f3120fe46ddb
+Subproject commit 14559c1dfbe682b8727acc22132fd590c767d05b
diff --git a/tmtcgui.py b/tmtcgui.py
index 16759bc..6c8a1fd 100755
--- a/tmtcgui.py
+++ b/tmtcgui.py
@@ -1,68 +1,11 @@
-#!/usr/bin/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 config.hook_implementations import EiveHookObject
-from config.version import __version__
-from config.definitions import PUS_APID
-from pus_tm.factory_hook import ccsds_tm_handler
-
-try:
- from tmtccmd.runner import (
- init_tmtccmd,
- run_tmtccmd,
- add_ccsds_handler,
- )
- from tmtccmd.ccsds.handler import CcsdsTmHandler
- import spacepackets
-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)
+#!/usr/bin/env python3
+"""TMTC commander for EIVE"""
+from tmtcc import tmtcc_post_args, tmtcc_pre_args
def main():
- hook_obj = EiveHookObject()
- print(f"-- eive tmtc version {__version__}")
- print(f"-- spacepackets version {spacepackets.__version__} --")
- init_tmtccmd(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_tmtccmd(use_gui=True)
+ hook_obj = tmtcc_pre_args()
+ tmtcc_post_args(hook_obj=hook_obj, use_gui=True, args=None)
if __name__ == "__main__":