aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/mcu.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2016-12-08 18:12:20 -0500
committerKevin O'Connor <kevin@koconnor.net>2016-12-09 17:09:51 -0500
commit89f5452ddbcaecfba7cee5a3ba73b2659746d63f (patch)
treeac505b60430357ea9a79b90e3b3f3aa157ff3f7b /klippy/mcu.py
parenta6de1db94d108f401f7f3e67f735743106e16837 (diff)
downloadkutter-89f5452ddbcaecfba7cee5a3ba73b2659746d63f.tar.gz
kutter-89f5452ddbcaecfba7cee5a3ba73b2659746d63f.tar.xz
kutter-89f5452ddbcaecfba7cee5a3ba73b2659746d63f.zip
gcode: Rework homing to use greenlets
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/mcu.py')
-rw-r--r--klippy/mcu.py21
1 files changed, 12 insertions, 9 deletions
diff --git a/klippy/mcu.py b/klippy/mcu.py
index 091222b2..ba441474 100644
--- a/klippy/mcu.py
+++ b/klippy/mcu.py
@@ -111,6 +111,7 @@ class MCU_stepper:
return self.ffi_lib.stepcompress_get_errors(self._stepqueue)
class MCU_endstop:
+ error = error
RETRY_QUERY = 1.000
def __init__(self, mcu, pin, stepper):
self._mcu = mcu
@@ -134,7 +135,7 @@ class MCU_endstop:
self._retry_query_ticks = int(self._mcu_freq * self.RETRY_QUERY)
self._last_state = {}
self.print_to_mcu_time = mcu.print_to_mcu_time
- def home(self, mcu_time, rest_time):
+ def home_start(self, mcu_time, rest_time):
clock = int(mcu_time * self._mcu_freq)
rest_ticks = int(rest_time * self._mcu_freq)
self._homing = True
@@ -149,10 +150,14 @@ class MCU_endstop:
self._mcu.serial.send_flush()
self._stepper.note_stepper_stop()
self._home_timeout_clock = int(mcu_time * self._mcu_freq)
+ def home_wait(self):
+ eventtime = time.time()
+ while self._check_busy(eventtime):
+ eventtime = self._mcu.pause(eventtime + 0.1)
def _handle_end_stop_state(self, params):
logging.debug("end_stop_state %s" % (params,))
self._last_state = params
- def check_busy(self, eventtime):
+ def _check_busy(self, eventtime):
# Check if need to send an end_stop_query command
if self._mcu.is_fileoutput():
return False
@@ -161,7 +166,10 @@ class MCU_endstop:
if not self._homing:
return False
if not self._last_state.get('homing', 0):
- self._stepper.set_mcu_position(self.get_last_position())
+ pos = self._last_state.get('pos', 0)
+ if self._stepper.get_invert_dir():
+ pos = -pos
+ self._stepper.set_mcu_position(pos)
self._homing = False
return False
if (self._mcu.serial.get_clock(last_sent_time)
@@ -178,11 +186,6 @@ class MCU_endstop:
msg = self._query_cmd.encode(self._oid)
self._mcu.send(msg, cq=self._cmd_queue)
return True
- def get_last_position(self):
- pos = self._last_state.get('pos', 0)
- if self._stepper.get_invert_dir():
- return -pos
- return pos
def query_endstop(self, mcu_time):
clock = int(mcu_time * self._mcu_freq)
self._homing = False
@@ -190,7 +193,7 @@ class MCU_endstop:
self._next_query_clock = clock
def query_endstop_wait(self):
eventtime = time.time()
- while self.check_busy(eventtime):
+ while self._check_busy(eventtime):
eventtime = self._mcu.pause(eventtime + 0.1)
return self._last_state.get('pin', self._invert) ^ self._invert