From fdc4918e8ccffca2fe969a28fcd1a6f3db2db9c9 Mon Sep 17 00:00:00 2001
From: Robin Mueller <robin.mueller.m@gmail.com>
Date: Tue, 10 Mar 2020 15:02:30 +0100
Subject: [PATCH] client refactoring continued

---
 ...al.xml => OBSW_TmTcClient_GPS0_Serial.xml} |  2 +-
 ...al.xml => OBSW_TmTcClient_GPS1_Serial.xml} |  4 +--
 ...l => OBSW_TmTcClient_Service_2_Serial.xml} |  4 +--
 ... => OBSW_TmTcClient_Service_3_Serial_.xml} |  2 +-
 ...l => OBSW_TmTcClient_Service_5_Serial.xml} |  4 +--
 ...l => OBSW_TmTcClient_Service_8_Serial.xml} |  4 +--
 ...l => OBSW_TmTcClient_Service_9_Serial.xml} |  2 +-
 ...ml => OBSW_TmTcClient_Software_Serial.xml} |  2 +-
 OBSW_TmTcClient.py                            |  3 +-
 sendreceive/OBSW_CommandSenderReceiver.py     |  4 +--
 .../OBSW_MultipleCommandsSenderReceiver.py    | 31 ++++++++++++++++---
 sendreceive/OBSW_SequentialSenderReceiver.py  |  4 +--
 .../OBSW_SingleCommandSenderReceiver.py       |  2 +-
 sendreceive/OBSW_TmListener.py                |  2 +-
 14 files changed, 45 insertions(+), 25 deletions(-)
 rename .idea/runConfigurations/{OBSW_UdpClient_GPS0_Serial.xml => OBSW_TmTcClient_GPS0_Serial.xml} (86%)
 rename .idea/runConfigurations/{OBSW_UdpClient_GPS1_Serial.xml => OBSW_TmTcClient_GPS1_Serial.xml} (76%)
 rename .idea/runConfigurations/{OBSW_UdpClient_Service_2_Serial.xml => OBSW_TmTcClient_Service_2_Serial.xml} (76%)
 rename .idea/runConfigurations/{OBSW_UdpClient_Service_3_Serial_.xml => OBSW_TmTcClient_Service_3_Serial_.xml} (86%)
 rename .idea/runConfigurations/{OBSW_UdpClient_Service_5_Serial.xml => OBSW_TmTcClient_Service_5_Serial.xml} (76%)
 rename .idea/runConfigurations/{OBSW_UdpClient_Service_8_Serial.xml => OBSW_TmTcClient_Service_8_Serial.xml} (76%)
 rename .idea/runConfigurations/{OBSW_UdpClient_Service_9_Serial.xml => OBSW_TmTcClient_Service_9_Serial.xml} (86%)
 rename .idea/runConfigurations/{OBSW_UdpClient_Software_Serial.xml => OBSW_TmTcClient_Software_Serial.xml} (86%)

diff --git a/.idea/runConfigurations/OBSW_UdpClient_GPS0_Serial.xml b/.idea/runConfigurations/OBSW_TmTcClient_GPS0_Serial.xml
similarity index 86%
rename from .idea/runConfigurations/OBSW_UdpClient_GPS0_Serial.xml
rename to .idea/runConfigurations/OBSW_TmTcClient_GPS0_Serial.xml
index ba1c370..09af589 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_GPS0_Serial.xml
+++ b/.idea/runConfigurations/OBSW_TmTcClient_GPS0_Serial.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="OBSW_UdpClient GPS0 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
+  <configuration default="false" name="OBSW_TmTcClient GPS0 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
     <module name="tmtc" />
     <option name="INTERPRETER_OPTIONS" value="" />
     <option name="PARENT_ENVS" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_GPS1_Serial.xml b/.idea/runConfigurations/OBSW_TmTcClient_GPS1_Serial.xml
similarity index 76%
rename from .idea/runConfigurations/OBSW_UdpClient_GPS1_Serial.xml
rename to .idea/runConfigurations/OBSW_TmTcClient_GPS1_Serial.xml
index f44bd48..efc9a7f 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_GPS1_Serial.xml
+++ b/.idea/runConfigurations/OBSW_TmTcClient_GPS1_Serial.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="OBSW_UdpClient GPS1 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
+  <configuration default="false" name="OBSW_TmTcClient GPS1 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
     <module name="tmtc" />
     <option name="INTERPRETER_OPTIONS" value="" />
     <option name="PARENT_ENVS" value="true" />
