code: def new_data(self, mem, addr, data):
          
          if mem.id == self.id:
              if addr == 0:
                  if self._parse_and_check_header(data[0:8]):
                      if self._parse_and_check_elements(data[9:11]):
                          self.valid = True
                          self._update_finished_cb(self)
                          self._update_finished_cb = None
                      else:
                          # We need to fetch the elements, find out the length
                          (elem_ver, elem_len) = struct.unpack('BB', data[8:10])
                          self.mem_handler.read(self, 8, elem_len + 3)
                  else:
                      # Call the update if the CRC check of the header fails,
                      # we're done here
                      if self._update_finished_cb:
                          self._update_finished_cb(self)
                          self._update_finished_cb = None
              elif addr == 0x08:
                  if self._parse_and_check_elements(data):
                      self.valid = True
                  if self._update_finished_cb:
                      self._update_finished_cb(self)
                      self._update_finished_cb = None
docs: Callback for when new memory data has been fetched