diff --git a/.idea/runConfigurations/OBSW_UdpClient_Help.xml b/.idea/runConfigurations/OBSW_TmTcClient_Help.xml
similarity index 80%
rename from .idea/runConfigurations/OBSW_UdpClient_Help.xml
rename to .idea/runConfigurations/OBSW_TmTcClient_Help.xml
index 1d00e80cbd77b5108c4fa67c11f23219469cd0c3..ee7dfabfeea545c62689dd93acb3ec5661429ee3 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Help.xml
+++ b/.idea/runConfigurations/OBSW_TmTcClient_Help.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="OBSW_UdpClient Help" type="PythonConfigurationType" factoryName="Python">
+  <configuration default="false" name="OBSW_TmTcClient Help" type="PythonConfigurationType" factoryName="Python">
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-h" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_GPS0.xml b/.idea/runConfigurations/OBSW_UdpClient_GPS0.xml
index 08b0f216fc7e8b67e3de5c2686bb121d0d2a7f7a..4c547c32a5120f963f613d578af645ee376bb324 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_GPS0.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_GPS0.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s GPS0" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_GPS0_Serial.xml b/.idea/runConfigurations/OBSW_UdpClient_GPS0_Serial.xml
index 84a5d9268bff2ad5a3bf42af68e06398519373dd..ec3c40e20f61a7da5a98c019bb18df99298c225f 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_GPS0_Serial.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_GPS0_Serial.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 3 -s GPS0 -c 1 --COM COM9" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="PARAMETERS" value="-m 3 -s GPS0 -c 1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_GPS1.xml b/.idea/runConfigurations/OBSW_UdpClient_GPS1.xml
index af1630d227cd2899a032ef3e003482cd0bf106c4..b1caeed6616ee33db8b7190a8d9ac5979007a7dd 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_GPS1.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_GPS1.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s GPS1 -p" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_GPS1_Serial.xml b/.idea/runConfigurations/OBSW_UdpClient_GPS1_Serial.xml
index bd24e6afb6a3f12f289add7f5f35c64943c19e8d..f44bd48e740b9432829f0057ef061edd949d2578 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_GPS1_Serial.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_GPS1_Serial.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 3 -s GPS1 -c 1 --COM COM9" />
+    <option name="SCRIPT_NAME" value="C:\Users\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" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Listener_Mode_Serial.xml b/.idea/runConfigurations/OBSW_UdpClient_Listener_Mode_Serial.xml
index 350f9d6814b4283b6fa5db7593a1b98c664afe0a..8a7cb549c19d51e05fc38855876977668fc6cdd5 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Listener_Mode_Serial.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Listener_Mode_Serial.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 1 -c 1 --COM COM9" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="PARAMETERS" value="-m 1 -c 1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Listener__Mode.xml b/.idea/runConfigurations/OBSW_UdpClient_Listener__Mode.xml
index 376d307eee2155268df85989673f3177372397c4..1868c22bc9e23b809c90f7e521a5738f2cbb21af 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Listener__Mode.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Listener__Mode.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 1 --hk" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml
index 038301abe30786dfa4d774ed473bd0e28d5cbc2e..dcfcd0df7b7366efee538de12dabb91310c435e8 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s 17 -p" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test_Serial.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test_Serial.xml
index 7c2e72de4bf784186317ebf4bb83e94c30efffc1..52ef5e5306d3774a5bbdeeb7b85da6d6ec1e91a6 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test_Serial.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test_Serial.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 3 -s 17 -c 1 -p --COM COM9" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="PARAMETERS" value="-m 3 -s 17 -c 1 -p" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_200_UDP.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_200_UDP.xml
index 11d96880f8ac881424f6757efccb163a2a4dc9f3..e82c31b09d7bd2cbccce34765babeb5a973d29ae 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_200_UDP.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_200_UDP.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s 200 -p" />
     <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_UdpClient_Service_2_Serial.xml
