Fixed a disconnect but, and unhoming on failed probe
This commit is contained in:
@@ -136,7 +136,7 @@ class Mach(Comm):
|
||||
def process_log(self, log):
|
||||
# Detect when a probe has failed, and reset the planner
|
||||
if log['msg'] == 'Switch not found':
|
||||
self.planner.reset(False)
|
||||
self.planner.reset(stop = False, resetState = False)
|
||||
|
||||
|
||||
def _update(self, update):
|
||||
@@ -152,7 +152,7 @@ class Mach(Comm):
|
||||
|
||||
# Handle EStop
|
||||
if state_changed and state == 'ESTOPPED':
|
||||
self.planner.reset(False)
|
||||
self.planner.reset(stop = False)
|
||||
|
||||
# Exit cycle if state changed to READY
|
||||
if (state_changed and self._get_cycle() != 'idle' and
|
||||
@@ -201,9 +201,6 @@ class Mach(Comm):
|
||||
self.unpausing = True
|
||||
|
||||
|
||||
def _reset(self): self.planner.reset()
|
||||
|
||||
|
||||
def _i2c_block(self, block):
|
||||
super().i2c_command(block[0], block = block[1:])
|
||||
|
||||
@@ -218,12 +215,13 @@ class Mach(Comm):
|
||||
|
||||
|
||||
@overrides(Comm)
|
||||
def comm_error(self): self._reset()
|
||||
def comm_error(self):
|
||||
self.planner.reset()
|
||||
|
||||
|
||||
@overrides(Comm)
|
||||
def connect(self):
|
||||
self._reset()
|
||||
self.planner.reset()
|
||||
super().connect()
|
||||
|
||||
|
||||
@@ -246,14 +244,17 @@ class Mach(Comm):
|
||||
|
||||
|
||||
def mdi(self, cmd, with_limits = True):
|
||||
if not len(cmd): return
|
||||
if cmd[0] == '$': self._query_var(cmd)
|
||||
elif cmd[0] == '\\': super().queue_command(cmd[1:])
|
||||
else:
|
||||
self._begin_cycle('mdi')
|
||||
self.planner.mdi(cmd, with_limits)
|
||||
super().resume()
|
||||
|
||||
try:
|
||||
if not len(cmd): return
|
||||
if cmd[0] == '$': self._query_var(cmd)
|
||||
elif cmd[0] == '\\': super().queue_command(cmd[1:])
|
||||
else:
|
||||
self._begin_cycle('mdi')
|
||||
self.planner.mdi(cmd, with_limits)
|
||||
super().resume()
|
||||
except BaseException as err:
|
||||
self.mlog.info("Exception during MDI: %s" % err)
|
||||
pass
|
||||
|
||||
def set(self, code, value):
|
||||
super().queue_command('${}={}'.format(code, value))
|
||||
@@ -312,7 +313,7 @@ class Mach(Comm):
|
||||
|
||||
def clear(self):
|
||||
if self._is_estopped():
|
||||
self._reset()
|
||||
self.planner.reset()
|
||||
super().clear()
|
||||
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ class Planner():
|
||||
|
||||
ctrl.state.add_listener(self._update)
|
||||
|
||||
self.reset(False)
|
||||
self.reset(stop = False)
|
||||
self._report_time()
|
||||
|
||||
|
||||
@@ -324,8 +324,11 @@ class Planner():
|
||||
self.planner.set_logger(None)
|
||||
|
||||
|
||||
def reset(self, stop = True):
|
||||
if stop: self.ctrl.mach.stop()
|
||||
def reset(self, *args, **kwargs):
|
||||
stop = kwargs.get('stop', True)
|
||||
if stop:
|
||||
self.ctrl.mach.stop()
|
||||
|
||||
self.planner = gplan.Planner()
|
||||
self.planner.set_resolver(self._get_var_cb)
|
||||
# TODO logger is global and will not work correctly in demo mode
|
||||
@@ -333,7 +336,10 @@ class Planner():
|
||||
self._position_dirty = True
|
||||
self.cmdq.clear()
|
||||
self.reset_times()
|
||||
self.ctrl.state.reset()
|
||||
|
||||
resetState = kwargs.get('resetState', True)
|
||||
if resetState:
|
||||
self.ctrl.state.reset()
|
||||
|
||||
|
||||
def mdi(self, cmd, with_limits = True):
|
||||
|
||||
@@ -441,7 +441,8 @@ class ClientConnection(object):
|
||||
self.app.closed(self.ctrl)
|
||||
|
||||
|
||||
def on_message(self, data): self.ctrl.mach.mdi(data)
|
||||
def on_message(self, data):
|
||||
self.ctrl.mach.mdi(data)
|
||||
|
||||
|
||||
# Used by CAMotics
|
||||
@@ -451,8 +452,11 @@ class WSConnection(ClientConnection, tornado.websocket.WebSocketHandler):
|
||||
tornado.websocket.WebSocketHandler.__init__(
|
||||
self, app, request, **kwargs)
|
||||
|
||||
def send(self, msg): self.write_message(msg)
|
||||
def open(self): self.on_open()
|
||||
def send(self, msg):
|
||||
self.write_message(msg)
|
||||
|
||||
def open(self):
|
||||
self.on_open()
|
||||
|
||||
|
||||
# Used by Web frontend
|
||||
|
||||
Reference in New Issue
Block a user