@@ -12,7 +12,7 @@
     <option name="ADD_CONTENT_ROOTS" value="true" />
     <option name="ADD_SOURCE_ROOTS" value="true" />
     <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
-    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../../../../../../Robin/NoSyncDokumente/sourceobsw/tmtc/OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s GPS1 -c 1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_2_Serial.xml b/.idea/runConfigurations/OBSW_TmTcClient_Service_2_Serial.xml
similarity index 76%
rename from .idea/runConfigurations/OBSW_UdpClient_Service_2_Serial.xml
rename to .idea/runConfigurations/OBSW_TmTcClient_Service_2_Serial.xml
index c832a76..caaa02f 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_2_Serial.xml
+++ b/.idea/runConfigurations/OBSW_TmTcClient_Service_2_Serial.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="OBSW_UdpClient Service 2 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
+  <configuration default="false" name="OBSW_TmTcClient Service 2 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
     <module name="tmtc" />
     <option name="INTERPRETER_OPTIONS" value="" />
     <option name="PARENT_ENVS" value="true" />
@@ -12,7 +12,7 @@
     <option name="ADD_CONTENT_ROOTS" value="true" />
     <option name="ADD_SOURCE_ROOTS" value="true" />
     <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
-    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../../../../../../Robin/NoSyncDokumente/sourceobsw/tmtc/OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s 2 -p -c 1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_3_Serial_.xml b/.idea/runConfigurations/OBSW_TmTcClient_Service_3_Serial_.xml
similarity index 86%
rename from .idea/runConfigurations/OBSW_UdpClient_Service_3_Serial_.xml
rename to .idea/runConfigurations/OBSW_TmTcClient_Service_3_Serial_.xml
index ded0da2..b2d2671 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_3_Serial_.xml
+++ b/.idea/runConfigurations/OBSW_TmTcClient_Service_3_Serial_.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="OBSW_UdpClient Service 3 Serial " type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
+  <configuration default="false" name="OBSW_TmTcClient Service 3 Serial " type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
     <module name="tmtc" />
     <option name="INTERPRETER_OPTIONS" value="" />
     <option name="PARENT_ENVS" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_5_Serial.xml b/.idea/runConfigurations/OBSW_TmTcClient_Service_5_Serial.xml
similarity index 76%
rename from .idea/runConfigurations/OBSW_UdpClient_Service_5_Serial.xml
rename to .idea/runConfigurations/OBSW_TmTcClient_Service_5_Serial.xml
index 46c3c45..711bf6f 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_5_Serial.xml
+++ b/.idea/runConfigurations/OBSW_TmTcClient_Service_5_Serial.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="OBSW_UdpClient Service 5 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
+  <configuration default="false" name="OBSW_TmTcClient Service 5 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
     <module name="tmtc" />
     <option name="INTERPRETER_OPTIONS" value="" />
     <option name="PARENT_ENVS" value="true" />
@@ -12,7 +12,7 @@
     <option name="ADD_CONTENT_ROOTS" value="true" />
     <option name="ADD_SOURCE_ROOTS" value="true" />
     <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
-    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../../../../../../Robin/NoSyncDokumente/sourceobsw/tmtc/OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s 5 -c 1 -p" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_8_Serial.xml b/.idea/runConfigurations/OBSW_TmTcClient_Service_8_Serial.xml
similarity index 76%
rename from .idea/runConfigurations/OBSW_UdpClient_Service_8_Serial.xml
rename to .idea/runConfigurations/OBSW_TmTcClient_Service_8_Serial.xml
index 4c7bf51..5d938cd 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_8_Serial.xml
+++ b/.idea/runConfigurations/OBSW_TmTcClient_Service_8_Serial.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="OBSW_UdpClient Service 8 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
+  <configuration default="false" name="OBSW_TmTcClient Service 8 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
     <module name="tmtc" />
     <option name="INTERPRETER_OPTIONS" value="" />
     <option name="PARENT_ENVS" value="true" />
@@ -12,7 +12,7 @@
     <option name="ADD_CONTENT_ROOTS" value="true" />
     <option name="ADD_SOURCE_ROOTS" value="true" />
     <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
