@ -702,8 +702,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
# elif PROGRESS_MSG_EXPIRE < 0
# error "PROGRESS_MSG_EXPIRE must be greater than or equal to 0."
# endif
# elif ENABLED(LCD_SET_PROGRESS_MANUALLY) && NONE(HAS_MARLINUI_U8GLIB, HAS_GRAPHICAL_TFT, HAS_MARLINUI_HD44780, EXTENSIBLE_UI)
# elif ENABLED(LCD_SET_PROGRESS_MANUALLY)
# if NONE(HAS_MARLINUI_U8GLIB, HAS_GRAPHICAL_TFT, HAS_MARLINUI_HD44780, EXTENSIBLE_UI)
# error "LCD_SET_PROGRESS_MANUALLY requires LCD_PROGRESS_BAR, Character LCD, Graphical LCD, TFT, or EXTENSIBLE_UI."
# endif
# endif
# if !HAS_LCD_MENU && ENABLED(SD_REPRINT_LAST_SELECTED_FILE)
@ -843,7 +845,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
# error "ADVANCED_PAUSE_FEATURE requires FILAMENT_UNLOAD_PURGE_FEEDRATE. Please add it to Configuration_adv.h."
# elif ENABLED(EXTRUDER_RUNOUT_PREVENT)
# error "EXTRUDER_RUNOUT_PREVENT is incompatible with ADVANCED_PAUSE_FEATURE."
# elif ENABLED(PARK_HEAD_ON_PAUSE) && NONE(SDSUPPORT, NEWPANEL, EMERGENCY_PARSER)
# elif ENABLED(PARK_HEAD_ON_PAUSE) && NONE(SDSUPPORT, IS_ NEWPANEL, EMERGENCY_PARSER)
# error "PARK_HEAD_ON_PAUSE requires SDSUPPORT, EMERGENCY_PARSER, or an LCD controller."
# elif ENABLED(HOME_BEFORE_FILAMENT_CHANGE) && DISABLED(PAUSE_PARK_NO_STEPPER_TIMEOUT)
# error "HOME_BEFORE_FILAMENT_CHANGE requires PAUSE_PARK_NO_STEPPER_TIMEOUT."
@ -1026,15 +1028,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
/**
* Special tool - changing options
*/
# if 1 < 0 \
+ ENABLED ( SINGLENOZZLE ) \
+ ENABLED ( DUAL_X_CARRIAGE ) \
+ ENABLED ( PARKING_EXTRUDER ) \
+ ENABLED ( MAGNETIC_PARKING_EXTRUDER ) \
+ ENABLED ( SWITCHING_TOOLHEAD ) \
+ ENABLED ( MAGNETIC_SWITCHING_TOOLHEAD ) \
+ ENABLED ( ELECTROMAGNETIC_SWITCHING_TOOLHEAD )
# error "Please select only one of SINGLENOZZLE, DUAL_X_CARRIAGE, PARKING_EXTRUDER, SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, or ELECTROMAGNETIC_SWITCHING_TOOLHEAD."
# if MANY(SINGLENOZZLE, DUAL_X_CARRIAGE, PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER, SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
# error "Please select only one of SINGLENOZZLE, DUAL_X_CARRIAGE, PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER, SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, or ELECTROMAGNETIC_SWITCHING_TOOLHEAD."
# endif
/**
@ -1161,16 +1156,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
/**
* Allow only one kinematic type to be defined
*/
# if 1 < 0 \
+ ENABLED ( DELTA ) \
+ ENABLED ( MORGAN_SCARA ) \
+ ENABLED ( COREXY ) \
+ ENABLED ( COREXZ ) \
+ ENABLED ( COREYZ ) \
+ ENABLED ( COREYX ) \
+ ENABLED ( COREZX ) \
+ ENABLED ( COREZY ) \
+ ENABLED ( MARKFORGED_XY )
# if MANY(DELTA, MORGAN_SCARA, COREXY, COREXZ, COREYZ, COREYX, COREZX, COREZY, MARKFORGED_XY)
# error "Please enable only one of DELTA, MORGAN_SCARA, COREXY, COREYX, COREXZ, COREZX, COREYZ, COREZY, or MARKFORGED_XY."
# endif
@ -1210,18 +1196,9 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
* Allow only one probe option to be defined
*/
# if 1 < 0 \
+ ENABLED ( PROBE_MANUALLY ) \
+ ENABLED ( FIX_MOUNTED_PROBE ) \
+ ENABLED ( NOZZLE_AS_PROBE ) \
+ ( HAS_Z_SERVO_PROBE & & DISABLED ( BLTOUCH ) ) \
+ ENABLED ( BLTOUCH ) & & DISABLED ( CREALITY_TOUCH ) \
+ ENABLED ( CREALITY_TOUCH ) \
+ ENABLED ( TOUCH_MI_PROBE ) \
+ ENABLED ( SOLENOID_PROBE ) \
+ ENABLED ( Z_PROBE_ALLEN_KEY ) \
+ ENABLED ( Z_PROBE_SLED ) \
+ ENABLED ( RACK_AND_PINION_PROBE ) \
+ ENABLED ( SENSORLESS_PROBING )
+ ( DISABLED ( BLTOUCH ) & & HAS_Z_SERVO_PROBE ) \
+ ( ENABLED ( BLTOUCH ) & & DISABLED ( CREALITY_TOUCH ) ) \
+ COUNT_ENABLED ( PROBE_MANUALLY , FIX_MOUNTED_PROBE , NOZZLE_AS_PROBE , CREALITY_TOUCH , TOUCH_MI_PROBE , SOLENOID_PROBE , Z_PROBE_ALLEN_KEY , Z_PROBE_SLED , RACK_AND_PINION_PROBE , SENSORLESS_PROBING )
# error "Please enable only one probe option: PROBE_MANUALLY, SENSORLESS_PROBING, BLTOUCH, FIX_MOUNTED_PROBE, NOZZLE_AS_PROBE, TOUCH_MI_PROBE, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo."
# endif
@ -1391,12 +1368,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
/**
* Allow only one bed leveling option to be defined
*/
# if 1 < 0 \
+ ENABLED ( AUTO_BED_LEVELING_LINEAR ) \
+ ENABLED ( AUTO_BED_LEVELING_3POINT ) \
+ ENABLED ( AUTO_BED_LEVELING_BILINEAR ) \
+ ENABLED ( AUTO_BED_LEVELING_UBL ) \
+ ENABLED ( MESH_BED_LEVELING )
# if MANY(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL, MESH_BED_LEVELING)
# error "Select only one of: MESH_BED_LEVELING, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL."
# endif
@ -1558,8 +1530,8 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
/**
* ULTIPANEL encoder
*/
# if ENABLED(ULTIPANEL) && NONE( NEWPANEL, SR_LCD_2W_NL) && !defined(SHIFT_CLK)
# error "ULTIPANEL requires some kind of encoder."
# if IS_ULTIPANEL && NONE(IS_ NEWPANEL, SR_LCD_2W_NL) && !defined(SHIFT_CLK)
# error "ULTIPANEL controllers require some kind of encoder."
# endif
# if ENCODER_PULSES_PER_STEP < 0
@ -2237,89 +2209,100 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
* Make sure only one display is enabled
*/
# if 1 < 0 \
+ ( ENABLED ( REPRAP_DISCOUNT_SMART_CONTROLLER ) & & DISABLED ( IS_RRD_SC ) ) \
+ ( ENABLED ( REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER ) & & DISABLED ( IS_RRD_FG_SC ) ) \
+ ( ENABLED ( ULTRA_LCD ) & & DISABLED ( IS_ULTRA_LCD ) ) \
+ ENABLED ( REPRAP_DISCOUNT_SMART_CONTROLLER ) \
+ ENABLED ( REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER ) \
+ ENABLED ( ULTIPANEL ) \
+ ENABLED ( ULTRA_LCD ) \
+ ( ENABLED ( U8GLIB_SSD1306 ) & & DISABLED ( IS_U8GLIB_SSD1306 ) ) \
+ ( ENABLED ( MINIPANEL ) & & NONE ( MKS_MINI_12864 , ENDER2_STOCKDISPLAY ) ) \
+ ( ENABLED ( MKS_MINI_12864 ) & & DISABLED ( MKS_LCD12864 ) ) \
+ ( ENABLED ( EXTENSIBLE_UI ) & & DISABLED ( IS_EXTUI ) ) \
+ ( ENABLED ( ULTIPANEL ) & & DISABLED ( IS_ULTIPANEL ) ) \
+ ENABLED ( RADDS_DISPLAY ) \
+ ENABLED ( ULTIMAKERCONTROLLER ) \
+ ENABLED ( PANEL_ONE ) \
+ ( DISABLED ( IS_LEGACY_TFT ) & & ENABLED ( TFT_GENERIC ) ) \
+ ( ENABLED ( IS_LEGACY_TFT ) & & COUNT_ENABLED ( TFT_320x240 , TFT_320x240_SPI , TFT_480x320 , TFT_480x320_SPI ) ) \
+ COUNT_ENABLED ( ANYCUBIC_LCD_I3MEGA , ANYCUBIC_LCD_CHIRON , ANYCUBIC_TFT35 ) \
+ COUNT_ENABLED ( DGUS_LCD_UI_ORIGIN , DGUS_LCD_UI_FYSETC , DGUS_LCD_UI_HIPRECY ) \
+ COUNT_ENABLED ( ENDER2_STOCKDISPLAY , CR10_STOCKDISPLAY , DWIN_CREALITY_LCD ) \
+ COUNT_ENABLED ( FYSETC_MINI_12864_X_X , FYSETC_MINI_12864_1_2 , FYSETC_MINI_12864_2_0 , FYSETC_MINI_12864_2_1 , FYSETC_GENERIC_12864_1_1 ) \
+ COUNT_ENABLED ( LCD_SAINSMART_I2C_1602 , LCD_SAINSMART_I2C_2004 ) \
+ COUNT_ENABLED ( MKS_12864OLED , MKS_12864OLED_SSD1306 ) \
+ COUNT_ENABLED ( MKS_TS35_V2_0 , MKS_ROBIN_TFT24 , MKS_ROBIN_TFT28 , MKS_ROBIN_TFT32 , MKS_ROBIN_TFT35 , MKS_ROBIN_TFT43 , MKS_ROBIN_TFT_V1_1R ) \
+ COUNT_ENABLED ( TFTGLCD_PANEL_SPI , TFTGLCD_PANEL_I2C ) \
+ COUNT_ENABLED ( VIKI2 , miniVIKI ) \
+ COUNT_ENABLED ( ZONESTAR_12864LCD , ZONESTAR_12864OLED , ZONESTAR_12864OLED_SSD1306 ) \
+ ENABLED ( ANET_FULL_GRAPHICS_LCD ) \
+ ENABLED ( AZSMZ_12864 ) \
+ ENABLED ( BQ_LCD_SMART_CONTROLLER ) \
+ ENABLED ( CARTESIO_UI ) \
+ ENABLED ( ELB_FULL_GRAPHIC_CONTROLLER ) \
+ ENABLED ( FF_INTERFACEBOARD ) \
+ ENABLED ( FYSETC_242_OLED_12864 ) \
+ ENABLED ( G3D_PANEL ) \
+ ENABLED ( RIGIDBOT_PANEL ) \
+ ENABLED ( MAKEBOARD_MINI_2_LINE_DISPLAY_1602 ) \
+ ENABLED ( ZONESTAR_LCD ) \
+ ENABLED ( RA_CONTROL_PANEL ) \
+ ENABLED ( LCD_SAINSMART_I2C_1602 ) \
+ ENABLED ( LCD_SAINSMART_I2C_2004 ) \
+ ENABLED ( LCM1602 ) \
+ ENABLED ( LCD_FOR_MELZI ) \
+ ENABLED ( LCD_I2C_PANELOLU2 ) \
+ ENABLED ( LCD_I2C_VIKI ) \
+ ENABLED ( SAV_3DLCD ) \
+ ENABLED ( FF_INTERFACEBOARD ) \
+ ENABLED ( REPRAPWORLD_GRAPHICAL_LCD ) \
+ ENABLED ( VIKI2 ) \
+ ENABLED ( miniVIKI ) \
+ ENABLED ( LCM1602 ) \
+ ENABLED ( LONGER_LK_TFT28 ) \
+ ENABLED ( MAKEBOARD_MINI_2_LINE_DISPLAY_1602 ) \
+ ENABLED ( MAKRPANEL ) \
+ ENABLED ( ELB_FULL_GRAPHIC_CONTROLLER ) \
+ ENABLED ( BQ_LCD_SMART_CONTROLLER ) \
+ ENABLED ( CARTESIO_UI ) \
+ ENABLED ( LCD_FOR_MELZI ) \
+ ENABLED ( ULTI_CONTROLLER ) \
+ ENABLED ( MALYAN_LCD ) \
+ ENABLED ( MKS_LCD12864 ) \
+ ENABLED ( ENDER2_STOCKDISPLAY ) \
+ ENABLED ( FYSETC_MINI_12864_X_X ) \
+ ENABLED ( FYSETC_MINI_12864_1_2 ) \
+ ENABLED ( FYSETC_MINI_12864_2_0 ) \
+ ENABLED ( FYSETC_MINI_12864_2_1 ) \
+ ENABLED ( FYSETC_GENERIC_12864_1_1 ) \
+ ENABLED ( CR10_STOCKDISPLAY ) \
+ ENABLED ( DWIN_CREALITY_LCD ) \
+ ENABLED ( ANET_FULL_GRAPHICS_LCD ) \
+ ENABLED ( AZSMZ_12864 ) \
+ ENABLED ( SILVER_GATE_GLCD_CONTROLLER ) \
+ ENABLED ( SAV_3DGLCD ) \
+ ENABLED ( OLED_PANEL_TINYBOY2 ) \
+ ENABLED ( MKS_12864OLED ) \
+ ENABLED ( MKS_12864OLED_SSD1306 ) \
+ ENABLED ( ZONESTAR_12864LCD ) \
+ ENABLED ( ZONESTAR_12864OLED ) \
+ ENABLED ( ZONESTAR_12864OLED_SSD1306 ) \
+ ENABLED ( U8GLIB_SH1106_EINSTART ) \
+ ENABLED ( OVERLORD_OLED ) \
+ ENABLED ( FYSETC_242_OLED_12864 ) \
+ ENABLED ( DGUS_LCD_UI_ORIGIN ) \
+ ENABLED ( DGUS_LCD_UI_FYSETC ) \
+ ENABLED ( DGUS_LCD_UI_HIPRECY ) \
+ ENABLED ( MALYAN_LCD ) \
+ ENABLED ( PANEL_ONE ) \
+ ENABLED ( RA_CONTROL_PANEL ) \
+ ENABLED ( RADDS_DISPLAY ) \
+ ENABLED ( REPRAPWORLD_GRAPHICAL_LCD ) \
+ ENABLED ( RIGIDBOT_PANEL ) \
+ ENABLED ( SAV_3DGLCD ) \
+ ENABLED ( SAV_3DLCD ) \
+ ENABLED ( SILVER_GATE_GLCD_CONTROLLER ) \
+ ENABLED ( TFT_TRONXY_X5SA ) \
+ ENABLED ( TOUCH_UI_FTDI_EVE ) \
+ ENABLED ( TFT_320x240 ) \
+ ENABLED ( TFT_320x240_SPI ) \
+ ENABLED ( FSMC_GRAPHICAL_TFT ) \
+ ENABLED ( TFT_LVGL_UI_FSMC ) \
+ ENABLED ( TFT_LVGL_UI_SPI ) \
+ ENABLED ( ANYCUBIC_LCD_I3MEGA ) \
+ ENABLED ( ANYCUBIC_LCD_CHIRON ) \
+ ENABLED ( TFTGLCD_PANEL_SPI ) \
+ ENABLED ( TFTGLCD_PANEL_I2C )
+ ENABLED ( U8GLIB_SH1106_EINSTART ) \
+ ENABLED ( ULTI_CONTROLLER ) \
+ ENABLED ( ULTIMAKERCONTROLLER ) \
+ ENABLED ( ZONESTAR_LCD )
# error "Please select only one LCD controller option."
# endif
# undef IS_RRD_SC
# undef IS_RRD_FG_SC
# undef IS_ULTRA_LCD
# undef IS_U8GLIB_SSD1306
# undef IS_RRW_KEYPAD
# undef IS_EXTUI
# undef IS_ULTIPANEL
# undef IS_LEGACY_TFT
# if ANY(TFT_GENERIC, MKS_TS35_V2_0, MKS_ROBIN_TFT24, MKS_ROBIN_TFT28, MKS_ROBIN_TFT32, MKS_ROBIN_TFT35, MKS_ROBIN_TFT43, MKS_ROBIN_TFT_V1_1R, TFT_TRONXY_X5SA, ANYCUBIC_TFT35, ANYCUBIC_TFT35, LONGER_LK_TFT28)
# if NONE(TFT_COLOR_UI, TFT_CLASSIC_UI, TFT_LVGL_UI)
# error "TFT_COLOR_UI, TFT_CLASSIC_UI, TFT_LVGL_UI is required for your TFT. Please enable one."
# elif 1 < ENABLED(TFT_COLOR_UI) + ENABLED(TFT_CLASSIC_UI) + ENABLED(TFT_LVGL_UI)
# error "Please select only one of TFT_COLOR_UI, TFT_CLASSIC_UI, or TFT_LVGL_UI."
# endif
# elif ANY(TFT_COLOR_UI, TFT_CLASSIC_UI, TFT_LVGL_UI)
# error "TFT_(COLOR|CLASSIC|LVGL)_UI requires a TFT display to be enabled."
# endif
# if ENABLED(TFT_GENERIC) && NONE(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI)
# error "TFT_GENERIC requires either TFT_INTERFACE_FSMC or TFT_INTERFACE_SPI interface."
# endif
# if 1 < ENABLED(LCD_SCREEN_ROT_0) + ENABLED(LCD_SCREEN_ROT_90) + ENABLED(LCD_SCREEN_ROT_180) + ENABLED(LCD_SCREEN_ROT_270)
# if BOTH(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI)
# error "Please enable only one of TFT_INTERFACE_SPI or TFT_INTERFACE_SPI."
# endif
# if MANY(LCD_SCREEN_ROT_0, LCD_SCREEN_ROT_90, LCD_SCREEN_ROT_180, LCD_SCREEN_ROT_270)
# error "Please enable only one LCD_SCREEN_ROT_* option: 0, 90, 180, or 270."
# endif
# if MANY(TFT_RES_320x240, TFT_RES_480x272, TFT_RES_480x320)
# error "Please select only one of TFT_RES_480x320, TFT_RES_480x320, or TFT_RES_480x272."
# endif
# if HAS_TFT_LVGL_UI && DISABLED(TFT_RES_480x320)
# error "(FMSC|SPI)TFT_LVGL_UI requires TFT_RES_480x320."
# endif
# if defined(GRAPHICAL_TFT_UPSCALE) && !WITHIN(GRAPHICAL_TFT_UPSCALE, 2, 3)
# error "GRAPHICAL_TFT_UPSCALE must be set to 2 or 3."
# endif
/**
* Serial displays require a dedicated serial port
*/
@ -2756,7 +2739,7 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
# error "BLOCK_BUFFER_SIZE must be a power of 2."
# endif
# if ENABLED(LED_CONTROL_MENU) && DISABLED(ULTIPANEL)
# if ENABLED(LED_CONTROL_MENU) && !IS_ULTIPANEL
# error "LED_CONTROL_MENU requires an LCD controller."
# endif