From 5613942d51d33d1ea60accb2e82e7c9c2f6fe798 Mon Sep 17 00:00:00 2001
From: Hoang Sa Nguyen <sa.nguyen@gmx.de>
Date: Wed, 2 Dec 2020 21:27:34 +0100
Subject: [PATCH] json

---
 config/json_parser.py        |  2 +-
 config/tmtcc_com_config.py   | 33 ++++++++++++++++++++++++++++++++-
 core/tmtc_client_core.py     |  1 +
 tmtc_core                    |  2 +-
 utility/tmtcc_args_parser.py |  6 ++++--
 5 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/config/json_parser.py b/config/json_parser.py
index 4e26f74..fdea1dd 100644
--- a/config/json_parser.py
+++ b/config/json_parser.py
@@ -1,7 +1,7 @@
 import json
 
 com_port_data = {
-    "com1": "test"
+    "COM_PORT": "name"
 }
 
 with open("tmtcc_config.json", "w") as write:
diff --git a/config/tmtcc_com_config.py b/config/tmtcc_com_config.py
index 79ad402..759f780 100644
--- a/config/tmtcc_com_config.py
+++ b/config/tmtcc_com_config.py
@@ -1,9 +1,14 @@
 """
 Set-up function. Initiates the communication interface.
 """
+import json
+import os
 import sys
 from typing import Union
 
+import serial
+import serial.tools.list_ports
+
 from tmtc_core.comIF.obsw_com_interface import CommunicationInterface
 from tmtc_core.comIF.obsw_dummy_com_if import DummyComIF
 from tmtc_core.comIF.obsw_ethernet_com_if import EthernetComIF
@@ -33,8 +38,22 @@ def set_communication_interface(tmtc_printer: TmTcPrinter) -> Union[Communicatio
         elif g.G_COM_IF == g.ComInterfaces.Serial:
             serial_baudrate = g.G_SERIAL_BAUDRATE
             serial_timeout = g.G_SERIAL_TIMEOUT
+            com_port = ""
+            if g.G_COM_PORT is None:
+                if os.path.isfile("config/tmtcc_config.json"):
+                    with open("config/tmtcc_config.json", "r") as write:
+                        load_data = json.load(write)
+                        com_port = load_data["COM_PORT"]
+
+                else:
+                    com_port = prompt_com_port()
+                    save_to_json = input("Do you want to store serial port to configuration? (y/n)")
+                    if save_to_json.lower() == 'y':
+                        with open("config/tmtcc_config.json", "w") as write:
+                            json.dump(dict(COM_PORT=com_port), write, indent=4)
+
             communication_interface = SerialComIF(
-                tmtc_printer=tmtc_printer, com_port=g.G_COM_PORT, baud_rate=serial_baudrate,
+                tmtc_printer=tmtc_printer, com_port=com_port, baud_rate=serial_baudrate,
                 serial_timeout=serial_timeout,
                 ser_com_type=SerialCommunicationType.DLE_ENCODING)
             communication_interface.set_dle_settings(
@@ -55,3 +74,15 @@ def set_communication_interface(tmtc_printer: TmTcPrinter) -> Union[Communicatio
         LOGGER.error("Error setting up communication interface")
         LOGGER.exception("Error")
         sys.exit()
+
+
+def prompt_com_port() -> str:
+    com_port = input(
+        "Serial Commuinication specified without COM port. Please enter COM Port"
+        "(enter h to display list of COM ports): ")
+    if com_port == 'h':
+        ports = serial.tools.list_ports.comports()
+        for port, desc, hwid in sorted(ports):
+            print("{}: {} [{}]".format(port, desc, hwid))
+        com_port = prompt_com_port()
+    return com_port
diff --git a/core/tmtc_client_core.py b/core/tmtc_client_core.py
index 4ef4aec..4fbee70 100755
--- a/core/tmtc_client_core.py
+++ b/core/tmtc_client_core.py
@@ -5,6 +5,7 @@
 @manual
 @author     R. Mueller
 """
+import json
 import sys
 
 from config.tmtcc_version import SW_VERSION, SW_SUBVERSION
diff --git a/tmtc_core b/tmtc_core
index 2407697..d550621 160000
--- a/tmtc_core
+++ b/tmtc_core
@@ -1 +1 @@
-Subproject commit 2407697ea25ec1479df5f1308183f7c9f0d01a90
+Subproject commit d550621a799b9836f8bbb1c0760ef3a20cac99af
diff --git a/utility/tmtcc_args_parser.py b/utility/tmtcc_args_parser.py
index 777f7e6..736797b 100644
--- a/utility/tmtcc_args_parser.py
+++ b/utility/tmtcc_args_parser.py
@@ -63,9 +63,11 @@ def parse_input_arguments():
         print("No Input Arguments specified.")
         arg_parser.print_help()
     args, unknown = arg_parser.parse_known_args()
-    # for argument in vars(args):
-    #     LOGGER.debug(argument + ": " + str(getattr(args, argument)))
+
+    #for argument in vars(args):
+    #   LOGGER.debug(argument + ": " + str(getattr(args, argument)))
     handle_args(args, unknown)
+
     return args
 
 
-- 
GitLab