|
|
|
@ -522,95 +522,148 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
|
|
|
|
|
#if ENABLED(CUSTOM_USER_BUTTONS)
|
|
|
|
|
// Handle a custom user button if defined
|
|
|
|
|
const bool printer_not_busy = !printingIsActive();
|
|
|
|
|
#define HAS_CUSTOM_USER_BUTTON(N) (PIN_EXISTS(BUTTON##N) && defined(BUTTON##N##_HIT_STATE) && defined(BUTTON##N##_GCODE) && defined(BUTTON##N##_DESC))
|
|
|
|
|
#define CHECK_CUSTOM_USER_BUTTON(N) do{ \
|
|
|
|
|
const millis_t ms = millis();
|
|
|
|
|
#define HAS_CUSTOM_USER_BUTTON(N) (PIN_EXISTS(BUTTON##N) && defined(BUTTON##N##_HIT_STATE) && defined(BUTTON##N##_GCODE))
|
|
|
|
|
#define HAS_BETTER_USER_BUTTON(N) HAS_CUSTOM_USER_BUTTON(N) && defined(BUTTON##N##_DESC)
|
|
|
|
|
#define _CHECK_CUSTOM_USER_BUTTON(N, CODE) do{ \
|
|
|
|
|
constexpr millis_t CUB_DEBOUNCE_DELAY_##N = 250UL; \
|
|
|
|
|
static millis_t next_cub_ms_##N; \
|
|
|
|
|
if (BUTTON##N##_HIT_STATE == READ(BUTTON##N##_PIN) \
|
|
|
|
|
&& (ENABLED(BUTTON##N##_WHEN_PRINTING) || printer_not_busy)) { \
|
|
|
|
|
const millis_t ms = millis(); \
|
|
|
|
|
if (ELAPSED(ms, next_cub_ms_##N)) { \
|
|
|
|
|
next_cub_ms_##N = ms + CUB_DEBOUNCE_DELAY_##N; \
|
|
|
|
|
if (strlen(BUTTON##N##_DESC)) \
|
|
|
|
|
LCD_MESSAGEPGM_P(PSTR(BUTTON##N##_DESC)); \
|
|
|
|
|
CODE; \
|
|
|
|
|
queue.inject_P(PSTR(BUTTON##N##_GCODE)); \
|
|
|
|
|
} \
|
|
|
|
|
} \
|
|
|
|
|
}while(0)
|
|
|
|
|
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(1)
|
|
|
|
|
#define CHECK_CUSTOM_USER_BUTTON(N) _CHECK_CUSTOM_USER_BUTTON(N, NOOP)
|
|
|
|
|
#define CHECK_BETTER_USER_BUTTON(N) _CHECK_CUSTOM_USER_BUTTON(N, if (strlen(BUTTON##N##_DESC)) LCD_MESSAGEPGM_P(PSTR(BUTTON##N##_DESC)))
|
|
|
|
|
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(1)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(1);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(1)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(1);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(2)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(2)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(2);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(2)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(2);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(3)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(3)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(3);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(3)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(3);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(4)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(4)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(4);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(4)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(4);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(5)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(5)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(5);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(5)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(5);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(6)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(6)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(6);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(6)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(6);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(7)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(7)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(7);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(7)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(7);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(8)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(8)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(8);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(8)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(8);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(9)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(9)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(9);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(9)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(9);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(10)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(10)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(10);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(10)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(10);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(11)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(11)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(11);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(11)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(11);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(12)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(12)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(12);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(12)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(12);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(13)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(13)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(13);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(13)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(13);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(14)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(14)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(14);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(14)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(14);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(15)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(15)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(15);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(15)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(15);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(16)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(16)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(16);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(16)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(16);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(17)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(17)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(17);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(17)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(17);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(18)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(18)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(18);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(18)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(18);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(19)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(19)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(19);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(19)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(19);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(20)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(20)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(20);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(20)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(20);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(21)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(21)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(21);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(21)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(21);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(22)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(22)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(22);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(22)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(22);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(23)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(23)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(23);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(23)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(23);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(24)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(24)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(24);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(24)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(24);
|
|
|
|
|
#endif
|
|
|
|
|
#if HAS_CUSTOM_USER_BUTTON(25)
|
|
|
|
|
#if HAS_BETTER_USER_BUTTON(25)
|
|
|
|
|
CHECK_BETTER_USER_BUTTON(25);
|
|
|
|
|
#elif HAS_CUSTOM_USER_BUTTON(25)
|
|
|
|
|
CHECK_CUSTOM_USER_BUTTON(25);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|