MCPcopy Create free account
hub / github.com/bitcraze/crazyflie-lib-python / SyncCrazyflie

Class SyncCrazyflie

cflib/crazyflie/syncCrazyflie.py:37–125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35
36
37class SyncCrazyflie:
38
39 def __init__(self, link_uri, cf=None):
40 """ Create a synchronous Crazyflie instance with the specified
41 link_uri """
42
43 if cf:
44 self.cf = cf
45 else:
46 self.cf = Crazyflie()
47
48 self._link_uri = link_uri
49 self._connect_event = None
50 self._disconnect_event = None
51 self._is_link_open = False
52 self._error_message = None
53
54 def open_link(self):
55 if (self.is_link_open()):
56 raise Exception('Link already open')
57
58 self._add_callbacks()
59
60 print('Connecting to %s' % self._link_uri)
61
62 self._connect_event = Event()
63 self.cf.open_link(self._link_uri)
64 self._connect_event.wait()
65 self._connect_event = None
66
67 if not self._is_link_open:
68 self._remove_callbacks()
69 raise Exception(self._error_message)
70
71 def __enter__(self):
72 self.open_link()
73 return self
74
75 def close_link(self):
76 if (self.is_link_open()):
77 self._disconnect_event = Event()
78 self.cf.close_link()
79 self._disconnect_event.wait()
80 self._disconnect_event = None
81
82 def __exit__(self, exc_type, exc_val, exc_tb):
83 self.close_link()
84
85 def is_link_open(self):
86 return self._is_link_open
87
88 def _connected(self, link_uri):
89 """ This callback is called form the Crazyflie API when a Crazyflie
90 has been connected and the TOCs have been downloaded."""
91 print('Connected to %s' % link_uri)
92 self._is_link_open = True
93 if self._connect_event:
94 self._connect_event.set()

Calls

no outgoing calls