diff --git a/.run/ACU.run.xml b/.run/ACU.run.xml
index 2898755..a06fadc 100644
--- a/.run/ACU.run.xml
+++ b/.run/ACU.run.xml
@@ -6,13 +6,13 @@
-
+
-
+
-
+
diff --git a/.run/BPX.run.xml b/.run/BPX.run.xml
index a1fc5d3..0c16575 100644
--- a/.run/BPX.run.xml
+++ b/.run/BPX.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/BPX_Request_HK.run.xml b/.run/BPX_Request_HK.run.xml
index 9783034..9bf2f0f 100644
--- a/.run/BPX_Request_HK.run.xml
+++ b/.run/BPX_Request_HK.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/BPX_Reset_Reboot_Counter.run.xml b/.run/BPX_Reset_Reboot_Counter.run.xml
index 6d0b32d..dcde73c 100644
--- a/.run/BPX_Reset_Reboot_Counter.run.xml
+++ b/.run/BPX_Reset_Reboot_Counter.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/GPS_0.run.xml b/.run/GPS_0.run.xml
index 02dbeef..ca7a172 100644
--- a/.run/GPS_0.run.xml
+++ b/.run/GPS_0.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/GPS_1.run.xml b/.run/GPS_1.run.xml
index d6e6330..58cbf82 100644
--- a/.run/GPS_1.run.xml
+++ b/.run/GPS_1.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Heater_Test.run.xml b/.run/Heater_Test.run.xml
index 65618ba..c23e25b 100644
--- a/.run/Heater_Test.run.xml
+++ b/.run/Heater_Test.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/IMTQ_Get_Commanded_Dipole.run.xml b/.run/IMTQ_Get_Commanded_Dipole.run.xml
index 5b55db0..31c691d 100644
--- a/.run/IMTQ_Get_Commanded_Dipole.run.xml
+++ b/.run/IMTQ_Get_Commanded_Dipole.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/IMTQ_Neg_X_Test.run.xml b/.run/IMTQ_Neg_X_Test.run.xml
index 765c429..0c880f6 100644
--- a/.run/IMTQ_Neg_X_Test.run.xml
+++ b/.run/IMTQ_Neg_X_Test.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/IMTQ_Neg_Y_Test.run.xml b/.run/IMTQ_Neg_Y_Test.run.xml
index f1ef122..45f9c31 100644
--- a/.run/IMTQ_Neg_Y_Test.run.xml
+++ b/.run/IMTQ_Neg_Y_Test.run.xml
@@ -12,8 +12,8 @@
-
-
+
+
diff --git a/.run/IMTQ_Neg_Z_Test.run.xml b/.run/IMTQ_Neg_Z_Test.run.xml
index feb7304..0749ef0 100644
--- a/.run/IMTQ_Neg_Z_Test.run.xml
+++ b/.run/IMTQ_Neg_Z_Test.run.xml
@@ -12,8 +12,8 @@
-
-
+
+
diff --git a/.run/IMTQ_Pos_X_Test.run.xml b/.run/IMTQ_Pos_X_Test.run.xml
index c17ae6c..58721eb 100644
--- a/.run/IMTQ_Pos_X_Test.run.xml
+++ b/.run/IMTQ_Pos_X_Test.run.xml
@@ -12,8 +12,8 @@
-
-
+
+
diff --git a/.run/IMTQ_Pos_Y_Test.run.xml b/.run/IMTQ_Pos_Y_Test.run.xml
index f375dc1..d2aa90e 100644
--- a/.run/IMTQ_Pos_Y_Test.run.xml
+++ b/.run/IMTQ_Pos_Y_Test.run.xml
@@ -12,8 +12,8 @@
-
-
+
+
diff --git a/.run/IMTQ_Pos_Z_Test.run.xml b/.run/IMTQ_Pos_Z_Test.run.xml
index 594c1bb..7eb9d31 100644
--- a/.run/IMTQ_Pos_Z_Test.run.xml
+++ b/.run/IMTQ_Pos_Z_Test.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/IMTQ_Test_UDP.run.xml b/.run/IMTQ_Test_UDP.run.xml
index 13810ef..5040f94 100644
--- a/.run/IMTQ_Test_UDP.run.xml
+++ b/.run/IMTQ_Test_UDP.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/P60_Dock_Commanding.run.xml b/.run/P60_Dock_Commanding.run.xml
index 4631d45..ffe2539 100644
--- a/.run/P60_Dock_Commanding.run.xml
+++ b/.run/P60_Dock_Commanding.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/PDU1_Commanding.run.xml b/.run/PDU1_Commanding.run.xml
index 28f9c0d..ac97659 100644
--- a/.run/PDU1_Commanding.run.xml
+++ b/.run/PDU1_Commanding.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/PDU2_Commanding.run.xml b/.run/PDU2_Commanding.run.xml
index 7b73bd9..f776fb4 100644
--- a/.run/PDU2_Commanding.run.xml
+++ b/.run/PDU2_Commanding.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/PLOC_MPSoC.run.xml b/.run/PLOC_MPSoC.run.xml
index e58826d..042424e 100644
--- a/.run/PLOC_MPSoC.run.xml
+++ b/.run/PLOC_MPSoC.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/PLOC_SUPV.run.xml b/.run/PLOC_SUPV.run.xml
index e9877dc..a79bac5 100644
--- a/.run/PLOC_SUPV.run.xml
+++ b/.run/PLOC_SUPV.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Ping_Command.run.xml b/.run/Ping_Command.run.xml
index c62c2fb..7d27656 100644
--- a/.run/Ping_Command.run.xml
+++ b/.run/Ping_Command.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/RW1_Test.run.xml b/.run/RW1_Test.run.xml
index fe1186c..74e1e3f 100644
--- a/.run/RW1_Test.run.xml
+++ b/.run/RW1_Test.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/RW2_Test_.run.xml b/.run/RW2_Test_.run.xml
index b03dd54..f7cf645 100644
--- a/.run/RW2_Test_.run.xml
+++ b/.run/RW2_Test_.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/RW3_Test_.run.xml b/.run/RW3_Test_.run.xml
index a5f9530..0d533da 100644
--- a/.run/RW3_Test_.run.xml
+++ b/.run/RW3_Test_.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/RW4_Test_.run.xml b/.run/RW4_Test_.run.xml
index 83f1612..09da147 100644
--- a/.run/RW4_Test_.run.xml
+++ b/.run/RW4_Test_.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Reboot_0_1.run.xml b/.run/Reboot_0_1.run.xml
index 6eada4d..8b60d30 100644
--- a/.run/Reboot_0_1.run.xml
+++ b/.run/Reboot_0_1.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Reboot_1_0.run.xml b/.run/Reboot_1_0.run.xml
index a70dc74..8def215 100644
--- a/.run/Reboot_1_0.run.xml
+++ b/.run/Reboot_1_0.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Reboot_1_1.run.xml b/.run/Reboot_1_1.run.xml
index 394f6d0..f88678a 100644
--- a/.run/Reboot_1_1.run.xml
+++ b/.run/Reboot_1_1.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Reboot_Prompt.run.xml b/.run/Reboot_Prompt.run.xml
index af3adf1..d2155e4 100644
--- a/.run/Reboot_Prompt.run.xml
+++ b/.run/Reboot_Prompt.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Reboot_Self.run.xml b/.run/Reboot_Self.run.xml
index 4243632..76cd68f 100644
--- a/.run/Reboot_Self.run.xml
+++ b/.run/Reboot_Self.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/S_A_Deployment_Test.run.xml b/.run/S_A_Deployment_Test.run.xml
index 8b8caa3..72ef348 100644
--- a/.run/S_A_Deployment_Test.run.xml
+++ b/.run/S_A_Deployment_Test.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Service 17.run.xml b/.run/Service 17.run.xml
index db07be1..e3be66e 100644
--- a/.run/Service 17.run.xml
+++ b/.run/Service 17.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Star_Tracker.run.xml b/.run/Star_Tracker.run.xml
index 982c4d8..5593ce3 100644
--- a/.run/Star_Tracker.run.xml
+++ b/.run/Star_Tracker.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Syrlinks.run.xml b/.run/Syrlinks.run.xml
index d5a3454..16acc4b 100644
--- a/.run/Syrlinks.run.xml
+++ b/.run/Syrlinks.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/Syrlinks_Test_UDP.run.xml b/.run/Syrlinks_Test_UDP.run.xml
index 30088f2..f78b058 100644
--- a/.run/Syrlinks_Test_UDP.run.xml
+++ b/.run/Syrlinks_Test_UDP.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/TMP1075_1_Dock_Test_UDP.run.xml b/.run/TMP1075_1_Dock_Test_UDP.run.xml
index 7ba359f..af7616e 100644
--- a/.run/TMP1075_1_Dock_Test_UDP.run.xml
+++ b/.run/TMP1075_1_Dock_Test_UDP.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/TMP1075_2_Dock_Test_UDP.run.xml b/.run/TMP1075_2_Dock_Test_UDP.run.xml
index 1239074..2ce5ab9 100644
--- a/.run/TMP1075_2_Dock_Test_UDP.run.xml
+++ b/.run/TMP1075_2_Dock_Test_UDP.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/TV Test.run.xml b/.run/TV Test.run.xml
index 4f51449..ac75038 100644
--- a/.run/TV Test.run.xml
+++ b/.run/TV Test.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/_IMTQ_Command_Dipole.run.xml b/.run/_IMTQ_Command_Dipole.run.xml
index 9f28ecc..2719dda 100644
--- a/.run/_IMTQ_Command_Dipole.run.xml
+++ b/.run/_IMTQ_Command_Dipole.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/ccsds_handler.run.xml b/.run/ccsds_handler.run.xml
index 5e506bb..b77efdb 100644
--- a/.run/ccsds_handler.run.xml
+++ b/.run/ccsds_handler.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/pdec_handler.run.xml b/.run/pdec_handler.run.xml
index cedb49e..a9a2d20 100644
--- a/.run/pdec_handler.run.xml
+++ b/.run/pdec_handler.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/tmtcc_Service_17.run.xml b/.run/tmtcc_Service_17.run.xml
index 65ae35b..f5951c7 100644
--- a/.run/tmtcc_Service_17.run.xml
+++ b/.run/tmtcc_Service_17.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/tmtcc_Service_2.run.xml b/.run/tmtcc_Service_2.run.xml
index ac7fd3f..b1b3d09 100644
--- a/.run/tmtcc_Service_2.run.xml
+++ b/.run/tmtcc_Service_2.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/tmtcc_Service_200.run.xml b/.run/tmtcc_Service_200.run.xml
index b1eba62..aba0bbc 100644
--- a/.run/tmtcc_Service_200.run.xml
+++ b/.run/tmtcc_Service_200.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/tmtcc_Service_3.run.xml b/.run/tmtcc_Service_3.run.xml
index 09ca934..8db761d 100644
--- a/.run/tmtcc_Service_3.run.xml
+++ b/.run/tmtcc_Service_3.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/tmtcc_Service_8.run.xml b/.run/tmtcc_Service_8.run.xml
index 0052698..8adf555 100644
--- a/.run/tmtcc_Service_8.run.xml
+++ b/.run/tmtcc_Service_8.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/tmtccli.run.xml b/.run/tmtccli.run.xml
index 1b4b29b..47e4416 100644
--- a/.run/tmtccli.run.xml
+++ b/.run/tmtccli.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/tmtcclient_Help.run.xml b/.run/tmtcclient_Help.run.xml
index 8ff85eb..2b345c4 100644
--- a/.run/tmtcclient_Help.run.xml
+++ b/.run/tmtcclient_Help.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/tmtccmd_Listener_Mode.run.xml b/.run/tmtccmd_Listener_Mode.run.xml
index a7b05bf..300c61c 100644
--- a/.run/tmtccmd_Listener_Mode.run.xml
+++ b/.run/tmtccmd_Listener_Mode.run.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/.run/tmtcgui.run.xml b/.run/tmtcgui.run.xml
index 845b1c6..7de7fbd 100644
--- a/.run/tmtcgui.run.xml
+++ b/.run/tmtcgui.run.xml
@@ -12,8 +12,8 @@
-
-
+
+
diff --git a/tmtcc.py b/tmtcc.py
index 188429f..827b640 100644
--- a/tmtcc.py
+++ b/tmtcc.py
@@ -1,19 +1,22 @@
-import argparse
+#!/usr/bin/env python3
import logging
import sys
+import time
import traceback
-from typing import Optional
-from tmtccmd.config.definitions import CoreModeList
from spacepackets.ecss import PusVerificator
-from tmtccmd import get_console_logger, TcHandlerBase
+from tmtccmd import get_console_logger, TcHandlerBase, BackendBase
from tmtccmd.com_if import ComInterface
-from tmtccmd.config.globals import update_global, CoreGlobalIds
-from deps.tmtccmd.tmtccmd.logging.pus import RawTmtcTimedLogWrapper
+from deps.tmtccmd.tmtccmd.logging.pus import (
+ RawTmtcTimedLogWrapper,
+ RegularTmtcLogWrapper,
+ TimedLogWhen,
+)
from deps.tmtccmd.tmtccmd.pus import VerificationWrapper
from deps.tmtccmd.tmtccmd.tm import SpecificApidHandlerBase, GenericApidHandlerBase
from deps.tmtccmd.tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
+from tmtccmd.core import BackendRequest
from tmtccmd.logging import get_current_time_string
from tmtccmd.pus import FileSeqCountProvider
from tmtccmd.tc import (
@@ -38,11 +41,13 @@ 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 import SetupArgs, default_json_path, SetupWrapper
from tmtccmd.config.args import (
create_default_args_parser,
add_default_tmtccmd_args,
parse_default_input_arguments,
+ SetupParams,
+ ArgParserWrapper,
)
except ImportError as error:
run_tmtc_commander = None
@@ -56,7 +61,7 @@ from config import __version__
from config.definitions import PUS_APID
from config.hook_implementations import EiveHookObject
from pus_tm.factory_hook import pus_factory_hook
-from pus_tc.procedure_packer import pre_tc_send_cb, handle_default_procedure
+from pus_tc.procedure_packer import handle_default_procedure
LOGGER = get_console_logger()
@@ -123,31 +128,92 @@ class TcHandler(TcHandlerBase):
LOGGER.info(log_entry.log_str)
self.file_logger.info(log_entry.log_str)
+ def queue_finished_cb(self, info: ProcedureHelper):
+ if info is not None and info.proc_type == TcQueueEntryType.PUS_TC:
+ def_proc = info.to_def_procedure()
+ LOGGER.info(
+ f"Finished queue for service {def_proc.service} and op code {def_proc.op_code}"
+ )
-def tmtcc_pre_args() -> EiveHookObject:
+
+def setup_params() -> SetupWrapper:
print(f"-- eive tmtc v{__version__} --")
print(f"-- spacepackets v{spacepackets.__version__} --")
- tmtccmd.init_printout(False)
- return EiveHookObject(json_cfg_path=default_json_path())
+ hook_obj = EiveHookObject(default_json_path())
+ params = SetupParams()
+ parser_wrapper = ArgParserWrapper(hook_obj)
+ parser_wrapper.parse()
+ tmtccmd.init_printout(parser_wrapper.use_gui)
+ parser_wrapper.set_params(params)
+ params.apid = PUS_APID
+ setup_wrapper = SetupWrapper(hook_obj=hook_obj, setup_params=params)
+ return setup_wrapper
-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
+def setup_tmtc(
+ verificator: PusVerificator,
+ printer: FsfwTmTcPrinter,
+ raw_logger: RawTmtcTimedLogWrapper,
+) -> (CcsdsTmHandler, TcHandler):
+ verification_wrapper = VerificationWrapper(verificator, LOGGER, printer.file_logger)
+ pus_handler = PusHandler(verification_wrapper, printer, raw_logger)
+ ccsds_handler = CcsdsTmHandler(generic_handler=UnknownApidHandler(None))
+ ccsds_handler.add_apid_handler(pus_handler)
+ seq_count_provider = FileSeqCountProvider()
+ tc_handler = TcHandler(
+ seq_count_provider=seq_count_provider,
+ pus_verificator=verificator,
+ file_logger=printer.file_logger,
+ raw_logger=raw_logger,
)
- 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)
- if use_gui:
- update_global(CoreGlobalIds.MODE, CoreModeList.LISTENER_MODE)
+ return ccsds_handler, tc_handler
+
+
+def setup_backend(
+ setup_wrapper: SetupWrapper,
+ tc_handler: TcHandler,
+ ccsds_handler: CcsdsTmHandler,
+) -> BackendBase:
tmtc_backend = tmtccmd.create_default_tmtc_backend(
- setup_args=setup_args,
- tm_handler=ccsds_handler,
+ setup_wrapper=setup_wrapper, tm_handler=ccsds_handler, tc_handler=tc_handler
)
- tmtc_backend.usr_send_wrapper = (pre_tc_send_cb, tmtc_file_logger)
- tmtccmd.run(tmtc_backend=tmtc_backend)
+ tmtccmd.start(tmtc_backend=tmtc_backend, hook_obj=setup_wrapper.hook_obj)
+ return tmtc_backend
+
+
+def main():
+ try:
+ setup_wrapper = setup_params()
+ except KeyboardInterrupt as e:
+ LOGGER.info(f"{e}. Exiting")
+ sys.exit(0)
+ tmtc_logger = RegularTmtcLogWrapper()
+ printer = FsfwTmTcPrinter(tmtc_logger.logger)
+ raw_logger = RawTmtcTimedLogWrapper(when=TimedLogWhen.PER_HOUR, interval=2)
+ pus_verificator = PusVerificator()
+ ccsds_handler, tc_handler = setup_tmtc(pus_verificator, printer, raw_logger)
+
+ tmtccmd.setup(setup_wrapper)
+ tmtc_backend = setup_backend(
+ setup_wrapper=setup_wrapper, ccsds_handler=ccsds_handler, tc_handler=tc_handler
+ )
+ try:
+ while True:
+ state = tmtc_backend.periodic_op(None)
+ if state.request == BackendRequest.TERMINATION_NO_ERROR:
+ sys.exit(0)
+ elif state.request == BackendRequest.DELAY_IDLE:
+ LOGGER.info("TMTC Client in IDLE mode")
+ time.sleep(3.0)
+ elif state.request == BackendRequest.DELAY_LISTENER:
+ time.sleep(0.8)
+ elif state.request == BackendRequest.DELAY_CUSTOM:
+ time.sleep(state.next_delay.total_seconds())
+ elif state.request == BackendRequest.CALL_NEXT:
+ pass
+ except KeyboardInterrupt:
+ sys.exit(0)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/tmtccli.py b/tmtccli.py
deleted file mode 100755
index 0b22383..0000000
--- a/tmtccli.py
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env python3
-"""TMTC commander for EIVE"""
-from tmtcc import (
- tmtcc_post_args,
- tmtcc_pre_args,
- create_default_args_parser,
- add_default_tmtccmd_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)
- tmtcc_post_args(hook_obj=hook_obj, use_gui=False, args=args)
-
-
-if __name__ == "__main__":
- main()
diff --git a/tmtcgui.py b/tmtcgui.py
deleted file mode 100755
index 6c8a1fd..0000000
--- a/tmtcgui.py
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env python3
-"""TMTC commander for EIVE"""
-from tmtcc import tmtcc_post_args, tmtcc_pre_args
-
-
-def main():
- hook_obj = tmtcc_pre_args()
- tmtcc_post_args(hook_obj=hook_obj, use_gui=True, args=None)
-
-
-if __name__ == "__main__":
- main()