[2.0.x] SWITCHING_TOOLHEAD (#11623)

This commit is contained in:
Kevin
2018-09-08 08:43:24 +02:00
committed by Scott Lahteine
parent f417408df1
commit e25d2ae4a2
74 changed files with 1376 additions and 15 deletions

View File

@ -423,11 +423,10 @@
#if DISABLED(SWITCHING_NOZZLE)
#define HOTENDS E_STEPPERS
#endif
#define E_MANUAL EXTRUDERS
#elif ENABLED(MIXING_EXTRUDER)
#define E_STEPPERS MIXING_STEPPERS
#define E_MANUAL 1
#else
#elif ENABLED(SWITCHING_TOOLHEAD)
#define E_STEPPERS EXTRUDERS
#define E_MANUAL EXTRUDERS
#endif
@ -454,6 +453,14 @@
#define HOTENDS EXTRUDERS
#endif
#ifndef E_STEPPERS
#define E_STEPPERS EXTRUDERS
#endif
#ifndef E_MANUAL
#define E_MANUAL EXTRUDERS
#endif
#define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++)
#define DO_SWITCH_EXTRUDER (ENABLED(SWITCHING_EXTRUDER) && (DISABLED(SWITCHING_NOZZLE) || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR))

View File

@ -711,6 +711,37 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
#endif
#endif
/**
* Switching Toolhead requirements
*/
#if ENABLED(SWITCHING_TOOLHEAD)
#if ENABLED(DUAL_X_CARRIAGE)
#error "SWITCHING_TOOLHEAD and DUAL_X_CARRIAGE are incompatible."
#elif ENABLED(SINGLENOZZLE)
#error "SWITCHING_TOOLHEAD and SINGLENOZZLE are incompatible."
#elif ENABLED(PARKING_EXTRUDER)
#error "SWITCHING_TOOLHEAD and PARKING_EXTRUDER are incompatible."
#elif !defined(SWITCHING_TOOLHEAD_SERVO_NR)
#error "SWITCHING_TOOLHEAD requires SWITCHING_TOOLHEAD_SERVO_NR."
#elif EXTRUDERS < 2
#error "SWITCHING_TOOLHEAD requires at least 2 EXTRUDERS."
#elif NUM_SERVOS < (SWITCHING_TOOLHEAD_SERVO_NR - 1)
#if SWITCHING_TOOLHEAD_SERVO_NR == 0
#error "A SWITCHING_TOOLHEAD_SERVO_NR of 0 requires NUM_SERVOS >= 1."
#elif SWITCHING_TOOLHEAD_SERVO_NR == 1
#error "A SWITCHING_TOOLHEAD_SERVO_NR of 1 requires NUM_SERVOS >= 2."
#elif SWITCHING_TOOLHEAD_SERVO_NR == 2
#error "A SWITCHING_TOOLHEAD_SERVO_NR of 2 requires NUM_SERVOS >= 3."
#elif SWITCHING_TOOLHEAD_SERVO_NR == 3
#error "A SWITCHING_TOOLHEAD_SERVO_NR of 3 requires NUM_SERVOS >= 4."
#endif
#elif !defined(SWITCHING_TOOLHEAD_SECURITY_RAISE)
#error "SWITCHING_TOOLHEAD requires SWITCHING_TOOLHEAD_SECURITY_RAISE."
#elif SWITCHING_TOOLHEAD_SECURITY_RAISE < 0
#error "SWITCHING_TOOLHEAD _SECURITY_RAISE must be 0 or higher."
#endif
#endif
/**
* Part-Cooling Fan Multiplexer requirements
*/
@ -732,8 +763,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
/**
* Servo deactivation depends on servo endstops, switching nozzle, or switching extruder
*/
#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE) && !HAS_Z_SERVO_PROBE && !defined(SWITCHING_NOZZLE_SERVO_NR) && !defined(SWITCHING_EXTRUDER_SERVO_NR)
#error "Z_PROBE_SERVO_NR, switching nozzle, or switching extruder is required for DEACTIVATE_SERVOS_AFTER_MOVE."
#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE) && !HAS_Z_SERVO_PROBE && !defined(SWITCHING_NOZZLE_SERVO_NR) && !defined(SWITCHING_EXTRUDER_SERVO_NR) && !defined(SWITCHING_TOOLHEAD_SERVO_NR)
#error "Z_PROBE_SERVO_NR, switching nozzle, switching toolhead or switching extruder is required for DEACTIVATE_SERVOS_AFTER_MOVE."
#endif
/**