summaryrefslogtreecommitdiff
path: root/fw
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2025-01-21 21:34:00 +0100
committerxengineering <me@xengineering.eu>2025-01-21 21:34:00 +0100
commit9d5b0440a460ff49de21de90604c58808dd4a6c8 (patch)
treef6dd4f926c20a28dea14e0ae56263186164c4524 /fw
parentd732a84ababe382f066c613c85142b8403c9e423 (diff)
downloadsoundbox-9d5b0440a460ff49de21de90604c58808dd4a6c8.tar
soundbox-9d5b0440a460ff49de21de90604c58808dd4a6c8.tar.zst
soundbox-9d5b0440a460ff49de21de90604c58808dd4a6c8.zip
fw: Add update_espressif_blobs.py
This script does not depend on west and is able to load the Espressif blobs to the Espressif HAL module.
Diffstat (limited to 'fw')
-rwxr-xr-xfw/update_espressif_blobs.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/fw/update_espressif_blobs.py b/fw/update_espressif_blobs.py
new file mode 100755
index 0000000..55c7582
--- /dev/null
+++ b/fw/update_espressif_blobs.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python3
+
+
+import hashlib
+import sys
+import pathlib
+import urllib.request
+
+import yaml
+
+
+SCRIPT = pathlib.Path(__file__)
+FW = SCRIPT.parent
+ESPRESSIF_MODULE = FW / "zephyrproject/modules/hal/espressif"
+MODULE_YAML = ESPRESSIF_MODULE / "zephyr/module.yml"
+BLOBS = ESPRESSIF_MODULE / "zephyr/blobs"
+
+
+def main() -> None:
+ text = MODULE_YAML.read_text()
+ data = yaml.safe_load(text)
+
+ for entry in data["blobs"]:
+ url = entry["url"]
+ checksum = entry["sha256"]
+ path = entry["path"]
+ get_blob(
+ url=url,
+ checksum=checksum,
+ path=path,
+ )
+
+
+def get_blob(url, checksum, path):
+ sys.stdout.write(f"Downloading {path} ...")
+ with urllib.request.urlopen(url) as conn:
+ content = conn.read()
+ sys.stdout.write(" done\n")
+
+ sha256 = hashlib.sha256()
+ sha256.update(content)
+ calculated = sha256.hexdigest()
+ if calculated == checksum:
+ print("Checksum matched.")
+ else:
+ print(f"Checksum mismatch for {path}!")
+ print(f"Expected: {checksum}")
+ print(f"Got: {calculated}")
+
+ target: pathlib.Path = BLOBS / path
+ target.parent.mkdir(exist_ok=True, parents=True)
+ target.write_bytes(content)
+ print(f"Saved to {path}")
+
+
+if __name__ == "__main__":
+ main()