Simplify options

This commit is contained in:
Scott Lahteine 2020-11-08 23:48:18 -06:00
parent 8154866f55
commit 885847528c
3 changed files with 77 additions and 228 deletions

View file

@ -1176,50 +1176,30 @@
//#define FILAMENT_RUNOUT_SENSOR
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
#define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500.
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN, and optionally a FIL_RUNOUT#_STATE/FIL_RUNOUT#_PULLUP/FIL_RUNOUT#_PULLDOWN, for each.
#define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present.
#define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
//#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.
/**
* With this option each sensor can have a separate state than the first one.
* To override the state for a sensor, up to NUM_RUNOUT_SENSORS, set
* FIL_RUNOUT#_STATE, otherwise FIL_RUNOUT_STATE will be used. Similarly with
* FIL_RUNOUT#_PULLUP and FIL_RUNOUT#_PULLDOWN.
*/
//#define DISTINCT_FIL_RUNOUT_STATES
#ifdef DISTINCT_FIL_RUNOUT_STATES
//#define FIL_RUNOUT1_STATE LOW
//#define FIL_RUNOUT1_PULLUP
//#define FIL_RUNOUT1_PULLDOWN
//#define FIL_RUNOUT2_STATE LOW
//#define FIL_RUNOUT2_PULLUP
//#define FIL_RUNOUT2_PULLDOWN
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
//#define DISTINCT_FIL_RUNOUT_STATES // Enable if runout sensors need distinct settings
#if DISABLED(DISTINCT_FIL_RUNOUT_STATES)
#define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present.
#define FIL_RUNOUT_PULL // Use internal pullup / pulldown for filament runout pins.
#else
#define FIL_RUNOUT1_STATE LOW
#define FIL_RUNOUT1_PULL
#define FIL_RUNOUT2_STATE LOW
#define FIL_RUNOUT2_PULL
//#define FIL_RUNOUT3_STATE LOW
//#define FIL_RUNOUT3_PULLUP
//#define FIL_RUNOUT3_PULLDOWN
//#define FIL_RUNOUT3_PULL
//#define FIL_RUNOUT4_STATE LOW
//#define FIL_RUNOUT4_PULLUP
//#define FIL_RUNOUT4_PULLDOWN
//#define FIL_RUNOUT4_PULL
//#define FIL_RUNOUT5_STATE LOW
//#define FIL_RUNOUT5_PULLUP
//#define FIL_RUNOUT5_PULLDOWN
//#define FIL_RUNOUT5_PULL
//#define FIL_RUNOUT6_STATE LOW
//#define FIL_RUNOUT6_PULLUP
//#define FIL_RUNOUT6_PULLDOWN
//#define FIL_RUNOUT6_PULL
//#define FIL_RUNOUT7_STATE LOW
//#define FIL_RUNOUT7_PULLUP
//#define FIL_RUNOUT7_PULLDOWN
//#define FIL_RUNOUT7_PULL
//#define FIL_RUNOUT8_STATE LOW
//#define FIL_RUNOUT8_PULLUP
//#define FIL_RUNOUT8_PULLDOWN
#endif // DISTINCT_FIL_RUNOUT_STATES
//#define FIL_RUNOUT8_PULL
#endif
// Set one or more commands to execute on filament runout.
// (After 'M412 H' Marlin will ask the host to handle the process.)

View file

@ -149,103 +149,33 @@ class FilamentSensorBase {
public:
static inline void setup() {
#if ENABLED(DISTINCT_FIL_RUNOUT_STATES)
#if ENABLED(FIL_RUNOUT1_PULLUP)
#define INIT_RUNOUT1_PIN(P) SET_INPUT_PULLUP(P)
#elif ENABLED(FIL_RUNOUT1_PULLDOWN)
#define INIT_RUNOUT1_PIN(P) SET_INPUT_PULLDOWN(P)
#else
#define INIT_RUNOUT1_PIN(P) SET_INPUT(P)
#endif
#if NUM_RUNOUT_SENSORS > 1
#if ENABLED(FIL_RUNOUT2_PULLUP)
#define INIT_RUNOUT2_PIN(P) SET_INPUT_PULLUP(P)
#elif ENABLED(FIL_RUNOUT2_PULLDOWN)
#define INIT_RUNOUT2_PIN(P) SET_INPUT_PULLDOWN(P)
#else
#define INIT_RUNOUT2_PIN(P) SET_INPUT(P)
#endif
#endif
#if NUM_RUNOUT_SENSORS > 2
#if ENABLED(FIL_RUNOUT3_PULLUP)
#define INIT_RUNOUT3_PIN(P) SET_INPUT_PULLUP(P)
#elif ENABLED(FIL_RUNOUT3_PULLDOWN)
#define INIT_RUNOUT3_PIN(P) SET_INPUT_PULLDOWN(P)
#else
#define INIT_RUNOUT3_PIN(P) SET_INPUT(P)
#endif
#endif
#if NUM_RUNOUT_SENSORS > 3
#if ENABLED(FIL_RUNOUT4_PULLUP)
#define INIT_RUNOUT4_PIN(P) SET_INPUT_PULLUP(P)
#elif ENABLED(FIL_RUNOUT4_PULLDOWN)
#define INIT_RUNOUT4_PIN(P) SET_INPUT_PULLDOWN(P)
#else
#define INIT_RUNOUT4_PIN(P) SET_INPUT(P)
#endif
#endif
#if NUM_RUNOUT_SENSORS > 4
#if ENABLED(FIL_RUNOUT5_PULLUP)
#define INIT_RUNOUT5_PIN(P) SET_INPUT_PULLUP(P)
#elif ENABLED(FIL_RUNOUT5_PULLDOWN)
#define INIT_RUNOUT5_PIN(P) SET_INPUT_PULLDOWN(P)
#else
#define INIT_RUNOUT5_PIN(P) SET_INPUT(P)
#endif
#endif
#if NUM_RUNOUT_SENSORS > 5
#if ENABLED(FIL_RUNOUT6_PULLUP)
#define INIT_RUNOUT6_PIN(P) SET_INPUT_PULLUP(P)
#elif ENABLED(FIL_RUNOUT6_PULLDOWN)
#define INIT_RUNOUT6_PIN(P) SET_INPUT_PULLDOWN(P)
#else
#define INIT_RUNOUT6_PIN(P) SET_INPUT(P)
#endif
#endif
#if NUM_RUNOUT_SENSORS > 6
#if ENABLED(FIL_RUNOUT7_PULLUP)
#define INIT_RUNOUT7_PIN(P) SET_INPUT_PULLUP(P)
#elif ENABLED(FIL_RUNOUT7_PULLDOWN)
#define INIT_RUNOUT7_PIN(P) SET_INPUT_PULLDOWN(P)
#else
#define INIT_RUNOUT7_PIN(P) SET_INPUT(P)
#endif
#endif
#if NUM_RUNOUT_SENSORS > 7
#if ENABLED(FIL_RUNOUT8_PULLUP)
#define INIT_RUNOUT8_PIN(P) SET_INPUT_PULLUP(P)
#elif ENABLED(FIL_RUNOUT8_PULLDOWN)
#define INIT_RUNOUT8_PIN(P) SET_INPUT_PULLDOWN(P)
#else
#define INIT_RUNOUT8_PIN(P) SET_INPUT(P)
#endif
#endif
#else // !DISTINCT_FIL_RUNOUT_STATES
#if ENABLED(FIL_RUNOUT_PULLUP)
#define INIT_RUNOUT_PIN(P) SET_INPUT_PULLUP(P)
#elif ENABLED(FIL_RUNOUT_PULLDOWN)
#define INIT_RUNOUT_PIN(P) SET_INPUT_PULLDOWN(P)
#else
#define INIT_RUNOUT_PIN(P) SET_INPUT(P)
#endif
#endif // !DISTINCT_FIL_RUNOUT_STATES
#if ENABLED(DISTINCT_FIL_RUNOUT_STATES)
#define _INIT_RUNOUT(N) INIT_RUNOUT##N##_PIN(FIL_RUNOUT##N##_PIN);
#else
#define _INIT_RUNOUT(N) INIT_RUNOUT_PIN(FIL_RUNOUT##N##_PIN);
#define _INIT_RUNOUT_PIN(N,P) do{ if (DISABLED(FIL_RUNOUT##N##_PULL)) SET_INPUT(P) else if (FIL_RUNOUT##N##_STATE) SET_INPUT_PULLDOWN(P); else SET_INPUT_PULLUP(P); }while(0)
#define INIT_RUNOUT_PIN(N,P) _INIT_RUNOUT_PIN(TERN_(DISTINCT_FIL_RUNOUT_STATES, N),P)
#if NUM_RUNOUT_SENSORS >= 1
INIT_RUNOUT_PIN(1, P)
#endif
REPEAT_S(1, INCREMENT(NUM_RUNOUT_SENSORS), _INIT_RUNOUT)
#undef _INIT_RUNOUT
#undef INIT_RUNOUT1_PIN
#undef INIT_RUNOUT2_PIN
#undef INIT_RUNOUT3_PIN
#undef INIT_RUNOUT4_PIN
#undef INIT_RUNOUT5_PIN
#undef INIT_RUNOUT6_PIN
#undef INIT_RUNOUT7_PIN
#undef INIT_RUNOUT8_PIN
#if NUM_RUNOUT_SENSORS >= 2
INIT_RUNOUT_PIN(2, P)
#endif
#if NUM_RUNOUT_SENSORS >= 3
INIT_RUNOUT_PIN(3, P)
#endif
#if NUM_RUNOUT_SENSORS >= 4
INIT_RUNOUT_PIN(4, P)
#endif
#if NUM_RUNOUT_SENSORS >= 5
INIT_RUNOUT_PIN(5, P)
#endif
#if NUM_RUNOUT_SENSORS >= 6
INIT_RUNOUT_PIN(6, P)
#endif
#if NUM_RUNOUT_SENSORS >= 7
INIT_RUNOUT_PIN(7, P)
#endif
#if NUM_RUNOUT_SENSORS >= 8
INIT_RUNOUT_PIN(8, P)
#endif
#undef _INIT_RUNOUT_PIN
#undef INIT_RUNOUT_PIN
}

View file

@ -810,112 +810,51 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
* Filament Runout needs one or more pins and either SD Support or Auto print start detection
*/
#if HAS_FILAMENT_SENSOR
#if !PIN_EXISTS(FIL_RUNOUT)
#error "FILAMENT_RUNOUT_SENSOR requires FIL_RUNOUT_PIN."
#elif NUM_RUNOUT_SENSORS > E_STEPPERS
#error "NUM_RUNOUT_SENSORS cannot exceed the number of E steppers."
#elif NUM_RUNOUT_SENSORS > 8
#error "NUM_RUNOUT_SENSORS cannot exceed 8"
#elif NUM_RUNOUT_SENSORS > 1 && !PIN_EXISTS(FIL_RUNOUT2)
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 1 requires FIL_RUNOUT2_PIN."
#elif NUM_RUNOUT_SENSORS > 2 && !PIN_EXISTS(FIL_RUNOUT3)
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 2 requires FIL_RUNOUT3_PIN."
#elif NUM_RUNOUT_SENSORS > 3 && !PIN_EXISTS(FIL_RUNOUT4)
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 3 requires FIL_RUNOUT4_PIN."
#elif NUM_RUNOUT_SENSORS > 4 && !PIN_EXISTS(FIL_RUNOUT5)
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 4 requires FIL_RUNOUT5_PIN."
#elif NUM_RUNOUT_SENSORS > 5 && !PIN_EXISTS(FIL_RUNOUT6)
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 5 requires FIL_RUNOUT6_PIN."
#elif NUM_RUNOUT_SENSORS > 6 && !PIN_EXISTS(FIL_RUNOUT7)
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 6 requires FIL_RUNOUT7_PIN."
#elif NUM_RUNOUT_SENSORS > 7 && !PIN_EXISTS(FIL_RUNOUT8)
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 7 requires FIL_RUNOUT8_PIN."
#elif NONE(SDSUPPORT, PRINTJOB_TIMER_AUTOSTART)
#error "FILAMENT_RUNOUT_SENSOR requires SDSUPPORT or PRINTJOB_TIMER_AUTOSTART."
#elif NUM_RUNOUT_SENSORS >= 2 && !PIN_EXISTS(FIL_RUNOUT2)
#error "FIL_RUNOUT2_PIN is required with NUM_RUNOUT_SENSORS >= 2."
#elif NUM_RUNOUT_SENSORS >= 3 && !PIN_EXISTS(FIL_RUNOUT3)
#error "FIL_RUNOUT3_PIN is required with NUM_RUNOUT_SENSORS >= 3."
#elif NUM_RUNOUT_SENSORS >= 4 && !PIN_EXISTS(FIL_RUNOUT4)
#error "FIL_RUNOUT4_PIN is required with NUM_RUNOUT_SENSORS >= 4."
#elif NUM_RUNOUT_SENSORS >= 5 && !PIN_EXISTS(FIL_RUNOUT5)
#error "FIL_RUNOUT5_PIN is required with NUM_RUNOUT_SENSORS >= 5."
#elif NUM_RUNOUT_SENSORS >= 6 && !PIN_EXISTS(FIL_RUNOUT6)
#error "FIL_RUNOUT6_PIN is required with NUM_RUNOUT_SENSORS >= 6."
#elif NUM_RUNOUT_SENSORS >= 7 && !PIN_EXISTS(FIL_RUNOUT7)
#error "FIL_RUNOUT7_PIN is required with NUM_RUNOUT_SENSORS >= 7."
#elif NUM_RUNOUT_SENSORS >= 8 && !PIN_EXISTS(FIL_RUNOUT8)
#error "FIL_RUNOUT8_PIN is required with NUM_RUNOUT_SENSORS >= 8."
#elif FILAMENT_RUNOUT_DISTANCE_MM < 0
#error "FILAMENT_RUNOUT_DISTANCE_MM must be greater than or equal to zero."
#elif DISABLED(ADVANCED_PAUSE_FEATURE)
static_assert(nullptr == strstr(FILAMENT_RUNOUT_SCRIPT, "M600"), "ADVANCED_PAUSE_FEATURE is required to use M600 with FILAMENT_RUNOUT_SENSOR.");
#endif
#if ENABLED(DISTINCT_FIL_RUNOUT_STATES)
#if BOTH(FIL_RUNOUT1_PULLUP, FIL_RUNOUT1_PULLDOWN)
#error "Enable only one of FIL_RUNOUT1_PULLUP or FIL_RUNOUT1_PULLDOWN."
#if NUM_RUNOUT_SENSORS >= 1 && !defined(FIL_RUNOUT1_STATE)
#error "FIL_RUNOUT1_STATE is required with NUM_RUNOUT_SENSORS >= 2."
#elif NUM_RUNOUT_SENSORS >= 2 && !defined(FIL_RUNOUT2_STATE)
#error "FIL_RUNOUT2_STATE is required with NUM_RUNOUT_SENSORS >= 2."
#elif NUM_RUNOUT_SENSORS >= 3 && !defined(FIL_RUNOUT3_STATE)
#error "FIL_RUNOUT3_STATE is required with NUM_RUNOUT_SENSORS >= 3."
#elif NUM_RUNOUT_SENSORS >= 4 && !defined(FIL_RUNOUT4_STATE)
#error "FIL_RUNOUT4_STATE is required with NUM_RUNOUT_SENSORS >= 4."
#elif NUM_RUNOUT_SENSORS >= 5 && !defined(FIL_RUNOUT5_STATE)
#error "FIL_RUNOUT5_STATE is required with NUM_RUNOUT_SENSORS >= 5."
#elif NUM_RUNOUT_SENSORS >= 6 && !defined(FIL_RUNOUT6_STATE)
#error "FIL_RUNOUT6_STATE is required with NUM_RUNOUT_SENSORS >= 6."
#elif NUM_RUNOUT_SENSORS >= 7 && !defined(FIL_RUNOUT7_STATE)
#error "FIL_RUNOUT7_STATE is required with NUM_RUNOUT_SENSORS >= 7."
#elif NUM_RUNOUT_SENSORS >= 8 && !defined(FIL_RUNOUT8_STATE)
#error "FIL_RUNOUT8_STATE is required with NUM_RUNOUT_SENSORS >= 8."
#endif
#if NUM_RUNOUT_SENSORS > 1
#if BOTH(FIL_RUNOUT2_PULLUP, FIL_RUNOUT2_PULLDOWN)
#error "Enable only one of FIL_RUNOUT2_PULLUP or FIL_RUNOUT2_PULLDOWN."
#endif
#endif
#if NUM_RUNOUT_SENSORS > 2
#if BOTH(FIL_RUNOUT3_PULLUP, FIL_RUNOUT3_PULLDOWN)
#error "Enable only one of FIL_RUNOUT3_PULLUP or FIL_RUNOUT3_PULLDOWN."
#endif
#endif
#if NUM_RUNOUT_SENSORS > 3
#if BOTH(FIL_RUNOUT4_PULLUP, FIL_RUNOUT4_PULLDOWN)
#error "Enable only one of FIL_RUNOUT4_PULLUP or FIL_RUNOUT4_PULLDOWN."
#endif
#endif
#if NUM_RUNOUT_SENSORS > 4
#if BOTH(FIL_RUNOUT5_PULLUP, FIL_RUNOUT5_PULLDOWN)
#error "Enable only one of FIL_RUNOUT5_PULLUP or FIL_RUNOUT5_PULLDOWN."
#endif
#endif
#if NUM_RUNOUT_SENSORS > 5
#if BOTH(FIL_RUNOUT6_PULLUP, FIL_RUNOUT6_PULLDOWN)
#error "Enable only one of FIL_RUNOUT6_PULLUP or FIL_RUNOUT6_PULLDOWN."
#endif
#endif
#if NUM_RUNOUT_SENSORS > 6
#if BOTH(FIL_RUNOUT7_PULLUP, FIL_RUNOUT7_PULLDOWN)
#error "Enable only one of FIL_RUNOUT7_PULLUP or FIL_RUNOUT7_PULLDOWN."
#endif
#endif
#if NUM_RUNOUT_SENSORS > 7
#if BOTH(FIL_RUNOUT8_PULLUP, FIL_RUNOUT8_PULLDOWN)
#error "Enable only one of FIL_RUNOUT8_PULLUP or FIL_RUNOUT8_PULLDOWN."
#endif
#endif
#else // !ENABLED(DISTINCT_FIL_RUNOUT_STATES)
#if MANY(defined(FIL_RUNOUT1_STATE), FIL_RUNOUT1_PULLUP, FIL_RUNOUT1_PULLDOWN)
#warning "You have defined FIL_RUNOUT1_STATE/FIL_RUNOUT1_PULLUP/FIL_RUNOUT1_PULLDOWN but you haven't defined DISTINCT_FIL_RUNOUT_STATES"
#endif
#if NUM_RUNOUT_SENSORS > 1
#if MANY(defined(FIL_RUNOUT2_STATE), FIL_RUNOUT2_PULLUP, FIL_RUNOUT2_PULLDOWN)
#warning "You have defined FIL_RUNOUT2_STATE/FIL_RUNOUT2_PULLUP/FIL_RUNOUT2_PULLDOWN but you haven't defined DISTINCT_FIL_RUNOUT_STATES"
#endif
#endif
#if NUM_RUNOUT_SENSORS > 2
#if MANY(defined(FIL_RUNOUT3_STATE), FIL_RUNOUT3_PULLUP, FIL_RUNOUT3_PULLDOWN)
#warning "You have defined FIL_RUNOUT3_STATE/FIL_RUNOUT3_PULLUP/FIL_RUNOUT3_PULLDOWN but you haven't defined DISTINCT_FIL_RUNOUT_STATES"
#endif
#endif
#if NUM_RUNOUT_SENSORS > 3
#if MANY(defined(FIL_RUNOUT4_STATE), FIL_RUNOUT4_PULLUP, FIL_RUNOUT4_PULLDOWN)
#warning "You have defined FIL_RUNOUT4_STATE/FIL_RUNOUT4_PULLUP/FIL_RUNOUT4_PULLDOWN but you haven't defined DISTINCT_FIL_RUNOUT_STATES"
#endif
#endif
#if NUM_RUNOUT_SENSORS > 4
#if MANY(defined(FIL_RUNOUT5_STATE), FIL_RUNOUT5_PULLUP, FIL_RUNOUT5_PULLDOWN)
#warning "You have defined FIL_RUNOUT5_STATE/FIL_RUNOUT5_PULLUP/FIL_RUNOUT5_PULLDOWN but you haven't defined DISTINCT_FIL_RUNOUT_STATES"
#endif
#endif
#if NUM_RUNOUT_SENSORS > 5
#if MANY(defined(FIL_RUNOUT6_STATE), FIL_RUNOUT6_PULLUP, FIL_RUNOUT6_PULLDOWN)
#warning "You have defined FIL_RUNOUT6_STATE/FIL_RUNOUT6_PULLUP/FIL_RUNOUT6_PULLDOWN but you haven't defined DISTINCT_FIL_RUNOUT_STATES"
#endif
#endif
#if NUM_RUNOUT_SENSORS > 6
#if MANY(defined(FIL_RUNOUT7_STATE), FIL_RUNOUT7_PULLUP, FIL_RUNOUT7_PULLDOWN)
#warning "You have defined FIL_RUNOUT7_STATE/FIL_RUNOUT7_PULLUP/FIL_RUNOUT7_PULLDOWN but you haven't defined DISTINCT_FIL_RUNOUT_STATES"
#endif
#endif
#if NUM_RUNOUT_SENSORS > 7
#if MANY(defined(FIL_RUNOUT8_STATE), FIL_RUNOUT8_PULLUP, FIL_RUNOUT8_PULLDOWN)
#warning "You have defined FIL_RUNOUT8_STATE/FIL_RUNOUT8_PULLUP/FIL_RUNOUT8_PULLDOWN but you haven't defined DISTINCT_FIL_RUNOUT_STATES"
#endif
#endif
#endif // ENABLED(DISTINCT_FIL_RUNOUT_STATES)
#endif
#endif
/**