diff --git a/test-linuxcnc-rs274-native.sh b/test-linuxcnc-rs274-native.sh index 44a9c93..d5122a0 100755 --- a/test-linuxcnc-rs274-native.sh +++ b/test-linuxcnc-rs274-native.sh @@ -42,6 +42,7 @@ flock 9 var_file="$build_dir/rs274ngc.var" base_var_file="$build_dir/rs274ngc-base.var" ini_named_parameter_file="$(pwd)/tests/gcode/linuxcnc_ini_named_parameter.ini" +disable_g92_persistence_ini_file="$(pwd)/tests/gcode/linuxcnc_disable_g92_persistence.ini" output_dir="$build_dir/outputs" mkdir -p "$output_dir" cp "$linuxcnc_root/tests/halui/jogging/sim.var" "$base_var_file" @@ -922,6 +923,17 @@ cp "$base_var_file" "$var_file" # save_parameters() writes required and changed persistent ranges. CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_persistent_parameters_set.ngc >"$output_dir/cnc_sim_linuxcnc_persistent_parameters_set.json" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_persistent_parameters_check.ngc >"$output_dir/cnc_sim_linuxcnc_persistent_parameters_check.json" +disable_g92_startup_var_file="$build_dir/rs274ngc-disable-g92-startup.var" +printf '5210\t1.000000\n5211\t-4.000000\n5212\t-5.000000\n5213\t-6.000000\n5220\t1.000000\n' > "$disable_g92_startup_var_file" +# Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads +# [RS274NGC] DISABLE_G92_PERSISTENCE and clears restored #5210-#5219. +INI_FILE_NAME="$disable_g92_persistence_ini_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_startup_var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g92_disable_persistence_startup.ngc >"$output_dir/cnc_sim_linuxcnc_g92_disable_persistence_startup.json" +disable_g92_stop_var_file="$build_dir/rs274ngc-disable-g92-stop.var" +: > "$disable_g92_stop_var_file" +# Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_stop() +# clears #5210-#5219 on M2/M30 when DISABLE_G92_PERSISTENCE is enabled. +INI_FILE_NAME="$disable_g92_persistence_ini_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_stop_var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g92_disable_persistence_set.ngc >"$output_dir/cnc_sim_linuxcnc_g92_disable_persistence_set.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_stop_var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g92_disable_persistence_check.ngc >"$output_dir/cnc_sim_linuxcnc_g92_disable_persistence_check.json" rotary_persistent_var_file="$build_dir/rs274ngc-rotary-persistent.var" : > "$rotary_persistent_var_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$rotary_persistent_var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_persistent_parameters_set.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_persistent_parameters_set.json" @@ -2737,6 +2749,23 @@ if not any( ): raise SystemExit("missing LinuxCNC persistent parameter reload branch motion") +disable_g92_startup = load("cnc_sim_linuxcnc_g92_disable_persistence_startup.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 2 + for event in disable_g92_startup +): + raise SystemExit("missing LinuxCNC DISABLE_G92_PERSISTENCE startup clear branch motion") +disable_g92_check = load("cnc_sim_linuxcnc_g92_disable_persistence_check.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 1 + for event in disable_g92_check +): + raise SystemExit("missing LinuxCNC DISABLE_G92_PERSISTENCE program-end clear branch motion") + rotary_persistent_parameters_check = load("cnc_sim_linuxcnc_rotary_persistent_parameters_check.json") if not any( event["type"] == "linear-feed" and @@ -3004,6 +3033,9 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_tool_offset_numbered_parameters echo "dumped $output_dir/cnc_sim_linuxcnc_current_position_numbered_parameters.json" echo "dumped $output_dir/cnc_sim_linuxcnc_persistent_parameters_set.json" echo "dumped $output_dir/cnc_sim_linuxcnc_persistent_parameters_check.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g92_disable_persistence_startup.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g92_disable_persistence_set.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g92_disable_persistence_check.json" echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_persistent_parameters_set.json" echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_persistent_parameters_check.json" echo "dumped $output_dir/cnc_sim_linuxcnc_g54_persistent_parameters_set.json" diff --git a/test-linuxcnc-source-link.sh b/test-linuxcnc-source-link.sh index d07b7aa..182e3a9 100755 --- a/test-linuxcnc-source-link.sh +++ b/test-linuxcnc-source-link.sh @@ -175,6 +175,7 @@ make --output-sync=target -j"$build_jobs" -f "$source_link_makefile" var_file="$build_dir/rs274ngc-source.var" base_var_file="$build_dir/rs274ngc-source-base.var" ini_named_parameter_file="$(pwd)/tests/gcode/linuxcnc_ini_named_parameter.ini" +disable_g92_persistence_ini_file="$(pwd)/tests/gcode/linuxcnc_disable_g92_persistence.ini" multi_spindle_modes_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_modes.ini" multi_spindle_override_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_override.ini" multi_spindle_threading_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_threading.ini" @@ -1632,6 +1633,23 @@ CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \ CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_persistent_parameters_check.ngc \ >"$output_dir/cnc_sim_linuxcnc_source_persistent_parameters_check.json" +disable_g92_startup_var_file="$build_dir/rs274ngc-source-disable-g92-startup.var" +printf '5210\t1.000000\n5211\t-4.000000\n5212\t-5.000000\n5213\t-6.000000\n5220\t1.000000\n' > "$disable_g92_startup_var_file" +# Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads +# [RS274NGC] DISABLE_G92_PERSISTENCE and clears restored #5210-#5219. +INI_FILE_NAME="$disable_g92_persistence_ini_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_startup_var_file" \ + "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g92_disable_persistence_startup.ngc \ + >"$output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_startup.json" +disable_g92_stop_var_file="$build_dir/rs274ngc-source-disable-g92-stop.var" +: > "$disable_g92_stop_var_file" +# Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_stop() +# clears #5210-#5219 on M2/M30 when DISABLE_G92_PERSISTENCE is enabled. +INI_FILE_NAME="$disable_g92_persistence_ini_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_stop_var_file" \ + "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g92_disable_persistence_set.ngc \ + >"$output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_set.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$disable_g92_stop_var_file" \ + "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g92_disable_persistence_check.ngc \ + >"$output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_check.json" rotary_persistent_var_file="$build_dir/rs274ngc-rotary-persistent.var" : > "$rotary_persistent_var_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$rotary_persistent_var_file" \ @@ -3751,6 +3769,23 @@ if not any( ): raise SystemExit("missing source-linked persistent parameter reload branch motion") +disable_g92_startup = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_g92_disable_persistence_startup.json").read_text()) +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 2 + for event in disable_g92_startup +): + raise SystemExit("missing source-linked DISABLE_G92_PERSISTENCE startup clear branch motion") +disable_g92_check = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_g92_disable_persistence_check.json").read_text()) +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 1 + for event in disable_g92_check +): + raise SystemExit("missing source-linked DISABLE_G92_PERSISTENCE program-end clear branch motion") + rotary_persistent_parameters_check = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_rotary_persistent_parameters_check.json").read_text()) if not any( event["type"] == "linear-feed" and @@ -4024,6 +4059,9 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_source_rotary_tool_offset_numbered_par echo "dumped $output_dir/cnc_sim_linuxcnc_source_current_position_numbered_parameters.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_persistent_parameters_set.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_persistent_parameters_check.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_startup.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_set.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_source_g92_disable_persistence_check.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_rotary_persistent_parameters_set.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_rotary_persistent_parameters_check.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_g54_persistent_parameters_set.json" diff --git a/tests/gcode/linuxcnc_disable_g92_persistence.ini b/tests/gcode/linuxcnc_disable_g92_persistence.ini new file mode 100644 index 0000000..147de73 --- /dev/null +++ b/tests/gcode/linuxcnc_disable_g92_persistence.ini @@ -0,0 +1,2 @@ +[RS274NGC] +DISABLE_G92_PERSISTENCE = 1 diff --git a/tests/gcode/linuxcnc_g92_disable_persistence_check.ngc b/tests/gcode/linuxcnc_g92_disable_persistence_check.ngc new file mode 100644 index 0000000..6fd78de --- /dev/null +++ b/tests/gcode/linuxcnc_g92_disable_persistence_check.ngc @@ -0,0 +1,7 @@ +G21 G90 G17 +F100 +(Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_stop clears persisted G92/G52 parameters on program end.) +O10 if [[#5210 EQ 0] AND [#5211 EQ 0] AND [#5212 EQ 0] AND [#5213 EQ 0]] +G1 X1 +O10 endif +M30 diff --git a/tests/gcode/linuxcnc_g92_disable_persistence_set.ngc b/tests/gcode/linuxcnc_g92_disable_persistence_set.ngc new file mode 100644 index 0000000..41270a9 --- /dev/null +++ b/tests/gcode/linuxcnc_g92_disable_persistence_set.ngc @@ -0,0 +1,4 @@ +G21 G90 G17 +(Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc convert_stop clears #5210-#5219 when DISABLE_G92_PERSISTENCE is enabled.) +G92 X4 Y5 Z6 +M30 diff --git a/tests/gcode/linuxcnc_g92_disable_persistence_startup.ngc b/tests/gcode/linuxcnc_g92_disable_persistence_startup.ngc new file mode 100644 index 0000000..664e6bc --- /dev/null +++ b/tests/gcode/linuxcnc_g92_disable_persistence_startup.ngc @@ -0,0 +1,7 @@ +G21 G90 G17 +F100 +(Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init clears restored #5210-#5219 when DISABLE_G92_PERSISTENCE is enabled.) +O10 if [[#5210 EQ 0] AND [#5211 EQ 0] AND [#5212 EQ 0] AND [#5213 EQ 0]] +G1 X2 +O10 endif +M30