Skip to content

Commit 6d40776

Browse files
plampixthinkyhead
andauthored
🔧 CONFIGURE_FILAMENT_CHANGE - Optional M603 (MarlinFirmware#26613)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
1 parent 4a9e102 commit 6d40776

File tree

14 files changed

+42
-32
lines changed

14 files changed

+42
-32
lines changed

Marlin/Configuration.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -2054,7 +2054,7 @@
20542054
/**
20552055
* Enable detailed logging of G28, G29, M48, etc.
20562056
* Turn on with the command 'M111 S32'.
2057-
* NOTE: Requires a lot of PROGMEM!
2057+
* NOTE: Requires a lot of flash!
20582058
*/
20592059
//#define DEBUG_LEVELING_FEATURE
20602060

@@ -2343,7 +2343,7 @@
23432343
*/
23442344
//#define EEPROM_SETTINGS // Persistent storage with M500 and M501
23452345
//#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release!
2346-
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
2346+
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save flash.
23472347
#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
23482348
#if ENABLED(EEPROM_SETTINGS)
23492349
//#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.

Marlin/Configuration_adv.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -1342,7 +1342,7 @@
13421342
#define CALIBRATION_NOZZLE_TIP_HEIGHT 1.0 // mm
13431343
#define CALIBRATION_NOZZLE_OUTER_DIAMETER 2.0 // mm
13441344

1345-
// Uncomment to enable reporting (required for "G425 V", but consumes PROGMEM).
1345+
// Uncomment to enable reporting (required for "G425 V", but consumes flash).
13461346
//#define CALIBRATION_REPORTING
13471347

13481348
// The true location and dimension the cube/bolt/washer on the bed.
@@ -2929,6 +2929,7 @@
29292929

29302930
//#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
29312931
//#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
2932+
#define CONFIGURE_FILAMENT_CHANGE // Add M603 G-code and menu items. Requires ~1.3K bytes of flash.
29322933
#endif
29332934

29342935
// @section tmc_smart

Marlin/src/feature/max7219.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
#if ENABLED(MAX7219_DEBUG)
4141

42-
#define MAX7219_ERRORS // Disable to save 406 bytes of Program Memory
42+
#define MAX7219_ERRORS // Requires ~400 bytes of flash
4343

4444
#include "max7219.h"
4545

Marlin/src/feature/pause.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ static xyze_pos_t resume_position;
8989
PauseMode pause_mode = PAUSE_MODE_PAUSE_PRINT;
9090
#endif
9191

92-
fil_change_settings_t fc_settings[EXTRUDERS];
92+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
93+
fil_change_settings_t fc_settings[EXTRUDERS];
94+
#endif
9395

9496
#if HAS_MEDIA
9597
#include "../sd/cardreader.h"

Marlin/src/feature/pause.h

+14-5
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@
2626
* This may be combined with related G-codes if features are consolidated.
2727
*/
2828

29-
typedef struct {
30-
float unload_length, load_length;
31-
} fil_change_settings_t;
32-
3329
#include "../inc/MarlinConfigPre.h"
3430

3531
#if ENABLED(ADVANCED_PAUSE_FEATURE)
@@ -69,7 +65,20 @@ enum PauseMessage : char {
6965
extern PauseMode pause_mode;
7066
#endif
7167

72-
extern fil_change_settings_t fc_settings[EXTRUDERS];
68+
typedef struct FilamentChangeSettings {
69+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
70+
float load_length, unload_length;
71+
#else
72+
static constexpr float load_length = FILAMENT_CHANGE_FAST_LOAD_LENGTH,
73+
unload_length = FILAMENT_CHANGE_UNLOAD_LENGTH;
74+
#endif
75+
} fil_change_settings_t;
76+
77+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
78+
extern fil_change_settings_t fc_settings[EXTRUDERS];
79+
#else
80+
constexpr fil_change_settings_t fc_settings[EXTRUDERS];
81+
#endif
7382

7483
extern uint8_t did_pause_print;
7584

Marlin/src/gcode/feature/pause/M603.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
*
2121
*/
2222

23-
#include "../../../inc/MarlinConfig.h"
23+
#include "../../../inc/MarlinConfigPre.h"
2424

25-
#if ENABLED(ADVANCED_PAUSE_FEATURE)
25+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
2626

2727
#include "../../gcode.h"
2828
#include "../../../feature/pause.h"
@@ -80,4 +80,4 @@ void GcodeSuite::M603_report(const bool forReplay/*=true*/) {
8080
#endif
8181
}
8282

83-
#endif // ADVANCED_PAUSE_FEATURE
83+
#endif // CONFIGURE_FILAMENT_CHANGE

Marlin/src/gcode/gcode.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -948,7 +948,9 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
948948

949949
#if ENABLED(ADVANCED_PAUSE_FEATURE)
950950
case 600: M600(); break; // M600: Pause for Filament Change
951-
case 603: M603(); break; // M603: Configure Filament Change
951+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
952+
case 603: M603(); break; // M603: Configure Filament Change
953+
#endif
952954
#endif
953955

954956
#if HAS_DUPLICATION_MODE

Marlin/src/lcd/e3v2/jyersui/dwin.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -2910,7 +2910,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
29102910
break;
29112911
#endif
29122912

2913-
#if ENABLED(ADVANCED_PAUSE_FEATURE)
2913+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
29142914
case ADVANCED_LOAD:
29152915
if (draw) {
29162916
drawMenuItem(row, ICON_WriteEEPROM, F("Load Length"));
@@ -2927,7 +2927,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
29272927
else
29282928
modifyValue(fc_settings[0].unload_length, 0, EXTRUDE_MAXLENGTH, 1);
29292929
break;
2930-
#endif // ADVANCED_PAUSE_FEATURE
2930+
#endif // CONFIGURE_FILAMENT_CHANGE
29312931

29322932
#if ENABLED(PREVENT_COLD_EXTRUSION)
29332933
case ADVANCED_COLD_EXTRUDE:

Marlin/src/lcd/e3v2/proui/dwin.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -3302,7 +3302,7 @@ void drawFilSetMenu() {
33023302
#if ENABLED(PREVENT_COLD_EXTRUSION)
33033303
EDIT_ITEM(ICON_ExtrudeMinT, MSG_EXTRUDER_MIN_TEMP, onDrawPIntMenu, setExtMinT, &hmiData.extMinT);
33043304
#endif
3305-
#if ENABLED(ADVANCED_PAUSE_FEATURE)
3305+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
33063306
EDIT_ITEM(ICON_FilLoad, MSG_FILAMENT_LOAD, onDrawPFloatMenu, setFilLoad, &fc_settings[0].load_length);
33073307
EDIT_ITEM(ICON_FilUnload, MSG_FILAMENT_UNLOAD, onDrawPFloatMenu, setFilUnload, &fc_settings[0].unload_length);
33083308
#endif

Marlin/src/lcd/extui/nextion/nextion_tft.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ void NextionTFT::panelInfo(uint8_t req) {
323323
SEND_PRINT_INFO("t8", getFilamentUsed_str);
324324
break;
325325

326-
case 28: // Filament laod/unload
326+
case 28: // Filament load/unload
327327
#if ENABLED(ADVANCED_PAUSE_FEATURE)
328328
#define SEND_PAUSE_INFO(A, B) SEND_VALasTXT(A, fc_settings[getActiveTool()].B)
329329
#else

Marlin/src/lcd/menu/menu_advanced.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ void menu_backlash();
136136
}
137137
#endif
138138

139-
#if ENABLED(ADVANCED_PAUSE_FEATURE)
139+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
140140
constexpr float extrude_maxlength = TERN(PREVENT_LENGTHY_EXTRUDE, EXTRUDE_MAXLENGTH, 999);
141141

142142
EDIT_ITEM_FAST(float4, MSG_FILAMENT_UNLOAD, &fc_settings[active_extruder].unload_length, 0, extrude_maxlength);

Marlin/src/module/settings.cpp

+6-12
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
*/
3737

3838
// Change EEPROM version if the structure changes
39-
#define EEPROM_VERSION "V89"
39+
#define EEPROM_VERSION "V90"
4040
#define EEPROM_OFFSET 100
4141

4242
// Check the integrity of data offsets.
@@ -508,7 +508,7 @@ typedef struct SettingsDataStruct {
508508
//
509509
// ADVANCED_PAUSE_FEATURE
510510
//
511-
#if HAS_EXTRUDERS
511+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
512512
fil_change_settings_t fc_settings[EXTRUDERS]; // M603 T U L
513513
#endif
514514

@@ -1551,11 +1551,8 @@ void MarlinSettings::postprocess() {
15511551
//
15521552
// Advanced Pause filament load & unload lengths
15531553
//
1554-
#if HAS_EXTRUDERS
1554+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
15551555
{
1556-
#if DISABLED(ADVANCED_PAUSE_FEATURE)
1557-
const fil_change_settings_t fc_settings[EXTRUDERS] = { 0, 0 };
1558-
#endif
15591556
_FIELD_TEST(fc_settings);
15601557
EEPROM_WRITE(fc_settings);
15611558
}
@@ -2626,11 +2623,8 @@ void MarlinSettings::postprocess() {
26262623
//
26272624
// Advanced Pause filament load & unload lengths
26282625
//
2629-
#if HAS_EXTRUDERS
2626+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
26302627
{
2631-
#if DISABLED(ADVANCED_PAUSE_FEATURE)
2632-
fil_change_settings_t fc_settings[EXTRUDERS];
2633-
#endif
26342628
_FIELD_TEST(fc_settings);
26352629
EEPROM_READ(fc_settings);
26362630
}
@@ -3549,7 +3543,7 @@ void MarlinSettings::reset() {
35493543
//
35503544
// Advanced Pause filament load & unload lengths
35513545
//
3552-
#if ENABLED(ADVANCED_PAUSE_FEATURE)
3546+
#if ENABLED(CONFIGURE_FILAMENT_CHANGE)
35533547
EXTRUDER_LOOP() {
35543548
fc_settings[e].unload_length = FILAMENT_CHANGE_UNLOAD_LENGTH;
35553549
fc_settings[e].load_length = FILAMENT_CHANGE_FAST_LOAD_LENGTH;
@@ -3924,7 +3918,7 @@ void MarlinSettings::reset() {
39243918
//
39253919
// Advanced Pause filament load & unload lengths
39263920
//
3927-
TERN_(ADVANCED_PAUSE_FEATURE, gcode.M603_report(forReplay));
3921+
TERN_(CONFIGURE_FILAMENT_CHANGE, gcode.M603_report(forReplay));
39283922

39293923
//
39303924
// Tool-changing Parameters

buildroot/tests/BIGTREE_GTR_V1_0

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ opt_set E0_AUTO_FAN_PIN PC10 E1_AUTO_FAN_PIN PC11 E2_AUTO_FAN_PIN PC12 NEOPIXEL_
1818
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER BLTOUCH NEOPIXEL_LED Z_SAFE_HOMING NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE \
1919
FILAMENT_RUNOUT_SENSOR FIL_RUNOUT4_PULLUP FIL_RUNOUT8_PULLUP FILAMENT_CHANGE_RESUME_ON_INSERT PAUSE_REHEAT_FAST_RESUME \
2020
LCD_BED_TRAMMING BED_TRAMMING_USE_PROBE
21+
opt_disable CONFIGURE_FILAMENT_CHANGE
2122
exec_test $1 $2 "BigTreeTech GTR | 8 Extruders | Auto-Fan | Mixed TMC Drivers | Runout Sensors w/ distinct states" "$3"
2223

2324
restore_configs

ini/features.ini

+2-1
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,8 @@ MIXING_EXTRUDER = build_src_filter=+<src/feature/mixing.c
259259
HAS_PRUSA_MMU1 = build_src_filter=+<src/feature/mmu/mmu.cpp>
260260
HAS_PRUSA_MMU2 = build_src_filter=+<src/feature/mmu/mmu2.cpp> +<src/gcode/feature/prusa_MMU2>
261261
PASSWORD_FEATURE = build_src_filter=+<src/feature/password> +<src/gcode/feature/password>
262-
ADVANCED_PAUSE_FEATURE = build_src_filter=+<src/feature/pause.cpp> +<src/gcode/feature/pause/M600.cpp> +<src/gcode/feature/pause/M603.cpp>
262+
ADVANCED_PAUSE_FEATURE = build_src_filter=+<src/feature/pause.cpp> +<src/gcode/feature/pause/M600.cpp>
263+
CONFIGURE_FILAMENT_CHANGE = build_src_filter=+<src/gcode/feature/pause/M603.cpp>
263264
PSU_CONTROL = build_src_filter=+<src/feature/power.cpp>
264265
HAS_POWER_MONITOR = build_src_filter=+<src/feature/power_monitor.cpp> +<src/gcode/feature/power_monitor>
265266
POWER_LOSS_RECOVERY = build_src_filter=+<src/feature/powerloss.cpp> +<src/gcode/feature/powerloss>

0 commit comments

Comments
 (0)