From 550f196faa4f7dd5e1fb009b90cee6f1d45d58fa Mon Sep 17 00:00:00 2001
From: "Robin.Mueller" <robin.mueller.m@gmail.com>
Date: Wed, 19 Aug 2020 21:59:40 +0200
Subject: [PATCH] improved state machine

---
 config/obsw_config.py |  1 +
 obsw_tmtc_client.py   | 10 +++++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/config/obsw_config.py b/config/obsw_config.py
index e9fbfc0..e04f16a 100644
--- a/config/obsw_config.py
+++ b/config/obsw_config.py
@@ -27,6 +27,7 @@ class ModeList(enum.Enum):
     SoftwareTestMode = 4
     BinaryUploadMode = 5
     UnitTest = 6
+    PromptMode = 32
 
 
 class ComIF(enum.Enum):
diff --git a/obsw_tmtc_client.py b/obsw_tmtc_client.py
index 0faefe6..f3bbcd7 100755
--- a/obsw_tmtc_client.py
+++ b/obsw_tmtc_client.py
@@ -177,11 +177,15 @@ class TmTcHandler:
         """
         Command handling.
         """
+        if self.mode == g.ModeList.PromptMode:
+            self.prompt_mode()
+
         if self.mode == g.ModeList.ListenerMode:
             if self.tm_listener.event_reply_received.is_set():
                 LOGGER.info("TmTcHandler: Packets received.")
                 self.tmtc_printer.print_telemetry_queue(self.tm_listener.retrieve_tm_packet_queue())
                 self.command_received = True
+
         elif self.mode == g.ModeList.SingleCommandMode:
             pus_packet_tuple = command_preparation()
             sender_and_receiver = SingleCommandSenderReceiver(
@@ -189,6 +193,8 @@ class TmTcHandler:
                 tm_listener=self.tm_listener)
             LOGGER.info("Performing single command operation")
             sender_and_receiver.send_single_tc_and_receive_tm(pus_packet_tuple=pus_packet_tuple)
+            self.command_received = True
+            self.mode = g.ModeList.PromptMode
 
         elif self.mode == g.ModeList.ServiceTestMode:
             service_queue = deque()
@@ -198,6 +204,8 @@ class TmTcHandler:
                 com_interface=self.communication_interface, tmtc_printer=self.tmtc_printer,
                 tm_listener=self.tm_listener, tc_queue=service_queue)
             sender_and_receiver.send_queue_tc_and_receive_tm_sequentially()
+            self.command_received = True
+            self.mode = g.ModeList.PromptMode
 
         elif self.mode == g.ModeList.SoftwareTestMode:
             all_tc_queue = create_total_tc_queue()
@@ -214,7 +222,7 @@ class TmTcHandler:
             # mode
             perform_binary_upload()
             self.command_received = True
-            self.prompt_mode()
+            self.mode = g.ModeList.PromptMode
 
         elif self.mode == g.ModeList.UnitTest:
             # Set up test suite and run it with runner. Verbosity specifies detail level
-- 
GitLab