class SelectNavSocket(EventDispatcher, XlibSelectDevice): def __init__(self): super(SelectNavSocket, self).__init__() self._nav_socket = None def open(self): self._nav_socket = NavDataSocket() pyglet.app.platform_event_loop._select_devices.add(self) def close(self): if not self._nav_socket: return pyglet.app.platform_event_loop._select_devices.remove(self) self._nav_socket.close() self._nav_socket = None def fileno(self): return self._nav_socket.socket.fileno() def poll(self): return False def select(self): self._nav_socket.handle_socket_data() while self._nav_socket.has_more_nav_data(): self.dispatch_event('on_drone_nav_data', self._nav_socket.next_nav_data())
from fedrone.navdata.networking import NavDataSocket import select import pprint a = NavDataSocket() while True: b, c, d = select.select([a.socket], [], []) if a.socket in b: a.handle_socket_data() while a.has_more_nav_data(): f = a.next_nav_data() print f.header pprint.pprint(dict(f.options))
def open(self): self._nav_socket = NavDataSocket() pyglet.app.platform_event_loop._select_devices.add(self)