Update indentation, file-wrapping for Marlin 2.0.x

This commit is contained in:
Scott Lahteine 2017-10-19 00:43:07 -05:00
parent 60af705e6d
commit 4e2baeb3e1
4 changed files with 1359 additions and 1347 deletions

View file

@ -28,9 +28,9 @@
#ifndef CONDITIONALS_LCD_H // Get the LCD defines which are needed first #ifndef CONDITIONALS_LCD_H // Get the LCD defines which are needed first
#define CONDITIONALS_LCD_H #define CONDITIONALS_LCD_H
#define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT)) #define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT))
#if ENABLED(CARTESIO_UI) #if ENABLED(CARTESIO_UI)
#define DOGLCD #define DOGLCD
#define ULTIPANEL #define ULTIPANEL
@ -38,11 +38,11 @@
#define LCD_CONTRAST_MIN 60 #define LCD_CONTRAST_MIN 60
#define LCD_CONTRAST_MAX 140 #define LCD_CONTRAST_MAX 140
#elif ENABLED(MAKRPANEL) #elif ENABLED(MAKRPANEL)
#define U8GLIB_ST7565_64128N #define U8GLIB_ST7565_64128N
#elif ENABLED(ANET_KEYPAD_LCD) #elif ENABLED(ANET_KEYPAD_LCD)
#define REPRAPWORLD_KEYPAD #define REPRAPWORLD_KEYPAD
#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 #define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
@ -55,15 +55,15 @@
#define ENCODER_STEPS_PER_MENU_ITEM 1 #define ENCODER_STEPS_PER_MENU_ITEM 1
#define REVERSE_MENU_DIRECTION #define REVERSE_MENU_DIRECTION
#elif ENABLED(ANET_FULL_GRAPHICS_LCD) #elif ENABLED(ANET_FULL_GRAPHICS_LCD)
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
#elif ENABLED(BQ_LCD_SMART_CONTROLLER) #elif ENABLED(BQ_LCD_SMART_CONTROLLER)
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
#elif ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) || ENABLED(AZSMZ_12864) #elif ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) || ENABLED(AZSMZ_12864)
#define ULTRA_LCD //general LCD support, also 16x2 #define ULTRA_LCD //general LCD support, also 16x2
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
@ -92,26 +92,26 @@
#define U8GLIB_ST7565_64128N #define U8GLIB_ST7565_64128N
#endif #endif
#elif ENABLED(OLED_PANEL_TINYBOY2) #elif ENABLED(OLED_PANEL_TINYBOY2)
#define U8GLIB_SSD1306 #define U8GLIB_SSD1306
#define ULTIPANEL #define ULTIPANEL
#define REVERSE_ENCODER_DIRECTION #define REVERSE_ENCODER_DIRECTION
#define REVERSE_MENU_DIRECTION #define REVERSE_MENU_DIRECTION
#elif ENABLED(RA_CONTROL_PANEL) #elif ENABLED(RA_CONTROL_PANEL)
#define LCD_I2C_TYPE_PCA8574 #define LCD_I2C_TYPE_PCA8574
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
#define ULTIPANEL #define ULTIPANEL
#elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD) #elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
#define DOGLCD #define DOGLCD
#define U8GLIB_ST7920 #define U8GLIB_ST7920
#define ULTIPANEL #define ULTIPANEL
#elif ENABLED(CR10_STOCKDISPLAY) #elif ENABLED(CR10_STOCKDISPLAY)
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
#ifndef ST7920_DELAY_1 #ifndef ST7920_DELAY_1
@ -124,66 +124,66 @@
#define ST7920_DELAY_3 DELAY_2_NOP #define ST7920_DELAY_3 DELAY_2_NOP
#endif #endif
#elif ENABLED(MKS_12864OLED) #elif ENABLED(MKS_12864OLED)
#define REPRAP_DISCOUNT_SMART_CONTROLLER #define REPRAP_DISCOUNT_SMART_CONTROLLER
#define U8GLIB_SH1106 #define U8GLIB_SH1106
#elif ENABLED(MKS_MINI_12864) #elif ENABLED(MKS_MINI_12864)
#define MINIPANEL #define MINIPANEL
#endif #endif
#if ENABLED(MAKRPANEL) || ENABLED(MINIPANEL) #if ENABLED(MAKRPANEL) || ENABLED(MINIPANEL)
#define DOGLCD #define DOGLCD
#define ULTIPANEL #define ULTIPANEL
#define DEFAULT_LCD_CONTRAST 17 #define DEFAULT_LCD_CONTRAST 17
#endif #endif
// Generic support for SSD1306 / SH1106 OLED based LCDs. // Generic support for SSD1306 / SH1106 OLED based LCDs.
#if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SH1106) #if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SH1106)
#define ULTRA_LCD //general LCD support, also 16x2 #define ULTRA_LCD //general LCD support, also 16x2
#define DOGLCD // Support for I2C LCD 128x64 (Controller SSD1306 / SH1106 graphic Display Family) #define DOGLCD // Support for I2C LCD 128x64 (Controller SSD1306 / SH1106 graphic Display Family)
#endif #endif
#if ENABLED(PANEL_ONE) || ENABLED(U8GLIB_SH1106) #if ENABLED(PANEL_ONE) || ENABLED(U8GLIB_SH1106)
#define ULTIMAKERCONTROLLER #define ULTIMAKERCONTROLLER
#elif ENABLED(MAKEBOARD_MINI_2_LINE_DISPLAY_1602) #elif ENABLED(MAKEBOARD_MINI_2_LINE_DISPLAY_1602)
#define REPRAP_DISCOUNT_SMART_CONTROLLER #define REPRAP_DISCOUNT_SMART_CONTROLLER
#define LCD_WIDTH 16 #define LCD_WIDTH 16
#define LCD_HEIGHT 2 #define LCD_HEIGHT 2
#endif #endif
#if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) || ENABLED(LCD_FOR_MELZI) #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) || ENABLED(LCD_FOR_MELZI)
#define DOGLCD #define DOGLCD
#define U8GLIB_ST7920 #define U8GLIB_ST7920
#define REPRAP_DISCOUNT_SMART_CONTROLLER #define REPRAP_DISCOUNT_SMART_CONTROLLER
#endif #endif
#if ENABLED(ULTIMAKERCONTROLLER) \ #if ENABLED(ULTIMAKERCONTROLLER) \
|| ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) \ || ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) \
|| ENABLED(G3D_PANEL) \ || ENABLED(G3D_PANEL) \
|| ENABLED(RIGIDBOT_PANEL) || ENABLED(RIGIDBOT_PANEL)
#define ULTIPANEL #define ULTIPANEL
#endif #endif
#if ENABLED(REPRAPWORLD_KEYPAD) #if ENABLED(REPRAPWORLD_KEYPAD)
#define NEWPANEL #define NEWPANEL
#if ENABLED(ULTIPANEL) && !defined(REPRAPWORLD_KEYPAD_MOVE_STEP) #if ENABLED(ULTIPANEL) && !defined(REPRAPWORLD_KEYPAD_MOVE_STEP)
#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 #define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
#endif #endif
#endif #endif
/** /**
* I2C PANELS * I2C PANELS
*/ */
#if ENABLED(LCD_I2C_SAINSMART_YWROBOT) #if ENABLED(LCD_I2C_SAINSMART_YWROBOT)
// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library // Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
@ -192,7 +192,7 @@
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
#define ULTIPANEL #define ULTIPANEL
#elif ENABLED(LCD_I2C_PANELOLU2) #elif ENABLED(LCD_I2C_PANELOLU2)
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs // PANELOLU2 LCD with status LEDs, separate encoder and click inputs
@ -201,7 +201,7 @@
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
#define ULTIPANEL #define ULTIPANEL
#elif ENABLED(LCD_I2C_VIKI) #elif ENABLED(LCD_I2C_VIKI)
/** /**
* Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs * Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
@ -221,12 +221,12 @@
#define STD_ENCODER_PULSES_PER_STEP 1 #define STD_ENCODER_PULSES_PER_STEP 1
#define STD_ENCODER_STEPS_PER_MENU_ITEM 2 #define STD_ENCODER_STEPS_PER_MENU_ITEM 2
#elif ENABLED(G3D_PANEL) #elif ENABLED(G3D_PANEL)
#define STD_ENCODER_PULSES_PER_STEP 2 #define STD_ENCODER_PULSES_PER_STEP 2
#define STD_ENCODER_STEPS_PER_MENU_ITEM 1 #define STD_ENCODER_STEPS_PER_MENU_ITEM 1
#elif ENABLED(miniVIKI) || ENABLED(VIKI2) \ #elif ENABLED(miniVIKI) || ENABLED(VIKI2) \
|| ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) \ || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) \
|| ENABLED(AZSMZ_12864) \ || ENABLED(AZSMZ_12864) \
|| ENABLED(OLED_PANEL_TINYBOY2) \ || ENABLED(OLED_PANEL_TINYBOY2) \
@ -235,44 +235,44 @@
|| ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) || ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER)
#define STD_ENCODER_PULSES_PER_STEP 4 #define STD_ENCODER_PULSES_PER_STEP 4
#define STD_ENCODER_STEPS_PER_MENU_ITEM 1 #define STD_ENCODER_STEPS_PER_MENU_ITEM 1
#endif #endif
#ifndef STD_ENCODER_PULSES_PER_STEP #ifndef STD_ENCODER_PULSES_PER_STEP
#define STD_ENCODER_PULSES_PER_STEP 5 #define STD_ENCODER_PULSES_PER_STEP 5
#endif #endif
#ifndef STD_ENCODER_STEPS_PER_MENU_ITEM #ifndef STD_ENCODER_STEPS_PER_MENU_ITEM
#define STD_ENCODER_STEPS_PER_MENU_ITEM 1 #define STD_ENCODER_STEPS_PER_MENU_ITEM 1
#endif #endif
#ifndef ENCODER_PULSES_PER_STEP #ifndef ENCODER_PULSES_PER_STEP
#define ENCODER_PULSES_PER_STEP STD_ENCODER_PULSES_PER_STEP #define ENCODER_PULSES_PER_STEP STD_ENCODER_PULSES_PER_STEP
#endif #endif
#ifndef ENCODER_STEPS_PER_MENU_ITEM #ifndef ENCODER_STEPS_PER_MENU_ITEM
#define ENCODER_STEPS_PER_MENU_ITEM STD_ENCODER_STEPS_PER_MENU_ITEM #define ENCODER_STEPS_PER_MENU_ITEM STD_ENCODER_STEPS_PER_MENU_ITEM
#endif #endif
#ifndef ENCODER_FEEDRATE_DEADZONE #ifndef ENCODER_FEEDRATE_DEADZONE
#define ENCODER_FEEDRATE_DEADZONE 6 #define ENCODER_FEEDRATE_DEADZONE 6
#endif #endif
// Shift register panels // Shift register panels
// --------------------- // ---------------------
// 2 wire Non-latching LCD SR from: // 2 wire Non-latching LCD SR from:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
#if ENABLED(SAV_3DLCD) #if ENABLED(SAV_3DLCD)
#define SR_LCD_2W_NL // Non latching 2 wire shift register #define SR_LCD_2W_NL // Non latching 2 wire shift register
#define ULTIPANEL #define ULTIPANEL
#endif #endif
#if ENABLED(DOGLCD) // Change number of lines to match the DOG graphic display #if ENABLED(DOGLCD) // Change number of lines to match the DOG graphic display
#ifndef LCD_WIDTH #ifndef LCD_WIDTH
#define LCD_WIDTH 22 #define LCD_WIDTH 22
#endif #endif
#ifndef LCD_HEIGHT #ifndef LCD_HEIGHT
#define LCD_HEIGHT 5 #define LCD_HEIGHT 5
#endif #endif
#endif #endif
#if ENABLED(ULTIPANEL) #if ENABLED(ULTIPANEL)
#define NEWPANEL // Disable this if you actually have no click-encoder panel #define NEWPANEL // Disable this if you actually have no click-encoder panel
#define ULTRA_LCD #define ULTRA_LCD
#ifndef LCD_WIDTH #ifndef LCD_WIDTH
@ -281,16 +281,16 @@
#ifndef LCD_HEIGHT #ifndef LCD_HEIGHT
#define LCD_HEIGHT 4 #define LCD_HEIGHT 4
#endif #endif
#elif ENABLED(ULTRA_LCD) // no panel but just LCD #elif ENABLED(ULTRA_LCD) // no panel but just LCD
#ifndef LCD_WIDTH #ifndef LCD_WIDTH
#define LCD_WIDTH 16 #define LCD_WIDTH 16
#endif #endif
#ifndef LCD_HEIGHT #ifndef LCD_HEIGHT
#define LCD_HEIGHT 2 #define LCD_HEIGHT 2
#endif #endif
#endif #endif
#if ENABLED(DOGLCD) #if ENABLED(DOGLCD)
/* Custom characters defined in font dogm_font_data_Marlin_symbols.h / Marlin_symbols.fon */ /* Custom characters defined in font dogm_font_data_Marlin_symbols.h / Marlin_symbols.fon */
// \x00 intentionally skipped to avoid problems in strings // \x00 intentionally skipped to avoid problems in strings
#define LCD_STR_REFRESH "\x01" #define LCD_STR_REFRESH "\x01"
@ -310,7 +310,7 @@
// Symbol characters // Symbol characters
#define LCD_STR_FILAM_DIA "\xf8" #define LCD_STR_FILAM_DIA "\xf8"
#define LCD_STR_FILAM_MUL "\xa4" #define LCD_STR_FILAM_MUL "\xa4"
#else #else
/* Custom characters defined in the first 8 characters of the LCD */ /* Custom characters defined in the first 8 characters of the LCD */
#define LCD_BEDTEMP_CHAR 0x00 // Print only as a char. This will have 'unexpected' results when used in a string! #define LCD_BEDTEMP_CHAR 0x00 // Print only as a char. This will have 'unexpected' results when used in a string!
#define LCD_DEGREE_CHAR 0x01 #define LCD_DEGREE_CHAR 0x01
@ -321,12 +321,12 @@
#define LCD_FEEDRATE_CHAR 0x06 #define LCD_FEEDRATE_CHAR 0x06
#define LCD_CLOCK_CHAR 0x07 #define LCD_CLOCK_CHAR 0x07
#define LCD_STR_ARROW_RIGHT ">" /* from the default character set */ #define LCD_STR_ARROW_RIGHT ">" /* from the default character set */
#endif #endif
/** /**
* Default LCD contrast for dogm-like LCD displays * Default LCD contrast for dogm-like LCD displays
*/ */
#if ENABLED(DOGLCD) #if ENABLED(DOGLCD)
#define HAS_LCD_CONTRAST ( \ #define HAS_LCD_CONTRAST ( \
ENABLED(MAKRPANEL) \ ENABLED(MAKRPANEL) \
@ -348,23 +348,23 @@
#define DEFAULT_LCD_CONTRAST 32 #define DEFAULT_LCD_CONTRAST 32
#endif #endif
#endif #endif
#endif #endif
// Boot screens // Boot screens
#if DISABLED(ULTRA_LCD) #if DISABLED(ULTRA_LCD)
#undef SHOW_BOOTSCREEN #undef SHOW_BOOTSCREEN
#elif !defined(BOOTSCREEN_TIMEOUT) #elif !defined(BOOTSCREEN_TIMEOUT)
#define BOOTSCREEN_TIMEOUT 2500 #define BOOTSCREEN_TIMEOUT 2500
#endif #endif
#define HAS_DEBUG_MENU ENABLED(LCD_PROGRESS_BAR_TEST) #define HAS_DEBUG_MENU ENABLED(LCD_PROGRESS_BAR_TEST)
// MK2 Multiplexer forces SINGLENOZZLE to be enabled // MK2 Multiplexer forces SINGLENOZZLE to be enabled
#if ENABLED(MK2_MULTIPLEXER) #if ENABLED(MK2_MULTIPLEXER)
#define SINGLENOZZLE #define SINGLENOZZLE
#endif #endif
/** /**
* Extruders have some combination of stepper motors and hotends * Extruders have some combination of stepper motors and hotends
* so we separate these concepts into the defines: * so we separate these concepts into the defines:
* *
@ -375,27 +375,27 @@
* TOOL_E_INDEX - Index to use when getting/setting the tool state * TOOL_E_INDEX - Index to use when getting/setting the tool state
* *
*/ */
#if ENABLED(SINGLENOZZLE) || ENABLED(MIXING_EXTRUDER) // One hotend, one thermistor, no XY offset #if ENABLED(SINGLENOZZLE) || ENABLED(MIXING_EXTRUDER) // One hotend, one thermistor, no XY offset
#define HOTENDS 1 #define HOTENDS 1
#undef TEMP_SENSOR_1_AS_REDUNDANT #undef TEMP_SENSOR_1_AS_REDUNDANT
#undef HOTEND_OFFSET_X #undef HOTEND_OFFSET_X
#undef HOTEND_OFFSET_Y #undef HOTEND_OFFSET_Y
#else // Two hotends #else // Two hotends
#define HOTENDS EXTRUDERS #define HOTENDS EXTRUDERS
#if ENABLED(SWITCHING_NOZZLE) && !defined(HOTEND_OFFSET_Z) #if ENABLED(SWITCHING_NOZZLE) && !defined(HOTEND_OFFSET_Z)
#define HOTEND_OFFSET_Z { 0 } #define HOTEND_OFFSET_Z { 0 }
#endif #endif
#endif #endif
#define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++) #define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++)
#if HOTENDS == 1 #if HOTENDS == 1
#define HOTEND_INDEX 0 #define HOTEND_INDEX 0
#else #else
#define HOTEND_INDEX e #define HOTEND_INDEX e
#endif #endif
#if ENABLED(SWITCHING_EXTRUDER) || ENABLED(MIXING_EXTRUDER) // Unified E axis #if ENABLED(SWITCHING_EXTRUDER) || ENABLED(MIXING_EXTRUDER) // Unified E axis
#if ENABLED(MIXING_EXTRUDER) #if ENABLED(MIXING_EXTRUDER)
#define E_STEPPERS MIXING_STEPPERS #define E_STEPPERS MIXING_STEPPERS
#else #else
@ -403,29 +403,29 @@
#endif #endif
#define E_MANUAL 1 #define E_MANUAL 1
#define TOOL_E_INDEX 0 #define TOOL_E_INDEX 0
#else #else
#define E_STEPPERS EXTRUDERS #define E_STEPPERS EXTRUDERS
#define E_MANUAL EXTRUDERS #define E_MANUAL EXTRUDERS
#define TOOL_E_INDEX current_block->active_extruder #define TOOL_E_INDEX current_block->active_extruder
#endif #endif
/** /**
* DISTINCT_E_FACTORS affects how some E factors are accessed * DISTINCT_E_FACTORS affects how some E factors are accessed
*/ */
#if ENABLED(DISTINCT_E_FACTORS) && E_STEPPERS > 1 #if ENABLED(DISTINCT_E_FACTORS) && E_STEPPERS > 1
#define XYZE_N (XYZ + E_STEPPERS) #define XYZE_N (XYZ + E_STEPPERS)
#define E_AXIS_N (E_AXIS + extruder) #define E_AXIS_N (E_AXIS + extruder)
#else #else
#undef DISTINCT_E_FACTORS #undef DISTINCT_E_FACTORS
#define XYZE_N XYZE #define XYZE_N XYZE
#define E_AXIS_N E_AXIS #define E_AXIS_N E_AXIS
#endif #endif
/** /**
* The BLTouch Probe emulates a servo probe * The BLTouch Probe emulates a servo probe
* and uses "special" angles for its state. * and uses "special" angles for its state.
*/ */
#if ENABLED(BLTOUCH) #if ENABLED(BLTOUCH)
#ifndef Z_ENDSTOP_SERVO_NR #ifndef Z_ENDSTOP_SERVO_NR
#define Z_ENDSTOP_SERVO_NR 0 #define Z_ENDSTOP_SERVO_NR 0
#endif #endif
@ -460,35 +460,35 @@
#else #else
#define TEST_BLTOUCH() _TEST_BLTOUCH(Z_MIN_PROBE) #define TEST_BLTOUCH() _TEST_BLTOUCH(Z_MIN_PROBE)
#endif #endif
#endif #endif
/** /**
* Set a flag for a servo probe * Set a flag for a servo probe
*/ */
#define HAS_Z_SERVO_ENDSTOP (defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0) #define HAS_Z_SERVO_ENDSTOP (defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0)
/** /**
* UBL has its own manual probing, so this just causes trouble. * UBL has its own manual probing, so this just causes trouble.
*/ */
#if ENABLED(AUTO_BED_LEVELING_UBL) #if ENABLED(AUTO_BED_LEVELING_UBL)
#undef PROBE_MANUALLY #undef PROBE_MANUALLY
#endif #endif
/** /**
* Set a flag for any enabled probe * Set a flag for any enabled probe
*/ */
#define PROBE_SELECTED (ENABLED(PROBE_MANUALLY) || ENABLED(FIX_MOUNTED_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED) || ENABLED(SOLENOID_PROBE)) #define PROBE_SELECTED (ENABLED(PROBE_MANUALLY) || ENABLED(FIX_MOUNTED_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED) || ENABLED(SOLENOID_PROBE))
/** /**
* Clear probe pin settings when no probe is selected * Clear probe pin settings when no probe is selected
*/ */
#if !PROBE_SELECTED || ENABLED(PROBE_MANUALLY) #if !PROBE_SELECTED || ENABLED(PROBE_MANUALLY)
#undef Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN #undef Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
#undef Z_MIN_PROBE_ENDSTOP #undef Z_MIN_PROBE_ENDSTOP
#endif #endif
#define HAS_SOFTWARE_ENDSTOPS (ENABLED(MIN_SOFTWARE_ENDSTOPS) || ENABLED(MAX_SOFTWARE_ENDSTOPS)) #define HAS_SOFTWARE_ENDSTOPS (ENABLED(MIN_SOFTWARE_ENDSTOPS) || ENABLED(MAX_SOFTWARE_ENDSTOPS))
#define HAS_RESUME_CONTINUE (ENABLED(NEWPANEL) || ENABLED(EMERGENCY_PARSER)) #define HAS_RESUME_CONTINUE (ENABLED(NEWPANEL) || ENABLED(EMERGENCY_PARSER))
#define HAS_COLOR_LEDS (ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632) || ENABLED(NEOPIXEL_LED)) #define HAS_COLOR_LEDS (ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632) || ENABLED(NEOPIXEL_LED))
#endif // CONDITIONALS_LCD_H #endif // CONDITIONALS_LCD_H

