瀏覽代碼

Adds a new handling for reconnects.

master
Lukas Prause 3 年之前
父節點
當前提交
ccfd3c3d06
共有 2 個文件被更改,包括 86 次插入47 次删除
  1. +86
    -47
      measurement_main.py
  2. +0
    -0
      plot_transmission_timeline.py

+ 86
- 47
measurement_main.py 查看文件

@@ -28,6 +28,9 @@ CMD_TIME_EPOCH = "date +%s"
TIMEOUT_OFFSET = 10.0
WAIT_AFTER_IPERF = 5.0

modem_serial_obj = None
gps_serial_obj = None


class ProcessHandler:
def __init__(self):
@@ -243,6 +246,53 @@ def monitor_serial(ser, output_file):
return


def start_serial_monitoring(serial, baudrate, folder, prefix):
global modem_serial_obj

print_message("Opening serial port for {}".format(serial))
modem_serial_obj = serial.Serial(
port=serial,
baudrate=baudrate,
)
modem_serial_obj.isOpen()
ser_filepath = "{}{}_serial_monitor_output.txt".format(
folder, prefix
)
ser_thread = Thread(
target=monitor_serial,
args=(
modem_serial_obj,
ser_filepath,
),
)
ser_thread.start()


def is_serial_monitoring_running():
return modem_serial_obj.is_open


def start_gps_monitoring(gps, baudrate, folder, prefix):
global gps_serial_obj

print_message("Opening GPS serial port for {}".format(gps))
gps_serial_obj = serial.Serial(
gps,
baudrate=baudrate,
)
gps_ser_filepath = "{}{}_gps.nmea".format(
folder, prefix
)
gps_ser_thread = Thread(
target=monitor_gps,
args=(
gps_serial_obj,
gps_ser_filepath,
),
)
gps_ser_thread.start()


def monitor_gps(ser, output_file):
ser.flushInput()
ser.flushOutput()
@@ -270,11 +320,19 @@ def connect_moden(provider="telekom"):
print_message("...done")


def reconnect_modem(provider="telekom"):
def reconnect_modem(provider="telekom", hard=False):
global modem_serial_obj
print_message("Reonnect modem with provider {} ...".format(provider))
os.system("/root/connect-modem.py -s")
sleep(5)
os.system("/root/connect-modem.py -l {}".format(provider))
if hard:
if modem_serial_obj.is_open:
modem_serial_obj.write(b'at+COPS?\r\n')
sleep(NR_SERIAL_RESPOND_TIME)
modem_serial_obj.write(b'AT+QENG="servingcell"\r\n')
sleep(NR_SERIAL_RESPOND_TIME)
else:
os.system("/root/connect-modem.py -s")
sleep(5)
os.system("/root/connect-modem.py -l {}".format(provider))
print_message("...done")


@@ -538,46 +596,11 @@ class Client:
sleep(1)
print_message("Start measurement")

ser = None

if self.config["serial"] is not None:
print_message("Opening serial port for {}".format(self.config["serial"]))
ser = serial.Serial(
port=self.config["serial"],
baudrate=self.config["baudrate"],
)
ser.isOpen()
ser_filepath = "{}{}_serial_monitor_output.txt".format(
self.config["folder"], self.config["prefix"]
)
ser_thread = Thread(
target=monitor_serial,
args=(
ser,
ser_filepath,
),
)
ser_thread.start()

gps_ser = None
start_serial_monitoring(self.config["serial"], self.config["baudrate"], self.config["folder"], self.config["prefix"])

if self.config["gps"] is not None:
print_message("Opening GPS serial port for {}".format(self.config["gps"]))
gps_ser = serial.Serial(
self.config["gps"],
baudrate=self.config["gps_baudrate"],
)
gps_ser_filepath = "{}{}_gps.nmea".format(
self.config["folder"], self.config["prefix"]
)
gps_ser_thread = Thread(
target=monitor_gps,
args=(
gps_ser,
gps_ser_filepath,
),
)
gps_ser_thread.start()
start_gps_monitoring(self.config["gps"], self.config["gps_baudrate"], self.config["folder"], self.config["prefix"])

if self.config["bandwidth"]:
self.bandwidth()
@@ -592,14 +615,14 @@ class Client:
elif self.config["ping"]:
self.ping()

if ser is not None:
if modem_serial_obj is not None:
print_message("Closing serial port...")
ser.close()
modem_serial_obj.close()
sleep(2)
print_message("done...")
if gps_ser is not None:
if gps_serial_obj is not None:
print_message("Closing GPS serial port...")
gps_ser.close()
gps_serial_obj.close()
sleep(2)
print_message("done...")

@@ -767,6 +790,7 @@ class Client:
ws_filter = "{} and port {}".format("tcp", self.config["port"])
print_message("Use ws filter: {}".format(ws_filter))
for n in range(1, self.config["number_of_measurements"] + 1):
reconnect_count = 0
if not is_modem_connected():
background_write_to_file(
filepath="{}{}_reconnect.log".format(
@@ -775,6 +799,9 @@ class Client:
content='{}"'.format(datetime.timestamp(datetime.now())),
)
reconnect_modem()
sleep(2)
if not is_serial_monitoring_running():
start_serial_monitoring()
print_message(
"{} of {}".format(n, self.config["number_of_measurements"])
)
@@ -824,7 +851,11 @@ class Client:
),
content='{}"'.format(datetime.timestamp(datetime.now())),
)
reconnect_modem()
reconnect_modem(hard=reconnect_count > 5)
reconnect_count += 1
sleep(2)
if not is_serial_monitoring_running():
start_serial_monitoring()
try:
try:
iperf_return = subprocess.call(
@@ -856,6 +887,7 @@ class Client:
enable_tcp_probe()
print_message("tcp probe is now enabled")
for n in range(1, self.config["number_of_measurements"] + 1):
reconnect_count = 0
if not is_modem_connected():
background_write_to_file(
filepath="{}{}_reconnect.log".format(
@@ -864,6 +896,9 @@ class Client:
content='{}"'.format(datetime.timestamp(datetime.now())),
)
reconnect_modem()
sleep(2)
if not is_serial_monitoring_running():
start_serial_monitoring()
print_message(
"{} of {}".format(n, self.config["number_of_measurements"])
)
@@ -912,7 +947,11 @@ class Client:
),
content='{}"'.format(datetime.timestamp(datetime.now())),
)
reconnect_modem()
reconnect_modem(hard=reconnect_count > 5)
reconnect_count += 1
sleep(2)
if not is_serial_monitoring_running():
start_serial_monitoring()
try:
try:
iperf_return = subprocess.call(

+ 0
- 0
plot_transmission_timeline.py 查看文件


Loading…
取消
儲存