code: def _serial_poller(self):
          while True:
              _next = dict(self._poller.poll(POLLING_FREQUENCY_MS))
              if self._halt_read_file.fileno() in _next:
                  log.debug("Poller [{}]: halt".format(hash(self)))
                  self._halt_read_file.read()
                  break
              elif self._connection.fileno() in _next:
                  log.debug("Poller [{}]: interrupt".format(hash(self)))
                  res = self._connection.read_until(SERIAL_ACK)
                  self._interrupt_callback(res)
              elif self._send_read_file.fileno() in _next:
                  self._send_read_file.read(1)
                  command, callback = self._command_queue.get()
                  log.debug("Poller [{}]: send {}".format(hash(self), command))
                  res = self._send_command(command)
                  callback(res)
              else:
                  log.debug("Poller [{}]: updating temp".format(hash(self)))
                  res = self._send_command(GCODES['GET_PLATE_TEMP'])
                  self._status_callback(res)
          log.info("Exiting TC poller loop [{}]".format(hash(self)))