From 357e4ca0778a926f23bb7fbe5c8ba85d41286fcd Mon Sep 17 00:00:00 2001 From: Terje Io Date: Mon, 26 Sep 2022 11:07:23 +0200 Subject: [PATCH] See the changelog for details. --- README.md | 8 +++++--- changelog.md | 23 ++++++++++++++++++++++- core_handlers.h | 2 ++ grbl.h | 2 +- plugins_init.h | 5 +++++ report.c | 24 ++++++++++++++++++------ settings.c | 2 +- spindle_control.h | 6 ++++++ 8 files changed, 60 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 89e4234..14d3f3e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ ## grblHAL ## +__New:__ The core now has support for up to 8 axes, and for 4-6 axes configurations ABC axis letters can be remapped to UVW. + grblHAL has [many extensions](https://github.com/grblHAL/core/wiki) that may cause issues with some senders. As a workaround for these a [compile time option](https://github.com/grblHAL/core/wiki/Changes-from-grbl-1.1#workaround) has been added that disables extensions selectively. __IMPORTANT!__ grblHAL defaults to normally closed \(NC\) switches for inputs, if none are connected when testing it is likely that the controller will start in alarm mode. @@ -73,9 +75,9 @@ List of Supported G-Codes: - Tool Change: M6* (Two modes possible: manual** - supports jogging, ATC), M61 - Switches: M48, M49, M50, M51, M53 - Input/uutput control***: M62, M63, M64, M65, M66, M67, M68 - - Valid Non-Command Words: A*, B*, C*, F, H*, I, J, K, L, N, P, Q*, R, S, T, X, Y, Z + - Valid Non-Command Words: A*, B*, C*, D, E*, F, H*, I, J, K, L, N, P, Q*, R, S, T, U*, V*, W*, X, Y, Z - * driver/configuration dependent. + * driver/configuration dependent. W axis only available when ABC axes are remapped to UVW. ** requires compatible GCode sender due to protocol extensions, new state and RT command. *** number of inputs and outputs supported dependent on driver implementation. **** supports multi turn arcs from build 20220718. @@ -84,4 +86,4 @@ List of Supported G-Codes: Some [plugins](https://github.com/grblHAL/plugins) implements additional M-codes. --- -2022-09-22 +2022-09-25 diff --git a/changelog.md b/changelog.md index 409cf2f..1f6b06b 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,27 @@ ## grblHAL changelog +Build 20220925: + +Core: + +* Added `[AXS::]` line to `$I` report response, replaces the string `ABC2UVW` from the `NEWOPT` element in the `$I` response. + +* Fixed `|Pn:` real time report element pin state conflict: `F` is now used for motor fault and `M` for motor warning, `U`, `V` and `W` for limit switch status. + +Further details can be found in the [wiki](https://github.com/grblHAL/core/wiki/Report-extensions). + +Plugins: + +* Laser: Added experimental support for LaserBurn clusters, for faster engraving. + +* SDCard: Minor tweak to enable plugins to modify the file stream without losing real time report extensions. + +Drivers: + +* ESP32: added directory for embedded read-only files and moved related files there. + +--- + Build 20220922: Core: @@ -41,7 +63,6 @@ __NOTE:__ All setting values will be reset when this option is changed, backup a __NOTE:__ In a later version this option will be removed and dynamic allocation will become standard. * Added experimental [configuration option](https://github.com/grblHAL/core/blob/master/config.h) `AXIS_REMAP_ABC2UVW` for remapping ABC axis letters to UVW. -When enabled the string `ABC2UVW` will be added to the `NEWOPT` element in the `$I` response, this can be used by senders to set up the UI etc. Drivers: diff --git a/core_handlers.h b/core_handlers.h index ca0a5e3..65ddd23 100644 --- a/core_handlers.h +++ b/core_handlers.h @@ -72,6 +72,7 @@ typedef void (*on_program_completed_ptr)(program_flow_t program_flow, bool check typedef void (*on_execute_realtime_ptr)(sys_state_t state); typedef void (*on_unknown_accessory_override_ptr)(uint8_t cmd); typedef bool (*on_unknown_realtime_cmd_ptr)(char c); +typedef void (*on_report_handlers_init_ptr)(void); typedef void (*on_report_options_ptr)(bool newopt); typedef void (*on_report_command_help_ptr)(void); typedef void (*on_global_settings_restore_ptr)(void); @@ -97,6 +98,7 @@ typedef struct { report_t report; // grbl core events - may be subscribed to by drivers or by the core. on_state_change_ptr on_state_change; + on_report_handlers_init_ptr on_report_handlers_init; on_program_completed_ptr on_program_completed; on_execute_realtime_ptr on_execute_realtime; on_execute_realtime_ptr on_execute_delay; diff --git a/grbl.h b/grbl.h index b014106..54d419e 100644 --- a/grbl.h +++ b/grbl.h @@ -34,7 +34,7 @@ #else #define GRBL_VERSION "1.1f" #endif -#define GRBL_BUILD 20220922 +#define GRBL_BUILD 20220925 // The following symbols are set here if not already set by the compiler or in config.h // Do NOT change here! diff --git a/plugins_init.h b/plugins_init.h index 4bf2685..4f59c8b 100644 --- a/plugins_init.h +++ b/plugins_init.h @@ -70,6 +70,11 @@ openpnp_init(); #endif +#if LB_CLUSTERS_ENABLE + extern void lb_clusters_init (void); + lb_clusters_init(); +#endif + #if WEBUI_ENABLE extern void webui_init (void); webui_init(); diff --git a/report.c b/report.c index 8216a87..64bec65 100644 --- a/report.c +++ b/report.c @@ -228,9 +228,9 @@ inline static char *control_signals_tostring (char *buf, control_signals_t signa if (hal.signals_cap.stop_disable ? signals.stop_disable : sys.flags.optional_stop_disable) *buf++ = 'T'; if (signals.motor_warning) - *buf++ = 'W'; - if (signals.motor_fault) *buf++ = 'M'; + if (signals.motor_fault) + *buf++ = 'F'; *buf = '\0'; @@ -247,6 +247,9 @@ void report_init (void) void report_init_fns (void) { memcpy(&grbl.report, &report_fns, sizeof(report_t)); + + if(grbl.on_report_handlers_init) + grbl.on_report_handlers_init(); } // Handles the primary confirmation protocol response for streaming interfaces and human-feedback. @@ -933,8 +936,21 @@ void report_build_info (char *line, bool extended) if(extended) { + uint_fast8_t idx; nvs_io_t *nvs = nvs_buffer_get_physical(); + strcat(strcpy(buf, "[AXS:"), uitoa(N_AXIS)); + + append = &buf[6]; + *append++ = ':'; + + for(idx = 0; idx < N_AXIS; idx++) + *append++ = *axis_letter[idx]; + + *append = '\0'; + + hal.stream.write(strcat(buf, "]" ASCII_EOL)); + strcpy(buf, "[NEWOPT:ENUMS,RT"); strcat(buf, settings.flags.legacy_rt_commands ? "+," : "-,"); @@ -989,10 +1005,6 @@ void report_build_info (char *line, bool extended) if(hal.rtc.get_datetime) strcat(buf, "RTC,"); -#ifdef AXIS_REMAP_ABC2UVW - strcat(buf, "ABC2UVW,"); -#endif - #ifdef PID_LOG strcat(buf, "PID,"); #endif diff --git a/settings.c b/settings.c index 31608ef..2c7f24e 100644 --- a/settings.c +++ b/settings.c @@ -555,7 +555,7 @@ PROGMEM static const setting_detail_t setting_detail[] = { { Settings_Axis_Rotational, Group_Stepper, "Rotational axes", NULL, Format_Bitfield, "U-Axis", NULL, NULL, Setting_IsExtendedFn, set_rotational_axes, get_int, NULL }, #elif N_AXIS == 5 { Settings_Axis_Rotational, Group_Stepper, "Rotational axes", NULL, Format_Bitfield, "U-Axis,V-Axis", NULL, NULL, Setting_IsExtendedFn, set_rotational_axes, get_int, NULL }, - #elif N_AXIS = 6 + #elif N_AXIS == 6 { Settings_Axis_Rotational, Group_Stepper, "Rotational axes", NULL, Format_Bitfield, "U-Axis,V-Axis,W-Axis", NULL, NULL, Setting_IsExtendedFn, set_rotational_axes, get_int, NULL }, #endif #endif diff --git a/spindle_control.h b/spindle_control.h index 39f0c64..8ffa2de 100644 --- a/spindle_control.h +++ b/spindle_control.h @@ -220,7 +220,13 @@ uint8_t spindle_get_count (void); bool spindle_select (spindle_id_t spindle_id); spindle_cap_t spindle_get_caps (void); + +/*! \brief Update PWM spindle capabilities with run-time determined parameters. +\param pwm_caps pointer to \a spindle_pwm_t struct, NULL if spindle if not PWM capable. + + */ void spindle_update_caps (spindle_pwm_t *pwm_caps); + spindle_id_t spindle_get_current (void); #endif