Skip to content

Commit a80a303

Browse files
committed
πŸ§‘β€πŸ’» EXTRUDER_LOOP macro
1 parent 8ba6e8a commit a80a303

15 files changed

Lines changed: 62 additions & 61 deletions

File tree

β€ŽMarlin/src/feature/fwretract.cppβ€Ž

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ void FWRetract::reset() {
7373
settings.swap_retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE_SWAP;
7474
current_hop = 0.0;
7575

76-
LOOP_L_N(i, EXTRUDERS) {
77-
retracted[i] = false;
78-
E_TERN_(retracted_swap[i] = false);
79-
current_retract[i] = 0.0;
76+
EXTRUDER_LOOP() {
77+
retracted[e] = false;
78+
E_TERN_(retracted_swap[e] = false);
79+
current_retract[e] = 0.0;
8080
}
8181
}
8282

@@ -111,10 +111,10 @@ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/))
111111
" swapping ", swapping,
112112
" active extruder ", active_extruder
113113
);
114-
LOOP_L_N(i, EXTRUDERS) {
115-
SERIAL_ECHOLNPGM("retracted[", i, "] ", AS_DIGIT(retracted[i]));
114+
EXTRUDER_LOOP() {
115+
SERIAL_ECHOLNPGM("retracted[", e, "] ", AS_DIGIT(retracted[e]));
116116
#if HAS_MULTI_EXTRUDER
117-
SERIAL_ECHOLNPGM("retracted_swap[", i, "] ", AS_DIGIT(retracted_swap[i]));
117+
SERIAL_ECHOLNPGM("retracted_swap[", e, "] ", AS_DIGIT(retracted_swap[e]));
118118
#endif
119119
}
120120
SERIAL_ECHOLNPGM("current_position.z ", current_position.z);
@@ -184,10 +184,10 @@ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/))
184184
SERIAL_ECHOLNPGM("retracting ", AS_DIGIT(retracting));
185185
SERIAL_ECHOLNPGM("swapping ", AS_DIGIT(swapping));
186186
SERIAL_ECHOLNPGM("active_extruder ", active_extruder);
187-
LOOP_L_N(i, EXTRUDERS) {
188-
SERIAL_ECHOLNPGM("retracted[", i, "] ", AS_DIGIT(retracted[i]));
187+
EXTRUDER_LOOP() {
188+
SERIAL_ECHOLNPGM("retracted[", e, "] ", AS_DIGIT(retracted[e]));
189189
#if HAS_MULTI_EXTRUDER
190-
SERIAL_ECHOLNPGM("retracted_swap[", i, "] ", AS_DIGIT(retracted_swap[i]));
190+
SERIAL_ECHOLNPGM("retracted_swap[", e, "] ", AS_DIGIT(retracted_swap[e]));
191191
#endif
192192
}
193193
SERIAL_ECHOLNPGM("current_position.z ", current_position.z);

β€ŽMarlin/src/feature/fwretract.hβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class FWRetract {
6464
static void reset();
6565

6666
static void refresh_autoretract() {
67-
LOOP_L_N(i, EXTRUDERS) retracted[i] = false;
67+
EXTRUDER_LOOP() retracted[e] = false;
6868
}
6969

7070
static void enable_autoretract(const bool enable) {

β€ŽMarlin/src/feature/powerloss.cppβ€Ž

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ void PrintJobRecovery::save(const bool force/*=false*/, const float zraise/*=POW
196196
#if DISABLED(NO_VOLUMETRICS)
197197
info.flag.volumetric_enabled = parser.volumetric_enabled;
198198
#if HAS_MULTI_EXTRUDER
199-
for (int8_t e = 0; e < EXTRUDERS; e++) info.filament_size[e] = planner.filament_size[e];
199+
EXTRUDER_LOOP() info.filament_size[e] = planner.filament_size[e];
200200
#else
201201
if (parser.volumetric_enabled) info.filament_size[0] = planner.filament_size[active_extruder];
202202
#endif
@@ -461,7 +461,7 @@ void PrintJobRecovery::resume() {
461461
// Recover volumetric extrusion state
462462
#if DISABLED(NO_VOLUMETRICS)
463463
#if HAS_MULTI_EXTRUDER
464-
for (int8_t e = 0; e < EXTRUDERS; e++) {
464+
EXTRUDER_LOOP() {
465465
sprintf_P(cmd, PSTR("M200T%iD%s"), e, dtostrf(info.filament_size[e], 1, 3, str_1));
466466
gcode.process_subcommands_now(cmd);
467467
}
@@ -511,7 +511,7 @@ void PrintJobRecovery::resume() {
511511

512512
// Restore retract and hop state from an active `G10` command
513513
#if ENABLED(FWRETRACT)
514-
LOOP_L_N(e, EXTRUDERS) {
514+
EXTRUDER_LOOP() {
515515
if (info.retract[e] != 0.0) {
516516
fwretract.current_retract[e] = info.retract[e];
517517
fwretract.retracted[e] = true;
@@ -634,7 +634,7 @@ void PrintJobRecovery::resume() {
634634

635635
#if DISABLED(NO_VOLUMETRICS)
636636
DEBUG_ECHOPGM("filament_size:");
637-
LOOP_L_N(i, EXTRUDERS) DEBUG_ECHOLNPGM(" ", info.filament_size[i]);
637+
EXTRUDER_LOOP() DEBUG_ECHOLNPGM(" ", info.filament_size[e]);
638638
DEBUG_EOL();
639639
#endif
640640

@@ -666,7 +666,7 @@ void PrintJobRecovery::resume() {
666666

667667
#if ENABLED(FWRETRACT)
668668
DEBUG_ECHOPGM("retract: ");
669-
for (int8_t e = 0; e < EXTRUDERS; e++) {
669+
EXTRUDER_LOOP() {
670670
DEBUG_ECHO(info.retract[e]);
671671
if (e < EXTRUDERS - 1) DEBUG_CHAR(',');
672672
}

β€ŽMarlin/src/gcode/config/M200-M205.cppβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,12 @@
9393
}
9494
#else
9595
SERIAL_ECHOLNPGM(" M200 S", parser.volumetric_enabled);
96-
LOOP_L_N(i, EXTRUDERS) {
96+
EXTRUDER_LOOP() {
9797
report_echo_start(forReplay);
9898
SERIAL_ECHOLNPGM(
99-
" M200 T", i, " D", LINEAR_UNIT(planner.filament_size[i])
99+
" M200 T", e, " D", LINEAR_UNIT(planner.filament_size[e])
100100
#if ENABLED(VOLUMETRIC_EXTRUDER_LIMIT)
101-
, " L", LINEAR_UNIT(planner.volumetric_extruder_limit[i])
101+
, " L", LINEAR_UNIT(planner.volumetric_extruder_limit[e])
102102
#endif
103103
);
104104
}

β€ŽMarlin/src/gcode/control/M17_M18_M84.cppβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ void do_enable(const axis_flags_t to_enable) {
7777
}
7878
}
7979
#if HAS_EXTRUDERS
80-
LOOP_L_N(e, EXTRUDERS) {
80+
EXTRUDER_LOOP() {
8181
const uint8_t a = INDEX_OF_AXIS(E_AXIS, e);
8282
if (TEST(shall_enable, a)) {
8383
stepper.ENABLE_EXTRUDER(e);
@@ -161,7 +161,7 @@ void try_to_disable(const axis_flags_t to_disable) {
161161
DEBUG_ECHOLNPGM(" ... still_enabled=", hex_word(still_enabled));
162162
}
163163
#if HAS_EXTRUDERS
164-
LOOP_L_N(e, EXTRUDERS) {
164+
EXTRUDER_LOOP() {
165165
const uint8_t a = INDEX_OF_AXIS(E_AXIS, e);
166166
if (TEST(to_disable.bits, a)) {
167167
DEBUG_ECHOPGM("Try to disable E", AS_DIGIT(e), " (", a, ") with overlap ", hex_word(enable_overlap[a]), " ... ");
@@ -194,7 +194,7 @@ void try_to_disable(const axis_flags_t to_disable) {
194194
}
195195
}
196196
#if HAS_EXTRUDERS
197-
LOOP_L_N(e, EXTRUDERS) {
197+
EXTRUDER_LOOP() {
198198
const uint8_t a = INDEX_OF_AXIS(E_AXIS, e);
199199
if (TEST(still_enabled, a)) {
200200
SERIAL_CHAR('E', '0' + e);

β€ŽMarlin/src/gcode/feature/advance/M900.cppβ€Ž

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,10 @@ void GcodeSuite::M900() {
117117
#if EXTRUDERS < 2
118118
SERIAL_ECHOLNPGM("Advance S", new_slot, " K", kref, "(S", !new_slot, " K", lref, ")");
119119
#else
120-
LOOP_L_N(i, EXTRUDERS) {
121-
const bool slot = TEST(lin_adv_slot, i);
122-
SERIAL_ECHOLNPGM("Advance T", i, " S", slot, " K", planner.extruder_advance_K[i],
123-
"(S", !slot, " K", other_extruder_advance_K[i], ")");
120+
EXTRUDER_LOOP() {
121+
const bool slot = TEST(lin_adv_slot, e);
122+
SERIAL_ECHOLNPGM("Advance T", e, " S", slot, " K", planner.extruder_advance_K[e],
123+
"(S", !slot, " K", other_extruder_advance_K[e], ")");
124124
SERIAL_EOL();
125125
}
126126
#endif
@@ -132,9 +132,9 @@ void GcodeSuite::M900() {
132132
SERIAL_ECHOLNPGM("Advance K=", planner.extruder_advance_K[0]);
133133
#else
134134
SERIAL_ECHOPGM("Advance K");
135-
LOOP_L_N(i, EXTRUDERS) {
136-
SERIAL_CHAR(' ', '0' + i, ':');
137-
SERIAL_DECIMAL(planner.extruder_advance_K[i]);
135+
EXTRUDER_LOOP() {
136+
SERIAL_CHAR(' ', '0' + e, ':');
137+
SERIAL_DECIMAL(planner.extruder_advance_K[e]);
138138
}
139139
SERIAL_EOL();
140140
#endif
@@ -150,9 +150,9 @@ void GcodeSuite::M900_report(const bool forReplay/*=true*/) {
150150
report_echo_start(forReplay);
151151
SERIAL_ECHOLNPGM(" M900 K", planner.extruder_advance_K[0]);
152152
#else
153-
LOOP_L_N(i, EXTRUDERS) {
153+
EXTRUDER_LOOP() {
154154
report_echo_start(forReplay);
155-
SERIAL_ECHOLNPGM(" M900 T", i, " K", planner.extruder_advance_K[i]);
155+
SERIAL_ECHOLNPGM(" M900 T", e, " K", planner.extruder_advance_K[e]);
156156
}
157157
#endif
158158
}

β€ŽMarlin/src/gcode/feature/pause/M603.cppβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ void GcodeSuite::M603_report(const bool forReplay/*=true*/) {
7272
SERIAL_ECHOPGM(" M603 L", LINEAR_UNIT(fc_settings[0].load_length), " U", LINEAR_UNIT(fc_settings[0].unload_length), " ;");
7373
say_units();
7474
#else
75-
LOOP_L_N(e, EXTRUDERS) {
75+
EXTRUDER_LOOP() {
7676
report_echo_start(forReplay);
7777
SERIAL_ECHOPGM(" M603 T", e, " L", LINEAR_UNIT(fc_settings[e].load_length), " U", LINEAR_UNIT(fc_settings[e].unload_length), " ;");
7878
say_units();

β€ŽMarlin/src/inc/Conditionals_LCD.hβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,7 @@
749749
#endif
750750

751751
// Helper macros for extruder and hotend arrays
752+
#define EXTRUDER_LOOP() for (int8_t e = 0; e < EXTRUDERS; e++)
752753
#define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++)
753754
#define ARRAY_BY_EXTRUDERS(V...) ARRAY_N(EXTRUDERS, V)
754755
#define ARRAY_BY_EXTRUDERS1(v1) ARRAY_N_1(EXTRUDERS, v1)

β€ŽMarlin/src/lcd/menu/menu_advanced.cppβ€Ž

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ void menu_backlash();
109109
#if EXTRUDERS == 1
110110
EDIT_ITEM(float42_52, MSG_ADVANCE_K, &planner.extruder_advance_K[0], 0, 10);
111111
#elif HAS_MULTI_EXTRUDER
112-
LOOP_L_N(n, EXTRUDERS)
113-
EDIT_ITEM_N(float42_52, n, MSG_ADVANCE_K_E, &planner.extruder_advance_K[n], 0, 10);
112+
EXTRUDER_LOOP()
113+
EDIT_ITEM_N(float42_52, e, MSG_ADVANCE_K_E, &planner.extruder_advance_K[e], 0, 10);
114114
#endif
115115
#endif
116116

@@ -120,16 +120,16 @@ void menu_backlash();
120120
#if ENABLED(VOLUMETRIC_EXTRUDER_LIMIT)
121121
EDIT_ITEM_FAST(float42_52, MSG_VOLUMETRIC_LIMIT, &planner.volumetric_extruder_limit[active_extruder], 0.0f, 20.0f, planner.calculate_volumetric_extruder_limits);
122122
#if HAS_MULTI_EXTRUDER
123-
LOOP_L_N(n, EXTRUDERS)
124-
EDIT_ITEM_FAST_N(float42_52, n, MSG_VOLUMETRIC_LIMIT_E, &planner.volumetric_extruder_limit[n], 0.0f, 20.00f, planner.calculate_volumetric_extruder_limits);
123+
EXTRUDER_LOOP()
124+
EDIT_ITEM_FAST_N(float42_52, e, MSG_VOLUMETRIC_LIMIT_E, &planner.volumetric_extruder_limit[e], 0.0f, 20.00f, planner.calculate_volumetric_extruder_limits);
125125
#endif
126126
#endif
127127

128128
if (parser.volumetric_enabled) {
129129
EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM, &planner.filament_size[active_extruder], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
130130
#if HAS_MULTI_EXTRUDER
131-
LOOP_L_N(n, EXTRUDERS)
132-
EDIT_ITEM_FAST_N(float43, n, MSG_FILAMENT_DIAM_E, &planner.filament_size[n], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
131+
EXTRUDER_LOOP()
132+
EDIT_ITEM_FAST_N(float43, e, MSG_FILAMENT_DIAM_E, &planner.filament_size[e], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
133133
#endif
134134
}
135135
#endif
@@ -139,14 +139,14 @@ void menu_backlash();
139139

140140
EDIT_ITEM_FAST(float4, MSG_FILAMENT_UNLOAD, &fc_settings[active_extruder].unload_length, 0, extrude_maxlength);
141141
#if HAS_MULTI_EXTRUDER
142-
LOOP_L_N(n, EXTRUDERS)
143-
EDIT_ITEM_FAST_N(float4, n, MSG_FILAMENTUNLOAD_E, &fc_settings[n].unload_length, 0, extrude_maxlength);
142+
EXTRUDER_LOOP()
143+
EDIT_ITEM_FAST_N(float4, e, MSG_FILAMENTUNLOAD_E, &fc_settings[e].unload_length, 0, extrude_maxlength);
144144
#endif
145145

146146
EDIT_ITEM_FAST(float4, MSG_FILAMENT_LOAD, &fc_settings[active_extruder].load_length, 0, extrude_maxlength);
147147
#if HAS_MULTI_EXTRUDER
148-
LOOP_L_N(n, EXTRUDERS)
149-
EDIT_ITEM_FAST_N(float4, n, MSG_FILAMENTLOAD_E, &fc_settings[n].load_length, 0, extrude_maxlength);
148+
EXTRUDER_LOOP()
149+
EDIT_ITEM_FAST_N(float4, e, MSG_FILAMENTLOAD_E, &fc_settings[e].load_length, 0, extrude_maxlength);
150150
#endif
151151
#endif
152152

β€ŽMarlin/src/lcd/menu/menu_configuration.cppβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,9 @@ void menu_advanced_settings();
145145
EDIT_ITEM(uint8, MSG_TOOL_MIGRATION_END, &migration.last, 0, EXTRUDERS - 1);
146146

147147
// Migrate to a chosen extruder
148-
LOOP_L_N(s, EXTRUDERS) {
149-
if (s != active_extruder) {
150-
ACTION_ITEM_N_P(s, msg_migrate, []{
148+
EXTRUDER_LOOP() {
149+
if (e != active_extruder) {
150+
ACTION_ITEM_N_P(e, msg_migrate, []{
151151
char cmd[12];
152152
sprintf_P(cmd, PSTR("M217 T%i"), int(MenuItemBase::itemIndex));
153153
queue.inject(cmd);

0 commit comments

Comments
Β (0)