diff --git a/uCNC/src/interface/grbl_protocol.c b/uCNC/src/interface/grbl_protocol.c index b15ee7d0..ee66a430 100644 --- a/uCNC/src/interface/grbl_protocol.c +++ b/uCNC/src/interface/grbl_protocol.c @@ -819,19 +819,19 @@ void proto_cnc_settings(void) uint32_t val = 0; switch (SETTING_TYPE_MASK(s.type)) { - case 1: + case SETTING_TYPE_BOOL: val = (uint32_t)((bool *)s.memptr)[j]; proto_gcode_setting_line_int(s.id, val); break; - case 2: + case SETTING_TYPE_UINT8: val = (uint32_t) * ((uint8_t *)s.memptr); proto_gcode_setting_line_int(s.id, val); break; - case 3: + case SETTING_TYPE_UINT16: val = (uint32_t) * ((uint16_t *)s.memptr); proto_gcode_setting_line_int(s.id, val); break; - default: + default: // default is float proto_gcode_setting_line_flt(s.id, ((float *)s.memptr)[j]); break; } diff --git a/uCNC/src/interface/grbl_settings.c b/uCNC/src/interface/grbl_settings.c index 0ab2abf1..e35b39de 100644 --- a/uCNC/src/interface/grbl_settings.c +++ b/uCNC/src/interface/grbl_settings.c @@ -506,16 +506,16 @@ uint8_t settings_change(setting_offset_t id, float value) { switch (SETTING_TYPE_MASK(s.type)) { - case 1: + case SETTING_TYPE_BOOL: ((bool *)s.memptr)[(uint8_t)id - s.id] = value1; break; - case 2: + case SETTING_TYPE_UINT8: ((uint8_t *)s.memptr)[(uint8_t)id - s.id] = value8; break; - case 3: + case SETTING_TYPE_UINT16: ((uint16_t *)s.memptr)[(uint8_t)id - s.id] = value16; break; - default: + default: // default is float ((float *)s.memptr)[(uint8_t)id - s.id] = value; break; } diff --git a/uCNC/src/interface/grbl_settings.h b/uCNC/src/interface/grbl_settings.h index 6254a1bf..0fc2ec56 100644 --- a/uCNC/src/interface/grbl_settings.h +++ b/uCNC/src/interface/grbl_settings.h @@ -172,7 +172,7 @@ typedef uint16_t setting_offset_t; #endif #define SETTING_TYPE(T) (T << 5) -#define SETTING_TYPE_MASK(T) ((T >> 5) & 0x3) +#define SETTING_TYPE_MASK(T) (T & (0x03 << 5)) #define SETTING_ARRAY 0x80 #define SETTING_ARRCNT(X) (X & 0x1F) #define SETTING_TYPE_BOOL SETTING_TYPE(1)