diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2021-03-10 13:55:14 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2021-03-10 17:12:25 -0500 |
commit | 7dd2bf4af38ff48414807dfe44a1a7ff8049178e (patch) | |
tree | d536dfd9e55d4f0247a4fc68e4501ec03671474e /klippy/mcu.py | |
parent | 3ea2e4fc582465242aa1daa5669021465db0467f (diff) | |
download | kutter-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.py | 14 |
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: |