index dc139840c2ee2f35beccf7501451983728cfc24e..c832a76c20f08a38802e657f94abeefaafc9db70 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_2_Serial.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_2_Serial.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 3 -s 2 -p -c 1 --COM COM9" />
+    <option name="SCRIPT_NAME" value="C:\Users\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" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_2_Test.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_2_Test.xml
index 215ad507eaf2779abb3cc5459ee61b7e185d5699..3dddeac9353fe9c4357bf36c074dc64b228df3b4 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_2_Test.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_2_Test.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s 2 -p" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_3.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_3.xml
index 4b6576c69bec9ca0ae3b4ca673edc630b149d754..882fdef586dadd82ecdb46637455a4ec16036bca 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_3.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_3.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s 3 -p" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_3_Serial_.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_3_Serial_.xml
index b4b686de538bd105132ed71bd3f058b2420e74f8..7a1d8a78ab126f01d06c6bbd87d0e56f42fe2807 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_3_Serial_.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_3_Serial_.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 3 -s 3 -p -c 1 --COM COM9 -t 4" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="PARAMETERS" value="-m 3 -s 3 -p -c 1 -t 4" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_5_Serial.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_5_Serial.xml
index d3fc74de21440c3137579d7b3a71e753c3dd5709..46c3c45d18991eea64d7f788d466fbf38ff9faa0 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_5_Serial.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_5_Serial.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 3 -s 5 -c 1 -p --COM COM9" />
+    <option name="SCRIPT_NAME" value="C:\Users\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" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_8.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_8.xml
index 63892136c761b49d31fb7990af951dad7dc91294..62daaad41c1a0424bca492af8a909d5dbfc5fbe5 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_8.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_8.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s 8 -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_UdpClient_Service_8_Serial.xml
index 887a91c5fe01952c391b7e5fc5060e914198cbd7..4c7bf512efc5943a7e0c3b45b7ed9a26e9eb3587 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_8_Serial.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_8_Serial.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 3 -s 8 -p -c 1 --COM COM9" />
+    <option name="SCRIPT_NAME" value="C:\Users\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" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_Dummy.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_Dummy.xml
index bc8735a1b29b3b8a8c04ec55e62b0ebe92726b01..60ef124b138bb8d1ddfe032ccc0978655d06e5ed 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_Dummy.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_Dummy.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 3 -s Dummy -p" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Single_Command.xml b/.idea/runConfigurations/OBSW_UdpClient_Single_Command.xml
index c222f861e94e50ef526670c1e21fd714c39dc89d..919cb5f515cb824183c10a05e35c8a35ed1d2436 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Single_Command.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Single_Command.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 2 -p" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Single_Command_Serial.xml b/.idea/runConfigurations/OBSW_UdpClient_Single_Command_Serial.xml
index 1a61c95d6d6366e1a25fe3c08c2869f6abf90fcd..b2b8e994df14202fe7e47a25953dc61f8bab3984 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Single_Command_Serial.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Single_Command_Serial.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 2 -c 1 --COM COM9" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="PARAMETERS" value="-m 2 -c 1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Software_Serial.xml b/.idea/runConfigurations/OBSW_UdpClient_Software_Serial.xml
index 80f538bfd0cb37370c926c721c4fc3d7806c2371..038b19c628df0abad659dcfb86736f7c458799ad 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Software_Serial.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Software_Serial.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 4 -p -c 1 --COM COM9" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="PARAMETERS" value="-m 4 -p -c 1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Software_Testmode.xml b/.idea/runConfigurations/OBSW_UdpClient_Software_Testmode.xml
index 932ea885b426fb78a44a6546577e80ce97109a73..7b3249a40895404cbcd7ca39ac1a5bd869614410 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Software_Testmode.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Software_Testmode.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 4 -p" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Unit_Test.xml b/.idea/runConfigurations/OBSW_UdpClient_Unit_Test.xml
index d36283064022b2b2bef2e208222569b449508a6a..02fa79a9e47b9f63ac02cb479cd71c91589ae25e 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Unit_Test.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Unit_Test.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 5 -p" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Unit_Test_STM32.xml b/.idea/runConfigurations/OBSW_UdpClient_Unit_Test_STM32.xml
index ee6f63f12ec0e25c9dfb03c31f20ced91fb6855d..ccb99dbae49c46541150fa87b69891a32f43c36f 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Unit_Test_STM32.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Unit_Test_STM32.xml
@@ -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="$PROJECT_DIR$/OBSW_UdpClient.py" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
     <option name="PARAMETERS" value="-m 5 -p -t 7" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/OBSW_UdpClient_Unit_Test_Serial.xml b/.idea/runConfigurations/OBSW_UdpClient_Unit_Test_Serial.xml
index f2d9074599c6274d040ee633ba702621e04a77e5..693c841bf6927126e6a0b3757f0ababf271e641e 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Unit_Test_Serial.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Unit_Test_Serial.xml
@@ -12,8 +12,8 @@
     <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="$PROJECT_DIR$/OBSW_UdpClient.py" />
-    <option name="PARAMETERS" value="-m 5 -p -c 1 --COM COM9" />
+    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
+    <option name="PARAMETERS" value="-m 5 -p -c 1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
     <option name="MODULE_MODE" value="false" />
diff --git a/OBSW_UdpClient.py b/OBSW_TmTcClient.py
similarity index 58%
rename from OBSW_UdpClient.py
rename to OBSW_TmTcClient.py
index 5edb5e88f14cd6592f470e73e91921e7ee6401a3..8c7c62ba2506434e0d09c2c39ead4688052ae4ea 100644
--- a/OBSW_UdpClient.py
+++ b/OBSW_TmTcClient.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8 -*-
 """
 @file
-    OBSW_UdpClient.py
+    OBSW_TmTcClient.py
 @date
     01.11.2019
 @brief
@@ -22,9 +22,13 @@
 
     Example command to test service 17,
     assuming no set client IP (set manually to PC IP Address if necessary) and default board IP 169.254.1.38:
-    OBSW_UdpClient.py -m 3 -s 17
+    OBSW_TmTcClient.py -m 3 -s 17
     Example to run Unit Test:
-    OBSW_UdpClient.py -m 5
+    OBSW_TmTcClient.py -m 5
+    Example to test service 17 with HK output and serial communication:
+    OBSW_TmTcClient.py -m 3 -s 17 --hk -c 1
+    Get command line help:
+    OBSW_TmTcClient.py -h
 
     There are four different Modes:
         0. GUI Mode: Experimental mode, also called if no input parameter are specified
@@ -38,10 +42,8 @@
         5. Unit Test Mode: Performs a unit test which returns a simple OK or NOT OK. This mode
             has the capability to send TCs in bursts, where applicable
 
-    The TC timeout factor is mulitplied with the TM timeout to specifiy
-    when a TC is sent again, if no reply is received. The timeout factor is higher for the STM32.
-
-    If there are problems receiving packets, use the tool Wireshark to track ethernet communication
+    If there are problems receiving packets with Ethernet Communication,
+    use the tool Wireshark to track ethernet communication
     for UDP echo packets (requests and response).
     If the packets appear, there might be a problematic firewall setting.
     Please ensure that python.exe UDP packets are not blocked in advanced firewall settings
@@ -51,57 +53,31 @@
     S. Gaisser, J. Meier, R. Mueller
 """
 
-import sys
 import atexit
 import signal
 import queue
-import socket
 import unittest
-import argparse
 
 from test import OBSW_UnitTest
 from config import OBSW_Config as g
+from config.OBSW_Config import setGlobals
 from tc.OBSW_TcPacker import PUSTelecommand, createTotalTcQueue, serviceTestSelect
-from sendreceive.OBSW_CommandSenderReceiver import CommandSenderReceiver, connectToBoard
+from sendreceive.OBSW_CommandSenderReceiver import CommandSenderReceiver
 from sendreceive.OBSW_SingleCommandSenderReceiver import SingleCommandSenderReceiver
 from sendreceive.OBSW_SequentialSenderReceiver import SequentialCommandSenderReceiver
+from utility.OBSW_ArgParser import parseInputArguments
 from utility.OBSW_TmTcPrinter import TmtcPrinter
 from comIF.OBSW_Ethernet_ComIF import EthernetComIF
 from comIF.OBSW_Serial_ComIF import SerialComIF
 
-# Mode options, set by args parser
-modeList = {
-    0: "GUIMode",
-    1: "ListenerMode",
-    2: "SingleCommandMode",
-    3: "ServiceTestMode",
-    4: "SoftwareTestMode",
-    5: "OBSWUnitTest"
-}
-
 
-# noinspection PyTypeChecker
 def main():
     args = parseInputArguments()
     setGlobals(args)
-    if g.modeId == "GUIMode":
-        print("GUI not implemented yet")
-        exit()
-
     setUpSocket()
     atexit.register(g.keyboardInterruptHandler)
