From c3149ee6ef5bc6fa0b75ffd42058221a2a84f293 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" <robin.mueller.m@gmail.com> Date: Sat, 11 Jan 2020 15:46:18 +0100 Subject: [PATCH] Some restructuring, arg parser continued Arg Parser can now prompt values from user if no parameters are specified --- ...ient_Help.xml => OBSW_TmTcClient_Help.xml} | 4 +- .../runConfigurations/OBSW_UdpClient_GPS0.xml | 2 +- .../OBSW_UdpClient_GPS0_Serial.xml | 4 +- .../runConfigurations/OBSW_UdpClient_GPS1.xml | 2 +- .../OBSW_UdpClient_GPS1_Serial.xml | 4 +- .../OBSW_UdpClient_Listener_Mode_Serial.xml | 4 +- .../OBSW_UdpClient_Listener__Mode.xml | 2 +- .../OBSW_UdpClient_Service_17_Test.xml | 2 +- .../OBSW_UdpClient_Service_17_Test_Serial.xml | 4 +- .../OBSW_UdpClient_Service_200_UDP.xml | 2 +- .../OBSW_UdpClient_Service_2_Serial.xml | 4 +- .../OBSW_UdpClient_Service_2_Test.xml | 2 +- .../OBSW_UdpClient_Service_3.xml | 2 +- .../OBSW_UdpClient_Service_3_Serial_.xml | 4 +- .../OBSW_UdpClient_Service_5_Serial.xml | 4 +- .../OBSW_UdpClient_Service_8.xml | 2 +- .../OBSW_UdpClient_Service_8_Serial.xml | 4 +- .../OBSW_UdpClient_Service_Dummy.xml | 2 +- .../OBSW_UdpClient_Single_Command.xml | 2 +- .../OBSW_UdpClient_Single_Command_Serial.xml | 4 +- .../OBSW_UdpClient_Software_Serial.xml | 4 +- .../OBSW_UdpClient_Software_Testmode.xml | 2 +- .../OBSW_UdpClient_Unit_Test.xml | 2 +- .../OBSW_UdpClient_Unit_Test_STM32.xml | 2 +- .../OBSW_UdpClient_Unit_Test_Serial.xml | 4 +- OBSW_UdpClient.py => OBSW_TmTcClient.py | 140 ++++-------------- config/OBSW_Config.py | 55 +++++++ utility/OBSW_ArgParser.py | 89 +++++++++++ 28 files changed, 212 insertions(+), 146 deletions(-) rename .idea/runConfigurations/{OBSW_UdpClient_Help.xml => OBSW_TmTcClient_Help.xml} (80%) rename OBSW_UdpClient.py => OBSW_TmTcClient.py (58%) create mode 100644 utility/OBSW_ArgParser.py 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 1d00e80..ee7dfab 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 08b0f21..4c547c3 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 84a5d92..ec3c40e 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 af1630d..b1caeed 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 bd24e6a..f44bd48 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 350f9d6..8a7cb54 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 376d307..1868c22 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 038301a..dcfcd0d 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 7c2e72d..52ef5e5 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 11d9688..e82c31b 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 dc13984..c832a76 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 215ad50..3dddeac 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 4b6576c..882fdef 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 b4b686d..7a1d8a7 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 d3fc74d..46c3c45 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 6389213..62daaad 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 887a91c..4c7bf51 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 bc8735a..60ef124 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 c222f86..919cb5f 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 1a61c95..b2b8e99 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 80f538b..038b19c 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 932ea88..7b3249a 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 d362830..02fa79a 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 ee6f63f..ccb99db 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 f2d9074..693c841 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 5edb5e8..8c7c62b 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 6c5c4dd..d28b9cf 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 0000000..5cbf976 --- /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 -- GitLab