View file

@ -28,61 +28,61 @@
#ifndef CONDITIONALS_POST_H #ifndef CONDITIONALS_POST_H
#define CONDITIONALS_POST_H #define CONDITIONALS_POST_H
#define AVR_ATmega2560_FAMILY_PLUS_70 ( \ #define AVR_ATmega2560_FAMILY_PLUS_70 ( \
MB(BQ_ZUM_MEGA_3D) \ MB(BQ_ZUM_MEGA_3D) \
|| MB(MIGHTYBOARD_REVE) \ || MB(MIGHTYBOARD_REVE) \
|| MB(MINIRAMBO) \ || MB(MINIRAMBO) \
|| MB(SCOOVO_X9H) \ || MB(SCOOVO_X9H) \
) )
#define IS_SCARA (ENABLED(MORGAN_SCARA) || ENABLED(MAKERARM_SCARA)) #define IS_SCARA (ENABLED(MORGAN_SCARA) || ENABLED(MAKERARM_SCARA))
#define IS_KINEMATIC (ENABLED(DELTA) || IS_SCARA) #define IS_KINEMATIC (ENABLED(DELTA) || IS_SCARA)
#define IS_CARTESIAN !IS_KINEMATIC #define IS_CARTESIAN !IS_KINEMATIC
/** /**
* Axis lengths and center * Axis lengths and center
*/ */
#define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS)) #define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS))
#define Y_MAX_LENGTH (Y_MAX_POS - (Y_MIN_POS)) #define Y_MAX_LENGTH (Y_MAX_POS - (Y_MIN_POS))
#define Z_MAX_LENGTH (Z_MAX_POS - (Z_MIN_POS)) #define Z_MAX_LENGTH (Z_MAX_POS - (Z_MIN_POS))
// Defined only if the sanity-check is bypassed // Defined only if the sanity-check is bypassed
#ifndef X_BED_SIZE #ifndef X_BED_SIZE
#define X_BED_SIZE X_MAX_LENGTH #define X_BED_SIZE X_MAX_LENGTH
#endif #endif
#ifndef Y_BED_SIZE #ifndef Y_BED_SIZE
#define Y_BED_SIZE Y_MAX_LENGTH #define Y_BED_SIZE Y_MAX_LENGTH
#endif #endif
// Require 0,0 bed center for Delta and SCARA // Require 0,0 bed center for Delta and SCARA
#if IS_KINEMATIC #if IS_KINEMATIC
#define BED_CENTER_AT_0_0 #define BED_CENTER_AT_0_0
#endif #endif
// Define center values for future use // Define center values for future use
#if ENABLED(BED_CENTER_AT_0_0) #if ENABLED(BED_CENTER_AT_0_0)
#define X_CENTER 0 #define X_CENTER 0
#define Y_CENTER 0 #define Y_CENTER 0
#else #else
#define X_CENTER ((X_BED_SIZE) / 2) #define X_CENTER ((X_BED_SIZE) / 2)
#define Y_CENTER ((Y_BED_SIZE) / 2) #define Y_CENTER ((Y_BED_SIZE) / 2)
#endif #endif
#define Z_CENTER ((Z_MIN_POS + Z_MAX_POS) / 2) #define Z_CENTER ((Z_MIN_POS + Z_MAX_POS) / 2)
// Get the linear boundaries of the bed // Get the linear boundaries of the bed
#define X_MIN_BED (X_CENTER - (X_BED_SIZE) / 2) #define X_MIN_BED (X_CENTER - (X_BED_SIZE) / 2)
#define X_MAX_BED (X_CENTER + (X_BED_SIZE) / 2) #define X_MAX_BED (X_CENTER + (X_BED_SIZE) / 2)
#define Y_MIN_BED (Y_CENTER - (Y_BED_SIZE) / 2) #define Y_MIN_BED (Y_CENTER - (Y_BED_SIZE) / 2)
#define Y_MAX_BED (Y_CENTER + (Y_BED_SIZE) / 2) #define Y_MAX_BED (Y_CENTER + (Y_BED_SIZE) / 2)
/** /**
* CoreXY, CoreXZ, and CoreYZ - and their reverse * CoreXY, CoreXZ, and CoreYZ - and their reverse
*/ */
#define CORE_IS_XY (ENABLED(COREXY) || ENABLED(COREYX)) #define CORE_IS_XY (ENABLED(COREXY) || ENABLED(COREYX))
#define CORE_IS_XZ (ENABLED(COREXZ) || ENABLED(COREZX)) #define CORE_IS_XZ (ENABLED(COREXZ) || ENABLED(COREZX))
#define CORE_IS_YZ (ENABLED(COREYZ) || ENABLED(COREZY)) #define CORE_IS_YZ (ENABLED(COREYZ) || ENABLED(COREZY))
#define IS_CORE (CORE_IS_XY || CORE_IS_XZ || CORE_IS_YZ) #define IS_CORE (CORE_IS_XY || CORE_IS_XZ || CORE_IS_YZ)
#if IS_CORE #if IS_CORE
#if CORE_IS_XY #if CORE_IS_XY
#define CORE_AXIS_1 A_AXIS #define CORE_AXIS_1 A_AXIS
#define CORE_AXIS_2 B_AXIS #define CORE_AXIS_2 B_AXIS
@ -101,95 +101,95 @@
#else #else
#define CORESIGN(n) (n) #define CORESIGN(n) (n)
#endif #endif
#endif #endif
/** /**
* No adjustable bed on non-cartesians * No adjustable bed on non-cartesians
*/ */
#if IS_KINEMATIC #if IS_KINEMATIC
#undef LEVEL_BED_CORNERS #undef LEVEL_BED_CORNERS
#endif #endif
/** /**
* SCARA cannot use SLOWDOWN and requires QUICKHOME * SCARA cannot use SLOWDOWN and requires QUICKHOME
*/ */
#if IS_SCARA #if IS_SCARA
#undef SLOWDOWN #undef SLOWDOWN
#define QUICK_HOME #define QUICK_HOME
#endif #endif
/** /**
* Set the home position based on settings or manual overrides * Set the home position based on settings or manual overrides
*/ */
#ifdef MANUAL_X_HOME_POS #ifdef MANUAL_X_HOME_POS
#define X_HOME_POS MANUAL_X_HOME_POS #define X_HOME_POS MANUAL_X_HOME_POS
#elif ENABLED(BED_CENTER_AT_0_0) #elif ENABLED(BED_CENTER_AT_0_0)
#if ENABLED(DELTA) #if ENABLED(DELTA)
#define X_HOME_POS 0 #define X_HOME_POS 0
#else #else
#define X_HOME_POS ((X_BED_SIZE) * (X_HOME_DIR) * 0.5) #define X_HOME_POS ((X_BED_SIZE) * (X_HOME_DIR) * 0.5)
#endif #endif
#else #else
#if ENABLED(DELTA) #if ENABLED(DELTA)
#define X_HOME_POS (X_MIN_POS + (X_BED_SIZE) * 0.5) #define X_HOME_POS (X_MIN_POS + (X_BED_SIZE) * 0.5)
#else #else
#define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS) #define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS)
#endif #endif
#endif #endif
#ifdef MANUAL_Y_HOME_POS #ifdef MANUAL_Y_HOME_POS
#define Y_HOME_POS MANUAL_Y_HOME_POS #define Y_HOME_POS MANUAL_Y_HOME_POS
#elif ENABLED(BED_CENTER_AT_0_0) #elif ENABLED(BED_CENTER_AT_0_0)
#if ENABLED(DELTA) #if ENABLED(DELTA)
#define Y_HOME_POS 0 #define Y_HOME_POS 0
#else #else
#define Y_HOME_POS ((Y_BED_SIZE) * (Y_HOME_DIR) * 0.5) #define Y_HOME_POS ((Y_BED_SIZE) * (Y_HOME_DIR) * 0.5)
#endif #endif
#else #else
#if ENABLED(DELTA) #if ENABLED(DELTA)
#define Y_HOME_POS (Y_MIN_POS + (Y_BED_SIZE) * 0.5) #define Y_HOME_POS (Y_MIN_POS + (Y_BED_SIZE) * 0.5)
#else #else
#define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS) #define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS)
#endif #endif
#endif #endif
#ifdef MANUAL_Z_HOME_POS #ifdef MANUAL_Z_HOME_POS
#define Z_HOME_POS MANUAL_Z_HOME_POS #define Z_HOME_POS MANUAL_Z_HOME_POS
#else #else
#define Z_HOME_POS (Z_HOME_DIR < 0 ? Z_MIN_POS : Z_MAX_POS) #define Z_HOME_POS (Z_HOME_DIR < 0 ? Z_MIN_POS : Z_MAX_POS)
#endif #endif
/** /**
* If DELTA_HEIGHT isn't defined use the old setting * If DELTA_HEIGHT isn't defined use the old setting
*/ */
#if ENABLED(DELTA) && !defined(DELTA_HEIGHT) #if ENABLED(DELTA) && !defined(DELTA_HEIGHT)
#define DELTA_HEIGHT Z_HOME_POS #define DELTA_HEIGHT Z_HOME_POS
#endif #endif
/** /**
* Auto Bed Leveling and Z Probe Repeatability Test * Auto Bed Leveling and Z Probe Repeatability Test
*/ */
#define HOMING_Z_WITH_PROBE (HAS_BED_PROBE && Z_HOME_DIR < 0 && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) #define HOMING_Z_WITH_PROBE (HAS_BED_PROBE && Z_HOME_DIR < 0 && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN))
/** /**
* Z Sled Probe requires Z_SAFE_HOMING * Z Sled Probe requires Z_SAFE_HOMING
*/ */
#if ENABLED(Z_PROBE_SLED) #if ENABLED(Z_PROBE_SLED)
#define Z_SAFE_HOMING #define Z_SAFE_HOMING
#endif #endif
/** /**
* DELTA should ignore Z_SAFE_HOMING and SLOWDOWN * DELTA should ignore Z_SAFE_HOMING and SLOWDOWN
*/ */
#if ENABLED(DELTA) #if ENABLED(DELTA)
#undef Z_SAFE_HOMING #undef Z_SAFE_HOMING
#undef SLOWDOWN #undef SLOWDOWN
#endif #endif
/** /**
* Safe Homing Options * Safe Homing Options
*/ */
#if ENABLED(Z_SAFE_HOMING) #if ENABLED(Z_SAFE_HOMING)
#ifndef Z_SAFE_HOMING_X_POINT #ifndef Z_SAFE_HOMING_X_POINT
#define Z_SAFE_HOMING_X_POINT X_CENTER #define Z_SAFE_HOMING_X_POINT X_CENTER
#endif #endif
@ -198,19 +198,19 @@
#endif #endif
#define X_TILT_FULCRUM Z_SAFE_HOMING_X_POINT #define X_TILT_FULCRUM Z_SAFE_HOMING_X_POINT
#define Y_TILT_FULCRUM Z_SAFE_HOMING_Y_POINT #define Y_TILT_FULCRUM Z_SAFE_HOMING_Y_POINT
#else #else
#define X_TILT_FULCRUM X_HOME_POS #define X_TILT_FULCRUM X_HOME_POS
#define Y_TILT_FULCRUM Y_HOME_POS #define Y_TILT_FULCRUM Y_HOME_POS
#endif #endif
/** /**
* Host keep alive * Host keep alive
*/ */
#ifndef DEFAULT_KEEPALIVE_INTERVAL #ifndef DEFAULT_KEEPALIVE_INTERVAL
#define DEFAULT_KEEPALIVE_INTERVAL 2 #define DEFAULT_KEEPALIVE_INTERVAL 2
#endif #endif
#ifdef CPU_32_BIT #ifdef CPU_32_BIT
/** /**
* Hidden options for developer * Hidden options for developer
*/ */
@ -224,181 +224,181 @@
#endif #endif
// Disable double / quad stepping // Disable double / quad stepping
//#define DISABLE_MULTI_STEPPING //#define DISABLE_MULTI_STEPPING
#endif #endif
/** /**
* Provide a MAX_AUTORETRACT for older configs * Provide a MAX_AUTORETRACT for older configs
*/ */
#if ENABLED(FWRETRACT) && !defined(MAX_AUTORETRACT) #if ENABLED(FWRETRACT) && !defined(MAX_AUTORETRACT)
#define MAX_AUTORETRACT 99 #define MAX_AUTORETRACT 99
#endif #endif
/** /**
* MAX_STEP_FREQUENCY differs for TOSHIBA * MAX_STEP_FREQUENCY differs for TOSHIBA
*/ */
#if ENABLED(CONFIG_STEPPERS_TOSHIBA) #if ENABLED(CONFIG_STEPPERS_TOSHIBA)
#ifdef CPU_32_BIT #ifdef CPU_32_BIT
#define MAX_STEP_FREQUENCY STEP_DOUBLER_FREQUENCY // Max step frequency for Toshiba Stepper Controllers, 96kHz is close to maximum for an Arduino Due #define MAX_STEP_FREQUENCY STEP_DOUBLER_FREQUENCY // Max step frequency for Toshiba Stepper Controllers, 96kHz is close to maximum for an Arduino Due
#else #else
#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers #define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
#endif #endif
#else #else
#ifdef CPU_32_BIT #ifdef CPU_32_BIT
#define MAX_STEP_FREQUENCY (STEP_DOUBLER_FREQUENCY * 4) // Max step frequency for the Due is approx. 330kHz #define MAX_STEP_FREQUENCY (STEP_DOUBLER_FREQUENCY * 4) // Max step frequency for the Due is approx. 330kHz
#else #else
#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) #define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
#endif #endif
#endif #endif
// MS1 MS2 Stepper Driver Microstepping mode table // MS1 MS2 Stepper Driver Microstepping mode table
#define MICROSTEP1 LOW,LOW #define MICROSTEP1 LOW,LOW
#define MICROSTEP2 HIGH,LOW #define MICROSTEP2 HIGH,LOW
#define MICROSTEP4 LOW,HIGH #define MICROSTEP4 LOW,HIGH
#define MICROSTEP8 HIGH,HIGH #define MICROSTEP8 HIGH,HIGH
#ifdef __SAM3X8E__ #ifdef __SAM3X8E__
#if MB(ALLIGATOR) #if MB(ALLIGATOR)
#define MICROSTEP16 LOW,LOW #define MICROSTEP16 LOW,LOW
#define MICROSTEP32 HIGH,HIGH #define MICROSTEP32 HIGH,HIGH
#else #else
#define MICROSTEP16 HIGH,HIGH #define MICROSTEP16 HIGH,HIGH
#endif #endif
#else #else
#define MICROSTEP16 HIGH,HIGH #define MICROSTEP16 HIGH,HIGH
#endif #endif
/** /**
* Override here because this is set in Configuration_adv.h * Override here because this is set in Configuration_adv.h
*/ */
#if ENABLED(ULTIPANEL) && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER) #if ENABLED(ULTIPANEL) && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER)
#undef SD_DETECT_INVERTED #undef SD_DETECT_INVERTED
#endif #endif
/** /**
* Set defaults for missing (newer) options * Set defaults for missing (newer) options
*/ */
#ifndef DISABLE_INACTIVE_X #ifndef DISABLE_INACTIVE_X
#define DISABLE_INACTIVE_X DISABLE_X #define DISABLE_INACTIVE_X DISABLE_X
#endif #endif
#ifndef DISABLE_INACTIVE_Y #ifndef DISABLE_INACTIVE_Y
#define DISABLE_INACTIVE_Y DISABLE_Y #define DISABLE_INACTIVE_Y DISABLE_Y
#endif #endif
#ifndef DISABLE_INACTIVE_Z #ifndef DISABLE_INACTIVE_Z
#define DISABLE_INACTIVE_Z DISABLE_Z #define DISABLE_INACTIVE_Z DISABLE_Z
#endif #endif
#ifndef DISABLE_INACTIVE_E #ifndef DISABLE_INACTIVE_E
#define DISABLE_INACTIVE_E DISABLE_E #define DISABLE_INACTIVE_E DISABLE_E
#endif #endif
// Power Signal Control Definitions // Power Signal Control Definitions
// By default use ATX definition // By default use ATX definition
#ifndef POWER_SUPPLY #ifndef POWER_SUPPLY
#define POWER_SUPPLY 1 #define POWER_SUPPLY 1
#endif #endif
#if (POWER_SUPPLY == 1) // 1 = ATX #if (POWER_SUPPLY == 1) // 1 = ATX
#define PS_ON_AWAKE LOW #define PS_ON_AWAKE LOW
#define PS_ON_ASLEEP HIGH #define PS_ON_ASLEEP HIGH
#elif (POWER_SUPPLY == 2) // 2 = X-Box 360 203W #elif (POWER_SUPPLY == 2) // 2 = X-Box 360 203W
#define PS_ON_AWAKE HIGH #define PS_ON_AWAKE HIGH
#define PS_ON_ASLEEP LOW #define PS_ON_ASLEEP LOW
#endif #endif
#define HAS_POWER_SWITCH (POWER_SUPPLY > 0 && PIN_EXISTS(PS_ON)) #define HAS_POWER_SWITCH (POWER_SUPPLY > 0 && PIN_EXISTS(PS_ON))
/** /**
* Temp Sensor defines * Temp Sensor defines
*/ */
#if TEMP_SENSOR_0 == -3 #if TEMP_SENSOR_0 == -3
#define HEATER_0_USES_MAX6675 #define HEATER_0_USES_MAX6675
#define MAX6675_IS_MAX31855 #define MAX6675_IS_MAX31855
#define MAX6675_TMIN -270 #define MAX6675_TMIN -270
#define MAX6675_TMAX 1800 #define MAX6675_TMAX 1800
#elif TEMP_SENSOR_0 == -2 #elif TEMP_SENSOR_0 == -2
#define HEATER_0_USES_MAX6675 #define HEATER_0_USES_MAX6675
#define MAX6675_TMIN 0 #define MAX6675_TMIN 0
#define MAX6675_TMAX 1024 #define MAX6675_TMAX 1024
#elif TEMP_SENSOR_0 == -1 #elif TEMP_SENSOR_0 == -1
#define HEATER_0_USES_AD595 #define HEATER_0_USES_AD595
#elif TEMP_SENSOR_0 == 0 #elif TEMP_SENSOR_0 == 0
#undef HEATER_0_MINTEMP #undef HEATER_0_MINTEMP
#undef HEATER_0_MAXTEMP #undef HEATER_0_MAXTEMP
#elif TEMP_SENSOR_0 > 0 #elif TEMP_SENSOR_0 > 0
#define THERMISTORHEATER_0 TEMP_SENSOR_0 #define THERMISTORHEATER_0 TEMP_SENSOR_0
#define HEATER_0_USES_THERMISTOR #define HEATER_0_USES_THERMISTOR
#endif #endif
#if TEMP_SENSOR_1 <= -2 #if TEMP_SENSOR_1 <= -2
#error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_1" #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_1"
#elif TEMP_SENSOR_1 == -1 #elif TEMP_SENSOR_1 == -1
#define HEATER_1_USES_AD595 #define HEATER_1_USES_AD595
#elif TEMP_SENSOR_1 == 0 #elif TEMP_SENSOR_1 == 0
#undef HEATER_1_MINTEMP #undef HEATER_1_MINTEMP
#undef HEATER_1_MAXTEMP #undef HEATER_1_MAXTEMP
#elif TEMP_SENSOR_1 > 0 #elif TEMP_SENSOR_1 > 0
#define THERMISTORHEATER_1 TEMP_SENSOR_1 #define THERMISTORHEATER_1 TEMP_SENSOR_1
#define HEATER_1_USES_THERMISTOR #define HEATER_1_USES_THERMISTOR
#endif #endif
#if TEMP_SENSOR_2 <= -2 #if TEMP_SENSOR_2 <= -2
#error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_2" #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_2"
#elif TEMP_SENSOR_2 == -1 #elif TEMP_SENSOR_2 == -1
#define HEATER_2_USES_AD595 #define HEATER_2_USES_AD595
#elif TEMP_SENSOR_2 == 0 #elif TEMP_SENSOR_2 == 0
#undef HEATER_2_MINTEMP #undef HEATER_2_MINTEMP
#undef HEATER_2_MAXTEMP #undef HEATER_2_MAXTEMP
#elif TEMP_SENSOR_2 > 0 #elif TEMP_SENSOR_2 > 0
#define THERMISTORHEATER_2 TEMP_SENSOR_2 #define THERMISTORHEATER_2 TEMP_SENSOR_2
#define HEATER_2_USES_THERMISTOR #define HEATER_2_USES_THERMISTOR
#endif #endif
#if TEMP_SENSOR_3 <= -2 #if TEMP_SENSOR_3 <= -2
#error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_3" #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_3"
#elif TEMP_SENSOR_3 == -1 #elif TEMP_SENSOR_3 == -1
#define HEATER_3_USES_AD595 #define HEATER_3_USES_AD595
#elif TEMP_SENSOR_3 == 0 #elif TEMP_SENSOR_3 == 0
#undef HEATER_3_MINTEMP #undef HEATER_3_MINTEMP
#undef HEATER_3_MAXTEMP #undef HEATER_3_MAXTEMP
#elif TEMP_SENSOR_3 > 0 #elif TEMP_SENSOR_3 > 0
#define THERMISTORHEATER_3 TEMP_SENSOR_3 #define THERMISTORHEATER_3 TEMP_SENSOR_3
#define HEATER_3_USES_THERMISTOR #define HEATER_3_USES_THERMISTOR
#endif #endif
#if TEMP_SENSOR_4 <= -2 #if TEMP_SENSOR_4 <= -2
#error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_4" #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_4"
#elif TEMP_SENSOR_4 == -1 #elif TEMP_SENSOR_4 == -1
#define HEATER_4_USES_AD595 #define HEATER_4_USES_AD595
#elif TEMP_SENSOR_4 == 0 #elif TEMP_SENSOR_4 == 0
#undef HEATER_4_MINTEMP #undef HEATER_4_MINTEMP
#undef HEATER_4_MAXTEMP #undef HEATER_4_MAXTEMP
#elif TEMP_SENSOR_4 > 0 #elif TEMP_SENSOR_4 > 0
#define THERMISTORHEATER_4 TEMP_SENSOR_4 #define THERMISTORHEATER_4 TEMP_SENSOR_4
#define HEATER_4_USES_THERMISTOR #define HEATER_4_USES_THERMISTOR
#endif #endif
#if TEMP_SENSOR_BED <= -2 #if TEMP_SENSOR_BED <= -2
#error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_BED" #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_BED"
#elif TEMP_SENSOR_BED == -1 #elif TEMP_SENSOR_BED == -1
#define BED_USES_AD595 #define BED_USES_AD595
#elif TEMP_SENSOR_BED == 0 #elif TEMP_SENSOR_BED == 0
#undef BED_MINTEMP #undef BED_MINTEMP
#undef BED_MAXTEMP #undef BED_MAXTEMP
#elif TEMP_SENSOR_BED > 0 #elif TEMP_SENSOR_BED > 0
#define THERMISTORBED TEMP_SENSOR_BED #define THERMISTORBED TEMP_SENSOR_BED
#define BED_USES_THERMISTOR #define BED_USES_THERMISTOR
#endif #endif
#ifdef __SAM3X8E__ #ifdef __SAM3X8E__
#define HEATER_USES_AD595 (ENABLED(HEATER_0_USES_AD595) || ENABLED(HEATER_1_USES_AD595) || ENABLED(HEATER_2_USES_AD595) || ENABLED(HEATER_3_USES_AD595)) #define HEATER_USES_AD595 (ENABLED(HEATER_0_USES_AD595) || ENABLED(HEATER_1_USES_AD595) || ENABLED(HEATER_2_USES_AD595) || ENABLED(HEATER_3_USES_AD595))
#endif #endif
/** /**
* Flags for PID handling * Flags for PID handling
*/ */
#define HAS_PID_HEATING (ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED)) #define HAS_PID_HEATING (ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED))
#define HAS_PID_FOR_BOTH (ENABLED(PIDTEMP) && ENABLED(PIDTEMPBED)) #define HAS_PID_FOR_BOTH (ENABLED(PIDTEMP) && ENABLED(PIDTEMPBED))
/** /**
* Default hotend offsets, if not defined * Default hotend offsets, if not defined
*/ */
#if HOTENDS > 1 #if HOTENDS > 1
#ifndef HOTEND_OFFSET_X #ifndef HOTEND_OFFSET_X
#define HOTEND_OFFSET_X { 0 } // X offsets for each extruder #define HOTEND_OFFSET_X { 0 } // X offsets for each extruder
#endif #endif
@ -408,24 +408,24 @@
#if !defined(HOTEND_OFFSET_Z) && (ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE)) #if !defined(HOTEND_OFFSET_Z) && (ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE))
#define HOTEND_OFFSET_Z { 0 } #define HOTEND_OFFSET_Z { 0 }
#endif #endif
#endif #endif
/** /**
* ARRAY_BY_EXTRUDERS based on EXTRUDERS * ARRAY_BY_EXTRUDERS based on EXTRUDERS
*/ */
#define ARRAY_BY_EXTRUDERS(...) ARRAY_N(EXTRUDERS, __VA_ARGS__) #define ARRAY_BY_EXTRUDERS(...) ARRAY_N(EXTRUDERS, __VA_ARGS__)
#define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1, v1, v1) #define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1, v1, v1)
/** /**
* ARRAY_BY_HOTENDS based on HOTENDS * ARRAY_BY_HOTENDS based on HOTENDS
*/ */
#define ARRAY_BY_HOTENDS(...) ARRAY_N(HOTENDS, __VA_ARGS__) #define ARRAY_BY_HOTENDS(...) ARRAY_N(HOTENDS, __VA_ARGS__)
#define ARRAY_BY_HOTENDS1(v1) ARRAY_BY_HOTENDS(v1, v1, v1, v1, v1, v1) #define ARRAY_BY_HOTENDS1(v1) ARRAY_BY_HOTENDS(v1, v1, v1, v1, v1, v1)
/** /**
* Z_DUAL_ENDSTOPS endstop reassignment * Z_DUAL_ENDSTOPS endstop reassignment
*/ */
#if ENABLED(Z_DUAL_ENDSTOPS) #if ENABLED(Z_DUAL_ENDSTOPS)
#define _XMIN_ 100 #define _XMIN_ 100
#define _YMIN_ 200 #define _YMIN_ 200
#define _ZMIN_ 300 #define _ZMIN_ 300
@ -490,17 +490,17 @@
#define Z2_MIN_ENDSTOP_INVERTING false #define Z2_MIN_ENDSTOP_INVERTING false
#endif #endif
#endif #endif
#endif #endif
// Is an endstop plug used for the Z2 endstop or the bed probe? // Is an endstop plug used for the Z2 endstop or the bed probe?
#define IS_Z2_OR_PROBE(A,M) ( \ #define IS_Z2_OR_PROBE(A,M) ( \
(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP == _##A##M##_) \ (ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP == _##A##M##_) \
|| (ENABLED(Z_MIN_PROBE_ENDSTOP) && Z_MIN_PROBE_PIN == A##_##M##_PIN ) ) || (ENABLED(Z_MIN_PROBE_ENDSTOP) && Z_MIN_PROBE_PIN == A##_##M##_PIN ) )
/** /**
* Set ENDSTOPPULLUPS for active endstop switches * Set ENDSTOPPULLUPS for active endstop switches
*/ */
#if ENABLED(ENDSTOPPULLUPS) #if ENABLED(ENDSTOPPULLUPS)
#if ENABLED(USE_XMAX_PLUG) #if ENABLED(USE_XMAX_PLUG)
#define ENDSTOPPULLUP_XMAX #define ENDSTOPPULLUP_XMAX
#endif #endif
@ -519,166 +519,166 @@
#if ENABLED(USE_ZMIN_PLUG) #if ENABLED(USE_ZMIN_PLUG)
#define ENDSTOPPULLUP_ZMIN #define ENDSTOPPULLUP_ZMIN
#endif #endif
#endif #endif
/** /**
* Shorthand for pin tests, used wherever needed * Shorthand for pin tests, used wherever needed
*/ */
// Steppers // Steppers
#define HAS_X_ENABLE (PIN_EXISTS(X_ENABLE)) #define HAS_X_ENABLE (PIN_EXISTS(X_ENABLE))
#define HAS_X_DIR (PIN_EXISTS(X_DIR)) #define HAS_X_DIR (PIN_EXISTS(X_DIR))
#define HAS_X_STEP (PIN_EXISTS(X_STEP)) #define HAS_X_STEP (PIN_EXISTS(X_STEP))
#define HAS_X_MICROSTEPS (PIN_EXISTS(X_MS1)) #define HAS_X_MICROSTEPS (PIN_EXISTS(X_MS1))
#define HAS_X2_ENABLE (PIN_EXISTS(X2_ENABLE)) #define HAS_X2_ENABLE (PIN_EXISTS(X2_ENABLE))
#define HAS_X2_DIR (PIN_EXISTS(X2_DIR)) #define HAS_X2_DIR (PIN_EXISTS(X2_DIR))
#define HAS_X2_STEP (PIN_EXISTS(X2_STEP)) #define HAS_X2_STEP (PIN_EXISTS(X2_STEP))
#define HAS_Y_MICROSTEPS (PIN_EXISTS(Y_MS1)) #define HAS_Y_MICROSTEPS (PIN_EXISTS(Y_MS1))
#define HAS_Y_ENABLE (PIN_EXISTS(Y_ENABLE)) #define HAS_Y_ENABLE (PIN_EXISTS(Y_ENABLE))
#define HAS_Y_DIR (PIN_EXISTS(Y_DIR)) #define HAS_Y_DIR (PIN_EXISTS(Y_DIR))
#define HAS_Y_STEP (PIN_EXISTS(Y_STEP)) #define HAS_Y_STEP (PIN_EXISTS(Y_STEP))
#define HAS_Z_MICROSTEPS (PIN_EXISTS(Z_MS1)) #define HAS_Z_MICROSTEPS (PIN_EXISTS(Z_MS1))
#define HAS_Y2_ENABLE (PIN_EXISTS(Y2_ENABLE)) #define HAS_Y2_ENABLE (PIN_EXISTS(Y2_ENABLE))
#define HAS_Y2_DIR (PIN_EXISTS(Y2_DIR)) #define HAS_Y2_DIR (PIN_EXISTS(Y2_DIR))
#define HAS_Y2_STEP (PIN_EXISTS(Y2_STEP)) #define HAS_Y2_STEP (PIN_EXISTS(Y2_STEP))
#define HAS_Z_ENABLE (PIN_EXISTS(Z_ENABLE)) #define HAS_Z_ENABLE (PIN_EXISTS(Z_ENABLE))
#define HAS_Z_DIR (PIN_EXISTS(Z_DIR)) #define HAS_Z_DIR (PIN_EXISTS(Z_DIR))
#define HAS_Z_STEP (PIN_EXISTS(Z_STEP)) #define HAS_Z_STEP (PIN_EXISTS(Z_STEP))
#define HAS_Z2_ENABLE (PIN_EXISTS(Z2_ENABLE)) #define HAS_Z2_ENABLE (PIN_EXISTS(Z2_ENABLE))
#define HAS_Z2_DIR (PIN_EXISTS(Z2_DIR)) #define HAS_Z2_DIR (PIN_EXISTS(Z2_DIR))
#define HAS_Z2_STEP (PIN_EXISTS(Z2_STEP)) #define HAS_Z2_STEP (PIN_EXISTS(Z2_STEP))
// Extruder steppers and solenoids // Extruder steppers and solenoids
#define HAS_E0_ENABLE (PIN_EXISTS(E0_ENABLE)) #define HAS_E0_ENABLE (PIN_EXISTS(E0_ENABLE))
#define HAS_E0_DIR (PIN_EXISTS(E0_DIR)) #define HAS_E0_DIR (PIN_EXISTS(E0_DIR))
#define HAS_E0_STEP (PIN_EXISTS(E0_STEP)) #define HAS_E0_STEP (PIN_EXISTS(E0_STEP))
#define HAS_E0_MICROSTEPS (PIN_EXISTS(E0_MS1)) #define HAS_E0_MICROSTEPS (PIN_EXISTS(E0_MS1))
#define HAS_SOLENOID_0 (PIN_EXISTS(SOL0)) #define HAS_SOLENOID_0 (PIN_EXISTS(SOL0))
#define HAS_E1_ENABLE (PIN_EXISTS(E1_ENABLE)) #define HAS_E1_ENABLE (PIN_EXISTS(E1_ENABLE))
#define HAS_E1_DIR (PIN_EXISTS(E1_DIR)) #define HAS_E1_DIR (PIN_EXISTS(E1_DIR))
#define HAS_E1_STEP (PIN_EXISTS(E1_STEP)) #define HAS_E1_STEP (PIN_EXISTS(E1_STEP))
#define HAS_E1_MICROSTEPS (PIN_EXISTS(E1_MS1)) #define HAS_E1_MICROSTEPS (PIN_EXISTS(E1_MS1))
#define HAS_SOLENOID_1 (PIN_EXISTS(SOL1)) #define HAS_SOLENOID_1 (PIN_EXISTS(SOL1))
#define HAS_E2_ENABLE (PIN_EXISTS(E2_ENABLE)) #define HAS_E2_ENABLE (PIN_EXISTS(E2_ENABLE))
#define HAS_E2_DIR (PIN_EXISTS(E2_DIR)) #define HAS_E2_DIR (PIN_EXISTS(E2_DIR))
#define HAS_E2_STEP (PIN_EXISTS(E2_STEP)) #define HAS_E2_STEP (PIN_EXISTS(E2_STEP))
#define HAS_E2_MICROSTEPS (PIN_EXISTS(E2_MS1)) #define HAS_E2_MICROSTEPS (PIN_EXISTS(E2_MS1))
#define HAS_SOLENOID_2 (PIN_EXISTS(SOL2)) #define HAS_SOLENOID_2 (PIN_EXISTS(SOL2))
#define HAS_E3_ENABLE (PIN_EXISTS(E3_ENABLE)) #define HAS_E3_ENABLE (PIN_EXISTS(E3_ENABLE))
#define HAS_E3_DIR (PIN_EXISTS(E3_DIR)) #define HAS_E3_DIR (PIN_EXISTS(E3_DIR))
#define HAS_E3_STEP (PIN_EXISTS(E3_STEP)) #define HAS_E3_STEP (PIN_EXISTS(E3_STEP))
#define HAS_E3_MICROSTEPS (PIN_EXISTS(E3_MS1)) #define HAS_E3_MICROSTEPS (PIN_EXISTS(E3_MS1))
#define HAS_SOLENOID_3 (PIN_EXISTS(SOL3)) #define HAS_SOLENOID_3 (PIN_EXISTS(SOL3))
#define HAS_E4_ENABLE (PIN_EXISTS(E4_ENABLE)) #define HAS_E4_ENABLE (PIN_EXISTS(E4_ENABLE))
#define HAS_E4_DIR (PIN_EXISTS(E4_DIR)) #define HAS_E4_DIR (PIN_EXISTS(E4_DIR))
#define HAS_E4_STEP (PIN_EXISTS(E4_STEP)) #define HAS_E4_STEP (PIN_EXISTS(E4_STEP))
#define HAS_E4_MICROSTEPS (PIN_EXISTS(E4_MS1)) #define HAS_E4_MICROSTEPS (PIN_EXISTS(E4_MS1))
#define HAS_SOLENOID_4 (PIN_EXISTS(SOL4)) #define HAS_SOLENOID_4 (PIN_EXISTS(SOL4))
// Endstops and bed probe // Endstops and bed probe
#define HAS_X_MIN (PIN_EXISTS(X_MIN) && !IS_Z2_OR_PROBE(X,MIN)) #define HAS_X_MIN (PIN_EXISTS(X_MIN) && !IS_Z2_OR_PROBE(X,MIN))
#define HAS_X_MAX (PIN_EXISTS(X_MAX) && !IS_Z2_OR_PROBE(X,MAX)) #define HAS_X_MAX (PIN_EXISTS(X_MAX) && !IS_Z2_OR_PROBE(X,MAX))
#define HAS_Y_MIN (PIN_EXISTS(Y_MIN) && !IS_Z2_OR_PROBE(Y,MIN)) #define HAS_Y_MIN (PIN_EXISTS(Y_MIN) && !IS_Z2_OR_PROBE(Y,MIN))
#define HAS_Y_MAX (PIN_EXISTS(Y_MAX) && !IS_Z2_OR_PROBE(Y,MAX)) #define HAS_Y_MAX (PIN_EXISTS(Y_MAX) && !IS_Z2_OR_PROBE(Y,MAX))
#define HAS_Z_MIN (PIN_EXISTS(Z_MIN) && !IS_Z2_OR_PROBE(Z,MIN)) #define HAS_Z_MIN (PIN_EXISTS(Z_MIN) && !IS_Z2_OR_PROBE(Z,MIN))
#define HAS_Z_MAX (PIN_EXISTS(Z_MAX) && !IS_Z2_OR_PROBE(Z,MAX)) #define HAS_Z_MAX (PIN_EXISTS(Z_MAX) && !IS_Z2_OR_PROBE(Z,MAX))
#define HAS_Z2_MIN (PIN_EXISTS(Z2_MIN)) #define HAS_Z2_MIN (PIN_EXISTS(Z2_MIN))
#define HAS_Z2_MAX (PIN_EXISTS(Z2_MAX)) #define HAS_Z2_MAX (PIN_EXISTS(Z2_MAX))
#define HAS_Z_MIN_PROBE_PIN (PIN_EXISTS(Z_MIN_PROBE)) #define HAS_Z_MIN_PROBE_PIN (PIN_EXISTS(Z_MIN_PROBE))
// Thermistors // Thermistors
#define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 > -2) #define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 > -2)
#define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0 && TEMP_SENSOR_1 > -2) #define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0 && TEMP_SENSOR_1 > -2)
#define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0 && TEMP_SENSOR_2 > -2) #define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0 && TEMP_SENSOR_2 > -2)
#define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0 && TEMP_SENSOR_3 > -2) #define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0 && TEMP_SENSOR_3 > -2)
#define HAS_TEMP_4 (PIN_EXISTS(TEMP_4) && TEMP_SENSOR_4 != 0 && TEMP_SENSOR_4 > -2) #define HAS_TEMP_4 (PIN_EXISTS(TEMP_4) && TEMP_SENSOR_4 != 0 && TEMP_SENSOR_4 > -2)
#define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675)) #define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675))
#define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2) #define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2)
// Heaters // Heaters
#define HAS_HEATER_0 (PIN_EXISTS(HEATER_0)) #define HAS_HEATER_0 (PIN_EXISTS(HEATER_0))
#define HAS_HEATER_1 (PIN_EXISTS(HEATER_1)) #define HAS_HEATER_1 (PIN_EXISTS(HEATER_1))
#define HAS_HEATER_2 (PIN_EXISTS(HEATER_2)) #define HAS_HEATER_2 (PIN_EXISTS(HEATER_2))
#define HAS_HEATER_3 (PIN_EXISTS(HEATER_3)) #define HAS_HEATER_3 (PIN_EXISTS(HEATER_3))
#define HAS_HEATER_4 (PIN_EXISTS(HEATER_4)) #define HAS_HEATER_4 (PIN_EXISTS(HEATER_4))
#define HAS_HEATER_BED (PIN_EXISTS(HEATER_BED)) #define HAS_HEATER_BED (PIN_EXISTS(HEATER_BED))
// Thermal protection // Thermal protection
#define HAS_THERMALLY_PROTECTED_BED (ENABLED(THERMAL_PROTECTION_BED) && HAS_TEMP_BED && HAS_HEATER_BED) #define HAS_THERMALLY_PROTECTED_BED (ENABLED(THERMAL_PROTECTION_BED) && HAS_TEMP_BED && HAS_HEATER_BED)
#define WATCH_HOTENDS (ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0) #define WATCH_HOTENDS (ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0)
#define WATCH_THE_BED (HAS_THERMALLY_PROTECTED_BED && WATCH_BED_TEMP_PERIOD > 0) #define WATCH_THE_BED (HAS_THERMALLY_PROTECTED_BED && WATCH_BED_TEMP_PERIOD > 0)
// Auto fans // Auto fans
#define HAS_AUTO_FAN_0 (PIN_EXISTS(E0_AUTO_FAN)) #define HAS_AUTO_FAN_0 (PIN_EXISTS(E0_AUTO_FAN))
#define HAS_AUTO_FAN_1 (HOTENDS > 1 && PIN_EXISTS(E1_AUTO_FAN)) #define HAS_AUTO_FAN_1 (HOTENDS > 1 && PIN_EXISTS(E1_AUTO_FAN))
#define HAS_AUTO_FAN_2 (HOTENDS > 2 && PIN_EXISTS(E2_AUTO_FAN)) #define HAS_AUTO_FAN_2 (HOTENDS > 2 && PIN_EXISTS(E2_AUTO_FAN))
#define HAS_AUTO_FAN_3 (HOTENDS > 3 && PIN_EXISTS(E3_AUTO_FAN)) #define HAS_AUTO_FAN_3 (HOTENDS > 3 && PIN_EXISTS(E3_AUTO_FAN))
#define HAS_AUTO_FAN_4 (HOTENDS > 4 && PIN_EXISTS(E4_AUTO_FAN)) #define HAS_AUTO_FAN_4 (HOTENDS > 4 && PIN_EXISTS(E4_AUTO_FAN))
#define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3) #define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3)
#define AUTO_1_IS_0 (E1_AUTO_FAN_PIN == E0_AUTO_FAN_PIN) #define AUTO_1_IS_0 (E1_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
#define AUTO_2_IS_0 (E2_AUTO_FAN_PIN == E0_AUTO_FAN_PIN) #define AUTO_2_IS_0 (E2_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
#define AUTO_2_IS_1 (E2_AUTO_FAN_PIN == E1_AUTO_FAN_PIN) #define AUTO_2_IS_1 (E2_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
#define AUTO_3_IS_0 (E3_AUTO_FAN_PIN == E0_AUTO_FAN_PIN) #define AUTO_3_IS_0 (E3_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
#define AUTO_3_IS_1 (E3_AUTO_FAN_PIN == E1_AUTO_FAN_PIN) #define AUTO_3_IS_1 (E3_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
#define AUTO_3_IS_2 (E3_AUTO_FAN_PIN == E2_AUTO_FAN_PIN) #define AUTO_3_IS_2 (E3_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
#define AUTO_4_IS_0 (E4_AUTO_FAN_PIN == E0_AUTO_FAN_PIN) #define AUTO_4_IS_0 (E4_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
#define AUTO_4_IS_1 (E4_AUTO_FAN_PIN == E1_AUTO_FAN_PIN) #define AUTO_4_IS_1 (E4_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
#define AUTO_4_IS_2 (E4_AUTO_FAN_PIN == E2_AUTO_FAN_PIN) #define AUTO_4_IS_2 (E4_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
#define AUTO_4_IS_3 (E4_AUTO_FAN_PIN == E3_AUTO_FAN_PIN) #define AUTO_4_IS_3 (E4_AUTO_FAN_PIN == E3_AUTO_FAN_PIN)
// Other fans // Other fans
#define HAS_FAN0 (PIN_EXISTS(FAN)) #define HAS_FAN0 (PIN_EXISTS(FAN))
#define HAS_FAN1 (PIN_EXISTS(FAN1) && CONTROLLER_FAN_PIN != FAN1_PIN && E0_AUTO_FAN_PIN != FAN1_PIN && E1_AUTO_FAN_PIN != FAN1_PIN && E2_AUTO_FAN_PIN != FAN1_PIN && E3_AUTO_FAN_PIN != FAN1_PIN) #define HAS_FAN1 (PIN_EXISTS(FAN1) && CONTROLLER_FAN_PIN != FAN1_PIN && E0_AUTO_FAN_PIN != FAN1_PIN && E1_AUTO_FAN_PIN != FAN1_PIN && E2_AUTO_FAN_PIN != FAN1_PIN && E3_AUTO_FAN_PIN != FAN1_PIN)
#define HAS_FAN2 (PIN_EXISTS(FAN2) && CONTROLLER_FAN_PIN != FAN2_PIN && E0_AUTO_FAN_PIN != FAN2_PIN && E1_AUTO_FAN_PIN != FAN2_PIN && E2_AUTO_FAN_PIN != FAN2_PIN && E3_AUTO_FAN_PIN != FAN2_PIN) #define HAS_FAN2 (PIN_EXISTS(FAN2) && CONTROLLER_FAN_PIN != FAN2_PIN && E0_AUTO_FAN_PIN != FAN2_PIN && E1_AUTO_FAN_PIN != FAN2_PIN && E2_AUTO_FAN_PIN != FAN2_PIN && E3_AUTO_FAN_PIN != FAN2_PIN)
#define HAS_CONTROLLER_FAN (PIN_EXISTS(CONTROLLER_FAN)) #define HAS_CONTROLLER_FAN (PIN_EXISTS(CONTROLLER_FAN))
// Servos // Servos
#define HAS_SERVOS (defined(NUM_SERVOS) && NUM_SERVOS > 0) #define HAS_SERVOS (defined(NUM_SERVOS) && NUM_SERVOS > 0)
#define HAS_SERVO_0 (PIN_EXISTS(SERVO0)) #define HAS_SERVO_0 (PIN_EXISTS(SERVO0))
#define HAS_SERVO_1 (PIN_EXISTS(SERVO1)) #define HAS_SERVO_1 (PIN_EXISTS(SERVO1))
#define HAS_SERVO_2 (PIN_EXISTS(SERVO2)) #define HAS_SERVO_2 (PIN_EXISTS(SERVO2))
#define HAS_SERVO_3 (PIN_EXISTS(SERVO3)) #define HAS_SERVO_3 (PIN_EXISTS(SERVO3))
// Sensors // Sensors
#define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH)) #define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH))
#define HAS_FIL_RUNOUT (PIN_EXISTS(FIL_RUNOUT)) #define HAS_FIL_RUNOUT (PIN_EXISTS(FIL_RUNOUT))
// User Interface // User Interface
#define HAS_HOME (PIN_EXISTS(HOME)) #define HAS_HOME (PIN_EXISTS(HOME))
#define HAS_KILL (PIN_EXISTS(KILL)) #define HAS_KILL (PIN_EXISTS(KILL))
#define HAS_SUICIDE (PIN_EXISTS(SUICIDE)) #define HAS_SUICIDE (PIN_EXISTS(SUICIDE))
#define HAS_PHOTOGRAPH (PIN_EXISTS(PHOTOGRAPH)) #define HAS_PHOTOGRAPH (PIN_EXISTS(PHOTOGRAPH))
#define HAS_BUZZER (PIN_EXISTS(BEEPER) || ENABLED(LCD_USE_I2C_BUZZER)) #define HAS_BUZZER (PIN_EXISTS(BEEPER) || ENABLED(LCD_USE_I2C_BUZZER))
#define HAS_CASE_LIGHT (PIN_EXISTS(CASE_LIGHT) && ENABLED(CASE_LIGHT_ENABLE)) #define HAS_CASE_LIGHT (PIN_EXISTS(CASE_LIGHT) && ENABLED(CASE_LIGHT_ENABLE))
// Digital control // Digital control
#define HAS_MICROSTEPS (HAS_X_MICROSTEPS || HAS_Y_MICROSTEPS || HAS_Z_MICROSTEPS || HAS_E0_MICROSTEPS || HAS_E1_MICROSTEPS || HAS_E2_MICROSTEPS || HAS_E3_MICROSTEPS || HAS_E4_MICROSTEPS) #define HAS_MICROSTEPS (HAS_X_MICROSTEPS || HAS_Y_MICROSTEPS || HAS_Z_MICROSTEPS || HAS_E0_MICROSTEPS || HAS_E1_MICROSTEPS || HAS_E2_MICROSTEPS || HAS_E3_MICROSTEPS || HAS_E4_MICROSTEPS)
#define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET)) #define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET))
#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS)) #define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))
#define HAS_MOTOR_CURRENT_PWM (PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_Z) || PIN_EXISTS(MOTOR_CURRENT_PWM_E)) #define HAS_MOTOR_CURRENT_PWM (PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_Z) || PIN_EXISTS(MOTOR_CURRENT_PWM_E))
/** /**
* This setting is also used by M109 when trying to calculate * This setting is also used by M109 when trying to calculate
* a ballpark safe margin to prevent wait-forever situation. * a ballpark safe margin to prevent wait-forever situation.
*/ */
#ifndef EXTRUDE_MINTEMP #ifndef EXTRUDE_MINTEMP
#define EXTRUDE_MINTEMP 170 #define EXTRUDE_MINTEMP 170
#endif #endif
/** /**
* Helper Macros for heaters and extruder fan * Helper Macros for heaters and extruder fan
*/ */
#define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v) #define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v)
#if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL) #if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL)
#define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v) #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v)
#if HOTENDS > 2 #if HOTENDS > 2
#define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v) #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v)
@ -689,17 +689,17 @@
#endif // HOTENDS > 4 #endif // HOTENDS > 4
#endif // HOTENDS > 3 #endif // HOTENDS > 3
#endif // HOTENDS > 2 #endif // HOTENDS > 2
#endif // HOTENDS > 1 #endif // HOTENDS > 1
#if ENABLED(HEATERS_PARALLEL) #if ENABLED(HEATERS_PARALLEL)
#define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); } #define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); }
#else #else
#define WRITE_HEATER_0(v) WRITE_HEATER_0P(v) #define WRITE_HEATER_0(v) WRITE_HEATER_0P(v)
#endif #endif
/** /**
* Heated bed requires settings * Heated bed requires settings
*/ */
#if HAS_HEATER_BED #if HAS_HEATER_BED
#ifndef MAX_BED_POWER #ifndef MAX_BED_POWER
#define MAX_BED_POWER 255 #define MAX_BED_POWER 255
#endif #endif
@ -707,59 +707,59 @@
#define HEATER_BED_INVERTING false #define HEATER_BED_INVERTING false
#endif #endif
#define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, (v) ^ HEATER_BED_INVERTING) #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, (v) ^ HEATER_BED_INVERTING)
#endif #endif
/** /**
* Up to 3 PWM fans * Up to 3 PWM fans
*/ */
#if HAS_FAN2 #if HAS_FAN2
#define FAN_COUNT 3 #define FAN_COUNT 3
#elif HAS_FAN1 #elif HAS_FAN1
#define FAN_COUNT 2 #define FAN_COUNT 2
#elif HAS_FAN0 #elif HAS_FAN0
#define FAN_COUNT 1 #define FAN_COUNT 1
#else #else
#define FAN_COUNT 0 #define FAN_COUNT 0
#endif #endif
#if HAS_FAN0 #if HAS_FAN0
#define WRITE_FAN(v) WRITE(FAN_PIN, v) #define WRITE_FAN(v) WRITE(FAN_PIN, v)
#define WRITE_FAN0(v) WRITE_FAN(v) #define WRITE_FAN0(v) WRITE_FAN(v)
#endif #endif
#if HAS_FAN1 #if HAS_FAN1
#define WRITE_FAN1(v) WRITE(FAN1_PIN, v) #define WRITE_FAN1(v) WRITE(FAN1_PIN, v)
#endif #endif
#if HAS_FAN2 #if HAS_FAN2
#define WRITE_FAN2(v) WRITE(FAN2_PIN, v) #define WRITE_FAN2(v) WRITE(FAN2_PIN, v)
#endif #endif
#define WRITE_FAN_N(n, v) WRITE_FAN##n(v) #define WRITE_FAN_N(n, v) WRITE_FAN##n(v)
/** /**
* Part Cooling fan multipliexer * Part Cooling fan multipliexer
*/ */
#define HAS_FANMUX PIN_EXISTS(FANMUX0) #define HAS_FANMUX PIN_EXISTS(FANMUX0)
/** /**
* Servos and probes * Servos and probes
*/ */
#if HAS_SERVOS #if HAS_SERVOS
#ifndef Z_ENDSTOP_SERVO_NR #ifndef Z_ENDSTOP_SERVO_NR
#define Z_ENDSTOP_SERVO_NR -1 #define Z_ENDSTOP_SERVO_NR -1
#endif #endif
#endif #endif
#define PROBE_PIN_CONFIGURED (HAS_Z_MIN_PROBE_PIN || (HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN))) #define PROBE_PIN_CONFIGURED (HAS_Z_MIN_PROBE_PIN || (HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)))
#define HAS_BED_PROBE (PROBE_SELECTED && PROBE_PIN_CONFIGURED && DISABLED(PROBE_MANUALLY)) #define HAS_BED_PROBE (PROBE_SELECTED && PROBE_PIN_CONFIGURED && DISABLED(PROBE_MANUALLY))
#if ENABLED(Z_PROBE_ALLEN_KEY) #if ENABLED(Z_PROBE_ALLEN_KEY)
#define PROBE_IS_TRIGGERED_WHEN_STOWED_TEST #define PROBE_IS_TRIGGERED_WHEN_STOWED_TEST
#endif #endif
/** /**
* Bed Probe dependencies * Bed Probe dependencies
*/ */
#if HAS_BED_PROBE #if HAS_BED_PROBE
#if ENABLED(ENDSTOPPULLUPS) && HAS_Z_MIN_PROBE_PIN #if ENABLED(ENDSTOPPULLUPS) && HAS_Z_MIN_PROBE_PIN
#define ENDSTOPPULLUP_ZMIN_PROBE #define ENDSTOPPULLUP_ZMIN_PROBE
#endif #endif
@ -781,38 +781,38 @@
#else #else
#define _Z_CLEARANCE_DEPLOY_PROBE Z_CLEARANCE_DEPLOY_PROBE #define _Z_CLEARANCE_DEPLOY_PROBE Z_CLEARANCE_DEPLOY_PROBE
#endif #endif
#else #else
#undef X_PROBE_OFFSET_FROM_EXTRUDER #undef X_PROBE_OFFSET_FROM_EXTRUDER
#undef Y_PROBE_OFFSET_FROM_EXTRUDER #undef Y_PROBE_OFFSET_FROM_EXTRUDER
#undef Z_PROBE_OFFSET_FROM_EXTRUDER #undef Z_PROBE_OFFSET_FROM_EXTRUDER
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 #define X_PROBE_OFFSET_FROM_EXTRUDER 0
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 #define Y_PROBE_OFFSET_FROM_EXTRUDER 0
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 #define Z_PROBE_OFFSET_FROM_EXTRUDER 0
#endif #endif
/** /**
* Heater & Fan Pausing * Heater & Fan Pausing
*/ */
#if FAN_COUNT == 0 #if FAN_COUNT == 0
#undef PROBING_FANS_OFF #undef PROBING_FANS_OFF
#endif #endif
#define QUIET_PROBING (HAS_BED_PROBE && (ENABLED(PROBING_HEATERS_OFF) || ENABLED(PROBING_FANS_OFF) || DELAY_BEFORE_PROBING > 0)) #define QUIET_PROBING (HAS_BED_PROBE && (ENABLED(PROBING_HEATERS_OFF) || ENABLED(PROBING_FANS_OFF) || DELAY_BEFORE_PROBING > 0))
#define HEATER_IDLE_HANDLER (ENABLED(ADVANCED_PAUSE_FEATURE) || ENABLED(PROBING_HEATERS_OFF)) #define HEATER_IDLE_HANDLER (ENABLED(ADVANCED_PAUSE_FEATURE) || ENABLED(PROBING_HEATERS_OFF))
/** /**
* Only constrain Z on DELTA / SCARA machines * Only constrain Z on DELTA / SCARA machines
*/ */
#if IS_KINEMATIC #if IS_KINEMATIC
#undef MIN_SOFTWARE_ENDSTOP_X #undef MIN_SOFTWARE_ENDSTOP_X
#undef MIN_SOFTWARE_ENDSTOP_Y #undef MIN_SOFTWARE_ENDSTOP_Y
#undef MAX_SOFTWARE_ENDSTOP_X #undef MAX_SOFTWARE_ENDSTOP_X
#undef MAX_SOFTWARE_ENDSTOP_Y #undef MAX_SOFTWARE_ENDSTOP_Y
#endif #endif
/** /**
* Delta endstops, radius/rod trimmers, angle trimmers * Delta endstops, radius/rod trimmers, angle trimmers
*/ */
#if ENABLED(DELTA) #if ENABLED(DELTA)
#ifndef DELTA_CALIBRATION_RADIUS #ifndef DELTA_CALIBRATION_RADIUS
#define DELTA_CALIBRATION_RADIUS DELTA_PRINTABLE_RADIUS - 10 #define DELTA_CALIBRATION_RADIUS DELTA_PRINTABLE_RADIUS - 10
#endif #endif
@ -828,82 +828,82 @@
#ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER
#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0} #define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
#endif #endif
#endif #endif
/** /**
* Set granular options based on the specific type of leveling * Set granular options based on the specific type of leveling
*/ */
#define UBL_DELTA (ENABLED(AUTO_BED_LEVELING_UBL) && (ENABLED(DELTA) || ENABLED(UBL_GRANULAR_SEGMENTATION_FOR_CARTESIAN))) #define UBL_DELTA (ENABLED(AUTO_BED_LEVELING_UBL) && (ENABLED(DELTA) || ENABLED(UBL_GRANULAR_SEGMENTATION_FOR_CARTESIAN)))
#define ABL_PLANAR (ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_3POINT)) #define ABL_PLANAR (ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_3POINT))
#define ABL_GRID (ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR)) #define ABL_GRID (ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR))
#define OLDSCHOOL_ABL (ABL_PLANAR || ABL_GRID) #define OLDSCHOOL_ABL (ABL_PLANAR || ABL_GRID)
#define HAS_ABL (OLDSCHOOL_ABL || ENABLED(AUTO_BED_LEVELING_UBL)) #define HAS_ABL (OLDSCHOOL_ABL || ENABLED(AUTO_BED_LEVELING_UBL))
#define HAS_LEVELING (HAS_ABL || ENABLED(MESH_BED_LEVELING)) #define HAS_LEVELING (HAS_ABL || ENABLED(MESH_BED_LEVELING))
#define HAS_AUTOLEVEL (HAS_ABL && DISABLED(PROBE_MANUALLY)) #define HAS_AUTOLEVEL (HAS_ABL && DISABLED(PROBE_MANUALLY))
#define HAS_MESH (ENABLED(AUTO_BED_LEVELING_BILINEAR) || ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(MESH_BED_LEVELING)) #define HAS_MESH (ENABLED(AUTO_BED_LEVELING_BILINEAR) || ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(MESH_BED_LEVELING))
#define PLANNER_LEVELING (OLDSCHOOL_ABL || ENABLED(MESH_BED_LEVELING) || UBL_DELTA) #define PLANNER_LEVELING (OLDSCHOOL_ABL || ENABLED(MESH_BED_LEVELING) || UBL_DELTA)
#define HAS_PROBING_PROCEDURE (HAS_ABL || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)) #define HAS_PROBING_PROCEDURE (HAS_ABL || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST))
#if HAS_PROBING_PROCEDURE #if HAS_PROBING_PROCEDURE
#define PROBE_BED_WIDTH abs(RIGHT_PROBE_BED_POSITION - (LEFT_PROBE_BED_POSITION)) #define PROBE_BED_WIDTH abs(RIGHT_PROBE_BED_POSITION - (LEFT_PROBE_BED_POSITION))
#define PROBE_BED_HEIGHT abs(BACK_PROBE_BED_POSITION - (FRONT_PROBE_BED_POSITION)) #define PROBE_BED_HEIGHT abs(BACK_PROBE_BED_POSITION - (FRONT_PROBE_BED_POSITION))
#endif #endif
/** /**
* Buzzer/Speaker * Buzzer/Speaker
*/ */
#if ENABLED(LCD_USE_I2C_BUZZER) #if ENABLED(LCD_USE_I2C_BUZZER)
#ifndef LCD_FEEDBACK_FREQUENCY_HZ #ifndef LCD_FEEDBACK_FREQUENCY_HZ
#define LCD_FEEDBACK_FREQUENCY_HZ 1000 #define LCD_FEEDBACK_FREQUENCY_HZ 1000
#endif #endif
#ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
#endif #endif
#else #else
#ifndef LCD_FEEDBACK_FREQUENCY_HZ #ifndef LCD_FEEDBACK_FREQUENCY_HZ
#define LCD_FEEDBACK_FREQUENCY_HZ 5000 #define LCD_FEEDBACK_FREQUENCY_HZ 5000
#endif #endif
#ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2
#endif #endif
#endif #endif
/** /**
* VIKI2, miniVIKI, and AZSMZ_12864 require DOGLCD_SCK and DOGLCD_MOSI to be defined. * VIKI2, miniVIKI, and AZSMZ_12864 require DOGLCD_SCK and DOGLCD_MOSI to be defined.
*/ */
#if ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(AZSMZ_12864) #if ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(AZSMZ_12864)
#ifndef DOGLCD_SCK #ifndef DOGLCD_SCK
#define DOGLCD_SCK SCK_PIN #define DOGLCD_SCK SCK_PIN
#endif #endif
#ifndef DOGLCD_MOSI #ifndef DOGLCD_MOSI
#define DOGLCD_MOSI MOSI_PIN #define DOGLCD_MOSI MOSI_PIN
#endif #endif
#endif #endif
/** /**
* Z_HOMING_HEIGHT / Z_CLEARANCE_BETWEEN_PROBES * Z_HOMING_HEIGHT / Z_CLEARANCE_BETWEEN_PROBES
*/ */
#ifndef Z_HOMING_HEIGHT #ifndef Z_HOMING_HEIGHT
#ifndef Z_CLEARANCE_BETWEEN_PROBES #ifndef Z_CLEARANCE_BETWEEN_PROBES
#define Z_HOMING_HEIGHT 0 #define Z_HOMING_HEIGHT 0
#else #else
#define Z_HOMING_HEIGHT Z_CLEARANCE_BETWEEN_PROBES #define Z_HOMING_HEIGHT Z_CLEARANCE_BETWEEN_PROBES
#endif #endif
#endif #endif
#ifndef Z_CLEARANCE_BETWEEN_PROBES #ifndef Z_CLEARANCE_BETWEEN_PROBES
#define Z_CLEARANCE_BETWEEN_PROBES Z_HOMING_HEIGHT #define Z_CLEARANCE_BETWEEN_PROBES Z_HOMING_HEIGHT
#endif #endif
#if Z_CLEARANCE_BETWEEN_PROBES > Z_HOMING_HEIGHT #if Z_CLEARANCE_BETWEEN_PROBES > Z_HOMING_HEIGHT
#define MANUAL_PROBE_HEIGHT Z_CLEARANCE_BETWEEN_PROBES #define MANUAL_PROBE_HEIGHT Z_CLEARANCE_BETWEEN_PROBES
#else #else
#define MANUAL_PROBE_HEIGHT Z_HOMING_HEIGHT #define MANUAL_PROBE_HEIGHT Z_HOMING_HEIGHT
#endif #endif
/** /**
* Bed Probing rectangular bounds * Bed Probing rectangular bounds
* These can be further constrained in code for Delta and SCARA * These can be further constrained in code for Delta and SCARA
*/ */
#if ENABLED(DELTA) #if ENABLED(DELTA)
#ifndef DELTA_PROBEABLE_RADIUS #ifndef DELTA_PROBEABLE_RADIUS
#define DELTA_PROBEABLE_RADIUS DELTA_PRINTABLE_RADIUS #define DELTA_PROBEABLE_RADIUS DELTA_PRINTABLE_RADIUS
#endif #endif
@ -914,57 +914,57 @@
#define MIN_PROBE_Y (Y_CENTER - (DELTA_PROBEABLE_RADIUS)) #define MIN_PROBE_Y (Y_CENTER - (DELTA_PROBEABLE_RADIUS))
#define MAX_PROBE_X (X_CENTER + DELTA_PROBEABLE_RADIUS) #define MAX_PROBE_X (X_CENTER + DELTA_PROBEABLE_RADIUS)
#define MAX_PROBE_Y (Y_CENTER + DELTA_PROBEABLE_RADIUS) #define MAX_PROBE_Y (Y_CENTER + DELTA_PROBEABLE_RADIUS)
#elif IS_SCARA #elif IS_SCARA
#define SCARA_PRINTABLE_RADIUS (SCARA_LINKAGE_1 + SCARA_LINKAGE_2) #define SCARA_PRINTABLE_RADIUS (SCARA_LINKAGE_1 + SCARA_LINKAGE_2)
#define MIN_PROBE_X (X_CENTER - (SCARA_PRINTABLE_RADIUS)) #define MIN_PROBE_X (X_CENTER - (SCARA_PRINTABLE_RADIUS))
#define MIN_PROBE_Y (Y_CENTER - (SCARA_PRINTABLE_RADIUS)) #define MIN_PROBE_Y (Y_CENTER - (SCARA_PRINTABLE_RADIUS))
#define MAX_PROBE_X (X_CENTER + SCARA_PRINTABLE_RADIUS) #define MAX_PROBE_X (X_CENTER + SCARA_PRINTABLE_RADIUS)
#define MAX_PROBE_Y (Y_CENTER + SCARA_PRINTABLE_RADIUS) #define MAX_PROBE_Y (Y_CENTER + SCARA_PRINTABLE_RADIUS)
#else #else
// Boundaries for Cartesian probing based on bed limits // Boundaries for Cartesian probing based on bed limits
#define MIN_PROBE_X (max(X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER, X_MIN_BED)) #define MIN_PROBE_X (max(X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER, X_MIN_BED))
#define MIN_PROBE_Y (max(Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER, Y_MIN_BED)) #define MIN_PROBE_Y (max(Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER, Y_MIN_BED))
#define MAX_PROBE_X (min(X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER, X_MAX_BED)) #define MAX_PROBE_X (min(X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER, X_MAX_BED))
#define MAX_PROBE_Y (min(Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER, Y_MAX_BED)) #define MAX_PROBE_Y (min(Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER, Y_MAX_BED))
#endif #endif
// Stepper pulse duration, in cycles // Stepper pulse duration, in cycles
#define STEP_PULSE_CYCLES ((MINIMUM_STEPPER_PULSE) * CYCLES_PER_MICROSECOND) #define STEP_PULSE_CYCLES ((MINIMUM_STEPPER_PULSE) * CYCLES_PER_MICROSECOND)
#ifdef CPU_32_BIT #ifdef CPU_32_BIT
// Add additional delay for between direction signal and pulse signal of stepper // Add additional delay for between direction signal and pulse signal of stepper
#ifndef STEPPER_DIRECTION_DELAY #ifndef STEPPER_DIRECTION_DELAY
#define STEPPER_DIRECTION_DELAY 0 // time in microseconds #define STEPPER_DIRECTION_DELAY 0 // time in microseconds
#endif #endif
#endif #endif
#ifndef __SAM3X8E__ //todo: hal: broken hal encapsulation #ifndef __SAM3X8E__ //todo: hal: broken hal encapsulation
#undef UI_VOLTAGE_LEVEL #undef UI_VOLTAGE_LEVEL
#undef RADDS_DISPLAY #undef RADDS_DISPLAY
#undef MOTOR_CURRENT #undef MOTOR_CURRENT
#endif #endif
#if ENABLED(SDCARD_SORT_ALPHA) #if ENABLED(SDCARD_SORT_ALPHA)
#define HAS_FOLDER_SORTING (FOLDER_SORTING || ENABLED(SDSORT_GCODE)) #define HAS_FOLDER_SORTING (FOLDER_SORTING || ENABLED(SDSORT_GCODE))
#endif #endif
// Updated G92 behavior shifts the workspace // Updated G92 behavior shifts the workspace
#define HAS_POSITION_SHIFT DISABLED(NO_WORKSPACE_OFFSETS) #define HAS_POSITION_SHIFT DISABLED(NO_WORKSPACE_OFFSETS)
// The home offset also shifts the coordinate space // The home offset also shifts the coordinate space
#define HAS_HOME_OFFSET (DISABLED(NO_WORKSPACE_OFFSETS) || ENABLED(DELTA)) #define HAS_HOME_OFFSET (DISABLED(NO_WORKSPACE_OFFSETS) || ENABLED(DELTA))
// Either offset yields extra calculations on all moves // Either offset yields extra calculations on all moves
#define HAS_WORKSPACE_OFFSET (HAS_POSITION_SHIFT || HAS_HOME_OFFSET) #define HAS_WORKSPACE_OFFSET (HAS_POSITION_SHIFT || HAS_HOME_OFFSET)
// M206 doesn't apply to DELTA // M206 doesn't apply to DELTA
#define HAS_M206_COMMAND (HAS_HOME_OFFSET && DISABLED(DELTA)) #define HAS_M206_COMMAND (HAS_HOME_OFFSET && DISABLED(DELTA))
// LCD timeout to status screen default is 15s // LCD timeout to status screen default is 15s
#ifndef LCD_TIMEOUT_TO_STATUS #ifndef LCD_TIMEOUT_TO_STATUS
#define LCD_TIMEOUT_TO_STATUS 15000 #define LCD_TIMEOUT_TO_STATUS 15000
#endif #endif
/** /**
* DELTA_SEGMENT_MIN_LENGTH for UBL_DELTA * DELTA_SEGMENT_MIN_LENGTH for UBL_DELTA
*/ */
#if UBL_DELTA #if UBL_DELTA
#ifndef DELTA_SEGMENT_MIN_LENGTH #ifndef DELTA_SEGMENT_MIN_LENGTH
#if IS_SCARA #if IS_SCARA
#define DELTA_SEGMENT_MIN_LENGTH 0.25 // SCARA minimum segment size is 0.25mm #define DELTA_SEGMENT_MIN_LENGTH 0.25 // SCARA minimum segment size is 0.25mm
@ -974,31 +974,31 @@
#define DELTA_SEGMENT_MIN_LENGTH 1.00 // mm (similar to G2/G3 arc segmentation) #define DELTA_SEGMENT_MIN_LENGTH 1.00 // mm (similar to G2/G3 arc segmentation)
#endif #endif
#endif #endif
#endif #endif
// Shorthand // Shorthand
#define GRID_MAX_POINTS ((GRID_MAX_POINTS_X) * (GRID_MAX_POINTS_Y)) #define GRID_MAX_POINTS ((GRID_MAX_POINTS_X) * (GRID_MAX_POINTS_Y))
// Add commands that need sub-codes to this list // Add commands that need sub-codes to this list
#define USE_GCODE_SUBCODES ENABLED(G38_PROBE_TARGET) #define USE_GCODE_SUBCODES ENABLED(G38_PROBE_TARGET)
// MESH_BED_LEVELING overrides PROBE_MANUALLY // MESH_BED_LEVELING overrides PROBE_MANUALLY
#if ENABLED(MESH_BED_LEVELING) #if ENABLED(MESH_BED_LEVELING)
#undef PROBE_MANUALLY #undef PROBE_MANUALLY
#endif #endif
// Parking Extruder // Parking Extruder
#if ENABLED(PARKING_EXTRUDER) #if ENABLED(PARKING_EXTRUDER)
#ifndef PARKING_EXTRUDER_GRAB_DISTANCE #ifndef PARKING_EXTRUDER_GRAB_DISTANCE
#define PARKING_EXTRUDER_GRAB_DISTANCE 0 #define PARKING_EXTRUDER_GRAB_DISTANCE 0
#endif #endif
#ifndef PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE #ifndef PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE
#define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE HIGH #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE HIGH
#endif #endif
#endif #endif
// Use float instead of double. Needs profiling. // Use float instead of double. Needs profiling.
#if defined(ARDUINO_ARCH_SAM) && ENABLED(DELTA_FAST_SQRT) #if defined(ARDUINO_ARCH_SAM) && ENABLED(DELTA_FAST_SQRT)
#undef ATAN2 #undef ATAN2
#undef FABS #undef FABS
#undef POW #undef POW
@ -1015,14 +1015,15 @@
#define FLOOR(x) floorf(x) #define FLOOR(x) floorf(x)
#define LROUND(x) lroundf(x) #define LROUND(x) lroundf(x)
#define FMOD(x, y) fmodf(x, y) #define FMOD(x, y) fmodf(x, y)
#endif #endif
#ifdef TEENSYDUINO #ifdef TEENSYDUINO
#undef max #undef max
#define max(a,b) ((a)>(b)?(a):(b)) #define max(a,b) ((a)>(b)?(a):(b))
#undef min #undef min
#define min(a,b) ((a)<(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b))
#define NOT_A_PIN 0 // For PINS_DEBUGGING #define NOT_A_PIN 0 // For PINS_DEBUGGING
#endif #endif
#endif // CONDITIONALS_POST_H #endif // CONDITIONALS_POST_H

View file

@ -26,6 +26,9 @@
* Test configuration values for errors at compile-time. * Test configuration values for errors at compile-time.
*/ */
#ifndef _SANITYCHECK_H_
#define _SANITYCHECK_H_
/** /**
* Require gcc 4.7 or newer (first included with Arduino 1.6.8) for C++11 features. * Require gcc 4.7 or newer (first included with Arduino 1.6.8) for C++11 features.
*/ */
@ -1361,5 +1364,6 @@ static_assert(COUNT(sanity_arr_1) <= XYZE_N, "DEFAULT_AXIS_STEPS_PER_UNIT has to
static_assert(COUNT(sanity_arr_2) <= XYZE_N, "DEFAULT_MAX_FEEDRATE has too many elements."); static_assert(COUNT(sanity_arr_2) <= XYZE_N, "DEFAULT_MAX_FEEDRATE has too many elements.");
static_assert(COUNT(sanity_arr_3) <= XYZE_N, "DEFAULT_MAX_ACCELERATION has too many elements."); static_assert(COUNT(sanity_arr_3) <= XYZE_N, "DEFAULT_MAX_ACCELERATION has too many elements.");
#include "../HAL/HAL_SanityCheck.h" // get CPU specific checks #include "../HAL/HAL_SanityCheck.h" // get CPU specific checks
#endif // _SANITYCHECK_H_

View file

@ -20,6 +20,11 @@
* *
*/ */
#ifndef _VERSION_H_
#define _VERSION_H_
#include "MarlinConfig.h"
/** /**
* This file is the standard Marlin version identifier file, all fields can be * This file is the standard Marlin version identifier file, all fields can be
* overriden by the ones defined on _Version.h by using the Configuration.h * overriden by the ones defined on _Version.h by using the Configuration.h
@ -48,7 +53,7 @@
* here we define this default string as the date where the latest release * here we define this default string as the date where the latest release
* version was tagged. * version was tagged.
*/ */
#define STRING_DISTRIBUTION_DATE "2017-07-27 12:00" #define STRING_DISTRIBUTION_DATE "2017-10-19 12:00"
/** /**
* Required minimum Configuration.h and Configuration_adv.h file versions. * Required minimum Configuration.h and Configuration_adv.h file versions.
@ -92,3 +97,5 @@
#define WEBSITE_URL "http://marlinfw.org" #define WEBSITE_URL "http://marlinfw.org"
#endif // USE_AUTOMATIC_VERSIONING #endif // USE_AUTOMATIC_VERSIONING
#endif // _VERSION_H_