diff --git a/wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_interp_minimal_runtime.cpp b/wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_interp_minimal_runtime.cpp index a50190c..98da38d 100644 --- a/wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_interp_minimal_runtime.cpp +++ b/wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_interp_minimal_runtime.cpp @@ -152,19 +152,29 @@ void CHANGE_TOOL_NUMBER(int pocket) } void RELOAD_TOOLDATA(void) {} void CLAMP_AXIS(CANON_AXIS) {} -void DISABLE_ADAPTIVE_FEED() {} -void ENABLE_ADAPTIVE_FEED() {} -void DISABLE_FEED_OVERRIDE() {} -void ENABLE_FEED_OVERRIDE() {} -void DISABLE_SPEED_OVERRIDE(int) {} -void ENABLE_SPEED_OVERRIDE(int) {} -void DISABLE_FEED_HOLD() {} -void ENABLE_FEED_HOLD() {} +void DISABLE_ADAPTIVE_FEED() { standalone::push_canon_event("DISABLE_ADAPTIVE_FEED"); } +void ENABLE_ADAPTIVE_FEED() { standalone::push_canon_event("ENABLE_ADAPTIVE_FEED"); } +void DISABLE_FEED_OVERRIDE() { standalone::push_canon_event("DISABLE_FEED_OVERRIDE"); } +void ENABLE_FEED_OVERRIDE() { standalone::push_canon_event("ENABLE_FEED_OVERRIDE"); } +void DISABLE_SPEED_OVERRIDE(int spindle) +{ + std::ostringstream oss; + oss << "DISABLE_SPEED_OVERRIDE spindle=" << spindle; + standalone::push_canon_event(oss.str()); +} +void ENABLE_SPEED_OVERRIDE(int spindle) +{ + std::ostringstream oss; + oss << "ENABLE_SPEED_OVERRIDE spindle=" << spindle; + standalone::push_canon_event(oss.str()); +} +void DISABLE_FEED_HOLD() { standalone::push_canon_event("DISABLE_FEED_HOLD"); } +void ENABLE_FEED_HOLD() { standalone::push_canon_event("ENABLE_FEED_HOLD"); } void FLOOD_OFF() { standalone::push_canon_event("FLOOD_OFF"); } void FLOOD_ON() { standalone::push_canon_event("FLOOD_ON"); } void MIST_OFF() { standalone::push_canon_event("MIST_OFF"); } void MIST_ON() { standalone::push_canon_event("MIST_ON"); } -void PALLET_SHUTTLE() {} +void PALLET_SHUTTLE() { standalone::push_canon_event("PALLET_SHUTTLE"); } void TURN_PROBE_OFF() {} void TURN_PROBE_ON() {} void UNCLAMP_AXIS(CANON_AXIS) {} @@ -172,18 +182,57 @@ void NURB_KNOT_VECTOR() {} void NURB_CONTROL_POINT(int, double, double, double, double) {} void NURB_FEED(double, double) {} void SET_BLOCK_DELETE(bool) {} -void OPTIONAL_PROGRAM_STOP() {} +void OPTIONAL_PROGRAM_STOP() { standalone::push_canon_event("OPTIONAL_PROGRAM_STOP"); } void SET_OPTIONAL_PROGRAM_STOP(bool) {} bool GET_OPTIONAL_PROGRAM_STOP() { return false; } -void PROGRAM_END() {} -void PROGRAM_STOP() {} -void SET_MOTION_OUTPUT_BIT(int) {} -void CLEAR_MOTION_OUTPUT_BIT(int) {} -void SET_AUX_OUTPUT_BIT(int) {} -void CLEAR_AUX_OUTPUT_BIT(int) {} -void SET_MOTION_OUTPUT_VALUE(int, double) {} -void SET_AUX_OUTPUT_VALUE(int, double) {} -int WAIT(int, int, int, double) { return 0; } +void PROGRAM_END() { standalone::push_canon_event("PROGRAM_END"); } +void PROGRAM_STOP() { standalone::push_canon_event("PROGRAM_STOP"); } +void SET_MOTION_OUTPUT_BIT(int index) +{ + std::ostringstream oss; + oss << "SET_MOTION_OUTPUT_BIT index=" << index; + standalone::push_canon_event(oss.str()); +} +void CLEAR_MOTION_OUTPUT_BIT(int index) +{ + std::ostringstream oss; + oss << "CLEAR_MOTION_OUTPUT_BIT index=" << index; + standalone::push_canon_event(oss.str()); +} +void SET_AUX_OUTPUT_BIT(int index) +{ + std::ostringstream oss; + oss << "SET_AUX_OUTPUT_BIT index=" << index; + standalone::push_canon_event(oss.str()); +} +void CLEAR_AUX_OUTPUT_BIT(int index) +{ + std::ostringstream oss; + oss << "CLEAR_AUX_OUTPUT_BIT index=" << index; + standalone::push_canon_event(oss.str()); +} +void SET_MOTION_OUTPUT_VALUE(int index, double value) +{ + std::ostringstream oss; + oss << "SET_MOTION_OUTPUT_VALUE index=" << index << " value=" << value; + standalone::push_canon_event(oss.str()); +} +void SET_AUX_OUTPUT_VALUE(int index, double value) +{ + std::ostringstream oss; + oss << "SET_AUX_OUTPUT_VALUE index=" << index << " value=" << value; + standalone::push_canon_event(oss.str()); +} +int WAIT(int index, int input_type, int wait_type, double timeout) +{ + std::ostringstream oss; + oss << "WAIT index=" << index + << " input_type=" << input_type + << " wait_type=" << wait_type + << " timeout=" << timeout; + standalone::push_canon_event(oss.str()); + return 0; +} int UNLOCK_ROTARY(int, int) { return 0; } int LOCK_ROTARY(int, int) { return 0; } void UPDATE_TAG(const StateTag &) {} diff --git a/wasm-port/tests/fixtures/canon/canon_runtime_edges.events b/wasm-port/tests/fixtures/canon/canon_runtime_edges.events index 5707178..64bf2b7 100644 --- a/wasm-port/tests/fixtures/canon/canon_runtime_edges.events +++ b/wasm-port/tests/fixtures/canon/canon_runtime_edges.events @@ -9,3 +9,25 @@ canon_event=FLOOD_ON canon_event=MIST_OFF canon_event=FLOOD_OFF canon_event=DWELL seconds=0.25 +canon_event=ENABLE_FEED_OVERRIDE +canon_event=ENABLE_SPEED_OVERRIDE spindle=0 +canon_event=DISABLE_FEED_OVERRIDE +canon_event=ENABLE_FEED_OVERRIDE +canon_event=DISABLE_SPEED_OVERRIDE spindle=0 +canon_event=ENABLE_SPEED_OVERRIDE spindle=0 +canon_event=DISABLE_ADAPTIVE_FEED +canon_event=ENABLE_ADAPTIVE_FEED +canon_event=DISABLE_FEED_HOLD +canon_event=ENABLE_FEED_HOLD +canon_event=SET_MOTION_OUTPUT_BIT index=3 +canon_event=CLEAR_MOTION_OUTPUT_BIT index=3 +canon_event=SET_AUX_OUTPUT_BIT index=4 +canon_event=CLEAR_AUX_OUTPUT_BIT index=4 +canon_event=SET_MOTION_OUTPUT_VALUE index=2 value=12.5 +canon_event=SET_AUX_OUTPUT_VALUE index=2 value=34.5 +canon_event=WAIT index=1 input_type=1 wait_type=0 timeout=0 +canon_event=PROGRAM_STOP +canon_event=SET_FEED_RATE rate=0 +canon_event=STOP_SPINDLE_TURNING spindle=0 +canon_event=SET_SPINDLE_MODE spindle=0 css_max=0 +canon_event=PROGRAM_END diff --git a/wasm-port/tests/fixtures/gcode/canon_runtime_edges.ngc b/wasm-port/tests/fixtures/gcode/canon_runtime_edges.ngc index c5a16ec..a78a6b9 100644 --- a/wasm-port/tests/fixtures/gcode/canon_runtime_edges.ngc +++ b/wasm-port/tests/fixtures/gcode/canon_runtime_edges.ngc @@ -6,3 +6,21 @@ M7 M8 M9 G4 P0.25 +M48 +M50 P0 +M50 P1 +M51 P0 +M51 P1 +M52 P0 +M52 P1 +M53 P0 +M53 P1 +M62 P3 +M63 P3 +M64 P4 +M65 P4 +M67 E2 Q12.5 +M68 E2 Q34.5 +M66 P1 L0 Q0 +M0 +M2 diff --git a/wasm-port/tests/native/verify_native_probes.sh b/wasm-port/tests/native/verify_native_probes.sh index c389233..c3858db 100755 --- a/wasm-port/tests/native/verify_native_probes.sh +++ b/wasm-port/tests/native/verify_native_probes.sh @@ -97,6 +97,7 @@ check_fixture_output() { local line_number for ((line_number = 1; line_number <= line_count; line_number += 1)); do if ! grep -Fq "execute_line_${line_number}=0" "$stdout_file" && + ! grep -Fq "execute_line_${line_number}=1" "$stdout_file" && ! grep -Fq "execute_line_${line_number}=2" "$stdout_file"; then echo "missing successful execute status for line $line_number in $stdout_file" >&2 exit 1