-    print("Attempting to connect")
     tmtcPrinter = TmtcPrinter(g.displayMode, g.printToFile, True)
-    if g.comIF == 0:
-        communicationInterface = EthernetComIF(tmtcPrinter, g.tmTimeout, g.tcSendTimeoutFactor,
-                                               g.sockSend, g.sockReceive, g.sendAddress)
-    else:
-        comPort = g.comPort
-        baudRate = 115200
-        g.serialTimeout = 0.05
-        communicationInterface = SerialComIF(tmtcPrinter, comPort, baudRate, g.serialTimeout)
-
-    connectToBoard()
+    communicationInterface = setCommunicationInterface(tmtcPrinter)
 
     if g.modeId == "ListenerMode":
         Receiver = CommandSenderReceiver(communicationInterface, tmtcPrinter, g.tmTimeout, g.tcSendTimeoutFactor,
@@ -132,6 +108,7 @@ def main():
             communicationInterface.serial.close()
         # Set up test suite and run it with runner
         # Verbosity specifies detail level
+        # noinspection PyTypeChecker
         suite = unittest.TestLoader().loadTestsFromModule(OBSW_UnitTest)
         unittest.TextTestRunner(verbosity=2).run(suite)
 
@@ -150,84 +127,29 @@ def commandPreparation():
     return command.packCommandTuple()
 
 
-def parseInputArguments():
-    argParser = argparse.ArgumentParser(description="TMTC Client Command Line Interface")
-
-    argParser.add_argument('-m', '--mode', type=int, help='Target Mode. Default is 1(Listener Mode), '
-                           '0: GUI Mode, 1:Listener Mode, '
-                           '2: Single Command Mode, 3: Service Test Mode, '
-                           '4: Software Test Mode, 5: Unit Test Mode ', default=0)
-    argParser.add_argument('-c', '--comIF', type=int, help='Communication Interface. 0 for Ethernet, 1 for Serial',
-                           default=0)
-    argParser.add_argument('--clientIP', help='Client(Computer) IP. Default:\'\'', default='')
-    argParser.add_argument('--boardIP', help='Board IP. Default: 169.254.1.38', default='169.254.1.38')
-    argParser.add_argument('-s', '--service',  help='Service to test. Default: 17', default=17)
-    argParser.add_argument('-t', '--tmTimeout', type=float, help='TM Timeout when listening to verification sequence.'
-                                                                 ' Default: 12, 6(Serial)', default=6.0)
-    argParser.add_argument('-p', '--printFile', help='Supply -p to print output to file. Default: False',
-                           action='store_true')
-    argParser.add_argument('-o', '--tcTimeoutFactor', type=float, help='TC Timeout Factor. Default: 3.5', default=3.5)
-    argParser.add_argument('-r', '--rawDataPrint', help='Supply -r to print all raw data directly', action='store_true')
-    argParser.add_argument('-d', '--shortDisplayMode', help='Supply -d to print short output', action='store_true')
-    argParser.add_argument('-k', '--hk', help='Supply -k or --hk to print HK data', action='store_true')
-    argParser.add_argument('--COM', help='COM Port for serial communication', default='COM0')
-
-    if len(sys.argv) == 1:
-        print("No Input Arguments specified, setting default values.")
-        argParser.print_help()
-    args = argParser.parse_args()
-    if args.comIF == 1 and not args.COM:
-        print("No COM port provided, using COM0 !")
-    if args.comIF == 1 and args.tmTimeout == 12.0:
-        args.tmTimeout = 6.0
-    print(args)
-    return args
-
-
-def setGlobals(args):
-    if args.shortDisplayMode:
-        displayMode = "short"
-    else:
-        displayMode = "long"
-    # Board IP address and ethernet port IP address can be passed optionally
-    # by passing line parameter In PyCharm: Set parameters in run configuration
-    # Add IP address of Ethernet port. Use command ipconfig in windows console or ifconfig in Linux.
-    portReceive = 2008
-    recAddress = (args.clientIP, portReceive)
-    # Static IP of board
-    portSend = 7
-    sendAddress = (args.boardIP, portSend)
-    if 0 <= args.mode <= 5:
-        modeId = modeList[args.mode]
-    else:
-        print("Invalid mode argument, setting default mode (1)")
-        modeId = modeList[1]
-    service = str(args.service)
-    if service.isdigit():
-        service = int(args.service)
-    else:
-        service = args.service
-    g.recAddress = recAddress
-    g.sendAddress = sendAddress
-    g.comIF = args.comIF
-    g.sockReceive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    g.sockSend = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    g.modeId = modeId
-    g.comPort = args.COM
-    g.printHkData = args.hk
-    g.tmTimeout = args.tmTimeout
-    g.printRawTmData = args.rawDataPrint
-    g.displayMode = displayMode
-    g.service = service
-    g.printToFile = args.printFile
-
-
 def setUpSocket():
     try:
         g.sockReceive.bind(g.recAddress)
         g.sockReceive.setblocking(False)
     except OSError:
         print("Error setting up sockets.")
+        print("Socket Receive Address: " + str(g.recAddress))
+        exit()
+    except TypeError:
+        print("Invalid Receive Address")
+        exit()
+
+
+def setCommunicationInterface(tmtcPrinter):
+    if g.comIF == 0:
+        communicationInterface = EthernetComIF(tmtcPrinter, g.tmTimeout, g.tcSendTimeoutFactor,
+                                               g.sockSend, g.sockReceive, g.sendAddress)
+    else:
+        comPort = g.comPort
+        baudRate = 115200
+        g.serialTimeout = 0.05
+        communicationInterface = SerialComIF(tmtcPrinter, comPort, baudRate, g.serialTimeout)
+    return communicationInterface
 
 
 class GracefulKiller:
diff --git a/config/OBSW_Config.py b/config/OBSW_Config.py
index 6c5c4ddb240d6be637b68b3c49f9e3bd05947230..d28b9cfc8e6e1685b88d1867711820f84557b5eb 100644
--- a/config/OBSW_Config.py
+++ b/config/OBSW_Config.py
@@ -11,6 +11,17 @@ import socket
 """
 All global variables, set in main program with arg parser
 """
+
+# Mode options, set by args parser
+modeList = {
+    0: "GUIMode",
+    1: "ListenerMode",
+    2: "SingleCommandMode",
+    3: "ServiceTestMode",
+    4: "SoftwareTestMode",
+    5: "OBSWUnitTest"
+}
+
 # General Settings
 scriptMode = 1
 modeId = 0
@@ -38,6 +49,50 @@ printHkData = False
 printRawTmData = False
 
 
+# noinspection PyUnusedLocal
+def setGlobals(args):
+    global recAddress, sendAddress, scriptMode, modeId, service, displayMode, comIF, comPort, serialTimeout
+    global tmTimeout, tcSendTimeoutFactor, sockSend, sockReceive, printToFile, printHkData, printRawTmData
+    if args.mode == 0:
+        print("GUI mode not implemented yet. Try other modes")
+        exit()
+    if args.shortDisplayMode:
+        displayMode = "short"
+    else:
+        displayMode = "long"
+    # Board IP address and ethernet port IP address can be passed optionally
+    # by passing line parameter In PyCharm: Set parameters in run configuration
+    # Add IP address of Ethernet port. Use command ipconfig in windows console or ifconfig in Linux.
+    portReceive = 2008
+    recAddressToSet = (args.clientIP, portReceive)
+    # Static IP of board
+    portSend = 7
+    sendAddressToSet = (args.boardIP, portSend)
+    if 0 <= args.mode <= 5:
+        modeId = modeList[args.mode]
+    else:
+        print("Invalid mode argument, setting default mode (1)")
+        modeId = modeList[1]
+    service = str(args.service)
+    if service.isdigit():
+        service = int(args.service)
+    else:
+        service = args.service
+    recAddress = recAddressToSet
+    sendAddress = sendAddressToSet
+    comIF = args.comIF
+    sockReceive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+    sockSend = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+    modeId = modeId
+    comPort = args.COM
+    printHkData = args.hk
+    tmTimeout = args.tmTimeout
+    printRawTmData = args.rawDataPrint
+    displayMode = displayMode
+    service = service
+    printToFile = args.printFile
+
+
 def keyboardInterruptHandler():
     print("Disconnect registered")
     disconnect = bytearray([0, 0, 0, 0, 0])
diff --git a/utility/OBSW_ArgParser.py b/utility/OBSW_ArgParser.py
new file mode 100644
index 0000000000000000000000000000000000000000..5cbf976746c4e06c187b88e7e4c154ce5b072dd6
--- /dev/null
+++ b/utility/OBSW_ArgParser.py
@@ -0,0 +1,89 @@
+#!/usr/bin/python3.7
+"""
+@file
+    OBSW_ArgParser.py
+@date
+    11.01.2020
+@brief
+    Reads all input arguments or requests them from user.
+"""
+
+import argparse
+import sys
+
+
+def parseInputArguments():
+    argParser = argparse.ArgumentParser(description="TMTC Client Command Line Interface")
+
+    argParser.add_argument('-m', '--mode', type=int, help='Target Mode. Default is 1(Listener Mode), '
+                                                          '0: GUI Mode, 1:Listener Mode, '
+                                                          '2: Single Command Mode, 3: Service Test Mode, '
+                                                          '4: Software Test Mode, 5: Unit Test Mode ', default=0)
+    argParser.add_argument('-c', '--comIF', type=int, help='Communication Interface. 0 for Ethernet, 1 for Serial',
+                           default=0)
+    argParser.add_argument('--clientIP', help='Client(Computer) IP. Default:\'\'', default='')
+    argParser.add_argument('--boardIP', help='Board IP. Default: 169.254.1.38', default='169.254.1.38')
+    argParser.add_argument('-s', '--service',  help='Service to test. Default: 17', default=17)
+    argParser.add_argument('-t', '--tmTimeout', type=float, help='TM Timeout when listening to verification sequence.'
+                                                                 ' Default: 12, 6(Serial)', default=6.0)
+    argParser.add_argument('-p', '--printFile', help='Supply -p to print output to file. Default: False',
+                           action='store_true')
+    argParser.add_argument('-o', '--tcTimeoutFactor', type=float, help='TC Timeout Factor. Default: 3.5', default=3.5)
+    argParser.add_argument('-r', '--rawDataPrint', help='Supply -r to print all raw data directly', action='store_true')
+    argParser.add_argument('-d', '--shortDisplayMode', help='Supply -d to print short output', action='store_true')
+    argParser.add_argument('-k', '--hk', help='Supply -k or --hk to print HK data', action='store_true')
+    argParser.add_argument('--COM', help='COM Port for serial communication')
+
+    if len(sys.argv) == 1:
+        print("No Input Arguments specified.")
+        argParser.print_help()
+    args = argParser.parse_args()
+    assignEmptyArgs(args)
+    print(args)
+    return args
+
+
+def assignEmptyArgs(args):
+    if len(sys.argv) > 1 :
+        handleUnspecifiedArgs(args)
+    if len(sys.argv) == 1:
+        handleEmptyArgs(args)
+
+
+def handleUnspecifiedArgs(args):
+    if args.comIF == 1 and args.tmTimeout is None:
+        args.tmTimeout = 6.0
+    if args.comIF == 1 and args.COM is None:
+        args.COM = input("Serial Commuinication specified without COM port. Please enter COM Port: ")
+    if args.mode is None:
+        print("No mode specified with -m Parameter.")
+        print("Possible Modes: ")
+        print("1: Listener Mode")
+        print("2: Single Command Mode with manual command")
+        print("3: Service Mode, Commands specified in tc folder")
+        print("4: Software Mode, runs all command specified in OBSW_TcPacker.py")
+        print("5: Unit Test, runs unit test specified in OBSW_UnitTest.py")
+        args.mode = input("Please enter Mode: ")
+        if args.mode == 1 and args.service is None:
+            args.service = input("No Service specified for Service Mode. Please enter PUS service number: ")
+
+
+def handleEmptyArgs(args):
+    printHk = input("Print HK packets ? (y/n or yes/no)")
+    try:
+        printHk = printHk.lower()
+    except TypeError:
+        pass
+    if printHk == 'y' or printHk == 'yes' or printHk == 1:
+        args.hk = True
+    else:
+        args.hk = False
+    printToLog = input("Export service test output to log files ? (y/n or yes/no)")
+    try:
+        printToLog = printToLog.lower()
+    except TypeError:
+        pass
+    if printToLog == 'y' or printToLog == 'yes' or printHk == 1:
+        args.printFile = True
+    else:
+        args.printFile = False