-    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../../../../../../Robin/NoSyncDokumente/sourceobsw/tmtc/OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s 8 -p -c 1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_9_Serial.xml b/.idea/runConfigurations/OBSW_TmTcClient_Service_9_Serial.xml
similarity index 86%
rename from .idea/runConfigurations/OBSW_UdpClient_Service_9_Serial.xml
rename to .idea/runConfigurations/OBSW_TmTcClient_Service_9_Serial.xml
index 12e2918..07b9832 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_9_Serial.xml
+++ b/.idea/runConfigurations/OBSW_TmTcClient_Service_9_Serial.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="OBSW_UdpClient Service 9 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
+  <configuration default="false" name="OBSW_TmTcClient Service 9 Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
     <module name="tmtc" />
     <option name="INTERPRETER_OPTIONS" value="" />
     <option name="PARENT_ENVS" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Software_Serial.xml b/.idea/runConfigurations/OBSW_TmTcClient_Software_Serial.xml
similarity index 86%
rename from .idea/runConfigurations/OBSW_UdpClient_Software_Serial.xml
rename to .idea/runConfigurations/OBSW_TmTcClient_Software_Serial.xml
index a1a1c3e..1d7176c 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Software_Serial.xml
+++ b/.idea/runConfigurations/OBSW_TmTcClient_Software_Serial.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="OBSW_UdpClient Software Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
+  <configuration default="false" name="OBSW_TmTcClient Software Serial" type="PythonConfigurationType" factoryName="Python" folderName="Serial Communication">
     <module name="tmtc" />
     <option name="INTERPRETER_OPTIONS" value="" />
     <option name="PARENT_ENVS" value="true" />
diff --git a/OBSW_TmTcClient.py b/OBSW_TmTcClient.py
index ac2e0d6..c202aef 100644
--- a/OBSW_TmTcClient.py
+++ b/OBSW_TmTcClient.py
@@ -1,5 +1,4 @@
-#!/usr/bin/python3.8
-# -*- coding: utf-8 -*-
+#!/usr/bin/env python3
 """
 @file
     OBSW_TmTcClient.py
diff --git a/sendreceive/OBSW_CommandSenderReceiver.py b/sendreceive/OBSW_CommandSenderReceiver.py
index 7135ee7..7100728 100644
--- a/sendreceive/OBSW_CommandSenderReceiver.py
+++ b/sendreceive/OBSW_CommandSenderReceiver.py
@@ -24,8 +24,8 @@ class CommandSenderReceiver:
     """
     This is the generic CommandSenderReceiver object. All TMTC objects inherit this object
     """
-    def __init__(self, comInterface: ComIF_T, tmtcPrinter: TmTcPrinterT, tmListener: TmListenerT, tmTimeout: int,
-                 tcSendTimeoutFactor: int, doPrintToFile: bool):
+    def __init__(self, comInterface: ComIF_T, tmtcPrinter: TmTcPrinterT, tmListener: TmListenerT, tmTimeout: float,
+                 tcSendTimeoutFactor: float, doPrintToFile: bool):
         """
         :param comInterface: CommunicationInterface object. Instantiate the desired one and pass it here
         :param tmtcPrinter: TmTcPrinter object. Instantiate it and pass it here.
