diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2019-06-21 18:54:56 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2019-06-21 21:42:20 -0400 |
commit | d98bbc772cb2a605786443d8cf12abce963a07f6 (patch) | |
tree | 7427a349f29d5ca82f4521038a4005ce1ee051c5 /klippy | |
parent | ebb375fee9bafd3910ea77301e199b34a2a58cc6 (diff) | |
download | kutter-d98bbc772cb2a605786443d8cf12abce963a07f6.tar.gz kutter-d98bbc772cb2a605786443d8cf12abce963a07f6.tar.xz kutter-d98bbc772cb2a605786443d8cf12abce963a07f6.zip |
serialhdl: Eventually timeout connect attempt
If the serial connection has not been successful after 2.5 minutes
then report an error.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r-- | klippy/mcu.py | 7 | ||||
-rw-r--r-- | klippy/serialhdl.py | 9 |
2 files changed, 11 insertions, 5 deletions
diff --git a/klippy/mcu.py b/klippy/mcu.py index cb07658f..2facba0a 100644 --- a/klippy/mcu.py +++ b/klippy/mcu.py @@ -614,8 +614,11 @@ class MCU: and not os.path.exists(self._serialport)): # Try toggling usb power self._check_restart("enable power") - self._serial.connect() - self._clocksync.connect(self._serial) + try: + self._serial.connect() + self._clocksync.connect(self._serial) + except serialhdl.error as e: + raise error(str(e)) msgparser = self._serial.get_msgparser() name = self._name log_info = [ diff --git a/klippy/serialhdl.py b/klippy/serialhdl.py index 0f182da2..6284fe4d 100644 --- a/klippy/serialhdl.py +++ b/klippy/serialhdl.py @@ -67,8 +67,11 @@ class SerialReader: def connect(self): # Initial connection logging.info("Starting serial connect") + start_time = self.reactor.monotonic() while 1: - starttime = self.reactor.monotonic() + connect_time = self.reactor.monotonic() + if connect_time > start_time + 150.: + raise error("Unable to connect") try: if self.baud: self.ser = serial.Serial( @@ -77,7 +80,7 @@ class SerialReader: self.ser = open(self.serialport, 'rb+') except (OSError, IOError, serial.SerialException) as e: logging.warn("Unable to open port: %s", e) - self.reactor.pause(starttime + 5.) + self.reactor.pause(connect_time + 5.) continue if self.baud: stk500v2_leave(self.ser, self.reactor) @@ -87,7 +90,7 @@ class SerialReader: self.background_thread.start() # Obtain and load the data dictionary from the firmware try: - identify_data = self._get_identify_data(starttime + 5.) + identify_data = self._get_identify_data(connect_time + 5.) except error as e: logging.exception("Timeout on serial connect") self.disconnect() |