Beispiel #1
0
 def _send_config(self, prev_crc):
     # Build config commands
     for cb in self._config_callbacks:
         cb()
     self._add_custom()
     self._config_cmds.insert(
         0, "allocate_oids count=%d" % (self._oid_count, ))
     # Resolve pin names
     mcu_type = self._serial.msgparser.get_constant('MCU')
     ppins = self._printer.lookup_object('pins')
     reserved_pins = ppins.get_reserved_pins(self._name)
     pin_resolver = pins.PinResolver(mcu_type, reserved_pins)
     if self._pin_map is not None:
         pin_resolver.update_aliases(self._pin_map)
     for i, cmd in enumerate(self._config_cmds):
         self._config_cmds[i] = pin_resolver.update_command(cmd)
     for i, cmd in enumerate(self._init_cmds):
         self._init_cmds[i] = pin_resolver.update_command(cmd)
     # Calculate config CRC
     config_crc = zlib.crc32('\n'.join(self._config_cmds)) & 0xffffffff
     self.add_config_cmd("finalize_config crc=%d" % (config_crc, ))
     # Transmit config messages (if needed)
     if prev_crc is None:
         logging.info("Sending MCU '%s' printer configuration...",
                      self._name)
         for c in self._config_cmds:
             self._serial.send(c)
     elif config_crc != prev_crc:
         self._check_restart("CRC mismatch")
         raise error("MCU '%s' CRC does not match config" % (self._name, ))
     # Transmit init messages
     for c in self._init_cmds:
         self._serial.send(c)
Beispiel #2
0
 def __init__(self, reactor, serialport, baud, canbus_iface, canbus_nodeid):
     self.serialport = serialport
     self.baud = baud
     self.canbus_iface = canbus_iface
     self.canbus_nodeid = canbus_nodeid
     self.ser = serialhdl.SerialReader(reactor)
     self.reactor = reactor
     self.start_time = reactor.monotonic()
     self.clocksync = clocksync.ClockSync(self.reactor)
     self.fd = sys.stdin.fileno()
     util.set_nonblock(self.fd)
     self.mcu_freq = 0
     self.pins = pins.PinResolver(validate_aliases=False)
     self.data = ""
     reactor.register_fd(self.fd, self.process_kbd)
     reactor.register_callback(self.connect)
     self.local_commands = {
         "PINS": self.command_PINS,
         "SET": self.command_SET,
         "DELAY": self.command_DELAY,
         "FLOOD": self.command_FLOOD,
         "SUPPRESS": self.command_SUPPRESS,
         "STATS": self.command_STATS,
         "LIST": self.command_LIST,
         "HELP": self.command_HELP,
     }
     self.eval_globals = {}
Beispiel #3
0
 def connect(self, eventtime):
     self.output(help_txt)
     self.output("=" * 20 + " attempting to connect " + "=" * 20)
     self.ser.connect()
     self.clocksync.connect(self.ser)
     self.ser.handle_default = self.handle_default
     self.mcu_freq = self.ser.msgparser.get_constant_float('CLOCK_FREQ')
     mcu_type = self.ser.msgparser.get_constant('MCU')
     self.pins = pins.PinResolver(mcu_type, validate_aliases=False)
     self.reactor.unregister_timer(self.connect_timer)
     self.output("=" * 20 + "       connected       " + "=" * 20)
     return self.reactor.NEVER
Beispiel #4
0
 def connect(self, eventtime):
     self.output(help_txt)
     self.output("="*20 + " attempting to connect " + "="*20)
     self.ser.connect()
     msgparser = self.ser.msgparser
     self.output("Loaded %d commands (%s / %s)" % (
         len(msgparser.messages_by_id),
         msgparser.version, msgparser.build_versions))
     self.output("MCU config: %s" % (" ".join(
         ["%s=%s" % (k, v) for k, v in msgparser.config.items()])))
     self.clocksync.connect(self.ser)
     self.ser.handle_default = self.handle_default
     self.ser.register_callback(self.handle_output, '#output')
     self.mcu_freq = msgparser.get_constant_float('CLOCK_FREQ')
     mcu_type = msgparser.get_constant('MCU')
     self.pins = pins.PinResolver(mcu_type, validate_aliases=False)
     self.output("="*20 + "       connected       " + "="*20)
     return self.reactor.NEVER
Beispiel #5
0
    def _build_config(self):
        # Build config commands
        for co in self._config_objects:
            co.build_config()
        self._add_custom()
        self._config_cmds.insert(0, "allocate_oids count=%d" % (
            self._oid_count,))

        # Resolve pin names
        mcu_type = self._serial.msgparser.get_constant('MCU')
        pin_resolver = pins.PinResolver(mcu_type)
        if self._pin_map is not None:
            pin_resolver.update_aliases(self._pin_map)
        for i, cmd in enumerate(self._config_cmds):
            self._config_cmds[i] = pin_resolver.update_command(cmd)
        for i, cmd in enumerate(self._init_cmds):
            self._init_cmds[i] = pin_resolver.update_command(cmd)

        # Calculate config CRC
        self._config_crc = zlib.crc32('\n'.join(self._config_cmds)) & 0xffffffff
        self.add_config_cmd("finalize_config crc=%d" % (self._config_crc,))