#!/usr/bin/python3 # Adds PlatformIO post-processing to convert hex files to uf2 files import os Import("env") firmware_hex = "${BUILD_DIR}/${PROGNAME}.hex" uf2_file = os.environ.get("UF2_FILE_PATH", "${BUILD_DIR}/${PROGNAME}.uf2") def create_uf2_action(source, target, env): uf2_cmd = " ".join( [ '"$PYTHONEXE"', '"$PROJECT_DIR/bin/uf2conv/uf2conv.py"', '-f', '0xADA52840', '-c', firmware_hex, '-o', uf2_file, ] ) env.Execute(uf2_cmd) env.AddCustomTarget( name="create_uf2", dependencies=firmware_hex, actions=create_uf2_action, title="Create UF2 file", description="Use uf2conv to convert hex binary into uf2", always_build=True, ) # Debug-probe upload defaults (for example WM1110's J-Link) must not omit the # application DFU ZIP from releases. Depend on the HEX builder so all its # post-actions, including EndF, finish before the DFU package is generated. # This does not change the board's selected upload protocol. if env.subst("$UPLOAD_PROTOCOL") != "nrfutil": dfu_package = env.PackageDfu("$BUILD_DIR/${PROGNAME}", firmware_hex) env.Alias("buildprog", dfu_package)