Resolve nRF52 carrier bootloader links and explain audited coverage gaps
This commit is contained in:
1 parent
bf04fbb2e8
commit
ddcc1de467
6 files changed
+224
-6
No files matched your search
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"familyTag": "v1.17.1.7-halo-keymind-cascade-dev-2d03e098",
|
||||
"hardware": [
|
||||
"GAT562_30S_Mesh_Kit",
|
||||
"GAT562_Mesh_EVB_Pro",
|
||||
"GAT562_Mesh_Tracker_Pro",
|
||||
"GAT562_Mesh_Watch13",
|
||||
"Heltec_mesh_solar",
|
||||
"Heltec_t096",
|
||||
"Heltec_t1",
|
||||
"Heltec_t114",
|
||||
"Heltec_t114_without_display",
|
||||
"Heltec_tower_v2",
|
||||
"Heltec_tower_v2_sdcard",
|
||||
"KeepteenLT1",
|
||||
"LilyGo_T-Echo",
|
||||
"LilyGo_T-Echo-Lite",
|
||||
"LilyGo_T-Echo-Lite_non_shell",
|
||||
"LilyGo_T-Echo_Card",
|
||||
"LilyGo_T_Impulse_Plus",
|
||||
"MeshTracker_X1",
|
||||
"Mesh_pocket",
|
||||
"Meshtiny",
|
||||
"Minewsemi_me25ls01",
|
||||
"Nano_G2_Ultra",
|
||||
"ProMicro",
|
||||
"R1Neo",
|
||||
"RAK_3401",
|
||||
"RAK_4631",
|
||||
"RAK_WisMesh_Tag",
|
||||
"SenseCap_Solar",
|
||||
"ThinkNode_M1",
|
||||
"ThinkNode_M3",
|
||||
"ThinkNode_M4",
|
||||
"ThinkNode_M6",
|
||||
"ThinkNode_M8",
|
||||
"WioTrackerL1",
|
||||
"WioTrackerL1-1W",
|
||||
"WioTrackerL1Eink",
|
||||
"Xiao_nrf52",
|
||||
"ikoka_handheld_nrf_e22_30dbm",
|
||||
"ikoka_handheld_nrf_e22_30dbm_096",
|
||||
"ikoka_nano_nrf_22dbm",
|
||||
"ikoka_nano_nrf_30dbm",
|
||||
"ikoka_nano_nrf_33dbm",
|
||||
"ikoka_stick_nrf_22dbm",
|
||||
"ikoka_stick_nrf_30dbm",
|
||||
"ikoka_stick_nrf_33dbm",
|
||||
"muzi_base_duo",
|
||||
"muzi_base_duo_superIO",
|
||||
"muzi_base_uno",
|
||||
"muzi_base_uno_superIO",
|
||||
"solarxiao_30S",
|
||||
"solarxiao_33S",
|
||||
"t1000e",
|
||||
"wio_wm1110"
|
||||
]
|
||||
}
|
||||
@@ -20,6 +20,29 @@ assert.strictEqual(picker.bootloaderForHardware(bootloaderCatalog, "Heltec_tower
|
||||
assert.strictEqual(picker.bootloaderForHardware(bootloaderCatalog, "RAK_3401", "nrf52").storage, "adaptive");
|
||||
assert.strictEqual(picker.bootloaderForHardware(bootloaderCatalog, "RAK_4631", "nrf52").id, "wiscore_rak4631_auto");
|
||||
assert.strictEqual(picker.bootloaderForHardware(bootloaderCatalog, "ThinkNode_M8", "nrf52"), null);
|
||||
const nrf52Hardware = require("./fixtures/firmware_picker_nrf52_1_17_1_7.json").hardware;
|
||||
assert.strictEqual(nrf52Hardware.length, 53);
|
||||
let mappedNrf52 = 0;
|
||||
for (const hardware of nrf52Hardware) {
|
||||
const download = picker.bootloaderForHardware(bootloaderCatalog, hardware, "nrf52");
|
||||
const unavailable = picker.unavailableBootloaderForHardware(bootloaderCatalog, hardware, "nrf52");
|
||||
assert.strictEqual(Number(!!download) + Number(!!unavailable), 1, hardware + " needs an explicit coverage decision");
|
||||
if (download) mappedNrf52++;
|
||||
else {
|
||||
assert(unavailable.reason.length > 20);
|
||||
assert.strictEqual(unavailable.files, undefined);
|
||||
}
|
||||
assert.strictEqual(picker.unavailableBootloaderForHardware(bootloaderCatalog, hardware, "esp32"), null);
|
||||
}
|
||||
assert.strictEqual(mappedNrf52, 39);
|
||||
for (const hardware of nrf52Hardware.filter(h => /^(ikoka_|solarxiao_)/.test(h))) {
|
||||
assert.strictEqual(picker.bootloaderForHardware(bootloaderCatalog, hardware, "nrf52").id, "xiao_nrf52840_ble");
|
||||
}
|
||||
for (const hardware of ["WioTrackerL1-1W", "WioTrackerL1Eink"]) {
|
||||
assert.strictEqual(picker.bootloaderForHardware(bootloaderCatalog, hardware, "nrf52").id, "wio_tracker_l1");
|
||||
}
|
||||
assert(picker.unavailableBootloaderForHardware(bootloaderCatalog, "GAT562_Mesh_Watch13", "nrf52").reason.includes("vibration motor"));
|
||||
assert(picker.unavailableBootloaderForHardware(bootloaderCatalog, "wio_wm1110", "nrf52").reason.includes("does not make it XIAO"));
|
||||
const nextBootloaderTag = "v0.11.0-OTAFIX2.4.11";
|
||||
const nextBootloaderRelease = {
|
||||
tag_name: nextBootloaderTag, draft: false, prerelease: false,
|
||||
@@ -44,6 +67,9 @@ assert.strictEqual(picker.bootloaderForHardware(picker.buildBootloaderCatalog(bo
|
||||
const ambiguousMapping = structuredClone(bootloaderManifest);
|
||||
ambiguousMapping.profiles[1].meshcoreHardware.push(ambiguousMapping.profiles[0].meshcoreHardware[0]);
|
||||
assert.throws(() => picker.buildBootloaderCatalog(ambiguousMapping), /Ambiguous bootloader hardware/);
|
||||
const shadowedMapping = structuredClone(bootloaderManifest);
|
||||
shadowedMapping.unavailableProfiles[0].meshcoreHardware.push("ikoka_stick_nrf_33dbm");
|
||||
assert.throws(() => picker.buildBootloaderCatalog(shadowedMapping), /Ambiguous bootloader hardware/);
|
||||
assert.throws(() => picker.buildBootloaderCatalog(bootloaderManifest, Object.assign({}, nextBootloaderRelease, {prerelease: true})), /stable OTAFIX/);
|
||||
console.log("exact bootloader downloads, storage variants, chip gating, latest version and unsafe catalog rejection passed");
|
||||
|
||||
|
||||
Reference in new issue
Block a user