Enforce LinuxCNC WASM authority for XYZAC frontend
This commit is contained in:
@@ -62,6 +62,10 @@ for (const [button, type] of [["Identity", 0], ["TCP: XYZAC", 1], ["User K", 2],
|
||||
}
|
||||
record("view", "Clear plot", "VISUAL_CLEAR", "axis.py:clear_live_plot / glcanon.py", machine.send("VISUAL_CLEAR"));
|
||||
record("override", "Feed 50%", "SET_OVERRIDE", "axis.py:set_feedrate -> c.feedrate", machine.send("SET_OVERRIDE", { feed: 0.5 }));
|
||||
record("override", "Jog Speed 50%", "SET_JOG_SCALE", "axis.py:update_jog_slider_vel -> LinuxCNC TP jog scale", machine.send("SET_JOG_SCALE", { percent: 50 }));
|
||||
assert.equal(machine.send("SNAPSHOT_REQUEST").payload.panel_snapshot.motion.jog_scale, 0.5);
|
||||
record("override", "Max Velocity 50%", "SET_MAX_VELOCITY", "axis.py:update_maxvel_slider_vel -> tpSetVlimit", machine.send("SET_MAX_VELOCITY", { percent: 50 }));
|
||||
assert.equal(machine.send("SNAPSHOT_REQUEST").payload.panel_snapshot.motion.velocity_scale, 0.5);
|
||||
const invalidOverride = machine.send("SET_OVERRIDE", { feed: 2.01 });
|
||||
record("override", "Feed 201% rejected", "SET_OVERRIDE", "axis.py:set_feedrate range", invalidOverride, "error");
|
||||
assert.equal(invalidOverride.payload.message_key, "motion_override_range");
|
||||
@@ -114,6 +118,8 @@ rows.push({ group: "spindle", button: "Speed +", command: "SPINDLE_COMMAND(delta
|
||||
assert.equal(io.send("SPINDLE_COMMAND", { spindle: 0, delta: -100 }).payload.device_io.state.spindles[0].command_rpm, 600);
|
||||
rows.push({ group: "spindle", button: "Speed -", command: "SPINDLE_COMMAND(delta)", source: "axis.py:spindle_decrease -> EMCMOT_SPINDLE_DECREASE", result: "verified", reason: null });
|
||||
record("spindle", "Stop", "SPINDLE_COMMAND", "axis.py:spindle -> SPINDLE_OFF", io.send("SPINDLE_COMMAND", { spindle: 0, rpm: 0, enabled: false }));
|
||||
record("spindle", "Override 50%", "SET_SPINDLE_OVERRIDE", "axis.py:set_spindlerate -> EMC_TRAJ_SET_SPINDLE_SCALE", io.send("SET_SPINDLE_OVERRIDE", { spindle: 0, scale: 0.5 }));
|
||||
assert.equal(io.send("SNAPSHOT_REQUEST").payload.panel_snapshot.io.state.spindles[0].override, 0.5);
|
||||
record("spindle", "Brake engage", "SPINDLE_BRAKE", "axis.py:brake -> EMC_SPINDLE_BRAKE_ENGAGE", io.send("SPINDLE_BRAKE", { spindle: 0, engaged: true }));
|
||||
record("spindle", "Brake release", "SPINDLE_BRAKE", "axis.py:brake -> EMC_SPINDLE_BRAKE_RELEASE", io.send("SPINDLE_BRAKE", { spindle: 0, engaged: false }));
|
||||
record("coolant", "Mist/Flood on", "COOLANT_COMMAND", "axis.py:mist_toggle/flood_toggle", io.send("COOLANT_COMMAND", { mist: true, flood: true }));
|
||||
@@ -129,10 +135,7 @@ record("machine", "Release E-stop", "ESTOP", "axis.py:ESTOP reset", io.send("EST
|
||||
record("machine", "Power after ESTOP", "POWER", "axis.py:commands.power", io.send("POWER", { active: true }));
|
||||
|
||||
const unsupported = [
|
||||
{ button: "Home Axis", reason: "WASM home state exposes aggregate homed only; no per-joint home mask" },
|
||||
{ button: "Override Limits", reason: "selected XYZAC WASM configuration owns limits; no LinuxCNC override_limits command ABI" },
|
||||
{ button: "Jog Speed slider", reason: "UI state is not connected to a WASM jog-speed command" },
|
||||
{ button: "Max Velocity slider", reason: "UI state is not connected to a WASM max-velocity command" },
|
||||
{ button: "Block delete / Optional pause", reason: "UI toggle is not forwarded to sim_program interpreter state" },
|
||||
{ button: "Tool Touch Off", reason: "UI emits fixed G43 and does not expose LinuxCNC G10 prompt/value flow" },
|
||||
{ button: "Edit tool data / Quit", reason: "desktop process boundary; browser intentionally host-excluded" },
|
||||
|
||||
Reference in New Issue
Block a user