"Hardened" NGC parameter name case swapping.

Changed to use float precision according to metric/inches setting for parameter reporting.
This commit is contained in:
Terje Io
2024-05-27 13:39:30 +07:00
parent 299eab7f27
commit 21329cd03f
7 changed files with 34 additions and 21 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 20240526, see the [changelog](changelog.md) for details.
Latest build date is 20240527, 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.
+9 -1
View File
@@ -1,5 +1,13 @@
## grblHAL changelog
<a name="20240527"/>Build 20240527
Core:
* "Hardened" NGC parameter name case swapping, changed to use float precision according to metric/inches setting for parameter reporting.
---
<a name="20240526"/>Build 20240526
Core:
@@ -11,7 +19,7 @@ Available for gcode run from local filesystem such as on a SD card or in littlef
* Improved handling of G92 when G92 offset is changed while motion is ongoing.
Position and WCO offset in the realtime report will now be the actual realtime values and not
the values based on the parser state which may be quite a bit ahead of the machine. Ref. [issue #241](https://github.com/grblHAL/core/discussions/241#discussioncomment-9463390).
the values based on the parser state which may be quite a bit ahead of the machine. Ref. [discussion #241](https://github.com/grblHAL/core/discussions/241#discussioncomment-9463390).
* Fix for [issue #521](https://github.com/grblHAL/core/issues/521), crash when running G65 macro on ESP32.
+2 -2
View File
@@ -620,7 +620,7 @@ char *gc_normalize_block (char *block, char **message)
if(c == '#') {
char_counter--;
if(read_parameter(comment, &char_counter, &value) == Status_OK)
len += strlen(trim_float(ftoa(value, 6)));
len += strlen(trim_float(ftoa(value, ngc_float_decimals())));
else
len += 3; // "N/A"
} else
@@ -637,7 +637,7 @@ char *gc_normalize_block (char *block, char **message)
if(c == '#') {
char_counter--;
if(read_parameter(comment, &char_counter, &value) == Status_OK)
strcat(s3, trim_float(ftoa(value, 6)));
strcat(s3, trim_float(ftoa(value, ngc_float_decimals())));
else
strcat(s3, "N/A");
s3 = strchr(s3, '\0');
+1 -1
View File
@@ -42,7 +42,7 @@
#else
#define GRBL_VERSION "1.1f"
#endif
#define GRBL_BUILD 20240526
#define GRBL_BUILD 20240527
#define GRBL_URL "https://github.com/grblHAL"
+18 -14
View File
@@ -572,21 +572,20 @@ float ngc_named_param_get_by_id (ncg_name_param_id_t id)
}
// Lowercase name, remove control characters and spaces
// Assumes names stored in flash are lowercase...
static char *ngc_name_tolower (char *name)
static char *ngc_name_tolower (char *s)
{
char c, *s1 = name, *s2 = name;
bool convert = false;
static char name[NGC_MAX_PARAM_LENGTH + 1];
while((c = *s1++) && c > ' ')
convert = (c & 0x20) == 0 || c <= ' ';
uint_fast8_t len = 0;
char c, *s1 = s, *s2 = name;
if(convert) {
s1 = name;
while((c = *s1++) && c > ' ')
*s2++ = LCAPS(c);
*s2 = '\0';
while((c = *s1++) && len < NGC_MAX_PARAM_LENGTH) {
if(c > ' ') {
*s2++ = LCAPS(c);
len++;
}
}
*s2 = '\0';
return name;
}
@@ -596,7 +595,7 @@ bool ngc_named_param_get (char *name, float *value)
bool found = false;
uint_fast8_t idx = sizeof(ngc_named_ro_param) / sizeof(ngc_named_ro_param_t);
ngc_name_tolower(name);
name = ngc_name_tolower(name);
*value = 0.0f;
@@ -625,7 +624,7 @@ bool ngc_named_param_exists (char *name)
bool ok = false;
uint_fast8_t idx = sizeof(ngc_named_ro_param) / sizeof(ngc_named_ro_param_t);
ngc_name_tolower(name);
name = ngc_name_tolower(name);
// Check if name is supplied, return false if not.
if((*name == '_' ? *(name + 1) : *name) == '\0')
@@ -657,7 +656,7 @@ bool ngc_named_param_set (char *name, float value)
bool ok = false;
uint_fast8_t idx = sizeof(ngc_named_ro_param) / sizeof(ngc_named_ro_param_t);
ngc_name_tolower(name);
name = ngc_name_tolower(name);
// Check if name is supplied, return false if not.
if((*name == '_' ? *(name + 1) : *name) == '\0')
@@ -798,4 +797,9 @@ uint_fast8_t ngc_call_level (void)
return (uint_fast8_t)(call_level + 1);
}
uint8_t ngc_float_decimals (void)
{
return settings.flags.report_inches ? N_DECIMAL_COORDVALUE_INCH : N_DECIMAL_COORDVALUE_MM;
}
#endif // NGC_PARAMETERS_ENABLE
+1
View File
@@ -87,6 +87,7 @@ typedef enum {
NGCParam_Last
} ncg_name_param_id_t;
uint8_t ngc_float_decimals (void);
bool ngc_param_get (ngc_param_id_t id, float *value);
bool ngc_param_set (ngc_param_id_t id, float value);
bool ngc_param_is_rw (ngc_param_id_t id);
+2 -2
View File
@@ -553,7 +553,7 @@ status_code_t report_ngc_parameter (ngc_param_id_t id)
hal.stream.write(uitoa(id));
if(ngc_param_get(id, &value)) {
hal.stream.write("=");
hal.stream.write(ftoa(value, 3));
hal.stream.write(trim_float(ftoa(value, ngc_float_decimals())));
} else
hal.stream.write("=N/A");
hal.stream.write("]" ASCII_EOL);
@@ -570,7 +570,7 @@ status_code_t report_named_ngc_parameter (char *arg)
hal.stream.write(arg);
if(ngc_named_param_get(arg, &value)) {
hal.stream.write("=");
hal.stream.write(ftoa(value, 3));
hal.stream.write(trim_float(ftoa(value, ngc_float_decimals())));
} else
hal.stream.write("=N/A");
hal.stream.write("]" ASCII_EOL);