def checker(self, data=None): if data is not None: logging.info('[hmi] received <- %s' % repr(data)) try: msg = Protocol(data.decode()) except ProtocolError as e: logging.error('[hmi] error parsing msg %s' % repr(data)) self.reply_protocol_error(e.error_code()) else: if msg.is_resp(): try: original_msg, callback, datatype = self.queue.pop(0) except IndexError: # something is wrong / not synced!! logging.error("[hmi] NOT SYNCED") else: if callback is not None: logging.info("[hmi] calling callback for %s" % original_msg) callback(msg.process_resp(datatype)) self.process_queue() else: def _callback(resp, resp_args=None): if resp_args is None: self.send("resp %d" % (0 if resp else -1)) else: self.send("resp %d %s" % (0 if resp else -1, resp_args)) msg.run_cmd(_callback) try: self.sp.read_until(b'\0', self.checker) except serial.SerialException as e: logging.error("[hmi] error while reading %s" % e)
def checker(self, data=None): if data is not None: logging.info('[hmi] received <- %s' % repr(data)) try: msg = Protocol(data.decode("utf-8", errors="ignore")) except ProtocolError as e: logging.error('[hmi] error parsing msg %s' % repr(data)) self.reply_protocol_error(e.error_code()) else: if msg.is_resp(): try: original_msg, callback, datatype = self.queue.pop(0) except IndexError: # something is wrong / not synced!! logging.error("[hmi] NOT SYNCED") else: if callback is not None: logging.info("[hmi] calling callback for %s" % original_msg) callback(msg.process_resp(datatype)) self.process_queue() else: def _callback(resp, resp_args=None): if resp_args is None: self.send("resp %d" % (0 if resp else -1)) else: self.send("resp %d %s" % (0 if resp else -1, resp_args)) msg.run_cmd(_callback) try: self.sp.read_until(b'\0', self.checker) except serial.SerialException as e: logging.error("[hmi] error while reading %s" % e)
def checker(self, data=None): ioloop = IOLoop.instance() if data is not None and data != b'\0': self.last_write_time = 0 logging.debug('[hmi] received <- %s', data) try: msg = Protocol(data.decode("utf-8", errors="ignore")) except ProtocolError as e: logging.error('[hmi] error parsing msg %s', data) logging.error('[hmi] error code %s', e.error_code()) self.reply_protocol_error(e.error_code()) else: # reset timeout checks when a message is received self.need_flush = 0 if self.flush_io is not None: ioloop.remove_timeout(self.flush_io) self.flush_io = None if msg.is_resp(): try: original_msg, callback, datatype = self.queue.pop(0) logging.debug("[hmi] popped from queue: %s", original_msg) except IndexError: # something is wrong / not synced!! logging.error("[hmi] NOT SYNCED") else: if callback is not None: logging.debug("[hmi] calling callback for %s", original_msg) callback(msg.process_resp(datatype)) self.process_queue() else: def _callback(resp, resp_args=None): resp = 0 if resp else -1 if resp_args is None: self.send_reply("%s %d" % (CMD_RESPONSE, resp)) logging.debug('[hmi] sent "resp %s"', resp) else: self.send_reply("%s %d %s" % (CMD_RESPONSE, resp, resp_args)) logging.debug('[hmi] sent "resp %s %s"', resp, resp_args) self.handling_response = False if self.queue_idle: self.process_queue() self.handling_response = True msg.run_cmd(_callback) if self.need_flush != 0: if self.flush_io is not None: ioloop.remove_timeout(self.flush_io) self.flush_io = ioloop.call_later(self.timeout/2, self.flush) try: self.sp.read_until(b'\0', self.checker) except serial.SerialException as e: logging.error("[hmi] error while reading %s", e)
def checker(self, data=None): if data is not None: self.last_write_time = 0 logging.debug('[hmi] received <- %s', data) try: msg = Protocol(data.decode("utf-8", errors="ignore")) except ProtocolError as e: logging.error('[hmi] error parsing msg %s', data) logging.error('[hmi] error code %s', e.error_code()) self.reply_protocol_error(e.error_code()) else: if msg.is_resp(): try: original_msg, callback, datatype = self.queue.pop(0) logging.debug("[hmi] popped from queue: %s", original_msg) except IndexError: # something is wrong / not synced!! logging.error("[hmi] NOT SYNCED") else: if callback is not None: logging.debug("[hmi] calling callback for %s", original_msg) callback(msg.process_resp(datatype)) self.process_queue() else: def _callback(resp, resp_args=None): resp = 0 if resp else -1 if resp_args is None: self.send("resp %d" % resp, None) logging.debug('[hmi] sent "resp %s"', resp) else: self.send("resp %d %s" % (resp, resp_args), None) logging.debug('[hmi] sent "resp %s %s"', resp, resp_args) msg.run_cmd(_callback) if self.need_flush != 0: if self.flush_io is not None: self.ioloop.remove_timeout(self.flush_io) self.flush_io = self.ioloop.call_later(2, self.flush) try: self.sp.read_until(b'\0', self.checker) except serial.SerialException as e: logging.error("[hmi] error while reading %s", e)