🧑‍💻 TERF - Single line shorthand

This commit is contained in:
Scott Lahteine 2025-11-26 21:35:05 -06:00
parent c420a0b96a
commit 2700af52c8
3 changed files with 77 additions and 223 deletions

View file

@ -209,7 +209,10 @@
// "Ternary" that emits or omits the given content
#define EMIT(V...) V
#define OMIT(...)
#define TERN_(O,A) _TERN(_ENA_1(O),OMIT,EMIT)(A) // OPTION ? 'A' : '<nul>'
#define TERN_(O,A) TERF(O,EMIT)(A) // OPTION ? 'A' : '<nul>' ; Usage: TERN_(OPTION, EMITTHIS)
// Call G(...) or swallow with OMIT(...)
#define TERF(O,G) _TERN(_ENA_1(O),OMIT,G) // OPTION ? 'G' : 'OMIT' ; Usage: TERF(OPTION, CALLTHIS)(ARGS...)
// Macros to conditionally emit array items and function arguments
#define _OPTITEM(A...) A,

View file

@ -2041,33 +2041,15 @@ void Stepper::pulse_phase_isr() {
const uint32_t advance_divisor_cached = advance_divisor;
// Determine if pulses are needed
#if HAS_X_STEP
PULSE_PREP(X);
#endif
#if HAS_Y_STEP
PULSE_PREP(Y);
#endif
#if HAS_Z_STEP
PULSE_PREP(Z);
#endif
#if HAS_I_STEP
PULSE_PREP(I);
#endif
#if HAS_J_STEP
PULSE_PREP(J);
#endif
#if HAS_K_STEP
PULSE_PREP(K);
#endif
#if HAS_U_STEP
PULSE_PREP(U);
#endif
#if HAS_V_STEP
PULSE_PREP(V);
#endif
#if HAS_W_STEP
PULSE_PREP(W);
#endif
TERF(HAS_X_STEP, PULSE_PREP)(X);
TERF(HAS_Y_STEP, PULSE_PREP)(Y);
TERF(HAS_Z_STEP, PULSE_PREP)(Z);
TERF(HAS_I_STEP, PULSE_PREP)(I);
TERF(HAS_J_STEP, PULSE_PREP)(J);
TERF(HAS_K_STEP, PULSE_PREP)(K);
TERF(HAS_U_STEP, PULSE_PREP)(U);
TERF(HAS_V_STEP, PULSE_PREP)(V);
TERF(HAS_W_STEP, PULSE_PREP)(W);
#if ANY(HAS_E0_STEP, MIXING_EXTRUDER)
PULSE_PREP(E);
@ -2117,33 +2099,15 @@ void Stepper::pulse_phase_isr() {
#endif
// Pulse start
#if HAS_X_STEP
PULSE_START(X);
#endif
#if HAS_Y_STEP
PULSE_START(Y);
#endif
#if HAS_Z_STEP
PULSE_START(Z);
#endif
#if HAS_I_STEP
PULSE_START(I);
#endif
#if HAS_J_STEP
PULSE_START(J);
#endif
#if HAS_K_STEP
PULSE_START(K);
#endif
#if HAS_U_STEP
PULSE_START(U);
#endif
#if HAS_V_STEP
PULSE_START(V);
#endif
#if HAS_W_STEP
PULSE_START(W);
#endif
TERF(HAS_X_STEP, PULSE_START)(X);
TERF(HAS_Y_STEP, PULSE_START)(Y);
TERF(HAS_Z_STEP, PULSE_START)(Z);
TERF(HAS_I_STEP, PULSE_START)(I);
TERF(HAS_J_STEP, PULSE_START)(J);
TERF(HAS_K_STEP, PULSE_START)(K);
TERF(HAS_U_STEP, PULSE_START)(U);
TERF(HAS_V_STEP, PULSE_START)(V);
TERF(HAS_W_STEP, PULSE_START)(W);
#if ENABLED(MIXING_EXTRUDER)
if (step_needed.e) {
@ -2163,33 +2127,15 @@ void Stepper::pulse_phase_isr() {
#endif
// Pulse stop
#if HAS_X_STEP
PULSE_STOP(X);
#endif
#if HAS_Y_STEP
PULSE_STOP(Y);
#endif
#if HAS_Z_STEP
PULSE_STOP(Z);
#endif
#if HAS_I_STEP
PULSE_STOP(I);
#endif
#if HAS_J_STEP
PULSE_STOP(J);
#endif
#if HAS_K_STEP
PULSE_STOP(K);
#endif
#if HAS_U_STEP
PULSE_STOP(U);
#endif
#if HAS_V_STEP
PULSE_STOP(V);
#endif
#if HAS_W_STEP
PULSE_STOP(W);
#endif
TERF(HAS_X_STEP, PULSE_STOP)(X);
TERF(HAS_Y_STEP, PULSE_STOP)(Y);
TERF(HAS_Z_STEP, PULSE_STOP)(Z);
TERF(HAS_I_STEP, PULSE_STOP)(I);
TERF(HAS_J_STEP, PULSE_STOP)(J);
TERF(HAS_K_STEP, PULSE_STOP)(K);
TERF(HAS_U_STEP, PULSE_STOP)(U);
TERF(HAS_V_STEP, PULSE_STOP)(V);
TERF(HAS_W_STEP, PULSE_STOP)(W);
#if ENABLED(MIXING_EXTRUDER)
if (step_needed.e) E_STEP_WRITE(mixer.get_stepper(), !STEP_STATE_E);

View file

@ -3131,27 +3131,14 @@ void Temperature::init() {
OUT_WRITE(HEATER_0_PIN, ENABLED(HEATER_0_INVERTING));
#endif
#endif
#if HAS_HEATER_1
OUT_WRITE(HEATER_1_PIN, ENABLED(HEATER_1_INVERTING));
#endif
#if HAS_HEATER_2
OUT_WRITE(HEATER_2_PIN, ENABLED(HEATER_2_INVERTING));
#endif
#if HAS_HEATER_3
OUT_WRITE(HEATER_3_PIN, ENABLED(HEATER_3_INVERTING));
#endif
#if HAS_HEATER_4
OUT_WRITE(HEATER_4_PIN, ENABLED(HEATER_4_INVERTING));
#endif
#if HAS_HEATER_5
OUT_WRITE(HEATER_5_PIN, ENABLED(HEATER_5_INVERTING));
#endif
#if HAS_HEATER_6
OUT_WRITE(HEATER_6_PIN, ENABLED(HEATER_6_INVERTING));
#endif
#if HAS_HEATER_7
OUT_WRITE(HEATER_7_PIN, ENABLED(HEATER_7_INVERTING));
#endif
TERF(HAS_HEATER_1, OUT_WRITE)(HEATER_1_PIN, ENABLED(HEATER_1_INVERTING));
TERF(HAS_HEATER_2, OUT_WRITE)(HEATER_2_PIN, ENABLED(HEATER_2_INVERTING));
TERF(HAS_HEATER_3, OUT_WRITE)(HEATER_3_PIN, ENABLED(HEATER_3_INVERTING));
TERF(HAS_HEATER_4, OUT_WRITE)(HEATER_4_PIN, ENABLED(HEATER_4_INVERTING));
TERF(HAS_HEATER_5, OUT_WRITE)(HEATER_5_PIN, ENABLED(HEATER_5_INVERTING));
TERF(HAS_HEATER_6, OUT_WRITE)(HEATER_6_PIN, ENABLED(HEATER_6_INVERTING));
TERF(HAS_HEATER_7, OUT_WRITE)(HEATER_7_PIN, ENABLED(HEATER_7_INVERTING));
#if HAS_HEATED_BED
#if ENABLED(PELTIER_BED)
@ -3173,33 +3160,15 @@ void Temperature::init() {
OUT_WRITE(COOLER_PIN, ENABLED(COOLER_INVERTING));
#endif
#if HAS_FAN0
INIT_FAN_PIN(FAN0_PIN);
#endif
#if HAS_FAN1
INIT_FAN_PIN(FAN1_PIN);
#endif
#if HAS_FAN2
INIT_FAN_PIN(FAN2_PIN);
#endif
#if HAS_FAN3
INIT_FAN_PIN(FAN3_PIN);
#endif
#if HAS_FAN4
INIT_FAN_PIN(FAN4_PIN);
#endif
#if HAS_FAN5
INIT_FAN_PIN(FAN5_PIN);
#endif
#if HAS_FAN6
INIT_FAN_PIN(FAN6_PIN);
#endif
#if HAS_FAN7
INIT_FAN_PIN(FAN7_PIN);
#endif
#if ENABLED(USE_CONTROLLER_FAN)
INIT_FAN_PIN(CONTROLLER_FAN_PIN);
#endif
TERF(HAS_FAN0, INIT_FAN_PIN)(FAN0_PIN);
TERF(HAS_FAN1, INIT_FAN_PIN)(FAN1_PIN);
TERF(HAS_FAN2, INIT_FAN_PIN)(FAN2_PIN);
TERF(HAS_FAN3, INIT_FAN_PIN)(FAN3_PIN);
TERF(HAS_FAN4, INIT_FAN_PIN)(FAN4_PIN);
TERF(HAS_FAN5, INIT_FAN_PIN)(FAN5_PIN);
TERF(HAS_FAN6, INIT_FAN_PIN)(FAN6_PIN);
TERF(HAS_FAN7, INIT_FAN_PIN)(FAN7_PIN);
TERF(USE_CONTROLLER_FAN, INIT_FAN_PIN)(CONTROLLER_FAN_PIN);
TERN_(HAS_MAXTC_SW_SPI, max_tc_spi.init());
@ -3229,9 +3198,7 @@ void Temperature::init() {
TERN_(POWER_MONITOR_CURRENT, hal.adc_enable(POWER_MONITOR_CURRENT_PIN));
TERN_(POWER_MONITOR_VOLTAGE, hal.adc_enable(POWER_MONITOR_VOLTAGE_PIN));
#if HAS_JOY_ADC_EN
SET_INPUT_PULLUP(JOY_EN_PIN);
#endif
TERF(HAS_JOY_ADC_EN, SET_INPUT_PULLUP)(JOY_EN_PIN);
HAL_timer_start(MF_TIMER_TEMP, TEMP_TIMER_FREQUENCY);
ENABLE_TEMPERATURE_INTERRUPT();
@ -4140,18 +4107,12 @@ void Temperature::isr() {
#if HAS_HEATED_BED
_PWM_MOD(BED, soft_pwm_bed, temp_bed);
#if ENABLED(PELTIER_BED)
WRITE_PELTIER_DIR(temp_bed.peltier_dir_heating);
#endif
TERF(PELTIER_BED, WRITE_PELTIER_DIR)(temp_bed.peltier_dir_heating);
#endif
#if HAS_HEATED_CHAMBER
_PWM_MOD(CHAMBER, soft_pwm_chamber, temp_chamber);
#endif
TERF(HAS_HEATED_CHAMBER, _PWM_MOD)(CHAMBER, soft_pwm_chamber, temp_chamber);
#if HAS_COOLER
_PWM_MOD(COOLER, soft_pwm_cooler, temp_cooler);
#endif
TERF(HAS_COOLER, _PWM_MOD)(COOLER, soft_pwm_cooler, temp_cooler);
#if ENABLED(FAN_SOFT_PWM)
@ -4165,30 +4126,14 @@ void Temperature::isr() {
WRITE_FAN(N, spcf > pwm_mask ? HIGH : LOW); \
}while(0)
#if HAS_FAN0
_FAN_PWM(0);
#endif
#if HAS_FAN1
_FAN_PWM(1);
#endif
#if HAS_FAN2
_FAN_PWM(2);
#endif
#if HAS_FAN3
_FAN_PWM(3);
#endif
#if HAS_FAN4
_FAN_PWM(4);
#endif
#if HAS_FAN5
_FAN_PWM(5);
#endif
#if HAS_FAN6
_FAN_PWM(6);
#endif
#if HAS_FAN7
_FAN_PWM(7);
#endif
TERF(HAS_FAN0, _FAN_PWM)(0);
TERF(HAS_FAN1, _FAN_PWM)(1);
TERF(HAS_FAN2, _FAN_PWM)(2);
TERF(HAS_FAN3, _FAN_PWM)(3);
TERF(HAS_FAN4, _FAN_PWM)(4);
TERF(HAS_FAN5, _FAN_PWM)(5);
TERF(HAS_FAN6, _FAN_PWM)(6);
TERF(HAS_FAN7, _FAN_PWM)(7);
#endif
}
else {
@ -4198,17 +4143,9 @@ void Temperature::isr() {
REPEAT(HOTENDS, _PWM_LOW_E);
#endif
#if HAS_HEATED_BED
_PWM_LOW(BED, soft_pwm_bed);
#endif
#if HAS_HEATED_CHAMBER
_PWM_LOW(CHAMBER, soft_pwm_chamber);
#endif
#if HAS_COOLER
_PWM_LOW(COOLER, soft_pwm_cooler);
#endif
TERF(HAS_HEATED_BED, _PWM_LOW)(BED, soft_pwm_bed);
TERF(HAS_HEATED_CHAMBER, _PWM_LOW)(CHAMBER, soft_pwm_chamber);
TERF(HAS_COOLER, _PWM_LOW)(COOLER, soft_pwm_cooler);
#if ENABLED(FAN_SOFT_PWM)
#if HAS_FAN0
@ -4271,17 +4208,9 @@ void Temperature::isr() {
REPEAT(HOTENDS, _SLOW_PWM_E);
#endif
#if HAS_HEATED_BED
_SLOW_PWM(BED, soft_pwm_bed, temp_bed);
#endif
#if HAS_HEATED_CHAMBER
_SLOW_PWM(CHAMBER, soft_pwm_chamber, temp_chamber);
#endif
#if HAS_COOLER
_SLOW_PWM(COOLER, soft_pwm_cooler, temp_cooler);
#endif
TERF(HAS_HEATED_BED, _SLOW_PWM)(BED, soft_pwm_bed, temp_bed);
TERF(HAS_HEATED_CHAMBER, _SLOW_PWM)(CHAMBER, soft_pwm_chamber, temp_chamber);
TERF(HAS_COOLER, _SLOW_PWM)(COOLER, soft_pwm_cooler, temp_cooler);
} // slow_pwm_count == 0
@ -4290,17 +4219,9 @@ void Temperature::isr() {
REPEAT(HOTENDS, _PWM_OFF_E);
#endif
#if HAS_HEATED_BED
_PWM_OFF(BED, soft_pwm_bed);
#endif
#if HAS_HEATED_CHAMBER
_PWM_OFF(CHAMBER, soft_pwm_chamber);
#endif
#if HAS_COOLER
_PWM_OFF(COOLER, soft_pwm_cooler, temp_cooler);
#endif
TERF(HAS_HEATED_BED, _PWM_OFF)(BED, soft_pwm_bed);
TERF(HAS_HEATED_CHAMBER, _PWM_OFF)(CHAMBER, soft_pwm_chamber);
TERF(HAS_COOLER, _PWM_OFF)(COOLER, soft_pwm_cooler, temp_cooler);
#if ENABLED(FAN_SOFT_PWM)
if (pwm_count_tmp >= 127) {
@ -4309,30 +4230,14 @@ void Temperature::isr() {
soft_pwm_count_fan[N] = soft_pwm_amount_fan[N] >> 1; \
WRITE_FAN(N, soft_pwm_count_fan[N] > 0 ? HIGH : LOW); \
}while(0)
#if HAS_FAN0
_PWM_FAN(0);
#endif
#if HAS_FAN1
_PWM_FAN(1);
#endif
#if HAS_FAN2
_PWM_FAN(2);
#endif
#if HAS_FAN3
_FAN_PWM(3);
#endif
#if HAS_FAN4
_FAN_PWM(4);
#endif
#if HAS_FAN5
_FAN_PWM(5);
#endif
#if HAS_FAN6
_FAN_PWM(6);
#endif
#if HAS_FAN7
_FAN_PWM(7);
#endif
TERF(HAS_FAN0, _PWM_FAN)(0);
TERF(HAS_FAN1, _PWM_FAN)(1);
TERF(HAS_FAN2, _PWM_FAN)(2);
TERF(HAS_FAN3, _FAN_PWM)(3);
TERF(HAS_FAN4, _FAN_PWM)(4);
TERF(HAS_FAN5, _FAN_PWM)(5);
TERF(HAS_FAN6, _FAN_PWM)(6);
TERF(HAS_FAN7, _FAN_PWM)(7);
}
#if HAS_FAN0
if (soft_pwm_count_fan[0] <= pwm_count_tmp) WRITE_FAN(0, LOW);