µCNC v1.11.0-rc
This is the release candidate for version 1.11.
This version got an overall interface/streaming code refactoring. This lead to several improvements and enhancements for modules development, regarding printing and message streaming.
Settings storage code was also refactored, to increase settings security. This ensures that when using external storage media, a setting loading error/missing settings lock the machine in a safe way preventing any commands until the user fixes the machine settings.
Additionally O-Codes/subrotines were added to the parser, now allowing to run complex subrotines and codes from media files.
Added
- added support for printing values of numbered and via messages
- added support for read-only predefined named parameters. Parameters can also be printed via $# command followed by the parameter number or parameter name (#767)
- added support for O-Codes similar to LinuxCNC. O-Codes or subrotines runs custom GCode code and perform conditional logic and complex loops. O-Codes run from media storage .nc files thus each subrotine is self contained and it's not necessary to declare the SUB and ENDSUB O-Codes. The O-Codes must reside in the root system file of a pre-configured FS (C for MCU Flash FS or D for SD card FS). (#765) (#769)
- settings hardened safety features. On settings loading if an error is detected the machine enters locked mode and requires a full setting reset from the user before allowing unlock. This using the machine if the settings are not correctly loaded preventing failures when using settings from movable media sources like SD cards. Also on settings saving error the system will keep retrying to save the setting in case a write error occurs but allows the program to continue flowing. This option can be turned off by enabling ´DISABLE_SAFE_SETTINGS´ in the cnc_config.h file (#761) (#762)
- self implemented subset/custom of stdio printf helpers. It's now possible to print formatted messages via protocol. No need to do specific calls to print variables like numbers, strings, char, ip addresses, bytes, etc... (#760)
- Debug messages now have an intermediate buffer that stores the output before printing it to prevent outputting debug messages in the middle of ongoing protocol messages (#760)
Changed
- all communications calls to output messages now are done via the proto_xxx calls in grbl_protocol.h. No more calls to serial stream directly mixed with protocol calls (#760)
- improvements to the debug message system. Now a single call to DBGMSG macro is used. The same principle of formatted messages is applied (#760)