34 lines
1.6 KiB
Python
34 lines
1.6 KiB
Python
"""Explicit, build-local OTAFIX 2.4.12 bootloader resource hook."""
|
|
Import("env")
|
|
|
|
import os
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
requested = os.environ.get("MESHCORE_NRF52_EMBED_BOOTLOADER")
|
|
legacy = os.environ.get("MESHCORE_NRF52_LEGACY_BOOTLOADER")
|
|
if legacy and not requested:
|
|
raise RuntimeError("legacy bootloader pin requires MESHCORE_NRF52_EMBED_BOOTLOADER=2.4.12")
|
|
if requested:
|
|
if requested != "2.4.12":
|
|
raise RuntimeError("only the pinned OTAFIX 2.4.12 embedded bootloader is supported")
|
|
project = Path(env["PROJECT_DIR"])
|
|
sys.path.insert(0, str(project / "scripts"))
|
|
from nrf52_embedded_bootloader import emit_resource
|
|
board = env.BoardConfig()
|
|
if str(board.get("build.mcu", "")).lower() != "nrf52840":
|
|
raise RuntimeError("embedded OTAFIX bootloader requires an nRF52840")
|
|
generated = Path(env.subst("$BUILD_DIR")) / "bootloader-migration-resource"
|
|
src_filter = env.get("SRC_FILTER")
|
|
if src_filter is None:
|
|
src_filter = env.GetProjectOption("build_src_filter", "")
|
|
metadata = emit_resource(project, env["PIOENV"], generated,
|
|
flags=env.get("BUILD_FLAGS", ()), cppdefines=env.get("CPPDEFINES", ()),
|
|
src_filter=src_filter,
|
|
linker=board.get("build.ldscript", "") or board.get("build.arduino.ldscript", ""),
|
|
legacy_path=legacy)
|
|
env.AppendUnique(CPPDEFINES=[("OTA_BOOTLOADER_MIGRATION", 1)], CPPPATH=[str(generated)])
|
|
env.BuildSources(str(generated / "objects"), str(generated), src_filter=["+<*.cpp>"])
|
|
print(f"Embedded OTAFIX {metadata['release']}: {metadata['profile']}; 40960 bytes; "
|
|
f"SHA256 {metadata['candidate_sha256']}")
|