Callback for when new memory data has been fetched
(self, mem, addr, data)
| 59 | self.valid = False |
| 60 | |
| 61 | def new_data(self, mem, addr, data): |
| 62 | """Callback for when new memory data has been fetched""" |
| 63 | done = False |
| 64 | if mem.id == self.id: |
| 65 | if addr == LocoMemory.MEM_LOCO_INFO: |
| 66 | self.nr_of_anchors = data[0] |
| 67 | if self.nr_of_anchors == 0: |
| 68 | done = True |
| 69 | else: |
| 70 | self.anchor_data = \ |
| 71 | [AnchorData() for _ in range(self.nr_of_anchors)] |
| 72 | self._request_page(0) |
| 73 | else: |
| 74 | page = int((addr - LocoMemory.MEM_LOCO_ANCHOR_BASE) / |
| 75 | LocoMemory.MEM_LOCO_ANCHOR_PAGE_SIZE) |
| 76 | |
| 77 | self.anchor_data[page].set_from_mem_data(data) |
| 78 | |
| 79 | next_page = page + 1 |
| 80 | if next_page < self.nr_of_anchors: |
| 81 | self._request_page(next_page) |
| 82 | else: |
| 83 | done = True |
| 84 | |
| 85 | if done: |
| 86 | self.valid = True |
| 87 | if self._update_finished_cb: |
| 88 | self._update_finished_cb(self) |
| 89 | self._update_finished_cb = None |
| 90 | |
| 91 | def update(self, update_finished_cb): |
| 92 | """Request an update of the memory content""" |
nothing calls this directly
no test coverage detected