Fix for incorrect handling of some flow control statements when nested. Ref. issue #504.

Fixed defaults and added sanity checks for spindle linearization parameters settings.
This commit is contained in:
Terje Io
2024-05-06 12:00:01 +02:00
parent c6aeef14cf
commit fed76cf596
5 changed files with 31 additions and 10 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ It has been written to complement grblHAL and has features such as proper keyboa
---
Latest build date is 20240416, see the [changelog](changelog.md) for details.
Latest build date is 20240506, see the [changelog](changelog.md) for details.
__NOTE:__ Build 20240222 has moved the probe input to the ioPorts pool of inputs and will be allocated from it when configured.
The change is major and _potentially dangerous_, it may damage your probe, so please _verify correct operation_ after installing this, or later, builds.
+19
View File
@@ -1,5 +1,24 @@
## grblHAL changelog
<a name="20240506"/>Build 20240506
Core:
* Fix for incorrect handling of some flow control statements when nested. Ref. issue [#504](https://github.com/grblHAL/core/issues/504).
* Fixed defaults and added sanity checks for spindle linearization parameters settings.
Drivers:
* ESP32: increased max application size to 2 MB. __NOTE:__ settings and any WebUI files stored in littlefs will be overwritten on an update, backup and restore when updating!
* STM32F1xx: removed stray debug message.
* STM32F4xx: added printf/scanf support to STM32CubeIDE builds with spindle linearization enabled, due to run time issues.
Fixed incorrect EEPROM emulator flash section id, ref. core [discussion #503](https://github.com/grblHAL/core/discussions/503) and core [issue #457](https://github.com/grblHAL/core/issues/457).
---
<a name="20240427"/>Build 20240427
Core:
+4 -4
View File
@@ -1134,7 +1134,7 @@ Defines the parameters for the first entry in the spindle RPM linearization tabl
*/
///@{
#if !defined DEFAULT_RPM_POINT01 || defined __DOXYGEN__
#define DEFAULT_RPM_POINT01 DEFAULT_SPINDLE_RPM_MIN // Don not change! Set DEFAULT_SPINDLE_RPM_MIN instead.
#define DEFAULT_RPM_POINT01 NAN // DEFAULT_SPINDLE_RPM_MIN // Replace NAN with DEFAULT_SPINDLE_RPM_MIN to enable.
#endif
#if !defined DEFAULT_RPM_LINE_A1 || defined __DOXYGEN__
#define DEFAULT_RPM_LINE_A1 3.197101e-03f
@@ -1149,7 +1149,7 @@ Defines the parameters for the second entry in the spindle RPM linearization tab
*/
///@{
#if !defined DEFAULT_RPM_POINT12 || defined __DOXYGEN__
#define DEFAULT_RPM_POINT12 9627.8 // Set to a float constant to enable.
#define DEFAULT_RPM_POINT12 NAN // Change NAN to a float constant to enable.
#endif
#if !defined DEFAULT_RPM_LINE_A2 || defined __DOXYGEN__
#define DEFAULT_RPM_LINE_A2 1.722950e-2f
@@ -1164,7 +1164,7 @@ Defines the parameters for the third entry in the spindle RPM linearization tabl
*/
///@{
#if !defined DEFAULT_RPM_POINT23 || defined __DOXYGEN__
#define DEFAULT_RPM_POINT23 10813.9 // Set to a float constant to enable.
#define DEFAULT_RPM_POINT23 NAN // Change NAN to a float constant to enable.
#endif
#if !defined DEFAULT_RPM_LINE_A3 || defined __DOXYGEN__
#define DEFAULT_RPM_LINE_A3 5.901518e-02f
@@ -1179,7 +1179,7 @@ Defines the parameters for the fourth entry in the spindle RPM linearization tab
*/
///@{
#if !defined DEFAULT_RPM_POINT34 || defined __DOXYGEN__
#define DEFAULT_RPM_POINT34 NAN // Set to a float constant to enable.
#define DEFAULT_RPM_POINT34 NAN // Change NAN to a float constant to enable.
#endif
#if !defined DEFAULT_RPM_LINE_A4 || defined __DOXYGEN__
#define DEFAULT_RPM_LINE_A4 1.203413e-01f
+1 -1
View File
@@ -42,7 +42,7 @@
#else
#define GRBL_VERSION "1.1f"
#endif
#define GRBL_BUILD 20240427
#define GRBL_BUILD 20240506
#define GRBL_URL "https://github.com/grblHAL"
+6 -4
View File
@@ -305,7 +305,7 @@ status_code_t ngc_flowctrl (uint32_t o_label, char *line, uint_fast8_t *pos, boo
case NGCFlowCtrl_EndWhile:
if(hal.stream.file) {
if(last_op == NGCFlowCtrl_While) {
if(o_label == stack[stack_idx].o_label) {
if(!skipping && o_label == stack[stack_idx].o_label) {
uint_fast8_t pos = 0;
if(!stack[stack_idx].skip && (status = ngc_eval_expression(stack[stack_idx].expr, &pos, &value)) == Status_OK) {
if(!(stack[stack_idx].skip = value == 0))
@@ -314,7 +314,7 @@ status_code_t ngc_flowctrl (uint32_t o_label, char *line, uint_fast8_t *pos, boo
if(stack[stack_idx].skip)
stack_pull();
}
} else
} else if(!skipping)
status = Status_FlowControlSyntaxError;
} else
status = Status_FlowControlNotExecutingMacro;
@@ -338,13 +338,13 @@ status_code_t ngc_flowctrl (uint32_t o_label, char *line, uint_fast8_t *pos, boo
case NGCFlowCtrl_EndRepeat:
if(hal.stream.file) {
if(last_op == NGCFlowCtrl_Repeat) {
if(o_label == stack[stack_idx].o_label) {
if(!skipping && o_label == stack[stack_idx].o_label) {
if(stack[stack_idx].repeats && --stack[stack_idx].repeats)
vfs_seek(stack[stack_idx].file, stack[stack_idx].file_pos);
else
stack_pull();
}
} else
} else if(!skipping)
status = Status_FlowControlSyntaxError;
} else
status = Status_FlowControlNotExecutingMacro;
@@ -443,6 +443,8 @@ status_code_t ngc_flowctrl (uint32_t o_label, char *line, uint_fast8_t *pos, boo
if(status != Status_OK) {
ngc_flowctrl_init();
*skip = false;
if(settings.flags.ngc_debug_out)
report_message(line, Message_Plain);
} else
*skip = stack_idx >= 0 && stack[stack_idx].skip;