Enforce LinuxCNC WASM XYZAC command authority

This commit is contained in:
2026-08-28 13:04:47 +08:00
parent 1a7995fa9b
commit 78d884bc67
43 changed files with 567 additions and 186 deletions

View File

@@ -21,12 +21,17 @@ const initial = loaded.payload.panel_snapshot;
assert.equal(initial.xyzac.coordinates, "XYZAC");
assert.equal(initial.xyzac.joint_count, 5);
assert.equal(initial.gates.run.enabled, false);
assert.equal(initial.gates.run.reason, "axis_taskfile_missing");
assert.equal(initial.gates.runLine.reason, "axis_taskfile_missing");
assert.equal(initial.gates.switchkinsIdentity.enabled, true);
assert.equal(initial.gates.switchkinsXyzac.enabled, true);
assert.equal(initial.gates.switchkinsUserk.enabled, true);
assert.equal(initial.gates.run.reason, "xyzac_machine_off");
assert.equal(initial.gates.runLine.reason, "xyzac_machine_off");
assert.equal(initial.gates.switchkinsIdentity.enabled, false);
assert.equal(initial.gates.switchkinsXyzac.enabled, false);
assert.equal(initial.gates.switchkinsUserk.enabled, false);
assert.equal(initial.gates.vismachClear.visual_only, true);
assert.equal(send("POWER", "power-on", { active: true }).payload.panel_snapshot.axis_state.machine_state, "ON");
const powered = send("SNAPSHOT_REQUEST", "powered-snapshot").payload.panel_snapshot;
assert.equal(powered.gates.switchkinsIdentity.enabled, true);
assert.equal(powered.gates.switchkinsXyzac.enabled, true);
assert.equal(powered.gates.switchkinsUserk.enabled, true);
const noFile = axisGate("runLine", { task: { state: "READY", mode: "MANUAL" }, program: {}, motion: {}, taskfile: false, highlight_line: null });
assert.equal(noFile.enabled, false);
assert.equal(noFile.reason, "axis_taskfile_missing");
@@ -49,8 +54,9 @@ send("PROGRAM_ABORT", "abort");
const estopGates = xyzacGateMatrix({ task: { state: "ESTOP", mode: "MANUAL" }, program: { source_hash: "fnv1a64:file" }, motion: {}, taskfile: true, xyzac: { coordinates: "XYZAC", joint_count: 5, hal_pin_vars: true, switchkins_net: true, finite_offsets: true, userk_capability: true } });
assert.equal(estopGates.switchkinsXyzac.enabled, false);
assert.equal(estopGates.switchkinsXyzac.reason, "xyzac_estop_active");
send("ESTOP", "estop-reset", { active: false });
send("IO_RECOVER", "recover");
send("ESTOP", "estop-on", { active: true });
assert.equal(send("ESTOP", "estop-reset", { active: false }).payload.panel_snapshot.axis_state.machine_state, "ESTOP_RESET");
send("POWER", "power-on-again", { active: true });
const recovered = send("SNAPSHOT_REQUEST", "recovered-snapshot");
assert.equal(typeof recovered.payload.panel_snapshot.state_hash, "string");
assert.equal(recovered.payload.panel_snapshot.gates.vismachClear.visual_only, true);