code: def manifest_download(self):
          '''download manifest files'''
          if self.downloaders_lock.acquire(False):
              if len(self.downloaders):
                  # there already exist downloader threads
                  self.downloaders_lock.release()
                  return
  
              for url in ['http://firmware.ardupilot.org/manifest.json']:
                  filename = self.make_safe_filename_from_url(url)
                  path = mp_util.dot_mavproxy("manifest-%s" % filename)
                  self.downloaders[url] = threading.Thread(target=self.download_url, args=(url, path))
                  self.downloaders[url].start()
              self.downloaders_lock.release()
          else:
              print("fw: Failed to acquire download lock"f manifest_download(self):
          '''download manifest files'''
          if self.downloaders_lock.acquire(False):
              if len(self.downloaders):
                  # there already exist downloader threads
                  self.downloaders_lock.release()
                  return
  
              for url in ['http://firmware.ardupilot.org/manifest.json']:
                  filename = self.make_safe_filename_from_url(url)
                  path = mp_util.dot_mavproxy("manifest-%s" % filename)
                  self.downloaders[url] = threading.Thread(target=self.download_url, args=(url, path))
                  self.downloaders[url].start()
              self.downloaders_lock.release()
          else:
              print("fw: Failed to acquire download lock")
docs: download manifest files