|  | 
| #define | DEBUGGING(F)   (marlin_debug_flags & (MARLIN_DEBUG_## F)) | 
|  | 
| #define | SERIAL_BOTH   0x7F | 
|  | 
| #define | _PORT_REDIRECT(n,  p)   NOOP | 
|  | 
| #define | _PORT_RESTORE(n)   NOOP | 
|  | 
| #define | SERIAL_OUT(WHAT,  V...)   (void)MYSERIAL0.WHAT(V) | 
|  | 
| #define | SERIAL_ASSERT(P)   NOOP | 
|  | 
| #define | PORT_REDIRECT(p)   _PORT_REDIRECT(1,p) | 
|  | 
| #define | PORT_RESTORE()   _PORT_RESTORE(1) | 
|  | 
| #define | SERIAL_CHAR(x)   SERIAL_OUT(write, x) | 
|  | 
| #define | SERIAL_ECHO(x)   SERIAL_OUT(print, x) | 
|  | 
| #define | SERIAL_ECHO_F(V...)   SERIAL_OUT(print, V) | 
|  | 
| #define | SERIAL_ECHOLN(x)   SERIAL_OUT(println, x) | 
|  | 
| #define | SERIAL_PRINT(x,  b)   SERIAL_OUT(print, x, b) | 
|  | 
| #define | SERIAL_PRINTLN(x,  b)   SERIAL_OUT(println, x, b) | 
|  | 
| #define | SERIAL_PRINTF(V...)   SERIAL_OUT(printf, V) | 
|  | 
| #define | SERIAL_FLUSH()   SERIAL_OUT(flush) | 
|  | 
| #define | SERIAL_FLUSHTX()   SERIAL_OUT(flushTX) | 
|  | 
| #define | __SEP_N(N,  V...)   _SEP_##N(V) | 
|  | 
| #define | _SEP_N(N,  V...)   __SEP_N(N,V) | 
|  | 
| #define | _SEP_1(PRE)   SERIAL_ECHOPGM(PRE) | 
|  | 
| #define | _SEP_2(PRE,  V)   serial_echopair_PGM(PSTR(PRE),V) | 
|  | 
| #define | _SEP_3(a,  b,  c)   do{ _SEP_2(a,b); SERIAL_ECHOPGM(c); }while(0) | 
|  | 
| #define | _SEP_4(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_2(V); }while(0) | 
|  | 
| #define | _SEP_5(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_3(V); }while(0) | 
|  | 
| #define | _SEP_6(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_4(V); }while(0) | 
|  | 
| #define | _SEP_7(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_5(V); }while(0) | 
|  | 
| #define | _SEP_8(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_6(V); }while(0) | 
|  | 
| #define | _SEP_9(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_7(V); }while(0) | 
|  | 
| #define | _SEP_10(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_8(V); }while(0) | 
|  | 
| #define | _SEP_11(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_9(V); }while(0) | 
|  | 
| #define | _SEP_12(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_10(V); }while(0) | 
|  | 
| #define | _SEP_13(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_11(V); }while(0) | 
|  | 
| #define | _SEP_14(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_12(V); }while(0) | 
|  | 
| #define | _SEP_15(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_13(V); }while(0) | 
|  | 
| #define | _SEP_16(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_14(V); }while(0) | 
|  | 
| #define | _SEP_17(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_15(V); }while(0) | 
|  | 
| #define | _SEP_18(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_16(V); }while(0) | 
|  | 
| #define | _SEP_19(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_17(V); }while(0) | 
|  | 
| #define | _SEP_20(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_18(V); }while(0) | 
|  | 
| #define | _SEP_21(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_19(V); }while(0) | 
|  | 
| #define | _SEP_22(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_20(V); }while(0) | 
|  | 
| #define | _SEP_23(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_21(V); }while(0) | 
|  | 
| #define | _SEP_24(a,  b,  V...)   do{ _SEP_2(a,b); _SEP_22(V); }while(0) | 
|  | 
| #define | SERIAL_ECHOPAIR(V...)   _SEP_N(NUM_ARGS(V),V) | 
|  | 
| #define | __SELP_N(N,  V...)   _SELP_##N(V) | 
|  | 
| #define | _SELP_N(N,  V...)   __SELP_N(N,V) | 
|  | 
| #define | _SELP_1(PRE)   SERIAL_ECHOLNPGM(PRE) | 
|  | 
| #define | _SELP_2(PRE,  V)   do{ serial_echopair_PGM(PSTR(PRE),V); SERIAL_EOL(); }while(0) | 
|  | 
| #define | _SELP_3(a,  b,  c)   do{ _SEP_2(a,b); SERIAL_ECHOLNPGM(c); }while(0) | 
|  | 
| #define | _SELP_4(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_2(V); }while(0) | 
|  | 
| #define | _SELP_5(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_3(V); }while(0) | 
|  | 
| #define | _SELP_6(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_4(V); }while(0) | 
|  | 
| #define | _SELP_7(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_5(V); }while(0) | 
|  | 
| #define | _SELP_8(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_6(V); }while(0) | 
|  | 
| #define | _SELP_9(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_7(V); }while(0) | 
|  | 
| #define | _SELP_10(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_8(V); }while(0) | 
|  | 
| #define | _SELP_11(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_9(V); }while(0) | 
|  | 
| #define | _SELP_12(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_10(V); }while(0) | 
|  | 
| #define | _SELP_13(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_11(V); }while(0) | 
|  | 
| #define | _SELP_14(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_12(V); }while(0) | 
|  | 
| #define | _SELP_15(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_13(V); }while(0) | 
|  | 
| #define | _SELP_16(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_14(V); }while(0) | 
|  | 
| #define | _SELP_17(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_15(V); }while(0) | 
|  | 
| #define | _SELP_18(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_16(V); }while(0) | 
|  | 
| #define | _SELP_19(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_17(V); }while(0) | 
|  | 
| #define | _SELP_20(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_18(V); }while(0) | 
|  | 
| #define | _SELP_21(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_19(V); }while(0) | 
|  | 
| #define | _SELP_22(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_20(V); }while(0) | 
|  | 
| #define | _SELP_23(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_21(V); }while(0) | 
|  | 
| #define | _SELP_24(a,  b,  V...)   do{ _SEP_2(a,b); _SELP_22(V); }while(0) | 
|  | 
| #define | SERIAL_ECHOLNPAIR(V...)   _SELP_N(NUM_ARGS(V),V) | 
|  | 
| #define | __SLST_N(N,  V...)   _SLST_##N(V) | 
|  | 
| #define | _SLST_N(N,  V...)   __SLST_N(N,V) | 
|  | 
| #define | _SLST_1(a)   SERIAL_ECHO(a) | 
|  | 
| #define | _SLST_2(a,  b)   do{ SERIAL_ECHO(a); SERIAL_ECHOPAIR(", ",b);     }while(0) | 
|  | 
| #define | _SLST_3(a,  b,  c)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_1(c);  }while(0) | 
|  | 
| #define | _SLST_4(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_2(V);  }while(0) | 
|  | 
| #define | _SLST_5(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_3(V);  }while(0) | 
|  | 
| #define | _SLST_6(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_4(V);  }while(0) | 
|  | 
| #define | _SLST_7(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_5(V);  }while(0) | 
|  | 
| #define | _SLST_8(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_6(V);  }while(0) | 
|  | 
| #define | _SLST_9(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_7(V);  }while(0) | 
|  | 
| #define | _SLST_10(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_8(V);  }while(0) | 
|  | 
| #define | _SLST_11(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_9(V);  }while(0) | 
|  | 
| #define | _SLST_12(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_10(V); }while(0) | 
|  | 
| #define | _SLST_13(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_11(V); }while(0) | 
|  | 
| #define | _SLST_14(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_12(V); }while(0) | 
|  | 
| #define | _SLST_15(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_13(V); }while(0) | 
|  | 
| #define | _SLST_16(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_14(V); }while(0) | 
|  | 
| #define | _SLST_17(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_15(V); }while(0) | 
|  | 
| #define | _SLST_18(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_16(V); }while(0) | 
|  | 
| #define | _SLST_19(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_17(V); }while(0) | 
|  | 
| #define | _SLST_20(a,  b,  V...)   do{ SERIAL_ECHO(a); _SEP_2(", ",b); _SLST_18(V); }while(0) | 
|  | 
| #define | SERIAL_ECHOLIST(pre,  V...)   do{ SERIAL_ECHOPGM(pre); _SLST_N(NUM_ARGS(V),V); }while(0) | 
|  | 
| #define | SERIAL_ECHOLIST_N(N,  V...)   _SLST_N(N,LIST_N(N,V)) | 
|  | 
| #define | SERIAL_ECHOPGM(S)   (serialprintPGM(PSTR(S))) | 
|  | 
| #define | SERIAL_ECHOLNPGM(S)   (serialprintPGM(PSTR(S "\n"))) | 
|  | 
| #define | SERIAL_ECHOPAIR_F(S,  V...)   do{ SERIAL_ECHOPGM(S); SERIAL_ECHO_F(V); }while(0) | 
|  | 
| #define | SERIAL_ECHOLNPAIR_F(V...)   do{ SERIAL_ECHOPAIR_F(V); SERIAL_EOL(); }while(0) | 
|  | 
| #define | SERIAL_ECHO_START()   serial_echo_start() | 
|  | 
| #define | SERIAL_ERROR_START()   serial_error_start() | 
|  | 
| #define | SERIAL_EOL()   SERIAL_CHAR('\n') | 
|  | 
| #define | SERIAL_ECHO_MSG(S)   do{ SERIAL_ECHO_START(); SERIAL_ECHOLNPGM(S); }while(0) | 
|  | 
| #define | SERIAL_ERROR_MSG(S)   do{ SERIAL_ERROR_START(); SERIAL_ECHOLNPGM(S); }while(0) | 
|  | 
| #define | SERIAL_ECHO_SP(C)   serial_spaces(C) | 
|  | 
| #define | SERIAL_ECHO_TERNARY(TF,  PRE,  ON,  OFF,  POST)   serial_ternary(TF, PSTR(PRE), PSTR(ON), PSTR(OFF), PSTR(POST)) | 
|  | 
| #define | SERIAL_POS(SUFFIX,  VAR)   do { print_xyz(VAR, PSTR("  " STRINGIFY(VAR) "="), PSTR(" : " SUFFIX "\n")); }while(0) | 
|  | 
| #define | SERIAL_XYZ(PREFIX,  V...)   do { print_xyz(V, PSTR(PREFIX), nullptr); }while(0) | 
|  |