mirror of
https://github.com/nasa/fprime.git
synced 2025-12-11 23:38:06 -06:00
120 lines
3.7 KiB
Python
120 lines
3.7 KiB
Python
#!python
|
|
|
|
import sys
|
|
import subprocess
|
|
import os
|
|
import time
|
|
import signal
|
|
from optparse import OptionParser
|
|
|
|
#TODO remove, debugging
|
|
from pprint import pprint
|
|
|
|
def main(argv=None):
|
|
|
|
# Get a path to the python binary we are using to launch processes
|
|
python_bin = "python"
|
|
|
|
# Get a path to the root of the reference application build directory
|
|
build_root = os.environ["BUILD_ROOT"]
|
|
|
|
# Parse options on the command line
|
|
parser = OptionParser()
|
|
parser.add_option("-p", "--port", dest="port", action="store", type="int", help="Set the threaded TCP socket server port [default: 50000]", default=50000)
|
|
parser.add_option("-a", "--addr", dest="addr", action="store", type="string", help="set the threaded TCP socket server address [default: %default]", default="0.0.0.0")
|
|
parser.add_option("-n", "--nobin", dest="nobin", action="store_true", help="Disables the binary app from starting [default: %default]", default=False)
|
|
parser.add_option("-t", "--twin", dest="twin", action="store_true", help="Runs Threaed TCP Server in window, otherwise backgrounds [default: %default]", default=False)
|
|
|
|
(opts, args) = parser.parse_args(argv)
|
|
used_port = opts.port
|
|
nobin = opts.nobin
|
|
addr = opts.addr
|
|
twin = opts.twin
|
|
|
|
|
|
################## Run the ThreadedTCPServer.py #################################
|
|
if twin:
|
|
TTS_args = [python_bin,"%s/Gds/wxGui/bin/pexpect_runner.py"%build_root,
|
|
"ThreadedTCP.log","Threaded TCP Server",
|
|
python_bin,"%s/Gds/bin/ThreadedTCPServer.py"%build_root,
|
|
"--port","%d"%used_port, "--host",addr]
|
|
TTS = subprocess.Popen(TTS_args)
|
|
else:
|
|
tts_log = open("ThreadedTCP.log",'w')
|
|
TTS_args = [python_bin, "-u",
|
|
"%s/Gds/bin/ThreadedTCPServer.py"%build_root,
|
|
"--port","%d"%used_port, "--host",addr]
|
|
TTS = subprocess.Popen(TTS_args,stdout=tts_log,stderr=subprocess.STDOUT)
|
|
|
|
#################################################################################
|
|
|
|
# Wait for TCP Server to start
|
|
time.sleep(2)
|
|
|
|
|
|
|
|
########################### Run the GUI for the GDS #############################
|
|
|
|
GUI_args = [python_bin,"%s/Gds/wxGui/bin/gds.py"%build_root,
|
|
"--port","%d"%used_port,
|
|
"--xml-dict","%s/Ref/Top/RefTopologyAppDictionary.xml"%build_root,
|
|
"--addr",addr,"-L","%s/Ref/logs"%build_root,
|
|
"--config","%s/Ref/gds.ini"%build_root]
|
|
|
|
|
|
#print ("GUI: %s"%" ".join(GUI_args))
|
|
GUI = subprocess.Popen(GUI_args)
|
|
|
|
#################################################################################
|
|
|
|
|
|
################################ Run Ref app ####################################
|
|
|
|
ref_bin = "%s/Ref/%s/Ref"%(build_root,os.environ["OUTPUT_DIR"])
|
|
|
|
if not nobin:
|
|
#print("running ref app\n\n\n\n")
|
|
REF_args = [python_bin,"%s/Gds/wxGui/bin/pexpect_runner.py"%build_root,
|
|
"Ref.log","Ref Application",ref_bin,"-p","%d"%used_port,
|
|
"-a",addr]
|
|
REF = subprocess.Popen(REF_args)
|
|
|
|
#################################################################################
|
|
|
|
# Wait for GUI process to close
|
|
#print("Waiting for GUI")
|
|
GUI.wait()
|
|
#print("GUI Closed")
|
|
|
|
|
|
if not nobin:
|
|
#print("Waiting for App")
|
|
try:
|
|
REF.send_signal(signal.SIGTERM)
|
|
except:
|
|
pass
|
|
|
|
try:
|
|
REF.wait()
|
|
except:
|
|
pass
|
|
#print("App Closed")
|
|
|
|
|
|
#print("Waiting for TTS")
|
|
|
|
try:
|
|
TTS.send_signal(signal.SIGINT)
|
|
except:
|
|
pass
|
|
|
|
try:
|
|
TTS.wait()
|
|
except:
|
|
pass
|
|
|
|
#print("TTS Closed")
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|