diff --git a/sendreceive/OBSW_MultipleCommandsSenderReceiver.py b/sendreceive/OBSW_MultipleCommandsSenderReceiver.py
index 7f4180e..1c8becb 100644
--- a/sendreceive/OBSW_MultipleCommandsSenderReceiver.py
+++ b/sendreceive/OBSW_MultipleCommandsSenderReceiver.py
@@ -8,17 +8,38 @@
 """
 from config import OBSW_Config as g
 from sendreceive.OBSW_SequentialSenderReceiver import SequentialCommandSenderReceiver
+from comIF.OBSW_ComInterface import ComIF_T
+from utility.OBSW_TmTcPrinter import TmTcPrinterT
+from sendreceive.OBSW_TmListener import TmListenerT
+from typing import Union
 import queue
 import time
 import threading
 
 
-# Difference to seqential sender: This class can send TCs in bursts. Wait intervals can be specified with
-# wait time between the send bursts. This is generally done in the separate test classes in UnitTest
 class MultipleCommandSenderReceiver(SequentialCommandSenderReceiver):
-    def __init__(self, comInterface, tmtcPrinter, tcQueue, tmTimeout, waitIntervals,
-                 waitTime, printTm, tcTimeoutFactor, doPrintToFile):
-        super().__init__(comInterface, tmtcPrinter, tmTimeout, tcQueue, tcTimeoutFactor, doPrintToFile)
+    """
+    Difference to seqential sender: This class can send TCs in bursts. Wait intervals can be specified with
+    wait time between the send bursts. This is generally done in the separate test classes in UnitTest
+    """
+    def __init__(self, comInterface: ComIF_T, tmtcPrinter: TmTcPrinterT, tcQueue, tmListener: TmListenerT,
+                 tmTimeout: float, waitIntervals: list, waitTime: Union[float, list], printTm: bool,
+                 tcTimeoutFactor: float, doPrintToFile: bool):
+        """
+        TCs are sent in burst when applicable. Wait intervals can be specified by supplying respective arguments
+        :param comInterface:
+        :param tmtcPrinter:
+        :param tcQueue:
+        :param tmTimeout:
+        :param waitIntervals: List of pause intervals. For example [1,3] means that a waitTime is applied after
+        sendinf the first and the third telecommand
+        :param waitTime: List of wait times or uniform wait time as float
+        :param printTm:
+        :param tcTimeoutFactor:
+        :param doPrintToFile:
+        """
+        super().__init__(comInterface=comInterface, tmtcPrinter=tmtcPrinter, tmListener=tmListener,tmTimeout=tmTimeout,
+                         tcQueue=tcQueue,tcTimeoutFactor=tcTimeoutFactor, doPrintToFile=doPrintToFile)
         self.waitIntervals = waitIntervals
         self.waitTime = waitTime
         self.printTm = printTm
diff --git a/sendreceive/OBSW_SequentialSenderReceiver.py b/sendreceive/OBSW_SequentialSenderReceiver.py
index 2804bd8..baea1ec 100644
--- a/sendreceive/OBSW_SequentialSenderReceiver.py
+++ b/sendreceive/OBSW_SequentialSenderReceiver.py
@@ -22,8 +22,8 @@ class SequentialCommandSenderReceiver(CommandSenderReceiver):
     """
     Specific implementation of CommandSenderReceiver to send multiple telecommands in sequence
     """
-    def __init__(self, comInterface: ComIF_T, tmtcPrinter: TmTcPrinterT, tmListener: TmListenerT, tmTimeout: int,
-                 tcQueue, tcTimeoutFactor: int, doPrintToFile: bool):
+    def __init__(self, comInterface: ComIF_T, tmtcPrinter: TmTcPrinterT, tmListener: TmListenerT, tmTimeout: float,
+                 tcQueue, tcTimeoutFactor: float, doPrintToFile: bool):
         """
         :param comInterface: CommunicationInterface object, passed on to CommandSenderReceiver
         :param tmListener: TmListener object which runs in the background and receives all Telemetry
diff --git a/sendreceive/OBSW_SingleCommandSenderReceiver.py b/sendreceive/OBSW_SingleCommandSenderReceiver.py
index 36383c8..4f0266a 100644
--- a/sendreceive/OBSW_SingleCommandSenderReceiver.py
+++ b/sendreceive/OBSW_SingleCommandSenderReceiver.py
@@ -19,7 +19,7 @@ import logging
 class SingleCommandSenderReceiver(CommandSenderReceiver):
     """ This object can be used by instantiating it and calling sendSingleTcAndReceiveTm() """
     def __init__(self, comInterface: ComIF_T, tmtcPrinter: TmTcPrinterT, tmListener: TmListenerT,
-                 pusPacketTuple: tuple, tmTimeout: int, tcTimeoutFactor: int, doPrintToFile: bool):
+                 pusPacketTuple: tuple, tmTimeout: float, tcTimeoutFactor: float, doPrintToFile: bool):
         """
         :param comInterface: CommunicationInterface object, passed on to CommandSenderReceiver
         :param tmListener: TmListener object which runs in the background and receives all TM
diff --git a/sendreceive/OBSW_TmListener.py b/sendreceive/OBSW_TmListener.py
index 34ee233..2f47c90 100644
--- a/sendreceive/OBSW_TmListener.py
+++ b/sendreceive/OBSW_TmListener.py
@@ -35,7 +35,7 @@ class TmListener:
         self.listenerActive.set()
         # I don't think a listener is useful without the main program, so we might just declare it daemonic.
         # UPDATE: Right now, the main program is not in a permanent loop and setting the thread daemonic will
-        # cancel the program
+        # cancel the program. Solved for now by setting a permanent loop at the end of the main program
         self.listenerThread = threading.Thread(target=self.performOperation, daemon=True)
         # This Event is set by sender objects to perform mode operations
         self.modeChangeEvent = threading.Event()
-- 
GitLab