100 Commits
Author SHA1 Message Date
Terje Io 546c6f9f5f Updated changelog. 2026-08-14 10:06:40 +02:00
Terje Io 553c501f35 Added option to setting $63 to set spindle RPM to minimum (typically 0) on feed hold. Ref. issue #991.
Fixed reset (abort) not turning off laser in some circumstances.
2026-08-13 18:47:32 +02:00
Terje Io 29b7471fe5 Fixed typo in last commit 2026-08-11 08:25:35 +02:00
Terje Io 6523e08de8 Moved compile time option ROTARY_FIX to setting $701 with option for
reverting imperial to metric conversion for angular moves.
Ref. PR#979 and discussion #241.
Added hooks for future G33.1 rigid tapping cycle implementation.
Added lathe tool parameters front angle, back angle and orientation
to tool data when lathe UVW option is enabled. Currently unused.
2026-08-11 08:15:08 +02:00
Terje Io 5848a84179 Removed include path element. 2026-08-05 08:38:41 +02:00
Terje Io b34eabe28f Moved RAM filing system from networking plugin here, added support for more operations.
Added hooks for future G70-G72 lathe cycles implementation.
ome general improvements.
2026-08-05 08:13:26 +02:00
Terje IoandGitHub 306bf68d52 Merge pull request #999 from ScottW514/fix-null-on-settings-changed
gcode: guard NULL chained on_settings_changed in onSettingsChanged
2026-08-04 06:36:24 +02:00
Terje Io beea3fe8e2 Updated changelog. 2026-07-29 13:15:46 +02:00
Terje Io 644c605b3d Forgot to update build date, "hardened" code. 2026-07-26 20:22:35 +02:00
Terje Io 35431d1bd3 Fix for M3 enabled laser turned off on feed hold when $63 option Disable laser during hold is off. Ref. issue #991.
Improved handling of some VFS file system actions (unlink, mkdirv and rmdir), added support for truncate.
Changed some kinematics API function signatures for readability/debugability.
The ioports implementation has been changed to allow for consecutive pin numbers for external (expander based) I/O. See changelog for details.
2026-07-26 08:21:33 +02:00
Terje IoandGitHub 8913dd41e7 Merge pull request #994 from engigeer/PR_report_overrides_on_reset
Fix for reporting of updated overrides on reset
2026-07-26 07:47:43 +02:00
Terje IoandGitHub b9a05f146b Merge pull request #990 from 94xhn/fix/vfs-fs-stat-buffer-overflow
Fix stack buffer overflow in vfs.c fs_stat()
2026-07-21 21:23:27 +02:00
Terje Io c84cda0430 Updated VFS to correctly handle long working directory paths that would otherwise lead to buffer overflows.
Ref. PR#986 which is a partial fix.
Updated named O calls to allow name lengths only limited by available heap.
Ref. PR#989 which likely would return an error on overly long names and would potentially execute incorrect code if not.
2026-07-19 22:48:45 +02:00
Terje IoandGitHub 70ae0c1f50 Merge pull request #984 from stevenrwood/fix/g54-rotation-second-axis-double-offset
gcode: fix ROTATION_ENABLE 2nd-axis offset double-applied on rotated G54 moves
2026-07-18 22:18:26 +02:00
Terje IoandGitHub dd2131e4ae Merge pull request #985 from gcormier/fix-modbus-adu-bounds
Validate Modbus frame size before writing the ADU buffer
2026-07-18 20:34:52 +02:00
Terje Io b9f96d66ea Changes to VFS API signatures to aid improved handling of file system formatting.
Now turns off spindle(s) on spindle related settings changes.
2026-07-18 11:14:47 +02:00
Terje Io 09f8ba597a Updated build date for PR#983 2026-07-12 18:16:10 +02:00
Terje IoandGitHub d382892625 Merge pull request #983 from gcormier/bugfix/y2homing
Re-enable both motors after auto squaring offset pull-off
2026-07-12 18:02:30 +02:00
Terje Io 2bdfeb12dc Added support for MPG real time command character stream switching for RX only streams. 2026-07-09 21:05:29 +02:00
Terje IoandGitHub f6bc9ef0b8 Merge pull request #977 from stevenrwood/fix/g53-ignore-wcs-rotation
G53 moves incorrectly apply the active WCS rotation/offset (when ROTATION_ENABLE=1)
2026-07-02 08:47:49 +02:00
Terje IoandGitHub 26d44fe733 Merge pull request #976 from moustakimhamza/fix/autosquare-abs-truncation
fix: use labs() instead of abs() for int32_t delta in auto-squaring check
2026-06-28 23:45:12 +02:00
Terje Io 4521e88c0f Fix for asymmetric axis kinematics triggering soft limits when enabled. 2026-06-26 07:27:59 +02:00
Terje Io 03a7dd9572 PR#974 applied.
Added preprocessor logic for handling potentially bad spindle definitions.
2026-06-22 23:05:19 +02:00
Terje IoandGitHub e66e01b8e2 Merge pull request #974 from yevheniisukhominskiy/fix-limit-pins-invert-5
Fix copy-paste bug for Setting_LimitPinsInvertMask ($5)
2026-06-21 07:11:17 +02:00
Terje Io fe7632bb7d Made named O-call LinuxCNC compliant by changing name to lowercase.
Fix for parking motion using `$32` laser mode setting when it should use the current spindle mode.
For developers: changed signature of `hal.stream.on_linestate_changed()` to include stream properties.
2026-06-19 20:56:58 +02:00
Terje Io 41abd8c84d Added kinematics for asymmetric (differing step/mm) ganged or auto squared axis,
claims the highest number axis > Z for the second motor.
2026-06-18 09:17:43 +02:00
Terje IoandGitHub 4fcdbaee11 Merge pull request #962 from gcormier/interlock
Spindle interlock plugin header
2026-06-08 15:38:57 +02:00
Terje Io b9d79a34c2 Fix for regression affecting step injection code. 2026-06-02 23:46:03 +02:00
Terje IoandGitHub 58e1a60807 Merge pull request #956 from gcormier/newplugins
Add two new plugins
2026-06-02 18:53:15 +02:00
Terje Io 266f0db62d Minor change to shut up some compilers incorrectly warning about a potentially uninitialized variable. Ref. issue #959. 2026-05-28 16:26:34 +02:00
Terje Io 2c67781d8f Update for Web Builder 2026-05-26 09:46:23 +02:00
Terje Io 87033967a0 Allow full circle arcs without axis words. Ref. issue #958. 2026-05-25 07:01:48 +02:00
Terje Io 336a26cbdb Fixed typos that may affect STM32 drivers assignment priority of interrupt capable pins. 2026-05-20 16:07:09 +02:00
Terje Io 26633c9107 fixed copy/paste error... 2026-05-18 12:42:27 +02:00
Terje Io 7c8488d4d5 Reworked feed mode handling (G93-G95), now keeps current feed rate over spindle synced motion. Ref. issue #954.
Added P-word option to G38.x probe commands, use to temporarily switch the probe input when multiple probes are available.
Fixed PWM spindle ramping, did not hit the target RPM.
2026-05-18 11:48:04 +02:00
Terje Io 1c03e111a9 Updated changelog. 2026-05-11 10:26:47 +02:00
Terje Io 728b9c91a2 Setting NGC_PARAMETERS_ENABLE to Off results compiling errors, ref. issue #919.
Changes to allow stepper spindle to use per degree settings, ref. issue 926.
Changes for improved line number reporting for subroutines and branching gcode.
2026-05-06 07:37:13 +02:00
Terje Io d77ef1d3a7 Updated changelog. 2026-04-18 11:11:53 +02:00
Terje Io e56fc8006e Formalized SPI API, added init call for 74HC595 I/O expander.
Fix for G30 not cleared on $RST, added code for syncing parser state on offsets clear. Ref. issue #940.
2026-04-16 09:39:47 +02:00
Terje IoandGitHub 64265fbff3 Merge pull request #939 from engigeer/PR_reboot_fix
Add code guards to prevent hard crash on $REBOOT for unsupported drivers
2026-04-15 08:41:08 +02:00
Terje IoandGitHub baabd9d727 Merge pull request #934 from bullestock/include-guard-mismatch
Fix include guard mismatch.
2026-04-03 08:46:08 +02:00
Terje Io 1445a4221e From PR 928? 2026-03-31 22:18:28 +02:00
Terje IoandGitHub 3472301259 Merge pull request #928 from bullestock/gcc14-calloc-transposed-args
Fix -Werror=calloc-transposed-args with gcc 14.
2026-03-31 21:03:01 +02:00
Terje Io 3c15245409 Changed homing to use the configured feed rate for all axes in a given cycle.
Slow locate phase can now be skipped by setting $24 to 0, this can be useful for Trinamic sensorless homing.
Fix for pendant not working if default stream is native USB and no client is connected. Ref. issue #927.
2026-03-31 14:11:02 +02:00
Terje Io eef9949d55 Improved support for using expander inputs for basic functions. "Hardened" code a bit. 2026-03-26 20:52:26 +01:00
Terje Io 5025b28f1f Improved support for using expander inputs for basic functions.
Currently only available for the RP2040 driver.
2026-03-24 20:14:28 +01:00
Terje Io f526ec0395 Small changes to ensure that output during startup do not cause
hangs due to no client connection when native USB is default.
2026-03-21 20:23:50 +01:00
Terje Io a4dd4134c0 Minor bug fix, only relevant when debug output to a dedicated UART is enabled. 2026-03-20 15:56:19 +01:00
Terje Io 8aa81a1c3b Added MCU clock speed, when available, to DRIVER element in $I output. Ref. issue #923.
Improved diagnostics provided by $MODBUSSTATS when communication has been lost.
Fix for regression.
2026-03-18 18:13:42 +01:00
Terje IoandGitHub 999b309135 Merge pull request #858 from engigeer/master
Add init for RP2040 based flexgpio i2c expander, core support for additional auxiliary I/O
2026-03-18 07:33:35 +01:00
Terje Io 588e3f831d Added latency (in ms) to $MODBUSSTATS output. 2026-03-14 21:18:52 +01:00
Terje Io 29ea451996 Added platform specific formatting strings for int32_t, "hardened" task handler code. 2026-03-13 10:39:39 +01:00
Terje Io 38cc54d74e Improved handling of current working directory (CWD). 2026-03-11 18:03:29 +01:00
Terje Io ee077d8730 Changes to allow I/O expander pins for motor fault inputs. Ref. PR #920. 2026-03-09 00:03:52 +01:00
Terje Io 949fa53c42 Added some reentry locks.
Second step in refactoring encoder HAL/API.
2026-03-03 22:34:30 +01:00
Terje Io 9ad064bebf Improved handling of G43 some more - can now be used in the same block as M6 when the internal workflow for tool change is enabled or M6 is ignored. 2026-02-27 09:33:05 +01:00
Terje Io aa3a80f47f Fixed incorrect behaviour when a tool change using the built-in workflow is aborted, the selected tool was set as the current tool.
Added support for G66.1 macro call.
Changed behaviour of G50 and G51 (and the G48 and G49 shortcuts) controlling feed rate and spindle RPM overrides.
Added support for G10L0, reload file based tool table.
Fixed buggy handling of G43 - apply tool offset from tool table.
Refactored the encoder HAL/API to make it more flexible and as a first step to support rigid tapping.
See the changelog for further details.
2026-02-26 10:30:46 +01:00
Terje IoandGitHub 54c58ee177 Merge pull request #914 from Expatria-Technologies/PR_Modbus_handle_single_coils
PR for Modbus fixes around single coils and discrete inputs.
2026-02-22 10:19:10 +01:00
Terje Io e0896a9db0 Fix for incorrect handling of limit pins for auto squared axes for two board maps. 2026-02-19 14:57:33 +01:00
Terje Io 82e6e4a0a3 Changed $pinstates command output, now reports pin number instead of pin id.
For developers: added API call that returns Modbus stream handlers.
2026-02-18 10:22:12 +01:00
Terje Io 16e5df9d93 Marked a large number of non-critical functions with FLASHMEM to save RAM for the iMXRT1062 driver.
Improved alarm handling, if a critical alarm is active when a non-critical alarm is raised the non-critical alarm will be delayed until after reset for the critical alarm.
Improved Modbus exception handling and added high level API call for creating and sending Modbus messages.
Added G65P7 inbuilt macro for interacting with Modbus devices from gcode. See the Wiki for details.
2026-02-15 22:16:03 +01:00
Terje Io f0fa009f5e For developers: added new callback for Modbus timeouts, defaults to exception callback for backwards compatibilty. 2026-02-12 21:02:38 +01:00
Terje Io e3c046b08b Updated changelog. 2026-02-10 19:14:59 +01:00
Terje Io 2eb7179b9d Changed spindle at speed check to fix issue with it sometimes skipping the wait cycle.
Added experimental support for ramping PWM output on RPM changes. See the changelog for details.
2026-02-07 09:46:00 +01:00
Terje IoandGitHub 9de5c5d0b1 Merge pull request #905 from engigeer/PR_LIMIT_MASK_typo
Fix typo in LIMIT_MASK_BASE_SUM definition
2026-02-06 21:49:12 +01:00
Terje Io 46369e2623 Fixed bad update causing compiler error if multiple spindles are enabled.
Moved some reporting data definitions/structures that caused Windows simulator builds to fail.
2026-02-05 17:59:37 +01:00
Terje Io d74d450f2d Reinstated settings definition that somehow was deleted in the 20260202 commit++ 2026-02-04 16:58:19 +01:00
Terje Io b435b48ec1 Changed real time reporting to allow per connection status for which report elements to output.
Added pragmas to shut up warning from the ESP32 compiler.
2026-02-04 11:28:20 +01:00
Terje Io 0ed9404b9e Fixed incorrect motor assignments for ABC motors. Ref. issue #902. 2026-02-02 23:11:43 +01:00
Terje Io 94ee157387 Updated changelog 2026-02-02 22:45:45 +01:00
Terje Io c6aa574279 Added experimental support for M98 subroutines, internal subroutines are only supported for programs run from a local file system.
$700 controls whether they are scanned for internally in the main program (1) or always located externally (0).
If scanned for internally the program is run twice, initially in check mode to locate the subroutines before it is rewound and run in normal mode.
If stored externally the file P<macro number>.macro is run, <macro number> is the M98 P value.
2026-02-02 22:25:31 +01:00
Terje Io 08c778530c Updated changelog. 2026-01-31 06:34:16 +01:00
Terje Io 5087dc61b8 Updated changelog. 2026-01-28 23:58:17 +01:00
Terje Io 4340b3d768 fix for out of sync commit 2026-01-25 08:27:32 +01:00
Terje Io 497c7d4eb0 Updated readme. 2026-01-25 08:13:31 +01:00
Terje Io 64c35930c7 Refactored offset handling, for improved readability and in preparation for rotation support.
Added experimental support for G66 (modal macro call) and G67 (end modal macro call).
Made axis letter to axis/motor assignment for axes ABCUVW freely changeable at compile time.
Fix for some G65 arguments being incorrectly validated for normal use (sign, range).
Added repeat support to G65 macro call via the optional L parameter word.
Changed default setting for ABC-axes to rotary.
Changed defaults for jerk settings to 10x acceleration settings.
Disabled jerk for jog, probe and spindle synchronized motion.
Added _active_probe system parameter, returns -1 if no probe inputs available.
Minor bug fix, G5.1 and G33.1 motion commands were not coverted to the correct string equivalent in $G output.
2026-01-25 07:51:44 +01:00
Terje IoandGitHub f8867e7ea3 Merge pull request #883 from petervanderwalt/sienci_atc_plugin
Added Sienci ATC plugin init and m-code reservation
2026-01-08 11:08:41 +07:00
Terje IoandGitHub fe858f73e9 Merge pull request #873 from gcormier/fix-toolchange-z-restore
Fix Z home movement when XY already at TLS position
2025-12-21 20:27:05 +07:00
Terje IoandGitHub 380199e388 Merge pull request #865 from engigeer/PR_reboot
Add support for $REBOOT (hard reset) command
2025-12-08 06:37:17 +07:00
Terje Io e272f773b5 Refactored the tool table HAL API a bit to improve functionality.
Added tool name, pocket number and some lathe specific data fields to the $# tool output when available from the tool table.
If name is available it will be output as a push message on M6 if there is no message in the same block.
Added support for directory up, .., to VFS.
Added new option to $650 - File systems options to enable hierarchical listing of files and directories via $F and $F+ commands.
2025-11-11 16:51:08 +01:00
Terje Io 18d6272060 Fix for regression causing MPG mode switch malfunction. Ref. issue #846. 2025-11-08 20:27:11 +01:00
Terje Io 6efbed8fa2 Updated changelog 2025-11-08 08:37:39 +01:00
Terje Io adba5d031c Refactored M70-M73 modal state handling, should now be fully compatible with LinuxCNC behaviour.
Added ADC/DAC resolution to $pinstate command, changed reported values to integer for ADC/DAC devices and float formatted for PWM devices.
Numeric settings can now be set via G65P1Q<n>S<value>, <n> is the setting number, <value> is the new value.
Changed alarm code for Modbus exceptions (communication errors) from 14 to 19.
Refactored MPG stream code to allow plugins to hook into MPG streams (via event handler).
Added _free memory system parameter, returns value in KBytes or -1 if not available from driver.
Changed basic stream data type from char to uint8_t, added HAL function and core API for releasing/closing UART streams.
2025-11-08 07:52:01 +01:00
Terje Io caa1cfcd13 Updated changelog. 2025-11-07 22:26:42 +01:00
Terje Io 69cdfb76c8 Added field for programmed timer period to HAL timer struct. 2025-11-05 07:54:32 +01:00
Terje Io 720f6bd552 Workaround for POS (Power on self-test) failure messages(s) not output on "native" USB connect.
Fixed handling of NVS buffer allocation, size was not increased as expected when physical NVS is capable of holding more than 2 Kbytes.
This could lead to POS failure or plugins not initializing when a large tool table is configured.
2025-10-23 10:40:01 +02:00
Terje Io ba222d16aa Previous commit was incorrect, fixed 2025-10-22 08:31:34 +02:00
Terje Io f5f31e6780 Fix for regression causing no WCO data in the real time report. 2025-10-22 08:20:54 +02:00
Terje Io b5b236ca3f Updated some pointer casts to get warning free compilation for 64-bit targets.
A few tweaks to get rid of warnings for some driver/board/configuration combinations.
2025-10-20 08:10:58 +02:00
Terje Io ed2a392dd7 Added _probe2_state system parameter, returns -1 if probe 2 is not available, 1 if triggered and 0 if not.
Fix for hang when G65 sub call level is > 2.
Fix for crash when selecting a tool (with the T command) outside the tool table range.
2025-10-18 20:28:02 +02:00
Terje Io 106f5fd573 Refactored assignment of of auxiliary I/O for "standard" inputs and outputs to make it more robust and easier to follow for developers.
Moved probe signal handling from drivers to the core, improved handling of probe disconnected signal.
NOTE: The changes above are quite large, please verify probe operation after installation.
2025-10-16 17:22:32 +02:00
Terje Io 0679a0c6d4 Updated changelog 2025-10-15 13:25:10 +02:00
Terje Io 1d0d7b41a4 Added preprocessor code and symbols to allow easy assignment of unused/unclaimed limit inputs as auxiliary inputs. 2025-10-12 20:24:35 +02:00
Terje Io 8c3d44bfca Added helper code for plugins claiming auxiliary ports to make plugin coding easier and behaviour consistent.
Some minor bug fixes such as incorrect error code returned for unknown $-commands and temporary incorrect position reporting on in-flight G92 offset changes.
2025-10-11 18:28:21 +02:00
Terje Io 5d48dd5c43 For developers: added function for getting standardized UART pin descriptions. 2025-10-06 07:44:51 +02:00
Terje Io 132159a6b6 Workaround for some compilers configured to treat warnings as errors causing compilation failure.
Added $PORTS command for listing serial ports, later I will update all drivers to provide the optional information.
Potential fix for polar kinematics not handling axes > 3 correctly, needs testing. Ref. issue #820.
2025-10-04 20:17:22 +02:00
Terje Io 7db744f04a fix typos 2025-10-02 15:41:10 +02:00
Terje Io e37572fe02 Improved M70-M73 modal state save and restore, should now handle overrides correctly.
Added lightweight JSON serializer outputting directly to file.
Fix for event handler sometimes called too early. Ref. issue #818.
For developers: added optional device filing system that can redirect file read/write to serial streams.
2025-10-02 15:18:28 +02:00
Terje Io b829928674 Fix for crash when multiple G95 mode motions are commanded. 2025-09-28 07:53:18 +02:00
Terje Io d96d3c488e Fix for stepper spindle in polling mode causing alarm 14 when used for spindle synced motion (G33, G76). 2025-09-27 06:37:21 +02:00