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

Class Memory

cflib/crazyflie/mem/__init__.py:210–552  ·  view source on GitHub ↗

Access memories on the Crazyflie

Source from the content-addressed store, hash-verified

208
209
210class Memory():
211 """Access memories on the Crazyflie"""
212
213 # These codes can be decoded using os.stderror, but
214 # some of the text messages will look very strange
215 # in the UI, so they are redefined here
216 _err_codes = {
217 errno.ENOMEM: 'No more memory available',
218 errno.ENOEXEC: 'Command not found',
219 errno.ENOENT: 'No such block id',
220 errno.E2BIG: 'Block too large',
221 errno.EEXIST: 'Block already exists'
222 }
223
224 def __init__(self, crazyflie=None):
225 """Instantiate class and connect callbacks"""
226 self.cf = crazyflie
227 self.cf.add_port_callback(CRTPPort.MEM, self._new_packet_cb)
228 self.cf.disconnected.add_callback(self._disconnected)
229 self._write_requests_lock = Lock()
230
231 self._clear_state()
232
233 def _clear_state(self):
234 self.mems = []
235 # Called when new memories have been added
236 self.mem_added_cb = Caller()
237
238 # Called to signal completion of read or write
239 self.mem_read_cb = Caller()
240 self.mem_read_failed_cb = Caller()
241 self.mem_write_cb = Caller()
242 self.mem_write_failed_cb = Caller()
243
244 self._refresh_callback = None
245 self._fetch_id = 0
246 self.nbr_of_mems = 0
247 self._ow_mem_fetch_index = 0
248 self._elem_data = ()
249 self._read_requests = {}
250 self._write_requests = {}
251 self._ow_mems_left_to_update = []
252 self._getting_count = False
253
254 def _mem_update_done(self, mem):
255 """
256 Callback from each individual memory (only 1-wire) when reading of
257 header/elements are done
258 """
259 if mem.id in self._ow_mems_left_to_update:
260 self._ow_mems_left_to_update.remove(mem.id)
261
262 logger.debug(mem)
263
264 if len(self._ow_mems_left_to_update) == 0:
265 if self._refresh_callback:
266 self._refresh_callback()
267 self._refresh_callback = None

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected