Files
linuxcncWebWASM/doc-rtcp/xyzac-native-homing-status-validation.md

2.8 KiB

Native Homing and Status Validation

Date: 2026-09-09. Local URL: http://127.0.0.1:5175/. This records local execution, not deployment or a full LinuxCNC port.

Implementation

  • The selected XYZAC case compiles the pinned homing.c and simple_tp.c.
  • HAL allocation and ideal motor feedback are adapted; the homing state machine is not rewritten in JavaScript.
  • task.state is machine state; interpreter state is task.interpState.
  • motion.traj.mode is FREE/COORD/TELEOP; motion_type is separate.
  • home_state comes from homemod's state underlying joint.N.home-state.
  • The monitor displays task mode/state, interpreter state, motion mode/type and Homing. Per-joint status and history remain in the snapshot; their table and history list were removed from the visible panel at the user's request.
  • Numeric Home Joint replaces the world-axis-to-joint alias. Original control ID manual-home-axis is retained; manual-home-joint-select selects 0..4.
  • Home acceptance is asynchronous. Completion is determined by homemod, not by the coordinated planner queue.

Verified

  • Native C test: ctest --test-dir build-native -R sim_native_homing_test.
  • WASM/Worker: node web/worker/test_native_homing.mjs.
  • All five joints: Jog then native no-search re-home resets joint coordinates while preserving simulated physical motor position and updating motor offset.
  • A test INI with HOME=5 executes the original free_tp final move; intermediate positions are nonzero, homed stays false until completion, coordinated TP queue remains empty.
  • Partial home remains FREE; the native all-homed edge switches to TELEOP.
  • AUTO+PAUSED rejects switching to MANUAL; abort and E-stop cancel homemod without marking interrupted joints homed; subsequent re-home works.
  • Native state save/restore preserves positions and offsets.
  • Existing Step, WAITING/MDI Pause/Resume, rerun, touch-off, source widget gates and Live Plot lifecycle regression tests pass with asynchronous Home setup.
  • Source Tcl oracle: 576 scenarios, 7488 assertions. Control inventory: 83 IDs.
  • Visible Chrome tests: scripts/test_xyzac_home_reset_browser.mjs and scripts/test_xyzac_panel_buttons_browser.mjs with HEADED=1.
  • Desktop/mobile screenshots and canvas pixel checks pass. General browser audit covers 51 buttons with no page errors.
  • React type checking and production build pass.

Screenshots: /tmp/axis-native-home-desktop.png, /tmp/axis-native-home-mobile.png.

Remaining Boundaries

Task/interpreter status still uses the existing WASM adapter. Physical switch, encoder and unlock hardware have not been validated; the selected INI uses zero search/latch velocities. Full Joint/World jogging is not exposed. General recovery retains the existing planner/HAL endpoint differences and large RECOVER envelope stack limitation documented in the source-flow contract.