aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--klippy/extras/idle_timeout.py10
-rw-r--r--klippy/extras/virtual_sdcard.py10
-rw-r--r--klippy/gcode.py8
3 files changed, 12 insertions, 16 deletions
diff --git a/klippy/extras/idle_timeout.py b/klippy/extras/idle_timeout.py
index f12d1aa0..260011a6 100644
--- a/klippy/extras/idle_timeout.py
+++ b/klippy/extras/idle_timeout.py
@@ -42,12 +42,10 @@ class IdleTimeout:
self.state = "Printing"
try:
script = self.idle_gcode.render()
- res = self.gcode.process_batch(script.split('\n'))
+ res = self.gcode.run_script(script)
except:
logging.exception("idle timeout gcode execution")
- return eventtime + 1.
- if not res:
- # Raced with incoming g-code commands
+ self.state = "Ready"
return eventtime + 1.
print_time = self.toolhead.get_last_move_time()
self.state = "Idle"
@@ -64,7 +62,7 @@ class IdleTimeout:
if idle_time < self.idle_timeout:
# Wait for idle timeout
return eventtime + self.idle_timeout - idle_time
- if not self.gcode.process_batch([]):
+ if self.gcode.get_mutex().test():
# Gcode class busy
return eventtime + 1.
# Idle timeout has elapsed
@@ -82,7 +80,7 @@ class IdleTimeout:
if buffer_time > -READY_TIMEOUT:
# Wait for ready timeout
return eventtime + READY_TIMEOUT + buffer_time
- if not self.gcode.process_batch([]):
+ if self.gcode.get_mutex().test():
# Gcode class busy
return eventtime + READY_TIMEOUT
# Transition to "ready" state
diff --git a/klippy/extras/virtual_sdcard.py b/klippy/extras/virtual_sdcard.py
index 4116d2c5..c25bbc78 100644
--- a/klippy/extras/virtual_sdcard.py
+++ b/klippy/extras/virtual_sdcard.py
@@ -146,6 +146,7 @@ class VirtualSD:
self.gcode.respond_error("Unable to seek file")
self.work_timer = None
return self.reactor.NEVER
+ gcode_mutex = self.gcode.get_mutex()
partial_input = ""
lines = []
while not self.must_pause_work:
@@ -170,12 +171,13 @@ class VirtualSD:
lines.reverse()
self.reactor.pause(self.reactor.NOW)
continue
+ # Pause if any other request is pending in the gcode class
+ if gcode_mutex.test():
+ self.reactor.pause(self.reactor.monotonic() + 0.100)
+ continue
# Dispatch command
try:
- res = self.gcode.process_batch([lines[-1]])
- if not res:
- self.reactor.pause(self.reactor.monotonic() + 0.100)
- continue
+ self.gcode.run_script(lines[-1])
except self.gcode.error as e:
break
except:
diff --git a/klippy/gcode.py b/klippy/gcode.py
index b740a1e9..15f5c172 100644
--- a/klippy/gcode.py
+++ b/klippy/gcode.py
@@ -277,12 +277,6 @@ class GCodeParser:
if self.fd_handle is None:
self.fd_handle = self.reactor.register_fd(self.fd,
self._process_data)
- def process_batch(self, commands):
- if self.mutex.test():
- return False
- with self.mutex:
- self._process_commands(commands, need_ack=False)
- return True
def run_script_from_command(self, script):
prev_need_ack = self.need_ack
try:
@@ -292,6 +286,8 @@ class GCodeParser:
def run_script(self, script):
with self.mutex:
self._process_commands(script.split('\n'), need_ack=False)
+ def get_mutex(self):
+ return self.mutex
# Response handling
def ack(self, msg=None):
if not self.need_ack or self.is_fileinput: