🎨 Macros for optional arguments (#21969)
This commit is contained in:
committed by
Scott Lahteine
parent
61f2bb1228
commit
e75c3b6c54
@@ -411,9 +411,7 @@ void line_to_current_position(const_feedRate_t fr_mm_s/*=feedrate_mm_s*/) {
|
||||
* - Extrude the specified length regardless of flow percentage.
|
||||
*/
|
||||
void _internal_move_to_destination(const_feedRate_t fr_mm_s/*=0.0f*/
|
||||
#if IS_KINEMATIC
|
||||
, const bool is_fast/*=false*/
|
||||
#endif
|
||||
OPTARG(IS_KINEMATIC, const bool is_fast/*=false*/)
|
||||
) {
|
||||
const feedRate_t old_feedrate = feedrate_mm_s;
|
||||
if (fr_mm_s) feedrate_mm_s = fr_mm_s;
|
||||
@@ -433,9 +431,7 @@ void _internal_move_to_destination(const_feedRate_t fr_mm_s/*=0.0f*/
|
||||
|
||||
feedrate_mm_s = old_feedrate;
|
||||
feedrate_percentage = old_pct;
|
||||
#if HAS_EXTRUDERS
|
||||
planner.e_factor[active_extruder] = old_fac;
|
||||
#endif
|
||||
TERN_(HAS_EXTRUDERS, planner.e_factor[active_extruder] = old_fac);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -607,10 +603,8 @@ void restore_feedrate_and_scaling() {
|
||||
* at the same positions relative to the machine.
|
||||
*/
|
||||
void update_software_endstops(const AxisEnum axis
|
||||
#if HAS_HOTEND_OFFSET
|
||||
, const uint8_t old_tool_index/*=0*/
|
||||
, const uint8_t new_tool_index/*=0*/
|
||||
#endif
|
||||
OPTARG(HAS_HOTEND_OFFSET, const uint8_t old_tool_index/*=0*/)
|
||||
OPTARG(HAS_HOTEND_OFFSET, const uint8_t new_tool_index/*=0*/)
|
||||
) {
|
||||
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
@@ -858,17 +852,13 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) {
|
||||
segment_idle(next_idle_ms);
|
||||
raw += segment_distance;
|
||||
if (!planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, cartesian_segment_mm
|
||||
#if ENABLED(SCARA_FEEDRATE_SCALING)
|
||||
, inv_duration
|
||||
#endif
|
||||
OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
|
||||
)) break;
|
||||
}
|
||||
|
||||
// Ensure last segment arrives at target location.
|
||||
planner.buffer_line(destination, scaled_fr_mm_s, active_extruder, cartesian_segment_mm
|
||||
#if ENABLED(SCARA_FEEDRATE_SCALING)
|
||||
, inv_duration
|
||||
#endif
|
||||
OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
|
||||
);
|
||||
|
||||
return false; // caller will update current_position
|
||||
@@ -929,9 +919,7 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) {
|
||||
segment_idle(next_idle_ms);
|
||||
raw += segment_distance;
|
||||
if (!planner.buffer_line(raw, fr_mm_s, active_extruder, cartesian_segment_mm
|
||||
#if ENABLED(SCARA_FEEDRATE_SCALING)
|
||||
, inv_duration
|
||||
#endif
|
||||
OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
|
||||
)) break;
|
||||
}
|
||||
|
||||
|
@@ -278,11 +278,7 @@ void line_to_current_position(const_feedRate_t fr_mm_s=feedrate_mm_s);
|
||||
|
||||
void prepare_line_to_destination();
|
||||
|
||||
void _internal_move_to_destination(const_feedRate_t fr_mm_s=0.0f
|
||||
#if IS_KINEMATIC
|
||||
, const bool is_fast=false
|
||||
#endif
|
||||
);
|
||||
void _internal_move_to_destination(const_feedRate_t fr_mm_s=0.0f OPTARG(IS_KINEMATIC, const bool is_fast=false));
|
||||
|
||||
inline void prepare_internal_move_to_destination(const_feedRate_t fr_mm_s=0.0f) {
|
||||
_internal_move_to_destination(fr_mm_s);
|
||||
|
@@ -1757,12 +1757,8 @@ void Planner::synchronize() {
|
||||
* Returns true if movement was properly queued, false otherwise (if cleaning)
|
||||
*/
|
||||
bool Planner::_buffer_steps(const xyze_long_t &target
|
||||
#if HAS_POSITION_FLOAT
|
||||
, const xyze_pos_t &target_float
|
||||
#endif
|
||||
#if HAS_DIST_MM_ARG
|
||||
, const xyze_float_t &cart_dist_mm
|
||||
#endif
|
||||
OPTARG(HAS_POSITION_FLOAT, const xyze_pos_t &target_float)
|
||||
OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
|
||||
, feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters
|
||||
) {
|
||||
|
||||
@@ -1823,12 +1819,8 @@ bool Planner::_buffer_steps(const xyze_long_t &target
|
||||
*/
|
||||
bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
const abce_long_t &target
|
||||
#if HAS_POSITION_FLOAT
|
||||
, const xyze_pos_t &target_float
|
||||
#endif
|
||||
#if HAS_DIST_MM_ARG
|
||||
, const xyze_float_t &cart_dist_mm
|
||||
#endif
|
||||
OPTARG(HAS_POSITION_FLOAT, const xyze_pos_t &target_float)
|
||||
OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
|
||||
, feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters/*=0.0*/
|
||||
) {
|
||||
|
||||
@@ -2763,9 +2755,7 @@ void Planner::buffer_sync_block(TERN_(LASER_SYNCHRONOUS_M106_M107, uint8_t sync_
|
||||
* Return 'false' if no segment was queued due to cleaning, cold extrusion, full queue, etc.
|
||||
*/
|
||||
bool Planner::buffer_segment(const_float_t a, const_float_t b, const_float_t c, const_float_t e
|
||||
#if HAS_DIST_MM_ARG
|
||||
, const xyze_float_t &cart_dist_mm
|
||||
#endif
|
||||
OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
|
||||
, const_feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters/*=0.0*/
|
||||
) {
|
||||
|
||||
@@ -2857,9 +2847,7 @@ bool Planner::buffer_segment(const_float_t a, const_float_t b, const_float_t c,
|
||||
* inv_duration - the reciprocal if the duration of the movement, if known (kinematic only if feeedrate scaling is enabled)
|
||||
*/
|
||||
bool Planner::buffer_line(const_float_t rx, const_float_t ry, const_float_t rz, const_float_t e, const_feedRate_t fr_mm_s, const uint8_t extruder, const float millimeters
|
||||
#if ENABLED(SCARA_FEEDRATE_SCALING)
|
||||
, const_float_t inv_duration
|
||||
#endif
|
||||
OPTARG(SCARA_FEEDRATE_SCALING, const_float_t inv_duration)
|
||||
) {
|
||||
xyze_pos_t machine = { rx, ry, rz, e };
|
||||
TERN_(HAS_POSITION_MODIFIERS, apply_modifiers(machine));
|
||||
|
@@ -707,12 +707,8 @@ class Planner {
|
||||
* Returns true if movement was buffered, false otherwise
|
||||
*/
|
||||
static bool _buffer_steps(const xyze_long_t &target
|
||||
#if HAS_POSITION_FLOAT
|
||||
, const xyze_pos_t &target_float
|
||||
#endif
|
||||
#if HAS_DIST_MM_ARG
|
||||
, const xyze_float_t &cart_dist_mm
|
||||
#endif
|
||||
OPTARG(HAS_POSITION_FLOAT, const xyze_pos_t &target_float)
|
||||
OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
|
||||
, feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0
|
||||
);
|
||||
|
||||
@@ -728,14 +724,9 @@ class Planner {
|
||||
*
|
||||
* Returns true is movement is acceptable, false otherwise
|
||||
*/
|
||||
static bool _populate_block(block_t * const block, bool split_move,
|
||||
const xyze_long_t &target
|
||||
#if HAS_POSITION_FLOAT
|
||||
, const xyze_pos_t &target_float
|
||||
#endif
|
||||
#if HAS_DIST_MM_ARG
|
||||
, const xyze_float_t &cart_dist_mm
|
||||
#endif
|
||||
static bool _populate_block(block_t * const block, bool split_move, const xyze_long_t &target
|
||||
OPTARG(HAS_POSITION_FLOAT, const xyze_pos_t &target_float)
|
||||
OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
|
||||
, feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0
|
||||
);
|
||||
|
||||
@@ -768,22 +759,16 @@ class Planner {
|
||||
* millimeters - the length of the movement, if known
|
||||
*/
|
||||
static bool buffer_segment(const_float_t a, const_float_t b, const_float_t c, const_float_t e
|
||||
#if HAS_DIST_MM_ARG
|
||||
, const xyze_float_t &cart_dist_mm
|
||||
#endif
|
||||
OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
|
||||
, const_feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0
|
||||
);
|
||||
|
||||
FORCE_INLINE static bool buffer_segment(abce_pos_t &abce
|
||||
#if HAS_DIST_MM_ARG
|
||||
, const xyze_float_t &cart_dist_mm
|
||||
#endif
|
||||
OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm)
|
||||
, const_feedRate_t fr_mm_s, const uint8_t extruder, const_float_t millimeters=0.0
|
||||
) {
|
||||
return buffer_segment(abce.a, abce.b, abce.c, abce.e
|
||||
#if HAS_DIST_MM_ARG
|
||||
, cart_dist_mm
|
||||
#endif
|
||||
OPTARG(HAS_DIST_MM_ARG, cart_dist_mm)
|
||||
, fr_mm_s, extruder, millimeters);
|
||||
}
|
||||
|
||||
@@ -801,20 +786,14 @@ class Planner {
|
||||
* inv_duration - the reciprocal if the duration of the movement, if known (kinematic only if feeedrate scaling is enabled)
|
||||
*/
|
||||
static bool buffer_line(const_float_t rx, const_float_t ry, const_float_t rz, const_float_t e, const_feedRate_t fr_mm_s, const uint8_t extruder, const float millimeters=0.0
|
||||
#if ENABLED(SCARA_FEEDRATE_SCALING)
|
||||
, const_float_t inv_duration=0.0
|
||||
#endif
|
||||
OPTARG(SCARA_FEEDRATE_SCALING, const_float_t inv_duration=0.0)
|
||||
);
|
||||
|
||||
FORCE_INLINE static bool buffer_line(const xyze_pos_t &cart, const_feedRate_t fr_mm_s, const uint8_t extruder, const float millimeters=0.0
|
||||
#if ENABLED(SCARA_FEEDRATE_SCALING)
|
||||
, const_float_t inv_duration=0.0
|
||||
#endif
|
||||
OPTARG(SCARA_FEEDRATE_SCALING, const_float_t inv_duration=0.0)
|
||||
) {
|
||||
return buffer_line(cart.x, cart.y, cart.z, cart.e, fr_mm_s, extruder, millimeters
|
||||
#if ENABLED(SCARA_FEEDRATE_SCALING)
|
||||
, inv_duration
|
||||
#endif
|
||||
OPTARG(SCARA_FEEDRATE_SCALING, inv_duration)
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -3335,11 +3335,8 @@ void Temperature::isr() {
|
||||
* Extruder: " T0:nnn.nn /nnn.nn"
|
||||
* With ADC: " T0:nnn.nn /nnn.nn (nnn.nn)"
|
||||
*/
|
||||
static void print_heater_state(const_celsius_float_t c, const_celsius_float_t t
|
||||
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
||||
, const float r
|
||||
#endif
|
||||
, const heater_id_t e=INDEX_NONE
|
||||
static void print_heater_state(const heater_id_t e, const_celsius_float_t c, const_celsius_float_t t
|
||||
OPTARG(SHOW_TEMP_ADC_VALUES, const float r)
|
||||
) {
|
||||
char k;
|
||||
switch (e) {
|
||||
@@ -3385,64 +3382,28 @@ void Temperature::isr() {
|
||||
}
|
||||
|
||||
void Temperature::print_heater_states(const uint8_t target_extruder
|
||||
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
|
||||
, const bool include_r/*=false*/
|
||||
#endif
|
||||
OPTARG(TEMP_SENSOR_1_AS_REDUNDANT, const bool include_r/*=false*/)
|
||||
) {
|
||||
#if HAS_TEMP_HOTEND
|
||||
print_heater_state(degHotend(target_extruder), degTargetHotend(target_extruder)
|
||||
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
||||
, rawHotendTemp(target_extruder)
|
||||
#endif
|
||||
);
|
||||
print_heater_state(H_NONE, degHotend(target_extruder), degTargetHotend(target_extruder) OPTARG(SHOW_TEMP_ADC_VALUES, rawHotendTemp(target_extruder)));
|
||||
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
|
||||
if (include_r) print_heater_state(degHotendRedundant(), degTargetHotend(0)
|
||||
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
||||
, rawHotendTempRedundant()
|
||||
#endif
|
||||
, H_REDUNDANT
|
||||
);
|
||||
if (include_r) print_heater_state(H_REDUNDANT, degHotendRedundant(), degTargetHotend(0) OPTARG(SHOW_TEMP_ADC_VALUES, rawHotendTempRedundant()));
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
print_heater_state(degBed(), degTargetBed()
|
||||
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
||||
, rawBedTemp()
|
||||
#endif
|
||||
, H_BED
|
||||
);
|
||||
print_heater_state(H_BED, degBed(), degTargetBed() OPTARG(SHOW_TEMP_ADC_VALUES, rawBedTemp()));
|
||||
#endif
|
||||
#if HAS_TEMP_CHAMBER
|
||||
print_heater_state(degChamber(), TERN0(HAS_HEATED_CHAMBER, degTargetChamber())
|
||||
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
||||
, rawChamberTemp()
|
||||
#endif
|
||||
, H_CHAMBER
|
||||
);
|
||||
#endif // HAS_TEMP_CHAMBER
|
||||
print_heater_state(H_CHAMBER, degChamber(), TERN0(HAS_HEATED_CHAMBER, degTargetChamber()) OPTARG(SHOW_TEMP_ADC_VALUES, rawChamberTemp()));
|
||||
#endif
|
||||
#if HAS_TEMP_COOLER
|
||||
print_heater_state(degCooler(), TERN0(HAS_COOLER, degTargetCooler())
|
||||
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
||||
, rawCoolerTemp()
|
||||
#endif
|
||||
, H_COOLER
|
||||
);
|
||||
#endif // HAS_TEMP_COOLER
|
||||
print_heater_state(H_COOLER, degCooler(), TERN0(HAS_COOLER, degTargetCooler()) OPTARG(SHOW_TEMP_ADC_VALUES, rawCoolerTemp()));
|
||||
#endif
|
||||
#if HAS_TEMP_PROBE
|
||||
print_heater_state(degProbe(), 0
|
||||
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
||||
, rawProbeTemp()
|
||||
#endif
|
||||
, H_PROBE
|
||||
);
|
||||
print_heater_state(H_PROBE, degProbe(), 0 OPTARG(SHOW_TEMP_ADC_VALUES, rawProbeTemp()) );
|
||||
#endif
|
||||
#if HAS_MULTI_HOTEND
|
||||
HOTEND_LOOP() print_heater_state(degHotend(e), degTargetHotend(e)
|
||||
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
||||
, rawHotendTemp(e)
|
||||
#endif
|
||||
, (heater_id_t)e
|
||||
);
|
||||
HOTEND_LOOP() print_heater_state((heater_id_t)e, degHotend(e), degTargetHotend(e) OPTARG(SHOW_TEMP_ADC_VALUES, rawHotendTemp(e)));
|
||||
#endif
|
||||
SERIAL_ECHOPAIR(" @:", getHeaterPower((heater_id_t)target_extruder));
|
||||
#if HAS_HEATED_BED
|
||||
@@ -3465,10 +3426,7 @@ void Temperature::isr() {
|
||||
|
||||
#if ENABLED(AUTO_REPORT_TEMPERATURES)
|
||||
AutoReporter<Temperature::AutoReportTemp> Temperature::auto_reporter;
|
||||
void Temperature::AutoReportTemp::report() {
|
||||
print_heater_states(active_extruder);
|
||||
SERIAL_EOL();
|
||||
}
|
||||
void Temperature::AutoReportTemp::report() { print_heater_states(active_extruder); SERIAL_EOL(); }
|
||||
#endif
|
||||
|
||||
#if HAS_HOTEND && HAS_STATUS_MESSAGE
|
||||
@@ -3495,11 +3453,8 @@ void Temperature::isr() {
|
||||
#endif
|
||||
|
||||
bool Temperature::wait_for_hotend(const uint8_t target_extruder, const bool no_wait_for_cooling/*=true*/
|
||||
#if G26_CLICK_CAN_CANCEL
|
||||
, const bool click_to_cancel/*=false*/
|
||||
#endif
|
||||
OPTARG(G26_CLICK_CAN_CANCEL, const bool click_to_cancel/*=false*/)
|
||||
) {
|
||||
|
||||
#if ENABLED(AUTOTEMP)
|
||||
REMEMBER(1, planner.autotemp_enabled, false);
|
||||
#endif
|
||||
@@ -3638,9 +3593,7 @@ void Temperature::isr() {
|
||||
#endif
|
||||
|
||||
bool Temperature::wait_for_bed(const bool no_wait_for_cooling/*=true*/
|
||||
#if G26_CLICK_CAN_CANCEL
|
||||
, const bool click_to_cancel/*=false*/
|
||||
#endif
|
||||
OPTARG(G26_CLICK_CAN_CANCEL, const bool click_to_cancel/*=false*/)
|
||||
) {
|
||||
#if TEMP_BED_RESIDENCY_TIME > 0
|
||||
millis_t residency_start_ms = 0;
|
||||
|
@@ -46,7 +46,7 @@
|
||||
|
||||
// Element identifiers. Positive values are hotends. Negative values are other heaters or coolers.
|
||||
typedef enum : int8_t {
|
||||
INDEX_NONE = -6,
|
||||
H_NONE = -6,
|
||||
H_COOLER, H_PROBE, H_REDUNDANT, H_CHAMBER, H_BED,
|
||||
H_E0, H_E1, H_E2, H_E3, H_E4, H_E5, H_E6, H_E7
|
||||
} heater_id_t;
|
||||
@@ -395,21 +395,21 @@ class Temperature {
|
||||
} heater_idle_t;
|
||||
|
||||
// Indices and size for the heater_idle array
|
||||
#define _ENUM_FOR_E(N) IDLE_INDEX_E##N,
|
||||
enum IdleIndex : uint8_t {
|
||||
REPEAT(HOTENDS, _ENUM_FOR_E)
|
||||
#if ENABLED(HAS_HEATED_BED)
|
||||
IDLE_INDEX_BED,
|
||||
#endif
|
||||
NR_HEATER_IDLE
|
||||
enum IdleIndex : int8_t {
|
||||
_II = -1
|
||||
|
||||
#define _IDLE_INDEX_E(N) ,IDLE_INDEX_E##N
|
||||
REPEAT(HOTENDS, _IDLE_INDEX_E)
|
||||
#undef _IDLE_INDEX_E
|
||||
|
||||
OPTARG(HAS_HEATED_BED, IDLE_INDEX_BED)
|
||||
|
||||
, NR_HEATER_IDLE
|
||||
};
|
||||
#undef _ENUM_FOR_E
|
||||
|
||||
// Convert the given heater_id_t to idle array index
|
||||
static inline IdleIndex idle_index_for_id(const int8_t heater_id) {
|
||||
#if HAS_HEATED_BED
|
||||
if (heater_id == H_BED) return IDLE_INDEX_BED;
|
||||
#endif
|
||||
TERN_(HAS_HEATED_BED, if (heater_id == H_BED) return IDLE_INDEX_BED);
|
||||
return (IdleIndex)_MAX(heater_id, 0);
|
||||
}
|
||||
|
||||
@@ -672,9 +672,7 @@ class Temperature {
|
||||
|
||||
#if HAS_TEMP_HOTEND
|
||||
static bool wait_for_hotend(const uint8_t target_extruder, const bool no_wait_for_cooling=true
|
||||
#if G26_CLICK_CAN_CANCEL
|
||||
, const bool click_to_cancel=false
|
||||
#endif
|
||||
OPTARG(G26_CLICK_CAN_CANCEL, const bool click_to_cancel=false)
|
||||
);
|
||||
|
||||
#if ENABLED(WAIT_FOR_HOTEND)
|
||||
@@ -721,9 +719,7 @@ class Temperature {
|
||||
}
|
||||
|
||||
static bool wait_for_bed(const bool no_wait_for_cooling=true
|
||||
#if G26_CLICK_CAN_CANCEL
|
||||
, const bool click_to_cancel=false
|
||||
#endif
|
||||
OPTARG(G26_CLICK_CAN_CANCEL, const bool click_to_cancel=false)
|
||||
);
|
||||
|
||||
static void wait_for_bed_heating();
|
||||
@@ -859,9 +855,7 @@ class Temperature {
|
||||
|
||||
#if HAS_TEMP_SENSOR
|
||||
static void print_heater_states(const uint8_t target_extruder
|
||||
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
|
||||
, const bool include_r=false
|
||||
#endif
|
||||
OPTARG(TEMP_SENSOR_1_AS_REDUNDANT, const bool include_r=false)
|
||||
);
|
||||
#if ENABLED(AUTO_REPORT_TEMPERATURES)
|
||||
struct AutoReportTemp { static void report(); };
|
||||
@@ -925,35 +919,24 @@ class Temperature {
|
||||
#if HAS_THERMAL_PROTECTION
|
||||
|
||||
// Indices and size for the tr_state_machine array. One for each protected heater.
|
||||
#define _ENUM_FOR_E(N) RUNAWAY_IND_E##N,
|
||||
enum RunawayIndex : uint8_t {
|
||||
enum RunawayIndex : int8_t {
|
||||
_RI = -1
|
||||
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
|
||||
REPEAT(HOTENDS, _ENUM_FOR_E)
|
||||
#define _RUNAWAY_IND_E(N) ,RUNAWAY_IND_E##N
|
||||
REPEAT(HOTENDS, _RUNAWAY_IND_E)
|
||||
#undef _RUNAWAY_IND_E
|
||||
#endif
|
||||
#if ENABLED(HAS_THERMALLY_PROTECTED_BED)
|
||||
RUNAWAY_IND_BED,
|
||||
#endif
|
||||
#if ENABLED(THERMAL_PROTECTION_CHAMBER)
|
||||
RUNAWAY_IND_CHAMBER,
|
||||
#endif
|
||||
#if ENABLED(THERMAL_PROTECTION_COOLER)
|
||||
RUNAWAY_IND_COOLER,
|
||||
#endif
|
||||
NR_HEATER_RUNAWAY
|
||||
OPTARG(HAS_THERMALLY_PROTECTED_BED, RUNAWAY_IND_BED)
|
||||
OPTARG(THERMAL_PROTECTION_CHAMBER, RUNAWAY_IND_CHAMBER)
|
||||
OPTARG(THERMAL_PROTECTION_COOLER, RUNAWAY_IND_COOLER)
|
||||
, NR_HEATER_RUNAWAY
|
||||
};
|
||||
#undef _ENUM_FOR_E
|
||||
|
||||
// Convert the given heater_id_t to runaway state array index
|
||||
static inline RunawayIndex runaway_index_for_id(const int8_t heater_id) {
|
||||
#if HAS_THERMALLY_PROTECTED_CHAMBER
|
||||
if (heater_id == H_CHAMBER) return RUNAWAY_IND_CHAMBER;
|
||||
#endif
|
||||
#if HAS_THERMALLY_PROTECTED_CHAMBER
|
||||
if (heater_id == H_COOLER) return RUNAWAY_IND_COOLER;
|
||||
#endif
|
||||
#if HAS_THERMALLY_PROTECTED_BED
|
||||
if (heater_id == H_BED) return RUNAWAY_IND_BED;
|
||||
#endif
|
||||
TERN_(HAS_THERMALLY_PROTECTED_CHAMBER, if (heater_id == H_CHAMBER) return RUNAWAY_IND_CHAMBER);
|
||||
TERN_(HAS_THERMALLY_PROTECTED_CHAMBER, if (heater_id == H_COOLER) return RUNAWAY_IND_COOLER);
|
||||
TERN_(HAS_THERMALLY_PROTECTED_BED, if (heater_id == H_BED) return RUNAWAY_IND_BED);
|
||||
return (RunawayIndex)_MAX(heater_id, 0);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user