def mavlink_thread(): # Huge try catch in case we see http://bugs.python.org/issue1856 try: while True: # Downtime time.sleep(0.05) # Loop listeners. for fn in self.loop_listeners: fn(self) while True: try: msg = self.out_queue.get_nowait() self.fix_targets(msg) self.master.write(msg) except socket.error as error: if error.errno == ECONNABORTED: errprinter('reestablishing connection after read timeout') if hasattr(self.master, 'reset'): self.master.reset() else: try: self.master.close() except: pass self.master = mavutil.mavlink_connection(self.master.address) continue # If connection reset (closed), stop polling. return except Empty: break except Exception as e: errprinter('mav send error:', e) break while True: try: msg = self.master.recv_msg() except socket.error as error: if error.errno == ECONNABORTED: errprinter('reestablishing connection after send timeout') if hasattr(self.master, 'reset'): self.master.reset() else: try: self.master.close() except: pass self.master = mavutil.mavlink_connection(self.master.address) continue # If connection reset (closed), stop polling. return except Exception as e: # TODO this should be more rigorous. How to avoid # invalid MAVLink prefix '73' # invalid MAVLink prefix '13' # errprinter('mav recv error:', e) msg = None if not msg: break # Message listeners. for fn in self.message_listeners: fn(self, msg) except Exception as e: # http://bugs.python.org/issue1856 if self.exiting: pass else: raise
def mavlink_thread(): # Huge try catch in case we see http://bugs.python.org/issue1856 try: while True: # Downtime time.sleep(0.05) # Loop listeners. for fn in self.loop_listeners: fn(self) while True: try: msg = self.out_queue.get_nowait() self.fix_targets(msg) self.master.write(msg) except socket.error as error: if error.errno == ECONNABORTED: errprinter( 'reestablishing connection after read timeout' ) if hasattr(self.master, 'reset'): self.master.reset() else: try: self.master.close() except: pass self.master = mavutil.mavlink_connection( self.master.address) continue # If connection reset (closed), stop polling. return except Empty: break except Exception as e: errprinter('mav send error:', e) break while True: try: msg = self.master.recv_msg() except socket.error as error: if error.errno == ECONNABORTED: errprinter( 'reestablishing connection after send timeout' ) if hasattr(self.master, 'reset'): self.master.reset() else: try: self.master.close() except: pass self.master = mavutil.mavlink_connection( self.master.address) continue # If connection reset (closed), stop polling. return except Exception as e: # TODO this should be more rigorous. How to avoid # invalid MAVLink prefix '73' # invalid MAVLink prefix '13' # errprinter('mav recv error:', e) msg = None if not msg: break # Message listeners. for fn in self.message_listeners: fn(self, msg) except Exception as e: # http://bugs.python.org/issue1856 if self.exiting: pass else: raise
def read(self): errprinter('writer should not have had a read request') os._exit(43)