diff --git a/test-linuxcnc-source-link.sh b/test-linuxcnc-source-link.sh index 4047255..f6883a8 100755 --- a/test-linuxcnc-source-link.sh +++ b/test-linuxcnc-source-link.sh @@ -236,6 +236,12 @@ INI_FILE_NAME="$multi_spindle_modes_file" CNC_SIM_RS274_VAR="$var_file" \ CNC_SIM_RS274_VAR="$var_file" \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_spindle_orient.ngc \ >"$output_dir/cnc_sim_linuxcnc_source_spindle_orient.json" +# Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads +# [TRAJ] SPINDLES from INI_FILE_NAME, and interp_convert.cc routes M19 with a +# $ selector to the selected spindle for orient and wait Canon calls. +INI_FILE_NAME="$multi_spindle_modes_file" CNC_SIM_RS274_VAR="$var_file" \ + "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_multi_spindle_orient.ngc \ + >"$output_dir/cnc_sim_linuxcnc_source_multi_spindle_orient.json" CNC_SIM_RS274_VAR="$var_file" \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_io_controls.ngc \ >"$output_dir/cnc_sim_linuxcnc_source_io_controls.json" @@ -1899,6 +1905,27 @@ if not any( ): raise SystemExit("missing source-linked M19 spindle orient wait state") +multi_spindle_orient = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_multi_spindle_orient.json").read_text()) +if not any( + event["type"] == "comment" and + event["line"] == 4 and + event["reserved"] == 1901 and + event["tool"] == 1 and + event["feed"] == 45 and + event["arcTurns"] == 1 + for event in multi_spindle_orient +): + raise SystemExit("missing source-linked selected-spindle M19 orient state") +if not any( + event["type"] == "comment" and + event["line"] == 4 and + event["reserved"] == 1902 and + event["tool"] == 1 and + event["dwellSeconds"] == 2 + for event in multi_spindle_orient +): + raise SystemExit("missing source-linked selected-spindle M19 orient wait state") + io_controls = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_io_controls.json").read_text()) io_states = [ (event["line"], event["reserved"], event["tool"], event["feed"], event["arcTurns"], event["dwellSeconds"]) @@ -3713,6 +3740,7 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_source_multi_spindle_direction.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_multi_spindle_all_direction.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_spindle_modes.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_spindle_orient.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_source_multi_spindle_orient.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_io_controls.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_override_controls.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_modal_state.json" diff --git a/tests/gcode/linuxcnc_multi_spindle_orient.ngc b/tests/gcode/linuxcnc_multi_spindle_orient.ngc new file mode 100644 index 0000000..6e53b99 --- /dev/null +++ b/tests/gcode/linuxcnc_multi_spindle_orient.ngc @@ -0,0 +1,5 @@ +G21 G90 G17 +(Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads [TRAJ] SPINDLES from INI_FILE_NAME.) +(Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc M19 with $ selects spindle orient and wait calls.) +M19 R45 P1 Q2 $1 +M30