aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/mcu.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2021-03-10 13:55:14 -0500
committerKevin O'Connor <kevin@koconnor.net>2021-03-10 17:12:25 -0500
commit7dd2bf4af38ff48414807dfe44a1a7ff8049178e (patch)
treed536dfd9e55d4f0247a4fc68e4501ec03671474e /klippy/mcu.py
parent3ea2e4fc582465242aa1daa5669021465db0467f (diff)
downloadkutter-7dd2bf4af38ff48414807dfe44a1a7ff8049178e.tar.gz
kutter-7dd2bf4af38ff48414807dfe44a1a7ff8049178e.tar.xz
kutter-7dd2bf4af38ff48414807dfe44a1a7ff8049178e.zip
tmc2130: Verify SPI register writes
The tmc2130 (and tmc5160) will respond back with the value written during the next SPI command. Use this feature to verify that the value written matches the value sent. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/mcu.py')
-rw-r--r--klippy/mcu.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/klippy/mcu.py b/klippy/mcu.py
index 7c6529a2..93e71572 100644
--- a/klippy/mcu.py
+++ b/klippy/mcu.py
@@ -347,7 +347,8 @@ class RetryAsyncCommand:
if params['#sent_time'] >= self.min_query_time:
self.min_query_time = self.reactor.NEVER
self.reactor.async_complete(self.completion, params)
- def get_response(self, cmd, cmd_queue, minclock=0, reqclock=0):
+ def get_response(self, cmds, cmd_queue, minclock=0, reqclock=0):
+ cmd, = cmds
self.serial.raw_send_wait_ack(cmd, minclock, reqclock, cmd_queue)
first_query_time = query_time = self.reactor.monotonic()
while 1:
@@ -378,14 +379,19 @@ class CommandQueryWrapper:
if cmd_queue is None:
cmd_queue = serial.get_default_command_queue()
self._cmd_queue = cmd_queue
- def send(self, data=(), minclock=0, reqclock=0):
- cmd = self._cmd.encode(data)
+ def _do_send(self, cmds, minclock, reqclock):
xh = self._xmit_helper(self._serial, self._response, self._oid)
reqclock = max(minclock, reqclock)
try:
- return xh.get_response(cmd, self._cmd_queue, minclock, reqclock)
+ return xh.get_response(cmds, self._cmd_queue, minclock, reqclock)
except serialhdl.error as e:
raise self._error(str(e))
+ def send(self, data=(), minclock=0, reqclock=0):
+ return self._do_send([self._cmd.encode(data)], minclock, reqclock)
+ def send_with_preface(self, preface_cmd, preface_data=(), data=(),
+ minclock=0, reqclock=0):
+ cmds = [preface_cmd._cmd.encode(preface_data), self._cmd.encode(data)]
+ return self._do_send(cmds, minclock, reqclock)
# Wrapper around command sending
class CommandWrapper: