Commit fa734abf authored by MagoKimbra's avatar MagoKimbra

FIX ENABLED and DISABLED

parent 0fa71d48
......@@ -4,8 +4,8 @@
/*
* This configuration file contains mechanism settings for cartesian printer.
*
* - Core settings
* - Machine name
* - Core settings
* - Endstop pullup resistors
* - Endstops logic
* - Endstops min or max
......@@ -28,20 +28,6 @@
* Pins-settings can be found in "Configuration_Pins.h"
*/
/*****************************************************************************************
************************************* Core settings *************************************
/****************************************************************************************/
//This define the moltiplicator axis from X to Y or Z in COREXY or COREXZ.
//Example:
//COREXY set COREX_XZ_FACTOR 1
//The result is:
//X = dX + COREX_YZ_FACTOR * dY = dX + 1 * dY = dX + dY
//Y = dX - COREX_YZ_FACTOR * dY = dX - 1 * dY = dX - dY
//Z = dZ
#define COREX_YZ_FACTOR 1
/*****************************************************************************************/
/*****************************************************************************************
************************************* Machine name **************************************
*****************************************************************************************
......@@ -54,6 +40,27 @@
/*****************************************************************************************/
/*****************************************************************************************
************************************* Core settings *************************************
*****************************************************************************************
* This define the moltiplicator axis from X to Y or Z in COREXY or COREXZ. *
* Example: *
* COREXY set COREX_XZ_FACTOR 1 *
* The result is: *
* X = dX + COREX_YZ_FACTOR * dY = dX + 1 * dY = dX + dY *
* Y = dX - COREX_YZ_FACTOR * dY = dX - 1 * dY = dX - dY *
* Z = dZ *
* *
* COREXZ set COREX_XZ_FACTOR -3 *
* The result is: *
* X = dX + COREX_YZ_FACTOR * dZ = dX + -3 * dZ = dX - 3dZ *
* Y = dY *
* Z = dX - COREX_YZ_FACTOR * dZ = dX - -3 * dZ = dX + 3dZ *
******************************************************************************************/
#define COREX_YZ_FACTOR 1
/*****************************************************************************************/
/*****************************************************************************************
****************************** Endstop pullup resistors *********************************
*****************************************************************************************/
......
* Pins-settings can be found in "Configuration_Pins.h"#ifndef CONFIGURATION_MECHANISM
#ifndef CONFIGURATION_MECHANISM
#define CONFIGURATION_MECHANISM
#define KNOWN_MECH 1
/*
* This configuration file contains mechanism settings for cartesian printer.
*
* - Delta settings
* - Machine name
* - Delta settings
* - Endstop pullup resistors
* - Endstops logic
* - Endstops min or max
......@@ -29,6 +28,18 @@
* Pins-settings can be found in "Configuration_Pins.h"
*/
/*****************************************************************************************
************************************* Machine name **************************************
*****************************************************************************************
* *
* This to set a custom name for your generic Mendel. *
* Displayed in the LCD "Ready" message. *
* *
*****************************************************************************************/
#define CUSTOM_MACHINE_NAME "Prusa"
/*****************************************************************************************/
/*****************************************************************************************
******************************** Delta configuration ************************************
****************************************************************************************/
......@@ -96,18 +107,6 @@
/*****************************************************************************************/
/*****************************************************************************************
************************************* Machine name **************************************
*****************************************************************************************
* *
* This to set a custom name for your generic Mendel. *
* Displayed in the LCD "Ready" message. *
* *
*****************************************************************************************/
#define CUSTOM_MACHINE_NAME "Prusa"
/*****************************************************************************************/
/*****************************************************************************************
****************************** Endstop pullup resistors *********************************
*****************************************************************************************/
......@@ -228,6 +227,25 @@
/*****************************************************************************************/
/*****************************************************************************************
******************************** Manual home positions **********************************
/*****************************************************************************************
* *
* Manual Bed Leveling (MBL) or Auto Bed Leveling (ABL) settings *
* Set the rectangle in which to probe in MBL or ABL. *
* *
*****************************************************************************************/
// The position of the homing switches
#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used
#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0)
//Manual homing switch locations:
#define MANUAL_X_HOME_POS 0
#define MANUAL_Y_HOME_POS 0
#define MANUAL_Z_HOME_POS 200 // Distance between nozzle and print surface after homing.
/*****************************************************************************************/
/*****************************************************************************************
************************************ Travel limits **************************************
*****************************************************************************************
......@@ -252,25 +270,6 @@
/*****************************************************************************************/
/*****************************************************************************************
******************************** Manual home positions **********************************
/*****************************************************************************************
* *
* Manual Bed Leveling (MBL) or Auto Bed Leveling (ABL) settings *
* Set the rectangle in which to probe in MBL or ABL. *
* *
*****************************************************************************************/
// The position of the homing switches
#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used
#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0)
//Manual homing switch locations:
#define MANUAL_X_HOME_POS 0
#define MANUAL_Y_HOME_POS 0
#define MANUAL_Z_HOME_POS 200 // Distance between nozzle and print surface after homing.
/*****************************************************************************************/
/*****************************************************************************************
******************************* Axis steps per unit *************************************
*****************************************************************************************/
......
......@@ -60,7 +60,7 @@
//FAN pin
#define FAN_PIN ORIG_FAN_PIN
//============================================================================
//==================================================================
//=========================== FEATURE ==============================
......@@ -121,5 +121,9 @@
#define SLED_PIN -1
#endif
//============================================================================
#if ENABLED(Z_PROBE_ENDSTOP)
#define Z_PROBE_PIN -1
#endif
//====================================================================
#endif
\ No newline at end of file
......@@ -5,8 +5,8 @@
/*
* This configuration file contains mechanism settings for cartesian printer.
*
* - Scara settings
* - Machine name
* - Scara settings
* - Endstop pullup resistors
* - Endstops logic
* - Endstops min or max
......@@ -29,6 +29,18 @@
* Pins-settings can be found in "Configuration_Pins.h"
*/
/*****************************************************************************************
************************************* Machine name **************************************
*****************************************************************************************
* *
* This to set a custom name for your generic Mendel. *
* Displayed in the LCD "Ready" message. *
* *
*****************************************************************************************/
#define CUSTOM_MACHINE_NAME "Scara"
/*****************************************************************************************/
/*****************************************************************************************
************************************* Scara settings *************************************
/****************************************************************************************/
......@@ -54,18 +66,6 @@
/*****************************************************************************************/
/*****************************************************************************************
************************************* Machine name **************************************
*****************************************************************************************
* *
* This to set a custom name for your generic Mendel. *
* Displayed in the LCD "Ready" message. *
* *
*****************************************************************************************/
#define CUSTOM_MACHINE_NAME "Scara"
/*****************************************************************************************/
/*****************************************************************************************
****************************** Endstop pullup resistors *********************************
*****************************************************************************************/
......
......@@ -816,7 +816,7 @@ void setup() {
ECHO_LM(DB, MSG_MARLIN " " BUILD_VERSION);
#if EXIST(STRING_DISTRIBUTION_DATE) && EXIST(STRING_CONFIG_H_AUTHOR)
#if ENABLED(STRING_DISTRIBUTION_DATE) && ENABLED(STRING_CONFIG_H_AUTHOR)
ECHO_LM(DB, MSG_CONFIGURATION_VER STRING_DISTRIBUTION_DATE MSG_AUTHOR STRING_CONFIG_H_AUTHOR);
ECHO_LM(DB, MSG_COMPILED __DATE__);
#endif // STRING_DISTRIBUTION_DATE
......@@ -946,7 +946,7 @@ void get_command() {
if (drain_queued_commands_P()) return; // priority is given to non-serial commands
#if EXIST(NO_TIMEOUTS)
#if ENABLED(NO_TIMEOUTS)
static millis_t last_command_time = 0;
millis_t ms = millis();
......@@ -961,7 +961,7 @@ void get_command() {
//
while (MYSERIAL.available() > 0 && commands_in_queue < BUFSIZE) {
#if EXIST(NO_TIMEOUTS)
#if ENABLED(NO_TIMEOUTS)
last_command_time = ms;
#endif
......@@ -3744,7 +3744,8 @@ inline void gcode_G28() {
clean_up_after_endstop_move();
// solve lsq problem
double *plane_equation_coefficients = qr_solve(abl2, 3, eqnAMatrix, eqnBVector);
double plane_equation_coefficients[3];
qr_solve(plane_equation_coefficients, abl2, 3, eqnAMatrix, eqnBVector);
if (verbose_level) {
ECHO_SMV(DB, "Eqn coefficients: a: ", plane_equation_coefficients[0], 8);
......@@ -3753,7 +3754,6 @@ inline void gcode_G28() {
}
if (!dryrun) set_bed_level_equation_lsq(plane_equation_coefficients);
free(plane_equation_coefficients);
matrix_3x3 inverse_bed_level_matrix = matrix_3x3::transpose(plan_bed_level_matrix); // inverse bed level matrix
// In the special case of an rotation matrix "the inverse" = "the transposed" matrix.
......@@ -5157,14 +5157,14 @@ inline void gcode_M105() {
#endif
ECHO_M(" " MSG_AT);
#if EXIST(HOTEND_WATTS)
#if ENABLED(HOTEND_WATTS)
ECHO_VM((HOTEND_WATTS * getHeaterPower(target_extruder))/127, "W");
#else
ECHO_V(getHeaterPower(target_extruder));
#endif
ECHO_M(" " MSG_BAT);
#if EXIST(BED_WATTS)
#if ENABLED(BED_WATTS)
ECHO_VM((BED_WATTS * getHeaterPower(-1))/127, "W");
#else
ECHO_V(getHeaterPower(-1));
......@@ -6332,7 +6332,7 @@ inline void gcode_M503() {
//retract by E
if (code_seen('E')) destination[E_AXIS] += code_value();
#if EXIST(FILAMENTCHANGE_FIRSTRETRACT)
#if ENABLED(FILAMENTCHANGE_FIRSTRETRACT)
else destination[E_AXIS] += FILAMENTCHANGE_FIRSTRETRACT;
#endif
......@@ -6340,7 +6340,7 @@ inline void gcode_M503() {
//lift Z
if (code_seen('Z')) destination[Z_AXIS] += code_value();
#if EXIST(FILAMENTCHANGE_ZADD)
#if ENABLED(FILAMENTCHANGE_ZADD)
else destination[Z_AXIS] += FILAMENTCHANGE_ZADD;
#endif
......@@ -6348,19 +6348,19 @@ inline void gcode_M503() {
//move xy
if (code_seen('X')) destination[X_AXIS] = code_value();
#if EXIST(FILAMENTCHANGE_XPOS)
#if ENABLED(FILAMENTCHANGE_XPOS)
else destination[X_AXIS] = FILAMENTCHANGE_XPOS;
#endif
if (code_seen('Y')) destination[Y_AXIS] = code_value();
#if EXIST(FILAMENTCHANGE_YPOS)
#if ENABLED(FILAMENTCHANGE_YPOS)
else destination[Y_AXIS] = FILAMENTCHANGE_YPOS;
#endif
RUNPLAN
if (code_seen('L')) destination[E_AXIS] += code_value();
#if EXIST(FILAMENTCHANGE_FINALRETRACT)
#if ENABLED(FILAMENTCHANGE_FINALRETRACT)
else destination[E_AXIS] += FILAMENTCHANGE_FINALRETRACT;
#endif
......@@ -6425,7 +6425,7 @@ inline void gcode_M503() {
//return to normal
if (code_seen('L')) destination[E_AXIS] -= code_value();
#if EXIST(FILAMENTCHANGE_FINALRETRACT)
#if ENABLED(FILAMENTCHANGE_FINALRETRACT)
else destination[E_AXIS] -= FILAMENTCHANGE_FINALRETRACT;
#endif
......@@ -6613,13 +6613,13 @@ inline void gcode_M907() {
if (code_seen('B')) digipot_current(4, code_value());
if (code_seen('S')) for (int i=0; i<=4; i++) digipot_current(i, code_value());
#endif
#if EXIST(MOTOR_CURRENT_PWM_XY_PIN)
#if ENABLED(MOTOR_CURRENT_PWM_XY_PIN)
if (code_seen('X')) digipot_current(0, code_value());
#endif
#if EXIST(MOTOR_CURRENT_PWM_Z_PIN)
#if ENABLED(MOTOR_CURRENT_PWM_Z_PIN)
if (code_seen('Z')) digipot_current(1, code_value());
#endif
#if EXIST(MOTOR_CURRENT_PWM_E_PIN)
#if ENABLED(MOTOR_CURRENT_PWM_E_PIN)
if (code_seen('E')) digipot_current(2, code_value());
#endif
#if ENABLED(DIGIPOT_I2C)
......
#include "base.h"
#if HAS(BUZZER)
......
#include "base.h"
#if ENABLED(SDSUPPORT)
......
......@@ -108,11 +108,11 @@
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
#if NOTEXIST(ENCODER_PULSES_PER_STEP)
#if DISABLED(ENCODER_PULSES_PER_STEP)
#define ENCODER_PULSES_PER_STEP 4
#endif
#if NOTEXIST(ENCODER_STEPS_PER_MENU_ITEM)
#if DISABLED(ENCODER_STEPS_PER_MENU_ITEM)
#define ENCODER_STEPS_PER_MENU_ITEM 1
#endif
......@@ -204,7 +204,7 @@
/**
* Default LCD contrast for dogm-like LCD displays
*/
#if ENABLED(DOGLCD) && NOTEXIST(DEFAULT_LCD_CONTRAST)
#if ENABLED(DOGLCD) && DISABLED(DEFAULT_LCD_CONTRAST)
#define DEFAULT_LCD_CONTRAST 32
#endif
......@@ -429,7 +429,7 @@
* Power Signal Control Definitions
* By default use Normal definition
*/
#if NOTEXIST(POWER_SUPPLY)
#if DISABLED(POWER_SUPPLY)
#define POWER_SUPPLY 0
#endif
#if (POWER_SUPPLY == 1) // 1 = ATX
......@@ -580,7 +580,7 @@
#define HAS_Z_MAX (PIN_EXISTS(Z_MAX))
#define HAS_Z2_MIN (PIN_EXISTS(Z2_MIN))
#define HAS_Z2_MAX (PIN_EXISTS(Z2_MAX))
#define HAS_Z_PROBE (PIN_EXISTS(Z_PROBE))
#define HAS_Z_PROBE (ENABLED(Z_PROBE_ENDSTOP) && PIN_EXISTS(Z_PROBE))
#define HAS_E_MIN (PIN_EXISTS(E_MIN))
#define HAS_SOLENOID_1 (PIN_EXISTS(SOL1))
#define HAS_SOLENOID_2 (PIN_EXISTS(SOL2))
......@@ -627,6 +627,7 @@
#define HAS_E1E3 (PIN_EXISTS(E1E3_CHOICE))
#define HAS_BTN_BACK (PIN_EXISTS(BTN_BACK))
#define HAS_POWER_SWITCH (POWER_SUPPLY > 0 && PIN_EXISTS(PS_ON))
#define HAS_MOTOR_CURRENT_PWM_XY (PIN_EXISTS(MOTOR_CURRENT_PWM_XY))
#define HAS_DIGIPOTSS (DIGIPOTSS_PIN >= 0)
......
......@@ -1327,7 +1327,7 @@
* *
***********************************************************************/
//#define STEPPER_HIGH_LOW
//#define STEPPER_HIGH_LOW_DELAY 1u // Delay in microseconds
#define STEPPER_HIGH_LOW_DELAY 1u // Delay in microseconds
/***********************************************************************/
......
......@@ -23,7 +23,7 @@
// 13 Basque-Euskera
// 14 Portuguese (Brazil)
#if NOTEXIST(LANGUAGE_CHOICE)
#if DISABLED(LANGUAGE_CHOICE)
#define LANGUAGE_CHOICE 7 // Pick your language from the list above
#endif
......@@ -45,20 +45,20 @@
#elif MB(SAV_MKI)
#define MACHINE_NAME "SAV MkI"
#define SOURCE_CODE_URL "https://github.com/fmalpartida/Marlin/tree/SAV-MkI-config"
#elif NOTEXIST(MACHINE_NAME)
#elif DISABLED(MACHINE_NAME)
#define MACHINE_NAME "3D Printer"
#endif
#if EXIST(CUSTOM_MACHINE_NAME)
#if ENABLED(CUSTOM_MACHINE_NAME)
#undef MACHINE_NAME
#define MACHINE_NAME CUSTOM_MACHINE_NAME
#endif
#if NOTEXIST(SOURCE_CODE_URL)
#if DISABLED(SOURCE_CODE_URL)
#define SOURCE_CODE_URL "https://github.com/MagoKimbra/MarlinKimbra"
#endif
#if NOTEXIST(BUILD_VERSION)
#if DISABLED(BUILD_VERSION)
#define BUILD_VERSION "V4; MarlinKimbra for 4 extruder"
#endif
......
......@@ -14,14 +14,8 @@
#define COS_60 0.5
// Macros to support option testing
#define _CAT(a, ...) a ## __VA_ARGS__
#define SWITCH_ENABLED_0 0
#define SWITCH_ENABLED_1 1
#define SWITCH_ENABLED_ 1
#define ENABLED(b) _CAT(SWITCH_ENABLED_, b)
#define DISABLED(b) (!_CAT(SWITCH_ENABLED_, b))
#define EXIST defined
#define NOTEXIST !defined
#define ENABLED defined
#define DISABLED !defined
#define PIN_EXISTS(PN) (defined(PN##_PIN) && PN##_PIN >= 0)
#define HAS(FE) (HAS_##FE)
#define HASNT(FE) (!(HAS_##FE))
......
......@@ -258,7 +258,7 @@ double r8mat_amax ( int m, int n, double a[] )
return value;
}
double *r8mat_copy_new ( int m, int n, double a1[] )
void r8mat_copy( double a2[], int m, int n, double a1[] )
/******************************************************************************/
/*
......@@ -292,12 +292,9 @@ double *r8mat_copy_new ( int m, int n, double a1[] )
Output, double R8MAT_COPY_NEW[M*N], the copy of A1.
*/
{
double *a2;
int i;
int j;
a2 = ( double * ) malloc ( m * n * sizeof ( double ) );
for ( j = 0; j < n; j++ )
{
for ( i = 0; i < m; i++ )
......@@ -305,8 +302,6 @@ double *r8mat_copy_new ( int m, int n, double a1[] )
a2[i+j*m] = a1[i+j*m];
}
}
return a2;
}
/******************************************************************************/
......@@ -724,14 +719,13 @@ void dqrank ( double a[], int lda, int m, int n, double tol, int *kr,
int j;
int job;
int k;
double *work;
double work[n];
for ( i = 0; i < n; i++ )
{
jpvt[i] = 0;
}
work = ( double * ) malloc ( n * sizeof ( double ) );
job = 1;
dqrdc ( a, lda, m, n, qraux, jpvt, work, job );
......@@ -748,8 +742,6 @@ void dqrank ( double a[], int lda, int m, int n, double tol, int *kr,
*kr = j + 1;
}
free ( work );
return;
}
/******************************************************************************/
......@@ -1843,7 +1835,7 @@ void dswap ( int n, double x[], int incx, double y[], int incy )
/******************************************************************************/
double *qr_solve ( int m, int n, double a[], double b[] )
void qr_solve ( double x[], int m, int n, double a[], double b[] )
/******************************************************************************/
/*
......@@ -1893,34 +1885,22 @@ double *qr_solve ( int m, int n, double a[], double b[] )
Output, double QR_SOLVE[N], the least squares solution.
*/
{
double *a_qr;
double a_qr[n*m];
int ind;
int itask;
int *jpvt;
int jpvt[n];
int kr;
int lda;
double *qraux;
double *r;
double qraux[n];
double r[m];
double tol;
double *x;
a_qr = r8mat_copy_new ( m, n, a );
r8mat_copy( a_qr, m, n, a );
lda = m;
tol = r8_epsilon ( ) / r8mat_amax ( m, n, a_qr );
x = ( double * ) malloc ( n * sizeof ( double ) );
jpvt = ( int * ) malloc ( n * sizeof ( int ) );
qraux = ( double * ) malloc ( n * sizeof ( double ) );
r = ( double * ) malloc ( m * sizeof ( double ) );
itask = 1;
ind = dqrls ( a_qr, lda, m, n, tol, &kr, b, x, r, jpvt, qraux, itask );
free ( a_qr );
free ( jpvt );
free ( qraux );
free ( r );
return x;
}
/******************************************************************************/
......
#if ENABLED(AUTO_BED_LEVELING_GRID)
#ifndef QR_SOLVE_H
#define QR_SOLVE_H
......@@ -16,6 +18,7 @@ int dqrsl ( double a[], int lda, int n, int k, double qraux[], double y[],
double qy[], double qty[], double b[], double rsd[], double ab[], int job );
void dscal ( int n, double sa, double x[], int incx );
void dswap ( int n, double x[], int incx, double y[], int incy );
double *qr_solve ( int m, int n, double a[], double b[] );
void qr_solve ( double x[], int m, int n, double a[], double b[] );
#endif
#endif
\ No newline at end of file
......@@ -7,49 +7,49 @@
#ifndef SANITYCHECK_H
#define SANITYCHECK_H
#if NOTEXIST(SERIAL_PORT)
#if DISABLED(SERIAL_PORT)
#error DEPENDENCY ERROR: Missing setting SERIAL_PORT
#endif
#if NOTEXIST(BAUDRATE)
#if DISABLED(BAUDRATE)
#error DEPENDENCY ERROR: Missing setting BAUDRATE
#endif
#if NOTEXIST(MACHINE_UUID)
#if DISABLED(MACHINE_UUID)
#error DEPENDENCY ERROR: Missing setting MACHINE_UUID
#endif
//board
#if NOTEXIST(MOTHERBOARD)
#if DISABLED(MOTHERBOARD)
#error DEPENDENCY ERROR: Missing setting MOTHERBOARD
#endif
//Mechanism
#if NOTEXIST(MECHANISM)
#if DISABLED(MECHANISM)
#error DEPENDENCY ERROR: Missing setting MECHANISM
#endif
//Power supply
#if NOTEXIST(POWER_SUPPLY)
#if DISABLED(POWER_SUPPLY)
#error DEPENDENCY ERROR: Missing setting POWER_SUPPLY
#endif
//Thermistor
#if NOTEXIST(TEMP_SENSOR_0)
#if DISABLED(TEMP_SENSOR_0)
#error DEPENDENCY ERROR: Missing setting TEMP_SENSOR_0
#endif
#if NOTEXIST(TEMP_SENSOR_1)
#if DISABLED(TEMP_SENSOR_1)
#error DEPENDENCY ERROR: Missing setting TEMP_SENSOR_1
#endif
#if NOTEXIST(TEMP_SENSOR_2)
#if DISABLED(TEMP_SENSOR_2)
#error DEPENDENCY ERROR: Missing setting TEMP_SENSOR_2
#endif
#if NOTEXIST(TEMP_SENSOR_3)
#if DISABLED(TEMP_SENSOR_3)
#error DEPENDENCY ERROR: Missing setting TEMP_SENSOR_3
#endif
#if NOTEXIST(TEMP_SENSOR_BED)
#if DISABLED(TEMP_SENSOR_BED)
#error DEPENDENCY ERROR: Missing setting TEMP_SENSOR_BED
#endif
#if (THERMISTORHEATER_0 == 998) || (THERMISTORHEATER_1 == 998) || (THERMISTORHEATER_2 == 998) || (THERMISTORHEATER_3 == 998) || (THERMISTORBED == 998) //User EXIST table
#if NOTEXIST(DUMMY_THERMISTOR_998_VALUE)
#if DISABLED(DUMMY_THERMISTOR_998_VALUE)
#error DEPENDENCY ERROR: Missing setting DUMMY_THERMISTOR_998_VALUE
#endif
#endif
......@@ -58,1231 +58,1231 @@
/**
* Temperature defines
*/
#if EXIST(TEMP_RESIDENCY_TIME)
#if NOTEXIST(TEMP_HYSTERESIS)
#if ENABLED(TEMP_RESIDENCY_TIME)
#if DISABLED(TEMP_HYSTERESIS)
#error DEPENDENCY ERROR: Missing setting TEMP_HYSTERESIS
#endif
#if NOTEXIST(TEMP_WINDOW)
#if DISABLED(TEMP_WINDOW)
#error DEPENDENCY ERROR: Missing setting TEMP_WINDOW
#endif
#endif
#if TEMP_SENSOR_0 != 0
#if NOTEXIST(HEATER_0_MAXTEMP)
#if DISABLED(HEATER_0_MAXTEMP)
#error DEPENDENCY ERROR: Missing setting HEATER_0_MAXTEMP
#endif
#if NOTEXIST(HEATER_0_MINTEMP)
#if DISABLED(HEATER_0_MINTEMP)
#error DEPENDENCY ERROR: Missing setting HEATER_0_MINTEMP
#endif
#endif
#if TEMP_SENSOR_1 != 0
#if NOTEXIST(HEATER_1_MAXTEMP)
#if DISABLED(HEATER_1_MAXTEMP)
#error DEPENDENCY ERROR: Missing setting HEATER_1_MAXTEMP
#endif
#if NOTEXIST(HEATER_0_MINTEMP)
#if DISABLED(HEATER_0_MINTEMP)
#error DEPENDENCY ERROR: Missing setting HEATER_1_MINTEMP
#endif
#endif
#if TEMP_SENSOR_2 != 0
#if NOTEXIST(HEATER_2_MAXTEMP)
#if DISABLED(HEATER_2_MAXTEMP)
#error DEPENDENCY ERROR: Missing setting HEATER_2_MAXTEMP
#endif
#if NOTEXIST(HEATER_0_MINTEMP)
#if DISABLED(HEATER_0_MINTEMP)
#error DEPENDENCY ERROR: Missing setting HEATER_2_MINTEMP
#endif
#endif
#if TEMP_SENSOR_3 != 0
#if NOTEXIST(HEATER_3_MAXTEMP)
#if DISABLED(HEATER_3_MAXTEMP)
#error DEPENDENCY ERROR: Missing setting HEATER_3_MAXTEMP
#endif
#if NOTEXIST(HEATER_0_MINTEMP)
#if DISABLED(HEATER_0_MINTEMP)
#error DEPENDENCY ERROR: Missing setting HEATER_3_MINTEMP
#endif
#endif
#if TEMP_SENSOR_BED != 0
#if NOTEXIST(BED_MAXTEMP)
#if DISABLED(BED_MAXTEMP)
#error DEPENDENCY ERROR: Missing setting BED_MAXTEMP
#endif
#if NOTEXIST(HEATER_0_MINTEMP)
#if DISABLED(HEATER_0_MINTEMP)
#error DEPENDENCY ERROR: Missing setting BED_MINTEMP
#endif
#endif
#if NOTEXIST(PLA_PREHEAT_HOTEND_TEMP)
#if DISABLED(PLA_PREHEAT_HOTEND_TEMP)
#error DEPENDENCY ERROR: Missing setting PLA_PREHEAT_HOTEND_TEMP
#endif
#if NOTEXIST(PLA_PREHEAT_HPB_TEMP)
#if DISABLED(PLA_PREHEAT_HPB_TEMP)
#error DEPENDENCY ERROR: Missing setting PLA_PREHEAT_HPB_TEMP
#endif
#if NOTEXIST(PLA_PREHEAT_FAN_SPEED)
#if DISABLED(PLA_PREHEAT_FAN_SPEED)
#error DEPENDENCY ERROR: Missing setting PLA_PREHEAT_FAN_SPEED
#endif
#if NOTEXIST(ABS_PREHEAT_HOTEND_TEMP)
#if DISABLED(ABS_PREHEAT_HOTEND_TEMP)
#error DEPENDENCY ERROR: Missing setting ABS_PREHEAT_HOTEND_TEMP
#endif
#if NOTEXIST(ABS_PREHEAT_HPB_TEMP)
#if DISABLED(ABS_PREHEAT_HPB_TEMP)
#error DEPENDENCY ERROR: Missing setting ABS_PREHEAT_HPB_TEMP
#endif
#if NOTEXIST(ABS_PREHEAT_FAN_SPEED)
#if DISABLED(ABS_PREHEAT_FAN_SPEED)
#error DEPENDENCY ERROR: Missing setting ABS_PREHEAT_FAN_SPEED
#endif
#if NOTEXIST(GUM_PREHEAT_HOTEND_TEMP)
#if DISABLED(GUM_PREHEAT_HOTEND_TEMP)
#error DEPENDENCY ERROR: Missing setting GUM_PREHEAT_HOTEND_TEMP
#endif
#if NOTEXIST(GUM_PREHEAT_HPB_TEMP)
#if DISABLED(GUM_PREHEAT_HPB_TEMP)
#error DEPENDENCY ERROR: Missing setting GUM_PREHEAT_HPB_TEMP
#endif
#if NOTEXIST(GUM_PREHEAT_FAN_SPEED)
#if DISABLED(GUM_PREHEAT_FAN_SPEED)
#error DEPENDENCY ERROR: Missing setting GUM_PREHEAT_FAN_SPEED
#endif
//extruders
#if NOTEXIST(EXTRUDERS)
#if DISABLED(EXTRUDERS)
#error DEPENDENCY ERROR: Missing setting EXTRUDERS
#endif
#if NOTEXIST(DRIVER_EXTRUDERS)
#if DISABLED(DRIVER_EXTRUDERS)
#error DEPENDENCY ERROR: Missing setting DRIVER_EXTRUDERS
#endif
//Language
#if NOTEXIST(LANGUAGE_CHOICE)
#if DISABLED(LANGUAGE_CHOICE)
#error DEPENDENCY ERROR: Missing setting LANGUAGE_CHOICE
#endif
///FEATURE
//Temperature
#if NOTEXIST(PID_MAX)
#if DISABLED(PID_MAX)
#error DEPENDENCY ERROR: Missing setting PID_MAX
#endif
#if NOTEXIST(MAX_BED_POWER)
#if DISABLED(MAX_BED_POWER)
#error DEPENDENCY ERROR: Missing setting MAX_BED_POWER
#endif
#if EXIST(PIDTEMP) || EXIST(PIDTEMPBED)
#if NOTEXIST(MAX_OVERSHOOT_PID_AUTOTUNE)
#if ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED)
#if DISABLED(MAX_OVERSHOOT_PID_AUTOTUNE)
#error DEPENDENCY ERROR: Missing setting MAX_OVERSHOOT_PID_AUTOTUNE
#endif
#endif
#if EXIST(PIDTEMP)
#if NOTEXIST(PID_OPENLOOP) && NOTEXIST(PID_FUNCTIONAL_RANGE)
#if ENABLED(PIDTEMP)
#if DISABLED(PID_OPENLOOP) && DISABLED(PID_FUNCTIONAL_RANGE)
#error DEPENDENCY ERROR: Missing setting PID_FUNCTIONAL_RANGE
#endif
#if NOTEXIST(PID_INTEGRAL_DRIVE_MAX)
#if DISABLED(PID_INTEGRAL_DRIVE_MAX)
#error DEPENDENCY ERROR: Missing setting PID_INTEGRAL_DRIVE_MAX
#endif
#if NOTEXIST(DEFAULT_Kp)
#if DISABLED(DEFAULT_Kp)
#error DEPENDENCY ERROR: Missing setting DEFAULT_Kp
#endif
#if NOTEXIST(DEFAULT_Ki)
#if DISABLED(DEFAULT_Ki)
#error DEPENDENCY ERROR: Missing setting DEFAULT_Ki
#endif
#if NOTEXIST(DEFAULT_Kd)
#if DISABLED(DEFAULT_Kd)
#error DEPENDENCY ERROR: Missing setting DEFAULT_Kd
#endif
#endif
#if EXIST(PIDTEMPBED)
#if NOTEXIST(PID_BED_INTEGRAL_DRIVE_MAX)
#if ENABLED(PIDTEMPBED)
#if DISABLED(PID_BED_INTEGRAL_DRIVE_MAX)
#error DEPENDENCY ERROR: Missing setting PID_BED_INTEGRAL_DRIVE_MAX
#endif
#if NOTEXIST(DEFAULT_bedKp)
#if DISABLED(DEFAULT_bedKp)
#error DEPENDENCY ERROR: Missing setting DEFAULT_bedKp
#endif
#if NOTEXIST(DEFAULT_bedKi)
#if DISABLED(DEFAULT_bedKi)
#error DEPENDENCY ERROR: Missing setting DEFAULT_bedKi
#endif
#if NOTEXIST(DEFAULT_bedKd)
#if DISABLED(DEFAULT_bedKd)
#error DEPENDENCY ERROR: Missing setting DEFAULT_bedKd
#endif
#endif
#if EXIST(BED_LIMIT_SWITCHING)
#if NOTEXIST(BED_HYSTERESIS)
#if ENABLED(BED_LIMIT_SWITCHING)
#if DISABLED(BED_HYSTERESIS)
#error DEPENDENCY ERROR: Missing setting BED_HYSTERESIS
#endif
#if NOTEXIST(BED_CHECK_INTERVAL)
#if DISABLED(BED_CHECK_INTERVAL)
#error DEPENDENCY ERROR: Missing setting BED_CHECK_INTERVAL
#endif
#endif
#if EXIST(THERMAL_PROTECTION_HOTENDS)
#if NOTEXIST(THERMAL_PROTECTION_PERIOD)
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
#if DISABLED(THERMAL_PROTECTION_PERIOD)
#error DEPENDENCY ERROR: Missing setting THERMAL_PROTECTION_PERIOD
#endif
#if NOTEXIST(THERMAL_PROTECTION_HYSTERESIS)
#if DISABLED(THERMAL_PROTECTION_HYSTERESIS)
#error DEPENDENCY ERROR: Missing setting THERMAL_PROTECTION_HYSTERESIS
#endif
#if NOTEXIST(WATCH_TEMP_PERIOD)
#if DISABLED(WATCH_TEMP_PERIOD)
#error DEPENDENCY ERROR: Missing setting WATCH_TEMP_PERIOD
#endif
#if NOTEXIST(WATCH_TEMP_INCREASE)
#if DISABLED(WATCH_TEMP_INCREASE)
#error DEPENDENCY ERROR: Missing setting WATCH_TEMP_INCREASE
#endif
#endif
#if EXIST(THERMAL_PROTECTION_BED)
#if NOTEXIST(THERMAL_PROTECTION_BED_PERIOD)
#if ENABLED(THERMAL_PROTECTION_BED)
#if DISABLED(THERMAL_PROTECTION_BED_PERIOD)
#error DEPENDENCY ERROR: Missing setting THERMAL_PROTECTION_BED_PERIOD
#endif
#if NOTEXIST(THERMAL_PROTECTION_BED_HYSTERESIS)
#if DISABLED(THERMAL_PROTECTION_BED_HYSTERESIS)
#error DEPENDENCY ERROR: Missing setting THERMAL_PROTECTION_BED_HYSTERESIS
#endif
#endif
//fan
#if NOTEXIST(SOFT_PWM_SCALE)
#if DISABLED(SOFT_PWM_SCALE)
#error DEPENDENCY ERROR: Missing setting SOFT_PWM_SCALE
#endif
#if EXIST(CONTROLLERFAN)
#if NOTEXIST(CONTROLLERFAN_SECS)
#if ENABLED(CONTROLLERFAN)
#if DISABLED(CONTROLLERFAN_SECS)
#error DEPENDENCY ERROR: Missing setting CONTROLLERFAN_SECS
#endif
#if NOTEXIST(CONTROLLERFAN_SPEED)
#if DISABLED(CONTROLLERFAN_SPEED)
#error DEPENDENCY ERROR: Missing setting CONTROLLERFAN_SPEED
#endif
#if NOTEXIST(CONTROLLERFAN_MIN_SPEED)
#if DISABLED(CONTROLLERFAN_MIN_SPEED)
#error DEPENDENCY ERROR: Missing setting CONTROLLERFAN_MIN_SPEED
#endif
#endif
#if EXIST(EXTRUDER_AUTO_FAN)
#if NOTEXIST(EXTRUDER_AUTO_FAN_TEMPERATURE)
#if ENABLED(EXTRUDER_AUTO_FAN)
#if DISABLED(EXTRUDER_AUTO_FAN_TEMPERATURE)
#error DEPENDENCY ERROR: Missing setting EXTRUDER_AUTO_FAN_TEMPERATURE
#endif
#if NOTEXIST(EXTRUDER_AUTO_FAN_SPEED)
#if DISABLED(EXTRUDER_AUTO_FAN_SPEED)
#error DEPENDENCY ERROR: Missing setting EXTRUDER_AUTO_FAN_SPEED
#endif
#if NOTEXIST(EXTRUDER_AUTO_FAN_MIN_SPEED)
#if DISABLED(EXTRUDER_AUTO_FAN_MIN_SPEED)
#error DEPENDENCY ERROR: Missing setting EXTRUDER_AUTO_FAN_MIN_SPEED
#endif
#endif
//extruder
#if EXIST(PREVENT_DANGEROUS_EXTRUDE)
#if NOTEXIST(EXTRUDE_MINTEMP)
#if ENABLED(PREVENT_DANGEROUS_EXTRUDE)
#if DISABLED(EXTRUDE_MINTEMP)
#error DEPENDENCY ERROR: Missing setting EXTRUDE_MINTEMP
#endif
#if EXIST(PREVENT_LENGTHY_EXTRUDE)
#if NOTEXIST(EXTRUDE_MAXLENGTH)
#if ENABLED(PREVENT_LENGTHY_EXTRUDE)
#if DISABLED(EXTRUDE_MAXLENGTH)
#error DEPENDENCY ERROR: Missing setting EXTRUDE_MAXLENGTH
#endif
#endif
#endif
#if EXIST(NPR2)
#if NOTEXIST(COLOR_STEP)
#if ENABLED(NPR2)
#if DISABLED(COLOR_STEP)
#error DEPENDENCY ERROR: Missing setting COLOR_STEP
#endif
#if NOTEXIST(COLOR_SLOWRATE)
#if DISABLED(COLOR_SLOWRATE)
#error DEPENDENCY ERROR: Missing setting COLOR_SLOWRATE
#endif
#if NOTEXIST(COLOR_HOMERATE)
#if DISABLED(COLOR_HOMERATE)
#error DEPENDENCY ERROR: Missing setting COLOR_HOMERATE
#endif
#if NOTEXIST(MOTOR_ANGLE)
#if DISABLED(MOTOR_ANGLE)
#error DEPENDENCY ERROR: Missing setting MOTOR_ANGLE
#endif
#if NOTEXIST(DRIVER_MICROSTEP)
#if DISABLED(DRIVER_MICROSTEP)
#error DEPENDENCY ERROR: Missing setting DRIVER_MICROSTEP
#endif
#if NOTEXIST(CARTER_MOLTIPLICATOR)
#if DISABLED(CARTER_MOLTIPLICATOR)
#error DEPENDENCY ERROR: Missing setting CARTER_MOLTIPLICATOR
#endif
#endif
#if EXIST(IDLE_OOZING_PREVENT)
#if NOTEXIST(IDLE_OOZING_MINTEMP)
#if ENABLED(IDLE_OOZING_PREVENT)
#if DISABLED(IDLE_OOZING_MINTEMP)
#error DEPENDENCY ERROR: Missing setting IDLE_OOZING_MINTEMP
#endif
#if NOTEXIST(IDLE_OOZING_FEEDRATE)
#if DISABLED(IDLE_OOZING_FEEDRATE)
#error DEPENDENCY ERROR: Missing setting IDLE_OOZING_FEEDRATE
#endif
#if NOTEXIST(IDLE_OOZING_SECONDS)
#if DISABLED(IDLE_OOZING_SECONDS)
#error DEPENDENCY ERROR: Missing setting IDLE_OOZING_SECONDS
#endif
#if NOTEXIST(IDLE_OOZING_LENGTH)
#if DISABLED(IDLE_OOZING_LENGTH)
#error DEPENDENCY ERROR: Missing setting IDLE_OOZING_LENGTH
#endif
#if NOTEXIST(IDLE_OOZING_RECOVER_LENGTH)
#if DISABLED(IDLE_OOZING_RECOVER_LENGTH)
#error DEPENDENCY ERROR: Missing setting IDLE_OOZING_RECOVER_LENGTH
#endif
#if NOTEXIST(IDLE_OOZING_RECOVER_FEEDRATE)
#if DISABLED(IDLE_OOZING_RECOVER_FEEDRATE)
#error DEPENDENCY ERROR: Missing setting IDLE_OOZING_RECOVER_FEEDRATE
#endif
#endif
#if EXIST(EXTRUDER_RUNOUT_PREVENT)
#if NOTEXIST(EXTRUDER_RUNOUT_MINTEMP)
#if ENABLED(EXTRUDER_RUNOUT_PREVENT)
#if DISABLED(EXTRUDER_RUNOUT_MINTEMP)
#error DEPENDENCY ERROR: Missing setting EXTRUDER_RUNOUT_MINTEMP
#endif
#if NOTEXIST(EXTRUDER_RUNOUT_SECONDS)
#if DISABLED(EXTRUDER_RUNOUT_SECONDS)
#error DEPENDENCY ERROR: Missing setting EXTRUDER_RUNOUT_SECONDS
#endif
#if NOTEXIST(EXTRUDER_RUNOUT_ESTEPS)
#if DISABLED(EXTRUDER_RUNOUT_ESTEPS)
#error DEPENDENCY ERROR: Missing setting EXTRUDER_RUNOUT_ESTEPS
#endif
#if NOTEXIST(EXTRUDER_RUNOUT_SPEED)
#if DISABLED(EXTRUDER_RUNOUT_SPEED)
#error DEPENDENCY ERROR: Missing setting EXTRUDER_RUNOUT_SPEED
#endif
#if NOTEXIST(EXTRUDER_RUNOUT_EXTRUDE)
#if DISABLED(EXTRUDER_RUNOUT_EXTRUDE)
#error DEPENDENCY ERROR: Missing setting EXTRUDER_RUNOUT_EXTRUDE
#endif
#endif
#if EXIST(EASY_LOAD)
#if NOTEXIST(BOWDEN_LENGTH)
#if ENABLED(EASY_LOAD)
#if DISABLED(BOWDEN_LENGTH)
#error DEPENDENCY ERROR: Missing setting BOWDEN_LENGTH
#endif
#if NOTEXIST(LCD_PURGE_LENGTH)
#if DISABLED(LCD_PURGE_LENGTH)
#error DEPENDENCY ERROR: Missing setting LCD_PURGE_LENGTH
#endif
#if NOTEXIST(LCD_RETRACT_LENGTH)
#if DISABLED(LCD_RETRACT_LENGTH)
#error DEPENDENCY ERROR: Missing setting LCD_RETRACT_LENGTH
#endif
#if NOTEXIST(LCD_PURGE_FEEDRATE)
#if DISABLED(LCD_PURGE_FEEDRATE)
#error DEPENDENCY ERROR: Missing setting LCD_PURGE_FEEDRATE
#endif
#if NOTEXIST(LCD_RETRACT_FEEDRATE)
#if DISABLED(LCD_RETRACT_FEEDRATE)
#error DEPENDENCY ERROR: Missing setting LCD_RETRACT_FEEDRATE
#endif
#if NOTEXIST(LCD_LOAD_FEEDRATE)
#if DISABLED(LCD_LOAD_FEEDRATE)
#error DEPENDENCY ERROR: Missing setting LCD_LOAD_FEEDRATE
#endif
#if NOTEXIST(LCD_UNLOAD_FEEDRATE)
#if DISABLED(LCD_UNLOAD_FEEDRATE)
#error DEPENDENCY ERROR: Missing setting LCD_UNLOAD_FEEDRATE
#endif
#endif
#if EXIST(ADVANCE)
#if NOTEXIST(EXTRUDER_ADVANCE_K)
#if ENABLED(ADVANCE)
#if DISABLED(EXTRUDER_ADVANCE_K)
#error DEPENDENCY ERROR: Missing setting EXTRUDER_ADVANCE_K
#endif
#if NOTEXIST(D_FILAMENT)
#if DISABLED(D_FILAMENT)
#error DEPENDENCY ERROR: Missing setting D_FILAMENT
#endif
#if NOTEXIST(STEPS_MM_E)
#if DISABLED(STEPS_MM_E)
#error DEPENDENCY ERROR: Missing setting STEPS_MM_E
#endif
#endif
#if EXIST(FILAMENTCHANGEENABLE)
#if NOTEXIST(FILAMENTCHANGE_XPOS)
#if ENABLED(FILAMENTCHANGEENABLE)
#if DISABLED(FILAMENTCHANGE_XPOS)
#error DEPENDENCY ERROR: Missing setting FILAMENTCHANGE_XPOS
#endif
#if NOTEXIST(FILAMENTCHANGE_YPOS)
#if DISABLED(FILAMENTCHANGE_YPOS)
#error DEPENDENCY ERROR: Missing setting FILAMENTCHANGE_YPOS
#endif
#if NOTEXIST(FILAMENTCHANGE_ZADD)
#if DISABLED(FILAMENTCHANGE_ZADD)
#error DEPENDENCY ERROR: Missing setting FILAMENTCHANGE_ZADD
#endif
#if NOTEXIST(FILAMENTCHANGE_FIRSTRETRACT)
#if DISABLED(FILAMENTCHANGE_FIRSTRETRACT)
#error DEPENDENCY ERROR: Missing setting FILAMENTCHANGE_FIRSTRETRACT
#endif
#if NOTEXIST(FILAMENTCHANGE_FINALRETRACT)
#if DISABLED(FILAMENTCHANGE_FINALRETRACT)
#error DEPENDENCY ERROR: Missing setting FILAMENTCHANGE_FINALRETRACT
#endif
#if NOTEXIST(FILAMENTCHANGE_PRINTEROFF)
#if DISABLED(FILAMENTCHANGE_PRINTEROFF)
#error DEPENDENCY ERROR: Missing setting FILAMENTCHANGE_PRINTEROFF
#endif
#endif
//Motion
#if NOTEXIST(SOFTWARE_MIN_ENDSTOPS)
#if DISABLED(SOFTWARE_MIN_ENDSTOPS)
#error DEPENDENCY ERROR: Missing setting SOFTWARE_MIN_ENDSTOPS
#endif
#if NOTEXIST(SOFTWARE_MAX_ENDSTOPS)
#if DISABLED(SOFTWARE_MAX_ENDSTOPS)
#error DEPENDENCY ERROR: Missing setting SOFTWARE_MAX_ENDSTOPS
#endif
#if EXIST(AUTO_BED_LEVELING_FEATURE)
#if EXIST(AUTO_BED_LEVELING_GRID)
#if NOTEXIST(MIN_PROBE_EDGE)
#if ENABLED(AUTO_BED_LEVELING_FEATURE)
#if ENABLED(AUTO_BED_LEVELING_GRID)
#if DISABLED(MIN_PROBE_EDGE)
#error DEPENDENCY ERROR: Missing setting MIN_PROBE_EDGE
#endif
#if NOTEXIST(AUTO_BED_LEVELING_GRID_POINTS)
#if DISABLED(AUTO_BED_LEVELING_GRID_POINTS)
#error DEPENDENCY ERROR: Missing setting AUTO_BED_LEVELING_GRID_POINTS
#endif
#else
#if NOTEXIST(ABL_PROBE_PT_1_X)
#if DISABLED(ABL_PROBE_PT_1_X)
#error DEPENDENCY ERROR: Missing setting ABL_PROBE_PT_1_X
#endif
#if NOTEXIST(ABL_PROBE_PT_1_Y)
#if DISABLED(ABL_PROBE_PT_1_Y)
#error DEPENDENCY ERROR: Missing setting ABL_PROBE_PT_1_Y
#endif
#if NOTEXIST(ABL_PROBE_PT_2_X)
#if DISABLED(ABL_PROBE_PT_2_X)
#error DEPENDENCY ERROR: Missing setting ABL_PROBE_PT_2_X
#endif
#if NOTEXIST(ABL_PROBE_PT_2_Y)
#if DISABLED(ABL_PROBE_PT_2_Y)
#error DEPENDENCY ERROR: Missing setting ABL_PROBE_PT_2_Y
#endif
#if NOTEXIST(ABL_PROBE_PT_3_X)
#if DISABLED(ABL_PROBE_PT_3_X)
#error DEPENDENCY ERROR: Missing setting ABL_PROBE_PT_3_X
#endif
#if NOTEXIST(ABL_PROBE_PT_3_Y)
#if DISABLED(ABL_PROBE_PT_3_Y)
#error DEPENDENCY ERROR: Missing setting ABL_PROBE_PT_3_Y
#endif
#endif
#if NOTEXIST(X_PROBE_OFFSET_FROM_EXTRUDER)
#if DISABLED(X_PROBE_OFFSET_FROM_EXTRUDER)
#error DEPENDENCY ERROR: Missing setting X_PROBE_OFFSET_FROM_EXTRUDER
#endif
#if NOTEXIST(Y_PROBE_OFFSET_FROM_EXTRUDER)
#if DISABLED(Y_PROBE_OFFSET_FROM_EXTRUDER)
#error DEPENDENCY ERROR: Missing setting Y_PROBE_OFFSET_FROM_EXTRUDER
#endif
#if NOTEXIST(Z_PROBE_OFFSET_FROM_EXTRUDER)
#if DISABLED(Z_PROBE_OFFSET_FROM_EXTRUDER)
#error DEPENDENCY ERROR: Missing setting Z_PROBE_OFFSET_FROM_EXTRUDER
#endif
#if NOTEXIST(Z_RAISE_BEFORE_HOMING)
#if DISABLED(Z_RAISE_BEFORE_HOMING)
#error DEPENDENCY ERROR: Missing setting Z_RAISE_BEFORE_HOMING
#endif
#if NOTEXIST(Z_RAISE_BEFORE_PROBING)
#if DISABLED(Z_RAISE_BEFORE_PROBING)
#error DEPENDENCY ERROR: Missing setting Z_RAISE_BEFORE_PROBING
#endif
#if NOTEXIST(Z_RAISE_BETWEEN_PROBINGS)
#if DISABLED(Z_RAISE_BETWEEN_PROBINGS)
#error DEPENDENCY ERROR: Missing setting Z_RAISE_BETWEEN_PROBINGS
#endif
#if NOTEXIST(Z_RAISE_AFTER_PROBING)
#if DISABLED(Z_RAISE_AFTER_PROBING)
#error DEPENDENCY ERROR: Missing setting Z_RAISE_AFTER_PROBING
#endif
#if EXIST(Z_PROBE_SLED)
#if NOTEXIST(SLED_DOCKING_OFFSET)
#if ENABLED(Z_PROBE_SLED)
#if DISABLED(SLED_DOCKING_OFFSET)
#error DEPENDENCY ERROR: Missing setting SLED_DOCKING_OFFSET
#endif
#endif
#if EXIST(Z_SAFE_HOMING)
#if NOTEXIST(Z_SAFE_HOMING_X_POINT)
#if ENABLED(Z_SAFE_HOMING)
#if DISABLED(Z_SAFE_HOMING_X_POINT)
#error DEPENDENCY ERROR: Missing setting Z_SAFE_HOMING_X_POINT
#endif
#if NOTEXIST(Z_SAFE_HOMING_Y_POINT)
#if DISABLED(Z_SAFE_HOMING_Y_POINT)
#error DEPENDENCY ERROR: Missing setting Z_SAFE_HOMING_Y_POINT
#endif
#endif
#endif
#if ENABLED(ENABLE_SERVOS)
#if NOTEXIST(NUM_SERVOS)
#if DISABLED(NUM_SERVOS)
#error DEPENDENCY ERROR: Missing setting NUM_SERVOS
#endif
#if NUM_SERVOS > 0
#if NOTEXIST(X_ENDSTOP_SERVO_NR)
#if DISABLED(X_ENDSTOP_SERVO_NR)
#error DEPENDENCY ERROR: Missing setting X_ENDSTOP_SERVO_NR
#endif
#if NOTEXIST(Y_ENDSTOP_SERVO_NR)
#if DISABLED(Y_ENDSTOP_SERVO_NR)
#error DEPENDENCY ERROR: Missing setting Y_ENDSTOP_SERVO_NR
#endif
#if NOTEXIST(Z_ENDSTOP_SERVO_NR)
#if DISABLED(Z_ENDSTOP_SERVO_NR)
#error DEPENDENCY ERROR: Missing setting Z_ENDSTOP_SERVO_NR
#endif
#if NOTEXIST(X_ENDSTOP_SERVO_ANGLES)
#if DISABLED(X_ENDSTOP_SERVO_ANGLES)
#error DEPENDENCY ERROR: Missing setting X_ENDSTOP_SERVO_ANGLES
#endif
#if NOTEXIST(Y_ENDSTOP_SERVO_ANGLES)
#if DISABLED(Y_ENDSTOP_SERVO_ANGLES)
#error DEPENDENCY ERROR: Missing setting Y_ENDSTOP_SERVO_ANGLES
#endif
#if NOTEXIST(Z_ENDSTOP_SERVO_ANGLES)
#if DISABLED(Z_ENDSTOP_SERVO_ANGLES)
#error DEPENDENCY ERROR: Missing setting Z_ENDSTOP_SERVO_ANGLES
#endif
#if NOTEXIST(SERVO_DEACTIVATION_DELAY)
#if DISABLED(SERVO_DEACTIVATION_DELAY)
#error DEPENDENCY ERROR: Missing setting SERVO_DEACTIVATION_DELAY
#endif
#endif
#endif
#if EXIST(BABYSTEPPING)
#if NOTEXIST(BABYSTEP_INVERT_Z)
#if ENABLED(BABYSTEPPING)
#if DISABLED(BABYSTEP_INVERT_Z)
#error DEPENDENCY ERROR: Missing setting BABYSTEP_INVERT_Z
#endif
#if NOTEXIST(BABYSTEP_Z_MULTIPLICATOR)
#if DISABLED(BABYSTEP_Z_MULTIPLICATOR)
#error DEPENDENCY ERROR: Missing setting BABYSTEP_Z_MULTIPLICATOR
#endif
#endif
#if EXIST(FWRETRACT)
#if NOTEXIST(MIN_RETRACT)
#if ENABLED(FWRETRACT)
#if DISABLED(MIN_RETRACT)
#error DEPENDENCY ERROR: Missing setting MIN_RETRACT
#endif
#if NOTEXIST(RETRACT_LENGTH)
#if DISABLED(RETRACT_LENGTH)
#error DEPENDENCY ERROR: Missing setting RETRACT_LENGTH
#endif
#if NOTEXIST(RETRACT_LENGTH_SWAP)
#if DISABLED(RETRACT_LENGTH_SWAP)
#error DEPENDENCY ERROR: Missing setting RETRACT_LENGTH_SWAP
#endif
#if NOTEXIST(RETRACT_FEEDRATE)
#if DISABLED(RETRACT_FEEDRATE)
#error DEPENDENCY ERROR: Missing setting RETRACT_FEEDRATE
#endif
#if NOTEXIST(RETRACT_ZLIFT)
#if DISABLED(RETRACT_ZLIFT)
#error DEPENDENCY ERROR: Missing setting RETRACT_ZLIFT
#endif
#if NOTEXIST(RETRACT_RECOVER_LENGTH)
#if DISABLED(RETRACT_RECOVER_LENGTH)
#error DEPENDENCY ERROR: Missing setting RETRACT_RECOVER_LENGTH
#endif
#if NOTEXIST(RETRACT_RECOVER_LENGTH_SWAP)
#if DISABLED(RETRACT_RECOVER_LENGTH_SWAP)
#error DEPENDENCY ERROR: Missing setting RETRACT_RECOVER_LENGTH_SWAP
#endif
#if NOTEXIST(RETRACT_RECOVER_FEEDRATE)
#if DISABLED(RETRACT_RECOVER_FEEDRATE)
#error DEPENDENCY ERROR: Missing setting RETRACT_RECOVER_FEEDRATE
#endif
#endif
#if EXIST(DUAL_X_CARRIAGE)
#if NOTEXIST(X2_MIN_POS)
#if ENABLED(DUAL_X_CARRIAGE)
#if DISABLED(X2_MIN_POS)
#error DEPENDENCY ERROR: Missing setting X2_MIN_POS
#endif
#if NOTEXIST(X2_MAX_POS)
#if DISABLED(X2_MAX_POS)
#error DEPENDENCY ERROR: Missing setting X2_MAX_POS
#endif
#if NOTEXIST(X2_HOME_DIR)
#if DISABLED(X2_HOME_DIR)
#error DEPENDENCY ERROR: Missing setting X2_HOME_DIR
#endif
#if NOTEXIST(X2_HOME_POS)
#if DISABLED(X2_HOME_POS)
#error DEPENDENCY ERROR: Missing setting X2_HOME_POS
#endif
#if NOTEXIST(DEFAULT_DUAL_X_CARRIAGE_MODE)
#if DISABLED(DEFAULT_DUAL_X_CARRIAGE_MODE)
#error DEPENDENCY ERROR: Missing setting DEFAULT_DUAL_X_CARRIAGE_MODE
#endif
#if NOTEXIST(TOOLCHANGE_PARK_ZLIFT)
#if DISABLED(TOOLCHANGE_PARK_ZLIFT)
#error DEPENDENCY ERROR: Missing setting TOOLCHANGE_PARK_ZLIFT
#endif
#if NOTEXIST(TOOLCHANGE_UNPARK_ZLIFT)
#if DISABLED(TOOLCHANGE_UNPARK_ZLIFT)
#error DEPENDENCY ERROR: Missing setting TOOLCHANGE_UNPARK_ZLIFT
#endif
#if NOTEXIST(DEFAULT_DUPLICATION_X_OFFSET)
#if DISABLED(DEFAULT_DUPLICATION_X_OFFSET)
#error DEPENDENCY ERROR: Missing setting DEFAULT_DUPLICATION_X_OFFSET
#endif
#endif
#if EXIST(Y_DUAL_STEPPER_DRIVERS)
#if NOTEXIST(INVERT_Y2_VS_Y_DIR)
#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
#if DISABLED(INVERT_Y2_VS_Y_DIR)
#error DEPENDENCY ERROR: Missing setting INVERT_Y2_VS_Y_DIR
#endif
#endif
//sensors
#if EXIST(FILAMENT_SENSOR)
#if NOTEXIST(FILAMENT_SENSOR_EXTRUDER_NUM)
#if ENABLED(FILAMENT_SENSOR)
#if DISABLED(FILAMENT_SENSOR_EXTRUDER_NUM)
#error DEPENDENCY ERROR: Missing setting FILAMENT_SENSOR_EXTRUDER_NUM
#endif
#if NOTEXIST(MEASUREMENT_DELAY_CM)
#if DISABLED(MEASUREMENT_DELAY_CM)
#error DEPENDENCY ERROR: Missing setting MEASUREMENT_DELAY_CM
#endif
#if NOTEXIST(DEFAULT_NOMINAL_FILAMENT_DIA)
#if DISABLED(DEFAULT_NOMINAL_FILAMENT_DIA)
#error DEPENDENCY ERROR: Missing setting DEFAULT_NOMINAL_FILAMENT_DIA
#endif
#if NOTEXIST(MEASURED_UPPER_LIMIT)
#if DISABLED(MEASURED_UPPER_LIMIT)
#error DEPENDENCY ERROR: Missing setting MEASURED_UPPER_LIMIT
#endif
#if NOTEXIST(MEASURED_LOWER_LIMIT)
#if DISABLED(MEASURED_LOWER_LIMIT)
#error DEPENDENCY ERROR: Missing setting MEASURED_LOWER_LIMIT
#endif
#if NOTEXIST(MAX_MEASUREMENT_DELAY)
#if DISABLED(MAX_MEASUREMENT_DELAY)
#error DEPENDENCY ERROR: Missing setting MAX_MEASUREMENT_DELAY
#endif
#if NOTEXIST(DEFAULT_MEASURED_FILAMENT_DIA)
#if DISABLED(DEFAULT_MEASURED_FILAMENT_DIA)
#error DEPENDENCY ERROR: Missing setting DEFAULT_MEASURED_FILAMENT_DIA
#endif
#endif
#if EXIST(FILAMENT_RUNOUT_SENSOR)
#if NOTEXIST(FILRUNOUT_PIN_INVERTING)
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
#if DISABLED(FILRUNOUT_PIN_INVERTING)
#error DEPENDENCY ERROR: Missing setting FILRUNOUT_PIN_INVERTING
#endif
#if NOTEXIST(ENDSTOPPULLUP_FIL_RUNOUT)
#if DISABLED(ENDSTOPPULLUP_FIL_RUNOUT)
#error DEPENDENCY ERROR: Missing setting ENDSTOPPULLUP_FIL_RUNOUT
#endif
#if NOTEXIST(FILAMENT_RUNOUT_SCRIPT)
#if DISABLED(FILAMENT_RUNOUT_SCRIPT)
#error DEPENDENCY ERROR: Missing setting FILAMENT_RUNOUT_SCRIPT
#endif
#endif
#if EXIST(POWER_CONSUMPTION)
#if NOTEXIST(POWER_VOLTAGE)
#if ENABLED(POWER_CONSUMPTION)
#if DISABLED(POWER_VOLTAGE)
#error DEPENDENCY ERROR: Missing setting POWER_VOLTAGE
#endif
#if NOTEXIST(POWER_SENSITIVITY)
#if DISABLED(POWER_SENSITIVITY)
#error DEPENDENCY ERROR: Missing setting POWER_SENSITIVITY
#endif
#if NOTEXIST(POWER_OFFSET)
#if DISABLED(POWER_OFFSET)
#error DEPENDENCY ERROR: Missing setting POWER_OFFSET
#endif
#if NOTEXIST(POWER_ZERO)
#if DISABLED(POWER_ZERO)
#error DEPENDENCY ERROR: Missing setting POWER_ZERO
#endif
#if NOTEXIST(POWER_ERROR)
#if DISABLED(POWER_ERROR)
#error DEPENDENCY ERROR: Missing setting POWER_ERROR
#endif
#if NOTEXIST(POWER_EFFICIENCY)
#if DISABLED(POWER_EFFICIENCY)
#error DEPENDENCY ERROR: Missing setting POWER_EFFICIENCY
#endif
#endif
//addon
#if EXIST(SDSUPPORT)
#if NOTEXIST(SD_FINISHED_STEPPERRELEASE)
#if ENABLED(SDSUPPORT)
#if DISABLED(SD_FINISHED_STEPPERRELEASE)
#error DEPENDENCY ERROR: Missing setting SD_FINISHED_STEPPERRELEASE
#endif
#if NOTEXIST(SD_FINISHED_RELEASECOMMAND)
#if DISABLED(SD_FINISHED_RELEASECOMMAND)
#error DEPENDENCY ERROR: Missing setting SD_FINISHED_RELEASECOMMAND
#endif
#if EXIST(SD_SETTINGS)
#if NOTEXIST(SD_CFG_SECONDS)
#if ENABLED(SD_SETTINGS)
#if DISABLED(SD_CFG_SECONDS)
#error DEPENDENCY ERROR: Missing setting SD_CFG_SECONDS
#endif
#if NOTEXIST(CFG_SD_FILE)
#if DISABLED(CFG_SD_FILE)
#error DEPENDENCY ERROR: Missing setting CFG_SD_FILE
#endif
#if NOTEXIST(CFG_SD_MAX_KEY_LEN)
#if DISABLED(CFG_SD_MAX_KEY_LEN)
#error DEPENDENCY ERROR: Missing setting CFG_SD_MAX_KEY_LEN
#endif
#if NOTEXIST(CFG_SD_MAX_VALUE_LEN)
#if DISABLED(CFG_SD_MAX_VALUE_LEN)
#error DEPENDENCY ERROR: Missing setting CFG_SD_MAX_VALUE_LEN
#endif
#endif
#endif
#if NOTEXIST(DISPLAY_CHARSET_HD44780_JAPAN) && NOTEXIST(DISPLAY_CHARSET_HD44780_WESTERN) && NOTEXIST(DISPLAY_CHARSET_HD44780_CYRILLIC)
#if DISABLED(DISPLAY_CHARSET_HD44780_JAPAN) && DISABLED(DISPLAY_CHARSET_HD44780_WESTERN) && DISABLED(DISPLAY_CHARSET_HD44780_CYRILLIC)
#error DEPENDENCY ERROR: Missing setting DISPLAY_CHARSET_HD44780_JAPAN or DISPLAY_CHARSET_HD44780_WESTERN or DISPLAY_CHARSET_HD44780_CYRILLIC
#endif
#if EXIST(SHOW_BOOTSCREEN)
#if NOTEXIST(STRING_SPLASH_LINE1)
#if ENABLED(SHOW_BOOTSCREEN)
#if DISABLED(STRING_SPLASH_LINE1)
#error DEPENDENCY ERROR: Missing setting STRING_SPLASH_LINE1
#endif
#if NOTEXIST(SPLASH_SCREEN_DURATION)
#if DISABLED(SPLASH_SCREEN_DURATION)
#error DEPENDENCY ERROR: Missing setting SPLASH_SCREEN_DURATION
#endif
#endif
#if ENABLED(ULTIPANEL)
#if EXIST(ENCODER_RATE_MULTIPLIER)
#if NOTEXIST(ENCODER_10X_STEPS_PER_SEC)
#if ENABLED(ENCODER_RATE_MULTIPLIER)
#if DISABLED(ENCODER_10X_STEPS_PER_SEC)
#error DEPENDENCY ERROR: Missing setting ENCODER_10X_STEPS_PER_SEC
#endif
#if NOTEXIST(ENCODER_100X_STEPS_PER_SEC)
#if DISABLED(ENCODER_100X_STEPS_PER_SEC)
#error DEPENDENCY ERROR: Missing setting ENCODER_100X_STEPS_PER_SEC
#endif
#endif
#endif
#if MB(ALLIGATOR)
#if NOTEXIST(UI_VOLTAGE_LEVEL)
#if DISABLED(UI_VOLTAGE_LEVEL)
#error DEPENDENCY ERROR: Missing setting UI_VOLTAGE_LEVEL
#endif
#endif
#if EXIST(REPRAPWORLD_KEYPAD)
#if NOTEXIST(REPRAPWORLD_KEYPAD_MOVE_STEP)
#if ENABLED(REPRAPWORLD_KEYPAD)
#if DISABLED(REPRAPWORLD_KEYPAD_MOVE_STEP)
#error DEPENDENCY ERROR: Missing setting REPRAPWORLD_KEYPAD_MOVE_STEP
#endif
#endif
#if ENABLED(ULTIPANEL)
#if EXIST(LCD_PROGRESS_BAR)
#if NOTEXIST(PROGRESS_BAR_BAR_TIME)
#if ENABLED(LCD_PROGRESS_BAR)
#if DISABLED(PROGRESS_BAR_BAR_TIME)
#error DEPENDENCY ERROR: Missing setting PROGRESS_BAR_BAR_TIME
#endif
#if NOTEXIST(PROGRESS_BAR_MSG_TIME)
#if DISABLED(PROGRESS_BAR_MSG_TIME)
#error DEPENDENCY ERROR: Missing setting PROGRESS_BAR_MSG_TIME
#endif
#if NOTEXIST(PROGRESS_MSG_EXPIRE)
#if DISABLED(PROGRESS_MSG_EXPIRE)
#error DEPENDENCY ERROR: Missing setting PROGRESS_MSG_EXPIRE
#endif
#endif
#endif
#if EXIST(CHDK)
#if NOTEXIST(CHDK_DELAY)
#if ENABLED(CHDK)
#if DISABLED(CHDK_DELAY)
#error DEPENDENCY ERROR: Missing setting CHDK_DELAY
#endif
#endif
//adv motion
#if EXIST(USE_MICROSTEPS)
#if NOTEXIST(MICROSTEP_MODES)
#if ENABLED(USE_MICROSTEPS)
#if DISABLED(MICROSTEP_MODES)
#error DEPENDENCY ERROR: Missing setting MICROSTEP_MODES
#endif
#endif
#if NOTEXIST(DEFAULT_STEPPER_DEACTIVE_TIME)
#if DISABLED(DEFAULT_STEPPER_DEACTIVE_TIME)
#error DEPENDENCY ERROR: Missing setting DEFAULT_STEPPER_DEACTIVE_TIME
#endif
#if ENABLED(STEPPER_HIGH_LOW)
#if NOTEXIST(STEPPER_HIGH_LOW_DELAY)
#if DISABLED(STEPPER_HIGH_LOW_DELAY)
#error DEPENDENCY ERROR: Missing setting STEPPER_HIGH_LOW_DELAY
#endif
#endif
#if EXIST(DIGIPOT_I2C)
#if NOTEXIST(DIGIPOT_I2C_NUM_CHANNELS)
#if ENABLED(DIGIPOT_I2C)
#if DISABLED(DIGIPOT_I2C_NUM_CHANNELS)
#error DEPENDENCY ERROR: Missing setting DIGIPOT_I2C_NUM_CHANNELS
#endif
#if NOTEXIST(DIGIPOT_I2C_MOTOR_CURRENTS)
#if DISABLED(DIGIPOT_I2C_MOTOR_CURRENTS)
#error DEPENDENCY ERROR: Missing setting DIGIPOT_I2C_MOTOR_CURRENTS
#endif
#endif
#if EXIST(HAVE_TMCDRIVER)
#if EXIST(X_IS_TMC)
#if NOTEXIST(X_MAX_CURRENT)
#if ENABLED(HAVE_TMCDRIVER)
#if ENABLED(X_IS_TMC)
#if DISABLED(X_MAX_CURRENT)
#error DEPENDENCY ERROR: Missing setting X_MAX_CURRENT
#endif
#if NOTEXIST(X_SENSE_RESISTOR)
#if DISABLED(X_SENSE_RESISTOR)
#error DEPENDENCY ERROR: Missing setting X_SENSE_RESISTOR
#endif
#if NOTEXIST(X_MICROSTEPS)
#if DISABLED(X_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting X_MICROSTEPS
#endif
#endif
#if EXIST(X2_IS_TMC)
#if NOTEXIST(X2_MAX_CURRENT)
#if ENABLED(X2_IS_TMC)
#if DISABLED(X2_MAX_CURRENT)
#error DEPENDENCY ERROR: Missing setting X2_MAX_CURRENT
#endif
#if NOTEXIST(X2_SENSE_RESISTOR)
#if DISABLED(X2_SENSE_RESISTOR)
#error DEPENDENCY ERROR: Missing setting X2_SENSE_RESISTOR
#endif
#if NOTEXIST(X2_MICROSTEPS)
#if DISABLED(X2_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting X2_MICROSTEPS
#endif
#endif
#if EXIST(Y_IS_TMC)
#if NOTEXIST(Y_MAX_CURRENT)
#if ENABLED(Y_IS_TMC)
#if DISABLED(Y_MAX_CURRENT)
#error DEPENDENCY ERROR: Missing setting Y_MAX_CURRENT
#endif
#if NOTEXIST(Y_SENSE_RESISTOR)
#if DISABLED(Y_SENSE_RESISTOR)
#error DEPENDENCY ERROR: Missing setting Y_SENSE_RESISTOR
#endif
#if NOTEXIST(Y_MICROSTEPS)
#if DISABLED(Y_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting Y_MICROSTEPS
#endif
#endif
#if EXIST(Y2_IS_TMC)
#if NOTEXIST(Y2_MAX_CURRENT)
#if ENABLED(Y2_IS_TMC)
#if DISABLED(Y2_MAX_CURRENT)
#error DEPENDENCY ERROR: Missing setting Y2_MAX_CURRENT
#endif
#if NOTEXIST(Y2_SENSE_RESISTOR)
#if DISABLED(Y2_SENSE_RESISTOR)
#error DEPENDENCY ERROR: Missing setting Y2_SENSE_RESISTOR
#endif
#if NOTEXIST(Y2_MICROSTEPS)
#if DISABLED(Y2_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting Y2_MICROSTEPS
#endif
#endif
#if EXIST(Z_IS_TMC)
#if NOTEXIST(Z_MAX_CURRENT)
#if ENABLED(Z_IS_TMC)
#if DISABLED(Z_MAX_CURRENT)
#error DEPENDENCY ERROR: Missing setting Z_MAX_CURRENT
#endif
#if NOTEXIST(Z_SENSE_RESISTOR)
#if DISABLED(Z_SENSE_RESISTOR)
#error DEPENDENCY ERROR: Missing setting Z_SENSE_RESISTOR
#endif
#if NOTEXIST(Z_MICROSTEPS)
#if DISABLED(Z_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting Z_MICROSTEPS
#endif
#endif
#if EXIST(Z2_IS_TMC)
#if NOTEXIST(Z2_MAX_CURRENT)
#if ENABLED(Z2_IS_TMC)
#if DISABLED(Z2_MAX_CURRENT)
#error DEPENDENCY ERROR: Missing setting Z2_MAX_CURRENT
#endif
#if NOTEXIST(Z2_SENSE_RESISTOR)
#if DISABLED(Z2_SENSE_RESISTOR)
#error DEPENDENCY ERROR: Missing setting Z2_SENSE_RESISTOR
#endif
#if NOTEXIST(Z2_MICROSTEPS)
#if DISABLED(Z2_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting Z2_MICROSTEPS
#endif
#endif
#if EXIST(E0_IS_TMC)
#if NOTEXIST(E0_MAX_CURRENT)
#if ENABLED(E0_IS_TMC)
#if DISABLED(E0_MAX_CURRENT)
#error DEPENDENCY ERROR: Missing setting E0_MAX_CURRENT
#endif
#if NOTEXIST(E0_SENSE_RESISTOR)
#if DISABLED(E0_SENSE_RESISTOR)
#error DEPENDENCY ERROR: Missing setting E0_SENSE_RESISTOR
#endif
#if NOTEXIST(E0_MICROSTEPS)
#if DISABLED(E0_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting E0_MICROSTEPS
#endif
#endif
#if EXIST(E1_IS_TMC)
#if NOTEXIST(E1_MAX_CURRENT)
#if ENABLED(E1_IS_TMC)
#if DISABLED(E1_MAX_CURRENT)
#error DEPENDENCY ERROR: Missing setting E1_MAX_CURRENT
#endif
#if NOTEXIST(E1_SENSE_RESISTOR)
#if DISABLED(E1_SENSE_RESISTOR)
#error DEPENDENCY ERROR: Missing setting E1_SENSE_RESISTOR
#endif
#if NOTEXIST(E1_MICROSTEPS)
#if DISABLED(E1_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting E1_MICROSTEPS
#endif
#endif
#if EXIST(E2_IS_TMC)
#if NOTEXIST(E2_MAX_CURRENT)
#if ENABLED(E2_IS_TMC)
#if DISABLED(E2_MAX_CURRENT)
#error DEPENDENCY ERROR: Missing setting E2_MAX_CURRENT
#endif
#if NOTEXIST(E2_SENSE_RESISTOR)
#if DISABLED(E2_SENSE_RESISTOR)
#error DEPENDENCY ERROR: Missing setting E2_SENSE_RESISTOR
#endif
#if NOTEXIST(E2_MICROSTEPS)
#if DISABLED(E2_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting E2_MICROSTEPS
#endif
#endif
#if EXIST(E3_IS_TMC)
#if NOTEXIST(E3_MAX_CURRENT)
#if ENABLED(E3_IS_TMC)
#if DISABLED(E3_MAX_CURRENT)
#error DEPENDENCY ERROR: Missing setting E3_MAX_CURRENT
#endif
#if NOTEXIST(E3_SENSE_RESISTOR)
#if DISABLED(E3_SENSE_RESISTOR)
#error DEPENDENCY ERROR: Missing setting E3_SENSE_RESISTOR
#endif
#if NOTEXIST(E3_MICROSTEPS)
#if DISABLED(E3_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting E3_MICROSTEPS
#endif
#endif
#endif
#if EXIST(HAVE_L6470DRIVER)
#if EXIST(X_IS_L6470)
#if NOTEXIST(X_MICROSTEPS)
#if ENABLED(HAVE_L6470DRIVER)
#if ENABLED(X_IS_L6470)
#if DISABLED(X_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting X_MICROSTEPS
#endif
#if NOTEXIST(X_K_VAL)
#if DISABLED(X_K_VAL)
#error DEPENDENCY ERROR: Missing setting X_K_VAL
#endif
#if NOTEXIST(X_OVERCURRENT)
#if DISABLED(X_OVERCURRENT)
#error DEPENDENCY ERROR: Missing setting X_OVERCURRENT
#endif
#if NOTEXIST(X_STALLCURRENT)
#if DISABLED(X_STALLCURRENT)
#error DEPENDENCY ERROR: Missing setting X_STALLCURRENT
#endif
#endif
#if EXIST(X2_IS_L6470)
#if NOTEXIST(X2_MICROSTEPS)
#if ENABLED(X2_IS_L6470)
#if DISABLED(X2_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting X2_MICROSTEPS
#endif
#if NOTEXIST(X2_K_VAL)
#if DISABLED(X2_K_VAL)
#error DEPENDENCY ERROR: Missing setting X2_K_VAL
#endif
#if NOTEXIST(X2_OVERCURRENT)
#if DISABLED(X2_OVERCURRENT)
#error DEPENDENCY ERROR: Missing setting X2_OVERCURRENT
#endif
#if NOTEXIST(X2_STALLCURRENT)
#if DISABLED(X2_STALLCURRENT)
#error DEPENDENCY ERROR: Missing setting X2_STALLCURRENT
#endif
#endif
#if EXIST(Y_IS_L6470)
#if NOTEXIST(Y_MICROSTEPS)
#if ENABLED(Y_IS_L6470)
#if DISABLED(Y_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting Y_MICROSTEPS
#endif
#if NOTEXIST(Y_K_VAL)
#if DISABLED(Y_K_VAL)
#error DEPENDENCY ERROR: Missing setting Y_K_VAL
#endif
#if NOTEXIST(Y_OVERCURRENT)
#if DISABLED(Y_OVERCURRENT)
#error DEPENDENCY ERROR: Missing setting Y_OVERCURRENT
#endif
#if NOTEXIST(Y_STALLCURRENT)
#if DISABLED(Y_STALLCURRENT)
#error DEPENDENCY ERROR: Missing setting Y_STALLCURRENT
#endif
#endif
#if EXIST(Y2_IS_L6470)
#if NOTEXIST(Y2_MICROSTEPS)
#if ENABLED(Y2_IS_L6470)
#if DISABLED(Y2_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting Y2_MICROSTEPS
#endif
#if NOTEXIST(Y2_K_VAL)
#if DISABLED(Y2_K_VAL)
#error DEPENDENCY ERROR: Missing setting Y2_K_VAL
#endif
#if NOTEXIST(Y2_OVERCURRENT)
#if DISABLED(Y2_OVERCURRENT)
#error DEPENDENCY ERROR: Missing setting Y2_OVERCURRENT
#endif
#if NOTEXIST(Y2_STALLCURRENT)
#if DISABLED(Y2_STALLCURRENT)
#error DEPENDENCY ERROR: Missing setting Y2_STALLCURRENT
#endif
#endif
#if EXIST(Z_IS_L6470)
#if NOTEXIST(Z_MICROSTEPS)
#if ENABLED(Z_IS_L6470)
#if DISABLED(Z_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting Z_MICROSTEPS
#endif
#if NOTEXIST(Z_K_VAL)
#if DISABLED(Z_K_VAL)
#error DEPENDENCY ERROR: Missing setting Z_K_VAL
#endif
#if NOTEXIST(Z_OVERCURRENT)
#if DISABLED(Z_OVERCURRENT)
#error DEPENDENCY ERROR: Missing setting Z_OVERCURRENT
#endif
#if NOTEXIST(Z_STALLCURRENT)
#if DISABLED(Z_STALLCURRENT)
#error DEPENDENCY ERROR: Missing setting Z_STALLCURRENT
#endif
#endif
#if EXIST(Z2_IS_L6470)
#if NOTEXIST(Z2_MICROSTEPS)
#if ENABLED(Z2_IS_L6470)
#if DISABLED(Z2_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting Z2_MICROSTEPS
#endif
#if NOTEXIST(Z2_K_VAL)
#if DISABLED(Z2_K_VAL)
#error DEPENDENCY ERROR: Missing setting Z2_K_VAL
#endif
#if NOTEXIST(Z2_OVERCURRENT)
#if DISABLED(Z2_OVERCURRENT)
#error DEPENDENCY ERROR: Missing setting Z2_OVERCURRENT
#endif
#if NOTEXIST(Z2_STALLCURRENT)
#if DISABLED(Z2_STALLCURRENT)
#error DEPENDENCY ERROR: Missing setting Z2_STALLCURRENT
#endif
#endif
#if EXIST(E0_IS_L6470)
#if NOTEXIST(E0_MICROSTEPS)
#if ENABLED(E0_IS_L6470)
#if DISABLED(E0_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting E0_MICROSTEPS
#endif
#if NOTEXIST(E0_K_VAL)
#if DISABLED(E0_K_VAL)
#error DEPENDENCY ERROR: Missing setting E0_K_VAL
#endif
#if NOTEXIST(E0_OVERCURRENT)
#if DISABLED(E0_OVERCURRENT)
#error DEPENDENCY ERROR: Missing setting E0_OVERCURRENT
#endif
#if NOTEXIST(E0_STALLCURRENT)
#if DISABLED(E0_STALLCURRENT)
#error DEPENDENCY ERROR: Missing setting E0_STALLCURRENT
#endif
#endif
#if EXIST(E1_IS_L6470)
#if NOTEXIST(E1_MICROSTEPS)
#if ENABLED(E1_IS_L6470)
#if DISABLED(E1_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting E1_MICROSTEPS
#endif
#if NOTEXIST(E1_K_VAL)
#if DISABLED(E1_K_VAL)
#error DEPENDENCY ERROR: Missing setting E1_K_VAL
#endif
#if NOTEXIST(E1_OVERCURRENT)
#if DISABLED(E1_OVERCURRENT)
#error DEPENDENCY ERROR: Missing setting E1_OVERCURRENT
#endif
#if NOTEXIST(E1_STALLCURRENT)
#if DISABLED(E1_STALLCURRENT)
#error DEPENDENCY ERROR: Missing setting E1_STALLCURRENT
#endif
#endif
#if EXIST(E2_IS_L6470)
#if NOTEXIST(E2_MICROSTEPS)
#if ENABLED(E2_IS_L6470)
#if DISABLED(E2_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting E2_MICROSTEPS
#endif
#if NOTEXIST(E2_K_VAL)
#if DISABLED(E2_K_VAL)
#error DEPENDENCY ERROR: Missing setting E2_K_VAL
#endif
#if NOTEXIST(E2_OVERCURRENT)
#if DISABLED(E2_OVERCURRENT)
#error DEPENDENCY ERROR: Missing setting E2_OVERCURRENT
#endif
#if NOTEXIST(E2_STALLCURRENT)
#if DISABLED(E2_STALLCURRENT)
#error DEPENDENCY ERROR: Missing setting E2_STALLCURRENT
#endif
#endif
#if EXIST(E3_IS_L6470)
#if NOTEXIST(E3_MICROSTEPS)
#if ENABLED(E3_IS_L6470)
#if DISABLED(E3_MICROSTEPS)
#error DEPENDENCY ERROR: Missing setting E3_MICROSTEPS
#endif
#if NOTEXIST(E3_K_VAL)
#if DISABLED(E3_K_VAL)
#error DEPENDENCY ERROR: Missing setting E3_K_VAL
#endif
#if NOTEXIST(E3_OVERCURRENT)
#if DISABLED(E3_OVERCURRENT)
#error DEPENDENCY ERROR: Missing setting E3_OVERCURRENT
#endif
#if NOTEXIST(E3_STALLCURRENT)
#if DISABLED(E3_STALLCURRENT)
#error DEPENDENCY ERROR: Missing setting E3_STALLCURRENT
#endif
#endif
#endif
//buffer
#if NOTEXIST(BLOCK_BUFFER_SIZE)
#if DISABLED(BLOCK_BUFFER_SIZE)
#error DEPENDENCY ERROR: Missing setting BLOCK_BUFFER_SIZE
#endif
#if NOTEXIST(MAX_CMD_SIZE)
#if DISABLED(MAX_CMD_SIZE)
#error DEPENDENCY ERROR: Missing setting MAX_CMD_SIZE
#endif
#if NOTEXIST(BUFSIZE)
#if DISABLED(BUFSIZE)
#error DEPENDENCY ERROR: Missing setting BUFSIZE
#endif
#if NOTEXIST(NUM_POSITON_SLOTS)
#if DISABLED(NUM_POSITON_SLOTS)
#error DEPENDENCY ERROR: Missing setting NUM_POSITON_SLOTS
#endif
#if NOTEXIST(DROP_SEGMENTS)
#if DISABLED(DROP_SEGMENTS)
#error DEPENDENCY ERROR: Missing setting DROP_SEGMENTS
#endif
#if NOTEXIST(DROP_SEGMENTS)
#if DISABLED(DROP_SEGMENTS)
#error DEPENDENCY ERROR: Missing setting DROP_SEGMENTS
#endif
#if NOTEXIST(DEFAULT_MINSEGMENTTIME)
#if DISABLED(DEFAULT_MINSEGMENTTIME)
#error DEPENDENCY ERROR: Missing setting DEFAULT_MINSEGMENTTIME
#endif
#if NOTEXIST(MM_PER_ARC_SEGMENT)
#if DISABLED(MM_PER_ARC_SEGMENT)
#error DEPENDENCY ERROR: Missing setting MM_PER_ARC_SEGMENT
#endif
#if NOTEXIST(N_ARC_CORRECTION)
#if DISABLED(N_ARC_CORRECTION)
#error DEPENDENCY ERROR: Missing setting N_ARC_CORRECTION
#endif
//Machines
#if NOTEXIST(X_MIN_ENDSTOP_LOGIC)
#if DISABLED(X_MIN_ENDSTOP_LOGIC)
#error DEPENDENCY ERROR: Missing setting X_MIN_ENDSTOP_LOGIC
#endif
#if NOTEXIST(Y_MIN_ENDSTOP_LOGIC)
#if DISABLED(Y_MIN_ENDSTOP_LOGIC)
#error DEPENDENCY ERROR: Missing setting Y_MIN_ENDSTOP_LOGIC
#endif
#if NOTEXIST(Z_MIN_ENDSTOP_LOGIC)
#if DISABLED(Z_MIN_ENDSTOP_LOGIC)
#error DEPENDENCY ERROR: Missing setting Z_MIN_ENDSTOP_LOGIC
#endif
#if NOTEXIST(Z2_MIN_ENDSTOP_LOGIC)
#if DISABLED(Z2_MIN_ENDSTOP_LOGIC)
#error DEPENDENCY ERROR: Missing setting Z2_MIN_ENDSTOP_LOGIC
#endif
#if NOTEXIST(X_MAX_ENDSTOP_LOGIC)
#if DISABLED(X_MAX_ENDSTOP_LOGIC)
#error DEPENDENCY ERROR: Missing setting X_MAX_ENDSTOP_LOGIC
#endif
#if NOTEXIST(Y_MAX_ENDSTOP_LOGIC)
#if DISABLED(Y_MAX_ENDSTOP_LOGIC)
#error DEPENDENCY ERROR: Missing setting Y_MAX_ENDSTOP_LOGIC
#endif
#if NOTEXIST(Z_MAX_ENDSTOP_LOGIC)
#if DISABLED(Z_MAX_ENDSTOP_LOGIC)
#error DEPENDENCY ERROR: Missing setting Z_MAX_ENDSTOP_LOGIC
#endif
#if NOTEXIST(Z2_MAX_ENDSTOP_LOGIC)
#if DISABLED(Z2_MAX_ENDSTOP_LOGIC)
#error DEPENDENCY ERROR: Missing setting Z2_MAX_ENDSTOP_LOGIC
#endif
#if NOTEXIST(Z_PROBE_ENDSTOP_LOGIC)
#if DISABLED(Z_PROBE_ENDSTOP_LOGIC)
#error DEPENDENCY ERROR: Missing setting Z_PROBE_ENDSTOP_LOGIC
#endif
#if NOTEXIST(E_MIN_ENDSTOP_LOGIC)
#if DISABLED(E_MIN_ENDSTOP_LOGIC)
#error DEPENDENCY ERROR: Missing setting E_MIN_ENDSTOP_LOGIC
#endif
#if NOTEXIST(X_HOME_DIR)
#if DISABLED(X_HOME_DIR)
#error DEPENDENCY ERROR: Missing setting X_HOME_DIR
#endif
#if NOTEXIST(Y_HOME_DIR)
#if DISABLED(Y_HOME_DIR)
#error DEPENDENCY ERROR: Missing setting Y_HOME_DIR
#endif
#if NOTEXIST(Z_HOME_DIR)
#if DISABLED(Z_HOME_DIR)
#error DEPENDENCY ERROR: Missing setting Z_HOME_DIR
#endif
#if NOTEXIST(E_HOME_DIR)
#if DISABLED(E_HOME_DIR)
#error DEPENDENCY ERROR: Missing setting E_HOME_DIR
#endif
#if NOTEXIST(X_ENABLE_ON)
#if DISABLED(X_ENABLE_ON)
#error DEPENDENCY ERROR: Missing setting X_ENABLE_ON
#endif
#if NOTEXIST(Y_ENABLE_ON)
#if DISABLED(Y_ENABLE_ON)
#error DEPENDENCY ERROR: Missing setting Y_ENABLE_ON
#endif
#if NOTEXIST(Z_ENABLE_ON)
#if DISABLED(Z_ENABLE_ON)
#error DEPENDENCY ERROR: Missing setting Z_ENABLE_ON
#endif
#if NOTEXIST(E_ENABLE_ON)
#if DISABLED(E_ENABLE_ON)
#error DEPENDENCY ERROR: Missing setting E_ENABLE_ON
#endif
#if NOTEXIST(INVERT_X_STEP_PIN)
#if DISABLED(INVERT_X_STEP_PIN)
#error DEPENDENCY ERROR: Missing setting INVERT_X_STEP_PIN
#endif
#if NOTEXIST(INVERT_Y_STEP_PIN)
#if DISABLED(INVERT_Y_STEP_PIN)
#error DEPENDENCY ERROR: Missing setting INVERT_Y_STEP_PIN
#endif
#if NOTEXIST(INVERT_Z_STEP_PIN)
#if DISABLED(INVERT_Z_STEP_PIN)
#error DEPENDENCY ERROR: Missing setting INVERT_Z_STEP_PIN
#endif
#if NOTEXIST(INVERT_E_STEP_PIN)
#if DISABLED(INVERT_E_STEP_PIN)
#error DEPENDENCY ERROR: Missing setting INVERT_E_STEP_PIN
#endif
#if NOTEXIST(INVERT_X_DIR)
#if DISABLED(INVERT_X_DIR)
#error DEPENDENCY ERROR: Missing setting INVERT_X_DIR
#endif
#if NOTEXIST(INVERT_Y_DIR)
#if DISABLED(INVERT_Y_DIR)
#error DEPENDENCY ERROR: Missing setting INVERT_Y_DIR
#endif
#if NOTEXIST(INVERT_Z_DIR)
#if DISABLED(INVERT_Z_DIR)
#error DEPENDENCY ERROR: Missing setting INVERT_Z_DIR
#endif
#if NOTEXIST(INVERT_E0_DIR)
#if DISABLED(INVERT_E0_DIR)
#error DEPENDENCY ERROR: Missing setting INVERT_E0_DIR
#endif
#if NOTEXIST(INVERT_E1_DIR)
#if DISABLED(INVERT_E1_DIR)
#error DEPENDENCY ERROR: Missing setting INVERT_E1_DIR
#endif
#if NOTEXIST(INVERT_E2_DIR)
#if DISABLED(INVERT_E2_DIR)
#error DEPENDENCY ERROR: Missing setting INVERT_E2_DIR
#endif
#if NOTEXIST(INVERT_E3_DIR)
#if DISABLED(INVERT_E3_DIR)
#error DEPENDENCY ERROR: Missing setting INVERT_E3_DIR
#endif
#if NOTEXIST(DISABLE_X)
#if DISABLED(DISABLE_X)
#error DEPENDENCY ERROR: Missing setting DISABLE_X
#endif
#if NOTEXIST(DISABLE_Y)
#if DISABLED(DISABLE_Y)
#error DEPENDENCY ERROR: Missing setting DISABLE_Y
#endif
#if NOTEXIST(DISABLE_Z)
#if DISABLED(DISABLE_Z)
#error DEPENDENCY ERROR: Missing setting DISABLE_Z
#endif
#if NOTEXIST(DISABLE_E)
#if DISABLED(DISABLE_E)
#error DEPENDENCY ERROR: Missing setting DISABLE_E
#endif
#if NOTEXIST(DISABLE_INACTIVE_EXTRUDER)
#if DISABLED(DISABLE_INACTIVE_EXTRUDER)
#error DEPENDENCY ERROR: Missing setting DISABLE_INACTIVE_EXTRUDER
#endif
#if NOTEXIST(X_MAX_POS)
#if DISABLED(X_MAX_POS)
#error DEPENDENCY ERROR: Missing setting X_MAX_POS
#endif
#if NOTEXIST(X_MIN_POS)
#if DISABLED(X_MIN_POS)
#error DEPENDENCY ERROR: Missing setting X_MIN_POS
#endif
#if NOTEXIST(Y_MAX_POS)
#if DISABLED(Y_MAX_POS)
#error DEPENDENCY ERROR: Missing setting Y_MAX_POS
#endif
#if NOTEXIST(Y_MIN_POS)
#if DISABLED(Y_MIN_POS)
#error DEPENDENCY ERROR: Missing setting Y_MIN_POS
#endif
#if NOTEXIST(Z_MAX_POS)
#if DISABLED(Z_MAX_POS)
#error DEPENDENCY ERROR: Missing setting Z_MAX_POS
#endif
#if NOTEXIST(Z_MIN_POS)
#if DISABLED(Z_MIN_POS)
#error DEPENDENCY ERROR: Missing setting Z_MIN_POS
#endif
#if NOTEXIST(E_MIN_POS)
#if DISABLED(E_MIN_POS)
#error DEPENDENCY ERROR: Missing setting E_MIN_POS
#endif
#if NOTEXIST(AXIS_RELATIVE_MODES)
#if DISABLED(AXIS_RELATIVE_MODES)
#error DEPENDENCY ERROR: Missing setting AXIS_RELATIVE_MODES
#endif
#if NOTEXIST(DEFAULT_AXIS_STEPS_PER_UNIT)
#if DISABLED(DEFAULT_AXIS_STEPS_PER_UNIT)
#error DEPENDENCY ERROR: Missing setting DEFAULT_AXIS_STEPS_PER_UNIT
#endif
#if ENABLED(ULTIPANEL) && NOTEXIST(MANUAL_FEEDRATE)
#if ENABLED(ULTIPANEL) && DISABLED(MANUAL_FEEDRATE)
#error DEPENDENCY ERROR: Missing setting MANUAL_FEEDRATE
#endif
#if NOTEXIST(DEFAULT_MINTRAVELFEEDRATE)
#if DISABLED(DEFAULT_MINTRAVELFEEDRATE)
#error DEPENDENCY ERROR: Missing setting DEFAULT_MINTRAVELFEEDRATE
#endif
#if NOTEXIST(MINIMUM_PLANNER_SPEED)
#if DISABLED(MINIMUM_PLANNER_SPEED)
#error DEPENDENCY ERROR: Missing setting MINIMUM_PLANNER_SPEED
#endif
#if NOTEXIST(DEFAULT_MAX_ACCELERATION)
#if DISABLED(DEFAULT_MAX_ACCELERATION)
#error DEPENDENCY ERROR: Missing setting DEFAULT_MAX_ACCELERATION
#endif
#if NOTEXIST(DEFAULT_RETRACT_ACCELERATION)
#if DISABLED(DEFAULT_RETRACT_ACCELERATION)
#error DEPENDENCY ERROR: Missing setting DEFAULT_RETRACT_ACCELERATION
#endif
#if NOTEXIST(DEFAULT_ACCELERATION)
#if DISABLED(DEFAULT_ACCELERATION)
#error DEPENDENCY ERROR: Missing setting DEFAULT_ACCELERATION
#endif
#if NOTEXIST(DEFAULT_TRAVEL_ACCELERATION)
#if DISABLED(DEFAULT_TRAVEL_ACCELERATION)
#error DEPENDENCY ERROR: Missing setting DEFAULT_TRAVEL_ACCELERATION
#endif
#if NOTEXIST(DEFAULT_XYJERK)
#if DISABLED(DEFAULT_XYJERK)
#error DEPENDENCY ERROR: Missing setting DEFAULT_XYJERK
#endif
#if NOTEXIST(DEFAULT_ZJERK)
#if DISABLED(DEFAULT_ZJERK)
#error DEPENDENCY ERROR: Missing setting DEFAULT_ZJERK
#endif
#if NOTEXIST(HOMING_FEEDRATE)
#if DISABLED(HOMING_FEEDRATE)
#error DEPENDENCY ERROR: Missing setting HOMING_FEEDRATE
#endif
#if NOTEXIST(X_HOME_BUMP_MM)
#if DISABLED(X_HOME_BUMP_MM)
#error DEPENDENCY ERROR: Missing setting X_HOME_BUMP_MM
#endif
#if NOTEXIST(Y_HOME_BUMP_MM)
#if DISABLED(Y_HOME_BUMP_MM)
#error DEPENDENCY ERROR: Missing setting Y_HOME_BUMP_MM
#endif
#if NOTEXIST(Z_HOME_BUMP_MM)
#if DISABLED(Z_HOME_BUMP_MM)
#error DEPENDENCY ERROR: Missing setting Z_HOME_BUMP_MM
#endif
#if NOTEXIST(HOMING_BUMP_DIVISOR)
#if DISABLED(HOMING_BUMP_DIVISOR)
#error DEPENDENCY ERROR: Missing setting HOMING_BUMP_DIVISOR
#endif
#if NOTEXIST(LEFT_PROBE_BED_POSITION)
#if DISABLED(LEFT_PROBE_BED_POSITION)
#error DEPENDENCY ERROR: Missing setting LEFT_PROBE_BED_POSITION
#endif
#if NOTEXIST(RIGHT_PROBE_BED_POSITION)
#if DISABLED(RIGHT_PROBE_BED_POSITION)
#error DEPENDENCY ERROR: Missing setting RIGHT_PROBE_BED_POSITION
#endif
#if NOTEXIST(FRONT_PROBE_BED_POSITION)
#if DISABLED(FRONT_PROBE_BED_POSITION)
#error DEPENDENCY ERROR: Missing setting FRONT_PROBE_BED_POSITION
#endif
#if !MECH(DELTA)
#if NOTEXIST(XY_TRAVEL_SPEED)
#if DISABLED(XY_TRAVEL_SPEED)
#error DEPENDENCY ERROR: Missing setting XY_TRAVEL_SPEED
#endif
#endif
#if ENABLED(MANUAL_HOME_POSITIONS)
#if NOTEXIST(MANUAL_X_HOME_POS)
#if DISABLED(MANUAL_X_HOME_POS)
#error DEPENDENCY ERROR: Missing setting MANUAL_X_HOME_POS
#endif
#if NOTEXIST(MANUAL_Y_HOME_POS)
#if DISABLED(MANUAL_Y_HOME_POS)
#error DEPENDENCY ERROR: Missing setting MANUAL_Y_HOME_POS
#endif
#if NOTEXIST(MANUAL_Z_HOME_POS)
#if DISABLED(MANUAL_Z_HOME_POS)
#error DEPENDENCY ERROR: Missing setting MANUAL_Z_HOME_POS
#endif
#endif
#if MECH(COREXY) || MECH(COREXZ)
#if NOTEXIST(COREX_YZ_FACTOR)
#if DISABLED(COREX_YZ_FACTOR)
#error DEPENDENCY ERROR: Missing setting COREX_YZ_FACTOR
#endif
#endif
#if MECH(SCARA)
#if NOTEXIST(LINKAGE_1)
#if DISABLED(LINKAGE_1)
#error DEPENDENCY ERROR: Missing setting LINKAGE_1
#endif
#if NOTEXIST(LINKAGE_2)
#if DISABLED(LINKAGE_2)
#error DEPENDENCY ERROR: Missing setting LINKAGE_2
#endif
#if NOTEXIST(SCARA_OFFSET_X)
#if DISABLED(SCARA_OFFSET_X)
#error DEPENDENCY ERROR: Missing setting SCARA_OFFSET_X
#endif
#if NOTEXIST(SCARA_OFFSET_Y)
#if DISABLED(SCARA_OFFSET_Y)
#error DEPENDENCY ERROR: Missing setting SCARA_OFFSET_Y
#endif
#if NOTEXIST(SCARA_RAD2DEG)
#if DISABLED(SCARA_RAD2DEG)
#error DEPENDENCY ERROR: Missing setting SCARA_RAD2DEG
#endif
#if NOTEXIST(THETA_HOMING_OFFSET)
#if DISABLED(THETA_HOMING_OFFSET)
#error DEPENDENCY ERROR: Missing setting THETA_HOMING_OFFSET
#endif
#if NOTEXIST(PSI_HOMING_OFFSET)
#if DISABLED(PSI_HOMING_OFFSET)
#error DEPENDENCY ERROR: Missing setting PSI_HOMING_OFFSET
#endif
#endif
#if MECH(DELTA)
#if NOTEXIST(DEFAULT_DELTA_DIAGONAL_ROD)
#if DISABLED(DEFAULT_DELTA_DIAGONAL_ROD)
#error DEPENDENCY ERROR: Missing setting DEFAULT_DELTA_DIAGONAL_ROD
#endif
#if NOTEXIST(DELTA_SMOOTH_ROD_OFFSET)
#if DISABLED(DELTA_SMOOTH_ROD_OFFSET)
#error DEPENDENCY ERROR: Missing setting DELTA_SMOOTH_ROD_OFFSET
#endif
#if NOTEXIST(DELTA_CARRIAGE_OFFSET)
#if DISABLED(DELTA_CARRIAGE_OFFSET)
#error DEPENDENCY ERROR: Missing setting DELTA_CARRIAGE_OFFSET
#endif
#if NOTEXIST(PRINTER_RADIUS)
#if DISABLED(PRINTER_RADIUS)
#error DEPENDENCY ERROR: Missing setting PRINTER_RADIUS
#endif
#if NOTEXIST(DEFAULT_DELTA_RADIUS)
#if DISABLED(DEFAULT_DELTA_RADIUS)
#error DEPENDENCY ERROR: Missing setting DEFAULT_DELTA_RADIUS
#endif
#if NOTEXIST(AUTOCAL_TRAVELRATE)
#if DISABLED(AUTOCAL_TRAVELRATE)
#error DEPENDENCY ERROR: Missing setting AUTOCAL_TRAVELRATE
#endif
#if NOTEXIST(AUTOCAL_PROBERATE)
#if DISABLED(AUTOCAL_PROBERATE)
#error DEPENDENCY ERROR: Missing setting AUTOCAL_PROBERATE
#endif
#if NOTEXIST(AUTOCALIBRATION_PRECISION)
#if DISABLED(AUTOCALIBRATION_PRECISION)
#error DEPENDENCY ERROR: Missing setting AUTOCALIBRATION_PRECISION
#endif
#if NOTEXIST(TOWER_A_ENDSTOP_ADJ)
#if DISABLED(TOWER_A_ENDSTOP_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_A_ENDSTOP_ADJ
#endif
#if NOTEXIST(TOWER_B_ENDSTOP_ADJ)
#if DISABLED(TOWER_B_ENDSTOP_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_B_ENDSTOP_ADJ
#endif
#if NOTEXIST(TOWER_C_ENDSTOP_ADJ)
#if DISABLED(TOWER_C_ENDSTOP_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_C_ENDSTOP_ADJ
#endif
#if NOTEXIST(TOWER_A_POSITION_ADJ)
#if DISABLED(TOWER_A_POSITION_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_A_POSITION_ADJ
#endif
#if NOTEXIST(TOWER_B_POSITION_ADJ)
#if DISABLED(TOWER_B_POSITION_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_B_POSITION_ADJ
#endif
#if NOTEXIST(TOWER_C_POSITION_ADJ)
#if DISABLED(TOWER_C_POSITION_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_C_POSITION_ADJ
#endif
#if NOTEXIST(TOWER_A_RADIUS_ADJ)
#if DISABLED(TOWER_A_RADIUS_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_A_RADIUS_ADJ
#endif
#if NOTEXIST(TOWER_B_RADIUS_ADJ)
#if DISABLED(TOWER_B_RADIUS_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_B_RADIUS_ADJ
#endif
#if NOTEXIST(TOWER_C_RADIUS_ADJ)
#if DISABLED(TOWER_C_RADIUS_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_C_RADIUS_ADJ
#endif
#if NOTEXIST(TOWER_A_DIAGROD_ADJ)
#if DISABLED(TOWER_A_DIAGROD_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_A_DIAGROD_ADJ
#endif
#if NOTEXIST(TOWER_B_DIAGROD_ADJ)
#if DISABLED(TOWER_B_DIAGROD_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_B_DIAGROD_ADJ
#endif
#if NOTEXIST(TOWER_C_DIAGROD_ADJ)
#if DISABLED(TOWER_C_DIAGROD_ADJ)
#error DEPENDENCY ERROR: Missing setting TOWER_C_DIAGROD_ADJ
#endif
#if NOTEXIST(Z_PROBE_OFFSET)
#if DISABLED(Z_PROBE_OFFSET)
#error DEPENDENCY ERROR: Missing setting Z_PROBE_OFFSET
#endif
#if NOTEXIST(Z_PROBE_DEPLOY_START_LOCATION)
#if DISABLED(Z_PROBE_DEPLOY_START_LOCATION)
#error DEPENDENCY ERROR: Missing setting Z_PROBE_DEPLOY_START_LOCATION
#endif
#if NOTEXIST(Z_PROBE_DEPLOY_END_LOCATION)
#if DISABLED(Z_PROBE_DEPLOY_END_LOCATION)
#error DEPENDENCY ERROR: Missing setting Z_PROBE_DEPLOY_END_LOCATION
#endif
#if NOTEXIST(Z_PROBE_RETRACT_START_LOCATION)
#if DISABLED(Z_PROBE_RETRACT_START_LOCATION)
#error DEPENDENCY ERROR: Missing setting Z_PROBE_RETRACT_START_LOCATION
#endif
#if NOTEXIST(Z_PROBE_RETRACT_END_LOCATION)
#if DISABLED(Z_PROBE_RETRACT_END_LOCATION)
#error DEPENDENCY ERROR: Missing setting Z_PROBE_RETRACT_END_LOCATION
#endif
#if NOTEXIST(Z_RAISE_BETWEEN_PROBINGS)
#if DISABLED(Z_RAISE_BETWEEN_PROBINGS)
#error DEPENDENCY ERROR: Missing setting Z_RAISE_BETWEEN_PROBINGS
#endif
#if NOTEXIST(AUTO_BED_LEVELING_GRID_POINTS)
#if DISABLED(AUTO_BED_LEVELING_GRID_POINTS)
#error DEPENDENCY ERROR: Missing setting AUTO_BED_LEVELING_GRID_POINTS
#endif
#endif
......@@ -1290,14 +1290,14 @@
/**
* Board
*/
#if NOTEXIST(KNOWN_BOARD)
#if DISABLED(KNOWN_BOARD)
#error DEPENDENCY ERROR: You have to set a valid MOTHERBOARD.
#endif
/**
* Mechanics
*/
#if NOTEXIST(KNOWN_MECH)
#if DISABLED(KNOWN_MECH)
#error DEPENDENCY ERROR: You have to set a valid MECHANICS.
#endif
......@@ -1459,7 +1459,7 @@
#if Z_ENDSTOP_SERVO_NR < 0
#error DEPENDENCY ERROR: You must have Z_ENDSTOP_SERVO_NR set to at least 0 or above to use Z_PROBE_ENDSTOP.
#endif
#if NOTEXIST(SERVO_ENDSTOP_ANGLES)
#if DISABLED(SERVO_ENDSTOP_ANGLES)
#error DEPENDENCY ERROR: You must have SERVO_ENDSTOP_ANGLES EXIST for Z Extend and Retract to use Z_PROBE_ENDSTOP.
#endif
#endif
......@@ -1516,7 +1516,7 @@
* Delta & Z_PROBE_ENDSTOP
*/
#if MECH(DELTA) && ENABLED(Z_PROBE_ENDSTOP)
#if PIN_EXISTS(Z_PROBE)
#if !PIN_EXISTS(Z_PROBE)
#error DEPENDENCY ERROR: You must set Z_PROBE_PIN to a valid pin if you enable Z_PROBE_ENDSTOP
#endif
#endif
......@@ -1527,7 +1527,7 @@
#if ENABLED(DUAL_X_CARRIAGE)
#if EXTRUDERS == 1 || MECH(COREXY) \
|| HASNT(X2_ENABLE) || HASNT(X2_STEP) || HASNT(X2_DIR) \
|| NOTEXIST(X2_HOME_POS) || NOTEXIST(X2_MIN_POS) || NOTEXIST(X2_MAX_POS) \
|| DISABLED(X2_HOME_POS) || DISABLED(X2_MIN_POS) || DISABLED(X2_MAX_POS) \
|| HASNT(X_MAX)
#error DEPENDENCY ERROR: Missing or invalid definitions for DUAL_X_CARRIAGE mode.
#endif
......
......@@ -613,7 +613,7 @@ ISR(TIMER1_COMPA_vect) {
if (cleaning_buffer_counter) {
current_block = NULL;
plan_discard_current_block();
#if EXIST(SD_FINISHED_RELEASECOMMAND)
#if ENABLED(SD_FINISHED_RELEASECOMMAND)
if ((cleaning_buffer_counter == 1) && (SD_FINISHED_STEPPERRELEASE)) enqueuecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
#endif
cleaning_buffer_counter--;
......@@ -1017,7 +1017,7 @@ void st_init() {
#endif
#endif
#if HAS(Z_PROBE) && ENABLED(Z_PROBE_ENDSTOP) // Check for Z_PROBE_ENDSTOP so we don't pull a pin high unless it's to be used.
#if HAS(Z_PROBE) // Check for Z_PROBE_ENDSTOP so we don't pull a pin high unless it's to be used.
SET_INPUT(Z_PROBE_PIN);
#if ENABLED(ENDSTOPPULLUP_ZPROBE)
WRITE(Z_PROBE_PIN,HIGH);
......@@ -1282,7 +1282,7 @@ void digipot_init() {
digipot_current(i,digipot_motor_current[i]);
}
#endif
#if ENABLED(MOTOR_CURRENT_PWM_XY_PIN)
#if HAS(MOTOR_CURRENT_PWM_XY)
pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT);
pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT);
pinMode(MOTOR_CURRENT_PWM_E_PIN, OUTPUT);
......@@ -1308,7 +1308,7 @@ void digipot_current(uint8_t driver, int current) {
const uint8_t digipot_ch[] = DIGIPOT_CHANNELS;
digitalPotWrite(digipot_ch[driver], current);
#endif
#if ENABLED(MOTOR_CURRENT_PWM_XY_PIN)
#if HAS(MOTOR_CURRENT_PWM_XY)
switch(driver) {
case 0: analogWrite(MOTOR_CURRENT_PWM_XY_PIN, 255L * current / MOTOR_CURRENT_PWM_RANGE); break;
case 1: analogWrite(MOTOR_CURRENT_PWM_Z_PIN, 255L * current / MOTOR_CURRENT_PWM_RANGE); break;
......
......@@ -44,7 +44,7 @@
//================================== macros =================================
//===========================================================================
#if EXIST(K1) // Defined in Configuration.h in the PID settings
#if ENABLED(K1) // Defined in Configuration.h in the PID settings
#define K2 (1.0 - K1)
#endif
......@@ -168,10 +168,10 @@ static int minttemp_raw[HOTENDS] = ARRAY_BY_HOTENDS( HEATER_0_RAW_LO_TEMP , HEAT
static int maxttemp_raw[HOTENDS] = ARRAY_BY_HOTENDS( HEATER_0_RAW_HI_TEMP , HEATER_1_RAW_HI_TEMP , HEATER_2_RAW_HI_TEMP, HEATER_3_RAW_HI_TEMP);
static int minttemp[HOTENDS] = { 0 };
static int maxttemp[HOTENDS] = ARRAY_BY_HOTENDS1( 16383 );
#if EXIST(BED_MINTEMP)
#if ENABLED(BED_MINTEMP)
static int bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP;
#endif
#if EXIST(BED_MAXTEMP)
#if ENABLED(BED_MAXTEMP)
static int bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP;
#endif
......@@ -1156,6 +1156,7 @@ void tp_init() {
#if ENABLED(THERMAL_PROTECTION_HOTENDS) || ENABLED(THERMAL_PROTECTION_BED)
void thermal_runaway_protection(TRState *state, millis_t *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) {
static float tr_last_temperature = 0.0;
static float tr_target_temperature[HOTENDS + 1] = { 0.0 };
/*
ECHO_SM(DB, "Thermal Thermal Runaway Running. Heater ID: ");
......@@ -1180,6 +1181,7 @@ void tp_init() {
// Inactive state waits for a target temperature to be set
case TRInactive: {
if (target_temperature > 0) {
tr_last_temperature = temperature;
tr_target_temperature[heater_index] = target_temperature;
*timer = millis();
*state = TRFirstHeating;
......@@ -1190,6 +1192,11 @@ void tp_init() {
// If the heater takes too long to reach the target temperature the sistem will be halt.
case TRFirstHeating: {
if (temperature >= tr_target_temperature[heater_index]) *state = TRStable;
else if (temperature == tr_last_temperature) {
if (millis() > *timer + period_seconds * 1000UL) {
*state = TRRunaway;
}
}
else {
*timer = millis();
}
......
......@@ -1080,7 +1080,7 @@ const short temptable_1047[][2] PROGMEM = {
#define _TT_NAME(_N) temptable_ ## _N
#define TT_NAME(_N) _TT_NAME(_N)
#if EXIST(THERMISTORHEATER_0)
#if ENABLED(THERMISTORHEATER_0)
#define HEATER_0_TEMPTABLE TT_NAME(THERMISTORHEATER_0)
#define HEATER_0_TEMPTABLE_LEN COUNT(HEATER_0_TEMPTABLE)
#else
......@@ -1093,7 +1093,7 @@ const short temptable_1047[][2] PROGMEM = {
#endif
//Set the high and low raw values for the heater,this indicates which raw value is a high or low temperature
#if NOTEXIST(HEATER_0_RAW_HI_TEMP)
#if DISABLED(HEATER_0_RAW_HI_TEMP)
#if ENABLED(HEATER_0_USES_THERMISTOR) //In case of a thermistor the highest temperature results in the lowest ADC value
#define HEATER_0_RAW_HI_TEMP 0
#define HEATER_0_RAW_LO_TEMP 16383
......@@ -1103,7 +1103,7 @@ const short temptable_1047[][2] PROGMEM = {
#endif
#endif
#if EXIST(THERMISTORHEATER_1)
#if ENABLED(THERMISTORHEATER_1)
#define HEATER_1_TEMPTABLE TT_NAME(THERMISTORHEATER_1)
#define HEATER_1_TEMPTABLE_LEN COUNT(HEATER_1_TEMPTABLE)
#else
......@@ -1116,7 +1116,7 @@ const short temptable_1047[][2] PROGMEM = {
#endif
//Set the high and low raw values for the heater,this indicates which raw value is a high or low temperature
#if NOTEXIST(HEATER_1_RAW_HI_TEMP)
#if DISABLED(HEATER_1_RAW_HI_TEMP)
#if ENABLED(HEATER_1_USES_THERMISTOR) //In case of a thermistor the highest temperature results in the lowest ADC value
#define HEATER_1_RAW_HI_TEMP 0
#define HEATER_1_RAW_LO_TEMP 16383
......@@ -1126,7 +1126,7 @@ const short temptable_1047[][2] PROGMEM = {
#endif
#endif
#if EXIST(THERMISTORHEATER_2)
#if ENABLED(THERMISTORHEATER_2)
#define HEATER_2_TEMPTABLE TT_NAME(THERMISTORHEATER_2)
#define HEATER_2_TEMPTABLE_LEN COUNT(HEATER_2_TEMPTABLE)
#else
......@@ -1139,7 +1139,7 @@ const short temptable_1047[][2] PROGMEM = {
#endif
//Set the high and low raw values for the heater,this indicates which raw value is a high or low temperature
#if NOTEXIST(HEATER_2_RAW_HI_TEMP)
#if DISABLED(HEATER_2_RAW_HI_TEMP)
#if ENABLED(HEATER_2_USES_THERMISTOR) //In case of a thermistor the highest temperature results in the lowest ADC value
#define HEATER_2_RAW_HI_TEMP 0
#define HEATER_2_RAW_LO_TEMP 16383
......@@ -1149,7 +1149,7 @@ const short temptable_1047[][2] PROGMEM = {
#endif
#endif
#if EXIST(THERMISTORHEATER_3)
#if ENABLED(THERMISTORHEATER_3)
#define HEATER_3_TEMPTABLE TT_NAME(THERMISTORHEATER_3)
#define HEATER_3_TEMPTABLE_LEN COUNT(HEATER_3_TEMPTABLE)
#else
......@@ -1162,7 +1162,7 @@ const short temptable_1047[][2] PROGMEM = {
#endif
//Set the high and low raw values for the heater,this indicates which raw value is a high or low temperature
#if NOTEXIST(HEATER_3_RAW_HI_TEMP)
#if DISABLED(HEATER_3_RAW_HI_TEMP)
#if ENABLED(HEATER_3_USES_THERMISTOR) //In case of a thermistor the highest temperature results in the lowest ADC value
#define HEATER_3_RAW_HI_TEMP 0
#define HEATER_3_RAW_LO_TEMP 16383
......@@ -1172,7 +1172,7 @@ const short temptable_1047[][2] PROGMEM = {
#endif
#endif
#if EXIST(THERMISTORBED)
#if ENABLED(THERMISTORBED)
#define BEDTEMPTABLE TT_NAME(THERMISTORBED)
#define BEDTEMPTABLE_LEN COUNT(BEDTEMPTABLE)
#else
......@@ -1182,7 +1182,7 @@ const short temptable_1047[][2] PROGMEM = {
#endif
//Set the high and low raw values for the heater,this indicates which raw value is a high or low temperature
#if NOTEXIST(HEATER_BED_RAW_HI_TEMP)
#if DISABLED(HEATER_BED_RAW_HI_TEMP)
#if ENABLED(BED_USES_THERMISTOR) //In case of a thermistor the highest temperature results in the lowest ADC value
#define HEATER_BED_RAW_HI_TEMP 0
#define HEATER_BED_RAW_LO_TEMP 16383
......
......@@ -2,19 +2,25 @@
#include "base.h"
#if ENABLED(ULTRA_LCD)
#include "Marlin_main.h"
#if ENABLED(SDSUPPORT)
#include "cardreader.h"
#endif
#include "temperature.h"
#if ENABLED(AUTO_BED_LEVELING_FEATURE)
#include "vector_3.h"
#endif
#include "planner.h"
#include "stepper_indirection.h"
#include "stepper.h"
#include "configuration_store.h"
#include "ultralcd.h"
#if HAS(BUZZER)
#include "buzzer.h"
#endif
......@@ -130,17 +136,17 @@ static void lcd_status_screen();
#define ENCODER_FEEDRATE_DEADZONE 10
#if DISABLED(LCD_I2C_VIKI)
#if NOTEXIST(ENCODER_STEPS_PER_MENU_ITEM)
#if DISABLED(ENCODER_STEPS_PER_MENU_ITEM)
#define ENCODER_STEPS_PER_MENU_ITEM 5
#endif
#if NOTEXIST(ENCODER_PULSES_PER_STEP)
#if DISABLED(ENCODER_PULSES_PER_STEP)
#define ENCODER_PULSES_PER_STEP 1
#endif
#else
#if NOTEXIST(ENCODER_STEPS_PER_MENU_ITEM)
#if DISABLED(ENCODER_STEPS_PER_MENU_ITEM)
#define ENCODER_STEPS_PER_MENU_ITEM 2 // VIKI LCD rotary encoder uses a different number of steps per rotation
#endif
#if NOTEXIST(ENCODER_PULSES_PER_STEP)
#if DISABLED(ENCODER_PULSES_PER_STEP)
#define ENCODER_PULSES_PER_STEP 1
#endif
#endif
......@@ -151,7 +157,7 @@ static void lcd_status_screen();
/**
* START_MENU generates the init code for a menu function
*/
#if EXIST(BTN_BACK) && BTN_BACK > 0
#if ENABLED(BTN_BACK) && BTN_BACK > 0
#define START_MENU(last_menu) do { \
encoderRateMultiplierEnabled = false; \
if (encoderPosition > 0x8000) encoderPosition = 0; \
......@@ -1945,7 +1951,7 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; }
* These values are independent of which pins are used for EN_A and EN_B indications
* The rotary encoder part is also independent to the chipset used for the LCD
*/
#if EXIST(EN_A) && EXIST(EN_B)
#if ENABLED(EN_A) && ENABLED(EN_B)
#define encrot0 0
#define encrot1 2
#define encrot2 3
......@@ -1969,7 +1975,7 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; }
#if BTN_ENC > 0
millis_t ms = millis();
if (ms > next_button_update_ms && READ(BTN_ENC) == 0) newbutton |= EN_C;
#if EXIST(BTN_BACK) && BTN_BACK > 0
#if ENABLED(BTN_BACK) && BTN_BACK > 0
if (ms > next_button_update_ms && READ(BTN_BACK) == 0) newbutton |= EN_D;
#endif
#endif
......
......@@ -77,7 +77,7 @@
#define EN_A BIT(BLEN_A)
#define LCD_CLICKED (buttons&EN_C)
#if EXIST(BTN_BACK) && BTN_BACK > 0
#if ENABLED(BTN_BACK) && BTN_BACK > 0
#define EN_D BIT(BLEN_D)
#define LCD_BACK_CLICKED (buttons&EN_D)
#endif
......
......@@ -26,7 +26,7 @@
#define EN_B BIT(BLEN_B) // The two encoder pins are connected through BTN_EN1 and BTN_EN2
#define EN_A BIT(BLEN_A)
#if EXIST(BTN_ENC) && BTN_ENC > -1
#if ENABLED(BTN_ENC) && BTN_ENC > -1
// encoder click is directly connected
#define BLEN_C 2
#define EN_C BIT(BLEN_C)
......@@ -50,7 +50,7 @@
#define B_DW (BUTTON_DOWN<<B_I2C_BTN_OFFSET)
#define B_RI (BUTTON_RIGHT<<B_I2C_BTN_OFFSET)
#if EXIST(BTN_ENC) && BTN_ENC > -1
#if ENABLED(BTN_ENC) && BTN_ENC > -1
// the pause/stop/restart button is connected to BTN_ENC when used
#define B_ST (EN_C) // Map the pause/stop/resume button into its normalized functional name
#define LCD_CLICKED (buttons&(B_MI|B_RI|B_ST)) // pause/stop button also acts as click until we implement proper pause/stop.
......
......@@ -130,4 +130,5 @@ void matrix_3x3::debug(const char title[]) {
ECHO_E;
}
}
#endif
\ No newline at end of file
#endif // AUTO_BED_LEVELING_FEATURE
......@@ -56,4 +56,5 @@ struct matrix_3x3
void apply_rotation_xyz(matrix_3x3 rotationMatrix, float &x, float& y, float& z);
#endif // AUTO_BED_LEVELING_FEATURE
#include "base.h"
#if ENABLED(USE_WATCHDOG)
#include <avr/wdt.h>
#include "whatchdog.h"
......@@ -45,4 +46,4 @@ ISR(WDT_vect) {
}
#endif // RESET_MANUAL
#endif
#endif // USE_WATCHDOG
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment