From 98fc84fe1a8082de89f398844012031e1f2a0db1 Mon Sep 17 00:00:00 2001 From: George Broughton Date: Wed, 1 Apr 2026 10:24:34 +0100 Subject: [PATCH] Check value of partition flags for ignoring boot --- main.cpp | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index 917c4158..6bf6b362 100644 --- a/main.cpp +++ b/main.cpp @@ -1931,6 +1931,15 @@ bool get_json_int(json value, T& out) { } } +bool get_json_boolean(json value, bool& out) { + if (value.is_boolean()) { + out = value.get(); + return true; + } else { + return false; + } +} + uint32_t bootrom_func_lookup_rp2040(memory_access& access, uint16_t tag) { model_t model = access.get_model(); // we are only used on RP2040 @@ -6564,8 +6573,21 @@ bool partition_create_command::execute(device_map &devices) { if(p.contains("no_reboot_on_uf2_download")) new_p.flags |= PICOBIN_PARTITION_FLAGS_UF2_DOWNLOAD_NO_REBOOT_BITS; if(p.contains("ab_non_bootable_owner_affinity")) new_p.flags |= PICOBIN_PARTITION_FLAGS_UF2_DOWNLOAD_AB_NON_BOOTABLE_OWNER_AFFINITY; - if(p.contains("ignored_during_riscv_boot")) new_p.flags |= PICOBIN_PARTITION_FLAGS_IGNORED_DURING_RISCV_BOOT_BITS; - if(p.contains("ignored_during_arm_boot")) new_p.flags |= PICOBIN_PARTITION_FLAGS_IGNORED_DURING_ARM_BOOT_BITS; + + if(p.contains("ignored_during_riscv_boot")) { + bool ignored_value; + if (get_json_boolean(p["ignored_during_riscv_boot"], ignored_value) && ignored_value) { + new_p.flags |= PICOBIN_PARTITION_FLAGS_IGNORED_DURING_RISCV_BOOT_BITS; + } + } + + if(p.contains("ignored_during_arm_boot")) { + bool ignored_value; + if (get_json_boolean(p["ignored_during_arm_boot"], ignored_value) && ignored_value) { + new_p.flags |= PICOBIN_PARTITION_FLAGS_IGNORED_DURING_ARM_BOOT_BITS; + } + } + pt.partitions.push_back(new_p); }