diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2021-02-07 17:56:39 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2021-03-13 11:29:41 -0500 |
commit | 041692828c66cd291435020f240b243c862177bf (patch) | |
tree | 3207ed9d6e5a15ff07be924cec24da9d5acf2705 /klippy/mcu.py | |
parent | babde17c4c804e0a0903481a8f05d713eeabdc3e (diff) | |
download | kutter-041692828c66cd291435020f240b243c862177bf.tar.gz kutter-041692828c66cd291435020f240b243c862177bf.tar.xz kutter-041692828c66cd291435020f240b243c862177bf.zip |
mcu: Add support for connecting to devices on a CAN bus
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/mcu.py')
-rw-r--r-- | klippy/mcu.py | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/klippy/mcu.py b/klippy/mcu.py index 93e71572..ec2cce7a 100644 --- a/klippy/mcu.py +++ b/klippy/mcu.py @@ -415,12 +415,20 @@ class MCU: if self._name.startswith('mcu '): self._name = self._name[4:] # Serial port - self._serialport = config.get('serial') - self._baud = 0 - if not (self._serialport.startswith("/dev/rpmsg_") - or self._serialport.startswith("/tmp/klipper_host_")): - self._baud = config.getint('baud', 250000, minval=2400) self._serial = serialhdl.SerialReader(self._reactor) + self._baud = 0 + self._canbus_iface = None + canbus_uuid = config.get('canbus_uuid', None) + if canbus_uuid is not None: + self._serialport = canbus_uuid + self._canbus_iface = config.get('canbus_interface', 'can0') + cbid = self._printer.load_object(config, 'canbus_ids') + cbid.add_uuid(config, canbus_uuid, self._canbus_iface) + else: + self._serialport = config.get('serial') + if not (self._serialport.startswith("/dev/rpmsg_") + or self._serialport.startswith("/tmp/klipper_host_")): + self._baud = config.getint('baud', 250000, minval=2400) # Restarts restart_methods = [None, 'arduino', 'cheetah', 'command', 'rpi_usb'] self._restart_method = 'command' @@ -617,7 +625,12 @@ class MCU: # Try toggling usb power self._check_restart("enable power") try: - if self._baud: + if self._canbus_iface is not None: + cbid = self._printer.lookup_object('canbus_ids') + nodeid = cbid.get_nodeid(self._serialport) + self._serial.connect_canbus(self._serialport, nodeid, + self._canbus_iface) + elif self._baud: # Cheetah boards require RTS to be deasserted # else a reset will trigger the built-in bootloader. rts = (resmeth != "cheetah") |