Extended condition macros (#13419)
Allow `ENABLED`, `DISABLED`, `PIN_EXISTS`, and `BUTTON_EXISTS` to take multiple arguments. Also add: - Alias `ANY(...)` for `!DISABLED(...)` - Alias `ANY_PIN(...)` for `PIN_EXISTS(a) || PIN_EXISTS(b) ...` - Alias `EITHER(A,B)` for `ANY(...)` - Alias `ALL(...)` and `BOTH(A,B)` for `ENABLED(...)` - `NONE(...)` for `DISABLED(...)`
This commit is contained in:
@ -27,18 +27,13 @@
|
||||
#include "../libs/buzzer.h"
|
||||
#endif
|
||||
|
||||
#define HAS_DIGITAL_BUTTONS (!HAS_ADC_BUTTONS && ENABLED(NEWPANEL) \
|
||||
|| (BUTTON_EXISTS(EN1) && BUTTON_EXISTS(EN2)) \
|
||||
|| BUTTON_EXISTS(ENC) || BUTTON_EXISTS(BACK) \
|
||||
|| BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) \
|
||||
|| BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT))
|
||||
|
||||
#define HAS_DIGITAL_BUTTONS (!HAS_ADC_BUTTONS && ENABLED(NEWPANEL) || BUTTON_EXISTS(EN1, EN2) || ANY_BUTTON(ENC, BACK, UP, DWN, LFT, RT))
|
||||
#define HAS_SHIFT_ENCODER (!HAS_ADC_BUTTONS && (ENABLED(REPRAPWORLD_KEYPAD) || (HAS_SPI_LCD && DISABLED(NEWPANEL))))
|
||||
#define HAS_ENCODER_WHEEL ((!HAS_ADC_BUTTONS && ENABLED(NEWPANEL)) || (BUTTON_EXISTS(EN1) && BUTTON_EXISTS(EN2)) )
|
||||
#define HAS_ENCODER_WHEEL ((!HAS_ADC_BUTTONS && ENABLED(NEWPANEL)) || BUTTON_EXISTS(EN1, EN2))
|
||||
#define HAS_ENCODER_ACTION (HAS_LCD_MENU || ENABLED(ULTIPANEL_FEEDMULTIPLY))
|
||||
|
||||
// I2C buttons must be read in the main thread
|
||||
#define HAS_SLOW_BUTTONS (ENABLED(LCD_I2C_VIKI) || ENABLED(LCD_I2C_PANELOLU2))
|
||||
#define HAS_SLOW_BUTTONS EITHER(LCD_I2C_VIKI, LCD_I2C_PANELOLU2)
|
||||
|
||||
#if HAS_SPI_LCD
|
||||
|
||||
@ -188,7 +183,7 @@
|
||||
#else
|
||||
|
||||
#undef BUTTON_EXISTS
|
||||
#define BUTTON_EXISTS(BN) false
|
||||
#define BUTTON_EXISTS(...) false
|
||||
|
||||
// Shift register bits correspond to buttons:
|
||||
#define BL_LE 7 // Left
|
||||
@ -267,7 +262,7 @@ public:
|
||||
static void clear_lcd();
|
||||
static void init_lcd();
|
||||
|
||||
#if HAS_SPI_LCD || ENABLED(MALYAN_LCD) || ENABLED(EXTENSIBLE_UI)
|
||||
#if HAS_SPI_LCD || EITHER(MALYAN_LCD, EXTENSIBLE_UI)
|
||||
static void init();
|
||||
static void update();
|
||||
static void set_alert_status_P(PGM_P message);
|
||||
@ -343,7 +338,7 @@ public:
|
||||
static inline void refresh_contrast() { set_contrast(contrast); }
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY) && ENABLED(SDSUPPORT)
|
||||
#if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
|
||||
static millis_t next_filament_display;
|
||||
#endif
|
||||
|
||||
@ -466,13 +461,13 @@ public:
|
||||
|
||||
#endif
|
||||
|
||||
#if ENABLED(LCD_BED_LEVELING) && (ENABLED(PROBE_MANUALLY) || ENABLED(MESH_BED_LEVELING))
|
||||
#if ENABLED(LCD_BED_LEVELING) && EITHER(PROBE_MANUALLY, MESH_BED_LEVELING)
|
||||
static bool wait_for_bl_move;
|
||||
#else
|
||||
static constexpr bool wait_for_bl_move = false;
|
||||
#endif
|
||||
|
||||
#if HAS_LCD_MENU && (ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(G26_MESH_VALIDATION))
|
||||
#if HAS_LCD_MENU && EITHER(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION)
|
||||
static bool external_control;
|
||||
FORCE_INLINE static void capture() { external_control = true; }
|
||||
FORCE_INLINE static void release() { external_control = false; }
|
||||
@ -493,7 +488,7 @@ public:
|
||||
#endif
|
||||
static void update_buttons();
|
||||
static inline bool button_pressed() { return BUTTON_CLICK(); }
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(G26_MESH_VALIDATION)
|
||||
#if EITHER(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION)
|
||||
static void wait_for_release();
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user