mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2026-02-15 08:59:45 -07:00
🚸 GCODE_CASE_INSENSITIVE for Emergency Parser (#27449)
This commit is contained in:
parent
52b6c45451
commit
767c87810b
3 changed files with 11 additions and 21 deletions
|
|
@ -61,9 +61,13 @@ extern bool wait_for_user, wait_for_heatup;
|
|||
#endif
|
||||
|
||||
void EmergencyParser::update(EmergencyParser::State &state, const uint8_t c) {
|
||||
auto uppercase = [](char c) {
|
||||
return TERN0(GCODE_CASE_INSENSITIVE, WITHIN(c, 'a', 'z')) ? c + 'A' - 'a' : c;
|
||||
};
|
||||
|
||||
switch (state) {
|
||||
case EP_RESET:
|
||||
switch (c) {
|
||||
switch (uppercase(c)) {
|
||||
case ' ': case '\n': case '\r': break;
|
||||
case 'N': state = EP_N; break;
|
||||
case 'M': state = EP_M; break;
|
||||
|
|
@ -81,7 +85,7 @@ void EmergencyParser::update(EmergencyParser::State &state, const uint8_t c) {
|
|||
break;
|
||||
|
||||
case EP_N:
|
||||
switch (c) {
|
||||
switch (uppercase(c)) {
|
||||
case '0' ... '9':
|
||||
case '-': case ' ': break;
|
||||
case 'M': state = EP_M; break;
|
||||
|
|
@ -152,20 +156,8 @@ void EmergencyParser::update(EmergencyParser::State &state, const uint8_t c) {
|
|||
#endif
|
||||
|
||||
#if ENABLED(EP_BABYSTEPPING)
|
||||
case EP_M2:
|
||||
switch (c) {
|
||||
case '9': state = EP_M29; break;
|
||||
default: state = EP_IGNORE;
|
||||
}
|
||||
break;
|
||||
|
||||
case EP_M29:
|
||||
switch (c) {
|
||||
case '3': state = EP_M293; break;
|
||||
case '4': state = EP_M294; break;
|
||||
default: state = EP_IGNORE;
|
||||
}
|
||||
break;
|
||||
case EP_M2: state = (c == '9') ? EP_M29 : EP_IGNORE; break;
|
||||
case EP_M29: state = (c == '3') ? EP_M293 : (c == '4') ? EP_M294 : EP_IGNORE; break;
|
||||
#endif
|
||||
|
||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||
|
|
@ -174,7 +166,7 @@ void EmergencyParser::update(EmergencyParser::State &state, const uint8_t c) {
|
|||
case EP_M87: state = (c == '6') ? EP_M876 : EP_IGNORE; break;
|
||||
|
||||
case EP_M876:
|
||||
switch (c) {
|
||||
switch (uppercase(c)) {
|
||||
case ' ': break;
|
||||
case 'S': state = EP_M876S; break;
|
||||
default: state = EP_IGNORE; break;
|
||||
|
|
|
|||
|
|
@ -115,9 +115,7 @@ void GCodeParser::parse(char *p) {
|
|||
reset(); // No codes to report
|
||||
|
||||
auto uppercase = [](char c) {
|
||||
if (TERN0(GCODE_CASE_INSENSITIVE, WITHIN(c, 'a', 'z')))
|
||||
c += 'A' - 'a';
|
||||
return c;
|
||||
return TERN0(GCODE_CASE_INSENSITIVE, WITHIN(c, 'a', 'z')) ? c + 'A' - 'a' : c;
|
||||
};
|
||||
|
||||
// Skip spaces
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ public:
|
|||
#if ENABLED(GCODE_CASE_INSENSITIVE)
|
||||
FORCE_INLINE static char* strgchr(char *p, char g) {
|
||||
auto uppercase = [](char c) {
|
||||
return c + (WITHIN(c, 'a', 'z') ? 'A' - 'a' : 0);
|
||||
return TERN0(GCODE_CASE_INSENSITIVE, WITHIN(c, 'a', 'z')) ? c + 'A' - 'a' : c;
|
||||
};
|
||||
const char d = uppercase(g);
|
||||
for (char cc; (cc = uppercase(*p)); p++) if (cc == d) return p;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue