aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--klippy/reactor.py10
-rw-r--r--klippy/serialhdl.py8
2 files changed, 13 insertions, 5 deletions
diff --git a/klippy/reactor.py b/klippy/reactor.py
index 1fd8426a..65536616 100644
--- a/klippy/reactor.py
+++ b/klippy/reactor.py
@@ -3,7 +3,7 @@
# Copyright (C) 2016 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
-import select, math
+import select, math, time
import greenlet
import chelper
@@ -71,9 +71,17 @@ class SelectReactor:
return 0.
return min(1., max(.001, self._next_timer - self.monotonic()))
# Greenlets
+ def _sys_pause(self, waketime):
+ # Pause using system sleep for when reactor not running
+ delay = waketime - self.monotonic()
+ if delay > 0.:
+ time.sleep(delay)
+ return self.monotonic()
def pause(self, waketime):
g = greenlet.getcurrent()
if g is not self._g_dispatch:
+ if self._g_dispatch is None:
+ return self._sys_pause(waketime)
return self._g_dispatch.switch(waketime)
if self._greenlets:
g_next = self._greenlets.pop()
diff --git a/klippy/serialhdl.py b/klippy/serialhdl.py
index ef344381..35e2a135 100644
--- a/klippy/serialhdl.py
+++ b/klippy/serialhdl.py
@@ -3,7 +3,7 @@
# Copyright (C) 2016 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
-import logging, threading, time
+import logging, threading
import serial
import msgproto, chelper, util
@@ -338,10 +338,10 @@ def arduino_reset(serialport, reactor):
# First try opening the port at 1200 baud
ser = serial.Serial(serialport, 1200, timeout=0)
ser.read(1)
- time.sleep(0.100)
+ reactor.pause(reactor.monotonic() + 0.100)
# Then try toggling DTR
ser.dtr = True
- time.sleep(0.100)
+ reactor.pause(reactor.monotonic() + 0.100)
ser.dtr = False
- time.sleep(0.100)
+ reactor.pause(reactor.monotonic() + 0.100)
ser.close()