Align AXIS control flow and fix pause and program rendering

Document source UI gates, explicit native live-plot clearing, and remaining parity boundaries. Fix pause/resume transport continuity, repeated stepping, coordinate previews, and spindle override state. Optimize large program snapshots and rendering, and cover the control flows with native Tcl, WASM, and browser checks.

Validation: 22 native tests and source/browser checks pass. Worker/App regression: 113 of 123 pass; 10 pre-existing failures remain documented with no new failures.
This commit is contained in:
2026-09-08 10:46:27 +08:00
parent 845075f4a3
commit bade560372
55 changed files with 2495 additions and 286 deletions

View File

@@ -64,6 +64,15 @@ typedef struct sim_interpreter {
char canonical[SIM_INTERPRETER_CANONICAL_CAPACITY];
} sim_interpreter;
typedef struct sim_coordinate_context {
double offsets[9][9];
int system;
} sim_coordinate_context;
int sim_interpreter_get_coordinates(const sim_interpreter *interpreter, sim_coordinate_context *context);
int sim_interpreter_set_coordinates(sim_interpreter *interpreter, const sim_coordinate_context *context);
int sim_interpreter_sync_position(sim_interpreter *interpreter, const sim_posemath_pose *position);
int sim_interpreter_init(sim_interpreter *interpreter);
int sim_interpreter_reset(sim_interpreter *interpreter);
int sim_interpreter_execute(sim_interpreter *interpreter, const char *block, uint32_t length);

View File

@@ -71,6 +71,8 @@ typedef struct sim_io_spindle_state {
double orient_angle;
double revs;
uint32_t tick;
double requested_rpm;
int32_t direction;
} sim_io_spindle_state;
typedef struct sim_io_probe_state {

View File

@@ -36,6 +36,9 @@ double sim_linuxcnc_tp_jog_velocity(const sim_linuxcnc_tp *planner, int axis);
double sim_linuxcnc_tp_feed_override(const sim_linuxcnc_tp *planner);
int32_t sim_linuxcnc_tp_set_dynamics(sim_linuxcnc_tp *planner, double acceleration_limit);
int32_t sim_linuxcnc_tp_set_paused(sim_linuxcnc_tp *planner, int paused);
int32_t sim_linuxcnc_tp_step_line(sim_linuxcnc_tp *planner);
int32_t sim_linuxcnc_tp_is_stepping(const sim_linuxcnc_tp *planner);
double sim_linuxcnc_tp_axis_limit(const sim_linuxcnc_tp *planner, int axis, int maximum);
int32_t sim_linuxcnc_tp_abort(sim_linuxcnc_tp *planner);
int32_t sim_linuxcnc_tp_set_position(sim_linuxcnc_tp *planner, const sim_posemath_pose *position);
int32_t sim_linuxcnc_tp_set_goal_position(sim_linuxcnc_tp *planner, const sim_posemath_pose *position);

View File

@@ -79,6 +79,7 @@ typedef struct sim_program {
int motion_control_mode;
double path_tolerance;
double naive_cam_tolerance;
uint32_t pause_from;
} sim_program;
uint32_t sim_program_size(void);