control: skip redundant aux/home in Home All when W is mapped to A
When the auxcnc axis is integrated as a virtual machine axis via ExternalAxis (synthetic motor 4 enabled), Mach.home(None) already homes the external axis as it iterates xyzabc. The legacy 'home W last' path in home_all() then fired PUT /api/aux/home a second time, causing the A axis to home twice on Home All. Skip the trailing aux/home when state['4me'] is set; keep the fallback for setups where aux is enabled but not integrated as a virtual axis.
This commit is contained in:
@@ -258,6 +258,11 @@ module.exports = {
|
|||||||
// Home every enabled axis (legacy Onefinity "Home All"). Sequence:
|
// Home every enabled axis (legacy Onefinity "Home All"). Sequence:
|
||||||
// 1. Z, X, Y (and A/B/C if enabled) via /api/home on the AVR
|
// 1. Z, X, Y (and A/B/C if enabled) via /api/home on the AVR
|
||||||
// 2. W axis via /api/aux/home on the ESP
|
// 2. W axis via /api/aux/home on the ESP
|
||||||
|
// ONLY when the auxcnc axis is not integrated as a virtual
|
||||||
|
// machine axis. With the gplan W-as-A integration
|
||||||
|
// (synthetic motor 4 enabled), Mach.home() already homes
|
||||||
|
// the external axis as part of the xyzabc pass — calling
|
||||||
|
// aux/home afterwards would home it a second time.
|
||||||
// /api/home returns as soon as the request is queued, not when
|
// /api/home returns as soon as the request is queued, not when
|
||||||
// homing completes, so we have to watch state.cycle:
|
// homing completes, so we have to watch state.cycle:
|
||||||
// - first wait for it to *leave* 'idle' (cycle began),
|
// - first wait for it to *leave* 'idle' (cycle began),
|
||||||
@@ -274,6 +279,11 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
if (!this.w || !this.w.enabled) return;
|
if (!this.w || !this.w.enabled) return;
|
||||||
|
|
||||||
|
// When the synthetic external motor (index 4) is enabled,
|
||||||
|
// the auxcnc axis is mapped onto a real machine axis letter
|
||||||
|
// (e.g. A) and was already homed by /api/home above.
|
||||||
|
if (this.state && this.state["4me"]) return;
|
||||||
|
|
||||||
const wait = (ms) => new Promise(r => setTimeout(r, ms));
|
const wait = (ms) => new Promise(r => setTimeout(r, ms));
|
||||||
const cycleNow = () => (this.state && this.state.cycle) || "idle";
|
const cycleNow = () => (this.state && this.state.cycle) || "idle";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user