|
@@ -39,6 +39,10 @@
|
39
|
39
|
|
40
|
40
|
#include "../Marlin.h"
|
41
|
41
|
|
|
42
|
+#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
|
43
|
+ #include "../feature/pause.h"
|
|
44
|
+#endif
|
|
45
|
+
|
42
|
46
|
#if ENABLED(PRINTCOUNTER) && ENABLED(LCD_INFO_MENU)
|
43
|
47
|
#include "../libs/duration_t.h"
|
44
|
48
|
#endif
|
|
@@ -183,7 +187,7 @@ uint16_t max_display_update_time = 0;
|
183
|
187
|
void lcd_control_temperature_preheat_material2_settings_menu();
|
184
|
188
|
#endif
|
185
|
189
|
|
186
|
|
- #if DISABLED(NO_VOLUMETRICS)
|
|
190
|
+ #if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE)
|
187
|
191
|
void lcd_control_filament_menu();
|
188
|
192
|
#endif
|
189
|
193
|
|
|
@@ -201,14 +205,18 @@ uint16_t max_display_update_time = 0;
|
201
|
205
|
#endif
|
202
|
206
|
|
203
|
207
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
204
|
|
- void lcd_advanced_pause_toocold_menu();
|
|
208
|
+ #if E_STEPPERS > 1 || ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
|
209
|
+ void lcd_change_filament_menu();
|
|
210
|
+ #else
|
|
211
|
+ void lcd_temp_menu_e0_filament_change();
|
|
212
|
+ #endif
|
205
|
213
|
void lcd_advanced_pause_option_menu();
|
206
|
214
|
void lcd_advanced_pause_init_message();
|
207
|
215
|
void lcd_advanced_pause_unload_message();
|
208
|
216
|
void lcd_advanced_pause_insert_message();
|
209
|
217
|
void lcd_advanced_pause_load_message();
|
210
|
218
|
void lcd_advanced_pause_heat_nozzle();
|
211
|
|
- void lcd_advanced_pause_extrude_message();
|
|
219
|
+ void lcd_advanced_pause_purge_message();
|
212
|
220
|
void lcd_advanced_pause_resume_message();
|
213
|
221
|
#endif
|
214
|
222
|
|
|
@@ -1249,61 +1257,6 @@ void kill_screen(const char* lcd_msg) {
|
1249
|
1257
|
#endif
|
1250
|
1258
|
}
|
1251
|
1259
|
|
1252
|
|
- #if ENABLED(ADVANCED_PAUSE_FEATURE)
|
1253
|
|
-
|
1254
|
|
- void lcd_enqueue_filament_change(
|
1255
|
|
- #if EXTRUDERS > 1
|
1256
|
|
- const uint8_t extruder
|
1257
|
|
- #endif
|
1258
|
|
- ) {
|
1259
|
|
-
|
1260
|
|
- #if ENABLED(PREVENT_COLD_EXTRUSION)
|
1261
|
|
- if (!DEBUGGING(DRYRUN) && thermalManager.tooColdToExtrude(active_extruder)) {
|
1262
|
|
- lcd_save_previous_screen();
|
1263
|
|
- lcd_goto_screen(lcd_advanced_pause_toocold_menu);
|
1264
|
|
- return;
|
1265
|
|
- }
|
1266
|
|
- #endif
|
1267
|
|
-
|
1268
|
|
- lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT);
|
1269
|
|
-
|
1270
|
|
- #if EXTRUDERS <= 1
|
1271
|
|
- enqueue_and_echo_commands_P(PSTR("M600 B0"));
|
1272
|
|
- #else
|
1273
|
|
- char *command_M600;
|
1274
|
|
- switch (extruder) {
|
1275
|
|
- case 0: command_M600 = PSTR("M600 B0 T0"); break;
|
1276
|
|
- case 1: command_M600 = PSTR("M600 B0 T1"); break;
|
1277
|
|
- #if EXTRUDERS > 2
|
1278
|
|
- case 2: command_M600 = PSTR("M600 B0 T2"); break;
|
1279
|
|
- #if EXTRUDERS > 3
|
1280
|
|
- case 3: command_M600 = PSTR("M600 B0 T3"); break;
|
1281
|
|
- #if EXTRUDERS > 4
|
1282
|
|
- case 4: command_M600 = PSTR("M600 B0 T4"); break;
|
1283
|
|
- #endif // EXTRUDERS > 4
|
1284
|
|
- #endif // EXTRUDERS > 3
|
1285
|
|
- #endif // EXTRUDERS > 2
|
1286
|
|
- }
|
1287
|
|
- enqueue_and_echo_commands_P(command_M600);
|
1288
|
|
- #endif // EXTRUDERS > 1
|
1289
|
|
- }
|
1290
|
|
-
|
1291
|
|
- #if EXTRUDERS > 1
|
1292
|
|
- void lcd_enqueue_filament_change_e0() { lcd_enqueue_filament_change(0); }
|
1293
|
|
- void lcd_enqueue_filament_change_e1() { lcd_enqueue_filament_change(1); }
|
1294
|
|
- #if EXTRUDERS > 2
|
1295
|
|
- void lcd_enqueue_filament_change_e2() { lcd_enqueue_filament_change(2); }
|
1296
|
|
- #if EXTRUDERS > 3
|
1297
|
|
- void lcd_enqueue_filament_change_e3() { lcd_enqueue_filament_change(3); }
|
1298
|
|
- #if EXTRUDERS > 4
|
1299
|
|
- void lcd_enqueue_filament_change_e4() { lcd_enqueue_filament_change(4); }
|
1300
|
|
- #endif // EXTRUDERS > 4
|
1301
|
|
- #endif // EXTRUDERS > 3
|
1302
|
|
- #endif // EXTRUDERS > 2
|
1303
|
|
- #endif // EXTRUDERS > 1
|
1304
|
|
-
|
1305
|
|
- #endif // ADVANCED_PAUSE_FEATURE
|
1306
|
|
-
|
1307
|
1260
|
// First Fan Speed title in "Tune" and "Control>Temperature" menus
|
1308
|
1261
|
#if FAN_COUNT > 0 && HAS_FAN0
|
1309
|
1262
|
#if FAN_COUNT > 1
|
|
@@ -1445,26 +1398,13 @@ void kill_screen(const char* lcd_msg) {
|
1445
|
1398
|
// Change filament
|
1446
|
1399
|
//
|
1447
|
1400
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
1448
|
|
- #if EXTRUDERS > 1
|
1449
|
|
- if (!thermalManager.tooColdToExtrude(0))
|
1450
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E1, lcd_enqueue_filament_change_e0);
|
1451
|
|
- if (!thermalManager.tooColdToExtrude(1))
|
1452
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E2, lcd_enqueue_filament_change_e1);
|
1453
|
|
- #if EXTRUDERS > 2
|
1454
|
|
- if (!thermalManager.tooColdToExtrude(2))
|
1455
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E3, lcd_enqueue_filament_change_e2);
|
1456
|
|
- #if EXTRUDERS > 3
|
1457
|
|
- if (!thermalManager.tooColdToExtrude(3))
|
1458
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E4, lcd_enqueue_filament_change_e3);
|
1459
|
|
- #if EXTRUDERS > 4
|
1460
|
|
- if (!thermalManager.tooColdToExtrude(4))
|
1461
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E5, lcd_enqueue_filament_change_e4);
|
1462
|
|
- #endif // EXTRUDERS > 4
|
1463
|
|
- #endif // EXTRUDERS > 3
|
1464
|
|
- #endif // EXTRUDERS > 2
|
|
1401
|
+ #if E_STEPPERS == 1 && !ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
|
1402
|
+ if (!thermalManager.targetTooColdToExtrude(active_extruder))
|
|
1403
|
+ MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600 B0"));
|
|
1404
|
+ else
|
|
1405
|
+ MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_temp_menu_e0_filament_change);
|
1465
|
1406
|
#else
|
1466
|
|
- if (!thermalManager.tooColdToExtrude(active_extruder))
|
1467
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
|
|
1407
|
+ MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_change_filament_menu);
|
1468
|
1408
|
#endif
|
1469
|
1409
|
#endif
|
1470
|
1410
|
|
|
@@ -2651,7 +2591,6 @@ void kill_screen(const char* lcd_msg) {
|
2651
|
2591
|
// Set Home Offsets
|
2652
|
2592
|
//
|
2653
|
2593
|
MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets);
|
2654
|
|
- //MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0"));
|
2655
|
2594
|
#endif
|
2656
|
2595
|
|
2657
|
2596
|
//
|
|
@@ -2664,26 +2603,13 @@ void kill_screen(const char* lcd_msg) {
|
2664
|
2603
|
//
|
2665
|
2604
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
2666
|
2605
|
if (!IS_SD_FILE_OPEN) {
|
2667
|
|
- #if EXTRUDERS > 1
|
2668
|
|
- if (!thermalManager.tooColdToExtrude(0))
|
2669
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E1, lcd_enqueue_filament_change_e0);
|
2670
|
|
- if (!thermalManager.tooColdToExtrude(1))
|
2671
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E2, lcd_enqueue_filament_change_e1);
|
2672
|
|
- #if EXTRUDERS > 2
|
2673
|
|
- if (!thermalManager.tooColdToExtrude(2))
|
2674
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E3, lcd_enqueue_filament_change_e2);
|
2675
|
|
- #if EXTRUDERS > 3
|
2676
|
|
- if (!thermalManager.tooColdToExtrude(3))
|
2677
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E4, lcd_enqueue_filament_change_e3);
|
2678
|
|
- #if EXTRUDERS > 4
|
2679
|
|
- if (!thermalManager.tooColdToExtrude(4))
|
2680
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E5, lcd_enqueue_filament_change_e4);
|
2681
|
|
- #endif // EXTRUDERS > 4
|
2682
|
|
- #endif // EXTRUDERS > 3
|
2683
|
|
- #endif // EXTRUDERS > 2
|
|
2606
|
+ #if E_STEPPERS == 1 && !ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
|
2607
|
+ if (!thermalManager.targetTooColdToExtrude(active_extruder))
|
|
2608
|
+ MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600 B0"));
|
|
2609
|
+ else
|
|
2610
|
+ MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_temp_menu_e0_filament_change);
|
2684
|
2611
|
#else
|
2685
|
|
- if (!thermalManager.tooColdToExtrude(active_extruder))
|
2686
|
|
- MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
|
|
2612
|
+ MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_change_filament_menu);
|
2687
|
2613
|
#endif
|
2688
|
2614
|
}
|
2689
|
2615
|
#endif // ADVANCED_PAUSE_FEATURE
|
|
@@ -3232,14 +3158,14 @@ void kill_screen(const char* lcd_msg) {
|
3232
|
3158
|
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
3233
|
3159
|
MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu);
|
3234
|
3160
|
|
3235
|
|
- #if DISABLED(NO_VOLUMETRICS)
|
|
3161
|
+ #if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE)
|
3236
|
3162
|
MENU_ITEM(submenu, MSG_FILAMENT, lcd_control_filament_menu);
|
3237
|
3163
|
#elif ENABLED(LIN_ADVANCE)
|
3238
|
3164
|
MENU_ITEM_EDIT(float3, MSG_ADVANCE_K, &planner.extruder_advance_k, 0, 999);
|
3239
|
3165
|
#endif
|
3240
|
3166
|
|
3241
|
3167
|
#if HAS_LCD_CONTRAST
|
3242
|
|
- MENU_ITEM_EDIT_CALLBACK(int3, MSG_CONTRAST, (int16_t*) &lcd_contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX, lcd_callback_set_contrast, true);
|
|
3168
|
+ MENU_ITEM_EDIT_CALLBACK(int3, MSG_CONTRAST, &lcd_contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX, lcd_callback_set_contrast, true);
|
3243
|
3169
|
#endif
|
3244
|
3170
|
#if ENABLED(FWRETRACT)
|
3245
|
3171
|
MENU_ITEM(submenu, MSG_RETRACT, lcd_control_retract_menu);
|
|
@@ -3491,7 +3417,7 @@ void kill_screen(const char* lcd_msg) {
|
3491
|
3417
|
|
3492
|
3418
|
#if DISABLED(SLIM_LCD_MENUS)
|
3493
|
3419
|
|
3494
|
|
- void _lcd_control_temperature_preheat_settings_menu(uint8_t material) {
|
|
3420
|
+ void _lcd_control_temperature_preheat_settings_menu(const uint8_t material) {
|
3495
|
3421
|
#if HOTENDS > 4
|
3496
|
3422
|
#define MINTEMP_ALL MIN5(HEATER_0_MINTEMP, HEATER_1_MINTEMP, HEATER_2_MINTEMP, HEATER_3_MINTEMP, HEATER_4_MINTEMP)
|
3497
|
3423
|
#define MAXTEMP_ALL MAX5(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP)
|
|
@@ -3737,7 +3663,7 @@ void kill_screen(const char* lcd_msg) {
|
3737
|
3663
|
END_MENU();
|
3738
|
3664
|
}
|
3739
|
3665
|
|
3740
|
|
- #if DISABLED(NO_VOLUMETRICS)
|
|
3666
|
+ #if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE)
|
3741
|
3667
|
/**
|
3742
|
3668
|
*
|
3743
|
3669
|
* "Control" > "Filament" submenu
|
|
@@ -3751,30 +3677,76 @@ void kill_screen(const char* lcd_msg) {
|
3751
|
3677
|
MENU_ITEM_EDIT(float3, MSG_ADVANCE_K, &planner.extruder_advance_k, 0, 999);
|
3752
|
3678
|
#endif
|
3753
|
3679
|
|
3754
|
|
- MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &parser.volumetric_enabled, planner.calculate_volumetric_multipliers);
|
|
3680
|
+ #if DISABLED(NO_VOLUMETRICS)
|
|
3681
|
+ MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &parser.volumetric_enabled, planner.calculate_volumetric_multipliers);
|
|
3682
|
+
|
|
3683
|
+ if (parser.volumetric_enabled) {
|
|
3684
|
+ #if EXTRUDERS == 1
|
|
3685
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &planner.filament_size[0], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
|
3686
|
+ #else // EXTRUDERS > 1
|
|
3687
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &planner.filament_size[active_extruder], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
|
3688
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E1, &planner.filament_size[0], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
|
3689
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E2, &planner.filament_size[1], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
|
3690
|
+ #if EXTRUDERS > 2
|
|
3691
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E3, &planner.filament_size[2], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
|
3692
|
+ #if EXTRUDERS > 3
|
|
3693
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E4, &planner.filament_size[3], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
|
3694
|
+ #if EXTRUDERS > 4
|
|
3695
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E5, &planner.filament_size[4], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
|
3696
|
+ #endif // EXTRUDERS > 4
|
|
3697
|
+ #endif // EXTRUDERS > 3
|
|
3698
|
+ #endif // EXTRUDERS > 2
|
|
3699
|
+ #endif // EXTRUDERS > 1
|
|
3700
|
+ }
|
|
3701
|
+ #endif
|
|
3702
|
+
|
|
3703
|
+ #if ENABLED(ADVANCED_PAUSE_FEATURE)
|
|
3704
|
+ const float extrude_maxlength =
|
|
3705
|
+ #if ENABLED(PREVENT_LENGTHY_EXTRUDE)
|
|
3706
|
+ EXTRUDE_MAXLENGTH
|
|
3707
|
+ #else
|
|
3708
|
+ 999.0f
|
|
3709
|
+ #endif
|
|
3710
|
+ ;
|
3755
|
3711
|
|
3756
|
|
- if (parser.volumetric_enabled) {
|
3757
|
3712
|
#if EXTRUDERS == 1
|
3758
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &planner.filament_size[0], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
|
3713
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD, &filament_change_unload_length[0], 0.0, extrude_maxlength);
|
3759
|
3714
|
#else // EXTRUDERS > 1
|
3760
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &planner.filament_size[active_extruder], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
3761
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E1, &planner.filament_size[0], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
3762
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E2, &planner.filament_size[1], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
|
3715
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD, &filament_change_unload_length[active_extruder], 0.0, extrude_maxlength);
|
|
3716
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E1, &filament_change_unload_length[0], 0.0, extrude_maxlength);
|
|
3717
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E2, &filament_change_unload_length[1], 0.0, extrude_maxlength);
|
3763
|
3718
|
#if EXTRUDERS > 2
|
3764
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E3, &planner.filament_size[2], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
3765
|
|
- #if EXTRUDERS > 3
|
3766
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E4, &planner.filament_size[3], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
3767
|
|
- #if EXTRUDERS > 4
|
3768
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E5, &planner.filament_size[4], 1.5, 3.25, planner.calculate_volumetric_multipliers);
|
|
3719
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E3, &filament_change_unload_length[2], 0.0, extrude_maxlength);
|
|
3720
|
+ #if EXTRUDERS > 3
|
|
3721
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E4, &filament_change_unload_length[3], 0.0, extrude_maxlength);
|
|
3722
|
+ #if EXTRUDERS > 4
|
|
3723
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E5, &filament_change_unload_length[4], 0.0, extrude_maxlength);
|
3769
|
3724
|
#endif // EXTRUDERS > 4
|
3770
|
3725
|
#endif // EXTRUDERS > 3
|
3771
|
3726
|
#endif // EXTRUDERS > 2
|
3772
|
3727
|
#endif // EXTRUDERS > 1
|
3773
|
|
- }
|
|
3728
|
+
|
|
3729
|
+ #if EXTRUDERS == 1
|
|
3730
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD, &filament_change_load_length[0], 0.0, extrude_maxlength);
|
|
3731
|
+ #else // EXTRUDERS > 1
|
|
3732
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD, &filament_change_load_length[active_extruder], 0.0, extrude_maxlength);
|
|
3733
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E1, &filament_change_load_length[0], 0.0, extrude_maxlength);
|
|
3734
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E2, &filament_change_load_length[1], 0.0, extrude_maxlength);
|
|
3735
|
+ #if EXTRUDERS > 2
|
|
3736
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E3, &filament_change_load_length[2], 0.0, extrude_maxlength);
|
|
3737
|
+ #if EXTRUDERS > 3
|
|
3738
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E4, &filament_change_load_length[3], 0.0, extrude_maxlength);
|
|
3739
|
+ #if EXTRUDERS > 4
|
|
3740
|
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E5, &filament_change_load_length[4], 0.0, extrude_maxlength);
|
|
3741
|
+ #endif // EXTRUDERS > 4
|
|
3742
|
+ #endif // EXTRUDERS > 3
|
|
3743
|
+ #endif // EXTRUDERS > 2
|
|
3744
|
+ #endif // EXTRUDERS > 1
|
|
3745
|
+ #endif
|
3774
|
3746
|
|
3775
|
3747
|
END_MENU();
|
3776
|
3748
|
}
|
3777
|
|
- #endif // !NO_VOLUMETRICS
|
|
3749
|
+ #endif // !NO_VOLUMETRICS || ADVANCED_PAUSE_FEATURE
|
3778
|
3750
|
|
3779
|
3751
|
/**
|
3780
|
3752
|
*
|
|
@@ -4131,12 +4103,258 @@ void kill_screen(const char* lcd_msg) {
|
4131
|
4103
|
*/
|
4132
|
4104
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
4133
|
4105
|
|
|
4106
|
+ /**
|
|
4107
|
+ *
|
|
4108
|
+ * "Change Filament" > "Change/Unload/Load Filament" submenu
|
|
4109
|
+ *
|
|
4110
|
+ */
|
|
4111
|
+ static AdvancedPauseMode _change_filament_temp_mode;
|
|
4112
|
+ static int8_t _change_filament_temp_extruder;
|
|
4113
|
+
|
|
4114
|
+ static const char* _change_filament_temp_command() {
|
|
4115
|
+ switch (_change_filament_temp_mode) {
|
|
4116
|
+ case ADVANCED_PAUSE_MODE_LOAD_FILAMENT:
|
|
4117
|
+ return PSTR("M701 T%d");
|
|
4118
|
+ case ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT:
|
|
4119
|
+ return _change_filament_temp_extruder >= 0 ? PSTR("M702 T%d") : PSTR("M702 ;%d");
|
|
4120
|
+ case ADVANCED_PAUSE_MODE_PAUSE_PRINT:
|
|
4121
|
+ default:
|
|
4122
|
+ return PSTR("M600 B0 T%d");
|
|
4123
|
+ }
|
|
4124
|
+ return PSTR(MSG_FILAMENTCHANGE);
|
|
4125
|
+ }
|
|
4126
|
+
|
|
4127
|
+ void _change_filament_temp(const uint8_t index) {
|
|
4128
|
+ char cmd[11];
|
|
4129
|
+ sprintf_P(cmd, _change_filament_temp_command(), _change_filament_temp_extruder);
|
|
4130
|
+ thermalManager.setTargetHotend(index == 1 ? PREHEAT_1_TEMP_HOTEND : PREHEAT_2_TEMP_HOTEND, _change_filament_temp_extruder);
|
|
4131
|
+ lcd_enqueue_command(cmd);
|
|
4132
|
+ }
|
|
4133
|
+ void _lcd_change_filament_temp_1_menu() { _change_filament_temp(1); }
|
|
4134
|
+ void _lcd_change_filament_temp_2_menu() { _change_filament_temp(2); }
|
|
4135
|
+
|
|
4136
|
+ static const char* change_filament_header(const AdvancedPauseMode mode) {
|
|
4137
|
+ switch (mode) {
|
|
4138
|
+ case ADVANCED_PAUSE_MODE_LOAD_FILAMENT:
|
|
4139
|
+ return PSTR(MSG_FILAMENTLOAD);
|
|
4140
|
+ case ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT:
|
|
4141
|
+ return PSTR(MSG_FILAMENTUNLOAD);
|
|
4142
|
+ default: break;
|
|
4143
|
+ }
|
|
4144
|
+ return PSTR(MSG_FILAMENTCHANGE);
|
|
4145
|
+ }
|
|
4146
|
+
|
|
4147
|
+ void _lcd_temp_menu_filament_op(const AdvancedPauseMode mode, const int8_t extruder) {
|
|
4148
|
+ _change_filament_temp_mode = mode;
|
|
4149
|
+ _change_filament_temp_extruder = extruder;
|
|
4150
|
+ START_MENU();
|
|
4151
|
+ if (LCD_HEIGHT >= 4) STATIC_ITEM_P(change_filament_header(mode), true, true);
|
|
4152
|
+ MENU_BACK(MSG_FILAMENTCHANGE);
|
|
4153
|
+ MENU_ITEM(submenu, MSG_PREHEAT_1, _lcd_change_filament_temp_1_menu);
|
|
4154
|
+ MENU_ITEM(submenu, MSG_PREHEAT_2, _lcd_change_filament_temp_2_menu);
|
|
4155
|
+ END_MENU();
|
|
4156
|
+ }
|
|
4157
|
+ void lcd_temp_menu_e0_filament_change() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 0); }
|
|
4158
|
+ void lcd_temp_menu_e0_filament_load() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 0); }
|
|
4159
|
+ void lcd_temp_menu_e0_filament_unload() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 0); }
|
|
4160
|
+ #if E_STEPPERS > 1
|
|
4161
|
+ void lcd_temp_menu_e1_filament_change() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 1); }
|
|
4162
|
+ void lcd_temp_menu_e1_filament_load() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 1); }
|
|
4163
|
+ void lcd_temp_menu_e1_filament_unload() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 1); }
|
|
4164
|
+ #if ENABLED(FILAMENT_UNLOAD_ALL_EXTRUDERS)
|
|
4165
|
+ void lcd_unload_filament_all_temp_menu() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, -1); }
|
|
4166
|
+ #endif
|
|
4167
|
+ #if E_STEPPERS > 2
|
|
4168
|
+ void lcd_temp_menu_e2_filament_change() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 2); }
|
|
4169
|
+ void lcd_temp_menu_e2_filament_load() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 2); }
|
|
4170
|
+ void lcd_temp_menu_e2_filament_unload() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 2); }
|
|
4171
|
+ #if E_STEPPERS > 3
|
|
4172
|
+ void lcd_temp_menu_e3_filament_change() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 3); }
|
|
4173
|
+ void lcd_temp_menu_e3_filament_load() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 3); }
|
|
4174
|
+ void lcd_temp_menu_e3_filament_unload() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 3); }
|
|
4175
|
+ #if E_STEPPERS > 4
|
|
4176
|
+ void lcd_temp_menu_e4_filament_change() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 4); }
|
|
4177
|
+ void lcd_temp_menu_e4_filament_load() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 4); }
|
|
4178
|
+ void lcd_temp_menu_e4_filament_unload() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 4); }
|
|
4179
|
+ #endif // E_STEPPERS > 4
|
|
4180
|
+ #endif // E_STEPPERS > 3
|
|
4181
|
+ #endif // E_STEPPERS > 2
|
|
4182
|
+ #endif // E_STEPPERS > 1
|
|
4183
|
+
|
|
4184
|
+ /**
|
|
4185
|
+ *
|
|
4186
|
+ * "Change Filament" submenu
|
|
4187
|
+ *
|
|
4188
|
+ */
|
|
4189
|
+ #if E_STEPPERS > 1 || ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
|
4190
|
+ void lcd_change_filament_menu() {
|
|
4191
|
+ START_MENU();
|
|
4192
|
+ MENU_BACK(MSG_PREPARE);
|
|
4193
|
+
|
|
4194
|
+ // Change filament
|
|
4195
|
+ #if E_STEPPERS == 1
|
|
4196
|
+ PGM_P msg0 = PSTR(MSG_FILAMENTCHANGE);
|
|
4197
|
+ if (thermalManager.targetTooColdToExtrude(active_extruder))
|
|
4198
|
+ MENU_ITEM_P(submenu, msg0, lcd_temp_menu_e0_filament_change);
|
|
4199
|
+ else
|
|
4200
|
+ MENU_ITEM_P(gcode, msg0, PSTR("M600 B0"));
|
|
4201
|
+ #else
|
|
4202
|
+ PGM_P msg0 = PSTR(MSG_FILAMENTCHANGE " " MSG_E1);
|
|
4203
|
+ PGM_P msg1 = PSTR(MSG_FILAMENTCHANGE " " MSG_E2);
|
|
4204
|
+ if (thermalManager.targetTooColdToExtrude(0))
|
|
4205
|
+ MENU_ITEM_P(submenu, msg0, lcd_temp_menu_e0_filament_change);
|
|
4206
|
+ else
|
|
4207
|
+ MENU_ITEM_P(gcode, msg0, PSTR("M600 B0 T0"));
|
|
4208
|
+ if (thermalManager.targetTooColdToExtrude(1))
|
|
4209
|
+ MENU_ITEM_P(submenu, msg1, lcd_temp_menu_e1_filament_change);
|
|
4210
|
+ else
|
|
4211
|
+ MENU_ITEM_P(gcode, msg1, PSTR("M600 B0 T1"));
|
|
4212
|
+ #if E_STEPPERS > 2
|
|
4213
|
+ PGM_P msg2 = PSTR(MSG_FILAMENTCHANGE " " MSG_E3);
|
|
4214
|
+ if (thermalManager.targetTooColdToExtrude(2))
|
|
4215
|
+ MENU_ITEM_P(submenu, msg2, lcd_temp_menu_e2_filament_change);
|
|
4216
|
+ else
|
|
4217
|
+ MENU_ITEM_P(gcode, msg2, PSTR("M600 B0 T2"));
|
|
4218
|
+ #if E_STEPPERS > 3
|
|
4219
|
+ PGM_P msg3 = PSTR(MSG_FILAMENTCHANGE " " MSG_E4);
|
|
4220
|
+ if (thermalManager.targetTooColdToExtrude(3))
|
|
4221
|
+ MENU_ITEM_P(submenu, msg3, lcd_temp_menu_e3_filament_change);
|
|
4222
|
+ else
|
|
4223
|
+ MENU_ITEM_P(gcode, msg3, PSTR("M600 B0 T3"));
|
|
4224
|
+ #if E_STEPPERS > 4
|
|
4225
|
+ PGM_P msg4 = PSTR(MSG_FILAMENTCHANGE " " MSG_E5);
|
|
4226
|
+ if (thermalManager.targetTooColdToExtrude(4))
|
|
4227
|
+ MENU_ITEM_P(submenu, msg4, lcd_temp_menu_e4_filament_change);
|
|
4228
|
+ else
|
|
4229
|
+ MENU_ITEM_P(gcode, msg4, PSTR("M600 B0 T4"));
|
|
4230
|
+ #endif // E_STEPPERS > 4
|
|
4231
|
+ #endif // E_STEPPERS > 3
|
|
4232
|
+ #endif // E_STEPPERS > 2
|
|
4233
|
+ #endif // E_STEPPERS == 1
|
|
4234
|
+
|
|
4235
|
+ #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
|
4236
|
+ if (!planner.movesplanned() && !IS_SD_FILE_OPEN) {
|
|
4237
|
+ // Load filament
|
|
4238
|
+ #if E_STEPPERS == 1
|
|
4239
|
+ PGM_P msg0 = PSTR(MSG_FILAMENTLOAD);
|
|
4240
|
+ if (thermalManager.targetTooColdToExtrude(active_extruder))
|
|
4241
|
+ MENU_ITEM_P(submenu, msg0, lcd_temp_menu_e0_filament_load);
|
|
4242
|
+ else
|
|
4243
|
+ MENU_ITEM_P(gcode, msg0, PSTR("M701"));
|
|
4244
|
+ #else
|
|
4245
|
+ PGM_P msg0 = PSTR(MSG_FILAMENTLOAD " " MSG_E1);
|
|
4246
|
+ PGM_P msg1 = PSTR(MSG_FILAMENTLOAD " " MSG_E2);
|
|
4247
|
+ if (thermalManager.targetTooColdToExtrude(0))
|
|
4248
|
+ MENU_ITEM_P(submenu, msg0, lcd_temp_menu_e0_filament_load);
|
|
4249
|
+ else
|
|
4250
|
+ MENU_ITEM_P(gcode, msg0, PSTR("M701 T0"));
|
|
4251
|
+ if (thermalManager.targetTooColdToExtrude(1))
|
|
4252
|
+ MENU_ITEM_P(submenu, msg1, lcd_temp_menu_e1_filament_load);
|
|
4253
|
+ else
|
|
4254
|
+ MENU_ITEM_P(gcode, msg1, PSTR("M701 T1"));
|
|
4255
|
+ #if E_STEPPERS > 2
|
|
4256
|
+ PGM_P msg2 = PSTR(MSG_FILAMENTLOAD " " MSG_E3);
|
|
4257
|
+ if (thermalManager.targetTooColdToExtrude(2))
|
|
4258
|
+ MENU_ITEM_P(submenu, msg2, lcd_temp_menu_e2_filament_load);
|
|
4259
|
+ else
|
|
4260
|
+ MENU_ITEM_P(gcode, msg2, PSTR("M701 T2"));
|
|
4261
|
+ #if E_STEPPERS > 3
|
|
4262
|
+ PGM_P msg3 = PSTR(MSG_FILAMENTLOAD " " MSG_E4);
|
|
4263
|
+ if (thermalManager.targetTooColdToExtrude(3))
|
|
4264
|
+ MENU_ITEM_P(submenu, msg3, lcd_temp_menu_e3_filament_load);
|
|
4265
|
+ else
|
|
4266
|
+ MENU_ITEM_P(gcode, msg3, PSTR("M701 T3"));
|
|
4267
|
+ #if E_STEPPERS > 4
|
|
4268
|
+ PGM_P msg4 = PSTR(MSG_FILAMENTLOAD " " MSG_E5);
|
|
4269
|
+ if (thermalManager.targetTooColdToExtrude(4))
|
|
4270
|
+ MENU_ITEM_P(submenu, msg4, lcd_temp_menu_e4_filament_load);
|
|
4271
|
+ else
|
|
4272
|
+ MENU_ITEM_P(gcode, msg4, PSTR("M701 T4"));
|
|
4273
|
+ #endif // E_STEPPERS > 4
|
|
4274
|
+ #endif // E_STEPPERS > 3
|
|
4275
|
+ #endif // E_STEPPERS > 2
|
|
4276
|
+ #endif // E_STEPPERS == 1
|
|
4277
|
+
|
|
4278
|
+ // Unload filament
|
|
4279
|
+ #if E_STEPPERS == 1
|
|
4280
|
+ if (!thermalManager.targetTooColdToExtrude(active_extruder))
|
|
4281
|
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD, PSTR("M702"));
|
|
4282
|
+ else
|
|
4283
|
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD, lcd_temp_menu_e0_filament_unload);
|
|
4284
|
+ #else
|
|
4285
|
+ #if ENABLED(FILAMENT_UNLOAD_ALL_EXTRUDERS)
|
|
4286
|
+ if (!thermalManager.targetTooColdToExtrude(0)
|
|
4287
|
+ #if E_STEPPERS > 1
|
|
4288
|
+ && !thermalManager.targetTooColdToExtrude(1)
|
|
4289
|
+ #if E_STEPPERS > 2
|
|
4290
|
+ && !thermalManager.targetTooColdToExtrude(2)
|
|
4291
|
+ #if E_STEPPERS > 3
|
|
4292
|
+ && !thermalManager.targetTooColdToExtrude(3)
|
|
4293
|
+ #if E_STEPPERS > 4
|
|
4294
|
+ && !thermalManager.targetTooColdToExtrude(4)
|
|
4295
|
+ #endif // E_STEPPERS > 4
|
|
4296
|
+ #endif // E_STEPPERS > 3
|
|
4297
|
+ #endif // E_STEPPERS > 2
|
|
4298
|
+ #endif // E_STEPPERS > 1
|
|
4299
|
+ )
|
|
4300
|
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD_ALL, PSTR("M702"));
|
|
4301
|
+ else
|
|
4302
|
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD_ALL, lcd_unload_filament_all_temp_menu);
|
|
4303
|
+ #endif
|
|
4304
|
+ if (!thermalManager.targetTooColdToExtrude(0))
|
|
4305
|
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E1, PSTR("M702 T0"));
|
|
4306
|
+ else
|
|
4307
|
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E1, lcd_temp_menu_e0_filament_unload);
|
|
4308
|
+ if (!thermalManager.targetTooColdToExtrude(1))
|
|
4309
|
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E2, PSTR("M702 T1"));
|
|
4310
|
+ else
|
|
4311
|
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E2, lcd_temp_menu_e1_filament_unload);
|
|
4312
|
+ #if E_STEPPERS > 2
|
|
4313
|
+ if (!thermalManager.targetTooColdToExtrude(2))
|
|
4314
|
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E3, PSTR("M702 T2"));
|
|
4315
|
+ else
|
|
4316
|
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E3, lcd_temp_menu_e2_filament_unload);
|
|
4317
|
+ #if E_STEPPERS > 3
|
|
4318
|
+ if (!thermalManager.targetTooColdToExtrude(3))
|
|
4319
|
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E4, PSTR("M702 T3"));
|
|
4320
|
+ else
|
|
4321
|
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E4, lcd_temp_menu_e3_filament_unload);
|
|
4322
|
+ #if E_STEPPERS > 4
|
|
4323
|
+ if (!thermalManager.targetTooColdToExtrude(4))
|
|
4324
|
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E5, PSTR("M702 T4"));
|
|
4325
|
+ else
|
|
4326
|
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E5, lcd_temp_menu_e4_filament_unload);
|
|
4327
|
+ #endif // E_STEPPERS > 4
|
|
4328
|
+ #endif // E_STEPPERS > 3
|
|
4329
|
+ #endif // E_STEPPERS > 2
|
|
4330
|
+ #endif // E_STEPPERS == 1
|
|
4331
|
+ }
|
|
4332
|
+ #endif
|
|
4333
|
+
|
|
4334
|
+ END_MENU();
|
|
4335
|
+ }
|
|
4336
|
+ #endif
|
|
4337
|
+
|
|
4338
|
+ static AdvancedPauseMode advanced_pause_mode = ADVANCED_PAUSE_MODE_PAUSE_PRINT;
|
|
4339
|
+ static uint8_t hotend_status_extruder = 0;
|
|
4340
|
+
|
|
4341
|
+ static const char* advanced_pause_header() {
|
|
4342
|
+ switch (advanced_pause_mode) {
|
|
4343
|
+ case ADVANCED_PAUSE_MODE_LOAD_FILAMENT:
|
|
4344
|
+ return PSTR(MSG_FILAMENT_CHANGE_HEADER_LOAD);
|
|
4345
|
+ case ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT:
|
|
4346
|
+ return PSTR(MSG_FILAMENT_CHANGE_HEADER_UNLOAD);
|
|
4347
|
+ default: break;
|
|
4348
|
+ }
|
|
4349
|
+ return PSTR(MSG_FILAMENT_CHANGE_HEADER_PAUSE);
|
|
4350
|
+ }
|
|
4351
|
+
|
4134
|
4352
|
// Portions from STATIC_ITEM...
|
4135
|
4353
|
#define HOTEND_STATUS_ITEM() do { \
|
4136
|
4354
|
if (_menuLineNr == _thisItemNr) { \
|
4137
|
4355
|
if (lcdDrawUpdate) { \
|
4138
|
4356
|
lcd_implementation_drawmenu_static(_lcdLineNr, PSTR(MSG_FILAMENT_CHANGE_NOZZLE), false, true); \
|
4139
|
|
- lcd_implementation_hotend_status(_lcdLineNr); \
|
|
4357
|
+ lcd_implementation_hotend_status(_lcdLineNr, hotend_status_extruder); \
|
4140
|
4358
|
} \
|
4141
|
4359
|
if (_skipStatic && encoderLine <= _thisItemNr) { \
|
4142
|
4360
|
encoderPosition += ENCODER_STEPS_PER_MENU_ITEM; \
|
|
@@ -4147,18 +4365,6 @@ void kill_screen(const char* lcd_msg) {
|
4147
|
4365
|
++_thisItemNr; \
|
4148
|
4366
|
}while(0)
|
4149
|
4367
|
|
4150
|
|
- void lcd_advanced_pause_toocold_menu() {
|
4151
|
|
- START_MENU();
|
4152
|
|
- STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true);
|
4153
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false);
|
4154
|
|
- MENU_BACK(MSG_BACK);
|
4155
|
|
- #if LCD_HEIGHT > 4
|
4156
|
|
- STATIC_ITEM(" ");
|
4157
|
|
- #endif
|
4158
|
|
- HOTEND_STATUS_ITEM();
|
4159
|
|
- END_MENU();
|
4160
|
|
- }
|
4161
|
|
-
|
4162
|
4368
|
void lcd_advanced_pause_resume_print() {
|
4163
|
4369
|
advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_RESUME_PRINT;
|
4164
|
4370
|
}
|
|
@@ -4173,13 +4379,13 @@ void kill_screen(const char* lcd_msg) {
|
4173
|
4379
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_OPTION_HEADER, true, false);
|
4174
|
4380
|
#endif
|
4175
|
4381
|
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_advanced_pause_resume_print);
|
4176
|
|
- MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_EXTRUDE, lcd_advanced_pause_extrude_more);
|
|
4382
|
+ MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_PURGE, lcd_advanced_pause_extrude_more);
|
4177
|
4383
|
END_MENU();
|
4178
|
4384
|
}
|
4179
|
4385
|
|
4180
|
4386
|
void lcd_advanced_pause_init_message() {
|
4181
|
4387
|
START_SCREEN();
|
4182
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
4388
|
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
|
4183
|
4389
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_1);
|
4184
|
4390
|
#ifdef MSG_FILAMENT_CHANGE_INIT_2
|
4185
|
4391
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_2);
|
|
@@ -4202,7 +4408,7 @@ void kill_screen(const char* lcd_msg) {
|
4202
|
4408
|
|
4203
|
4409
|
void lcd_advanced_pause_unload_message() {
|
4204
|
4410
|
START_SCREEN();
|
4205
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
4411
|
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
|
4206
|
4412
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_1);
|
4207
|
4413
|
#ifdef MSG_FILAMENT_CHANGE_UNLOAD_2
|
4208
|
4414
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_2);
|
|
@@ -4225,7 +4431,7 @@ void kill_screen(const char* lcd_msg) {
|
4225
|
4431
|
|
4226
|
4432
|
void lcd_advanced_pause_wait_for_nozzles_to_heat() {
|
4227
|
4433
|
START_SCREEN();
|
4228
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
4434
|
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
|
4229
|
4435
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1);
|
4230
|
4436
|
#ifdef MSG_FILAMENT_CHANGE_HEATING_2
|
4231
|
4437
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_2);
|
|
@@ -4242,7 +4448,7 @@ void kill_screen(const char* lcd_msg) {
|
4242
|
4448
|
|
4243
|
4449
|
void lcd_advanced_pause_heat_nozzle() {
|
4244
|
4450
|
START_SCREEN();
|
4245
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
4451
|
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
|
4246
|
4452
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1);
|
4247
|
4453
|
#ifdef MSG_FILAMENT_CHANGE_INSERT_2
|
4248
|
4454
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_2);
|
|
@@ -4259,7 +4465,7 @@ void kill_screen(const char* lcd_msg) {
|
4259
|
4465
|
|
4260
|
4466
|
void lcd_advanced_pause_insert_message() {
|
4261
|
4467
|
START_SCREEN();
|
4262
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
4468
|
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
|
4263
|
4469
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_1);
|
4264
|
4470
|
#ifdef MSG_FILAMENT_CHANGE_INSERT_2
|
4265
|
4471
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_2);
|
|
@@ -4282,7 +4488,7 @@ void kill_screen(const char* lcd_msg) {
|
4282
|
4488
|
|
4283
|
4489
|
void lcd_advanced_pause_load_message() {
|
4284
|
4490
|
START_SCREEN();
|
4285
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
4491
|
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
|
4286
|
4492
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_1);
|
4287
|
4493
|
#ifdef MSG_FILAMENT_CHANGE_LOAD_2
|
4288
|
4494
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_2);
|
|
@@ -4303,18 +4509,18 @@ void kill_screen(const char* lcd_msg) {
|
4303
|
4509
|
END_SCREEN();
|
4304
|
4510
|
}
|
4305
|
4511
|
|
4306
|
|
- void lcd_advanced_pause_extrude_message() {
|
|
4512
|
+ void lcd_advanced_pause_purge_message() {
|
4307
|
4513
|
START_SCREEN();
|
4308
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
4309
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_1);
|
4310
|
|
- #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_2
|
4311
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_2);
|
|
4514
|
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
|
|
4515
|
+ STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_1);
|
|
4516
|
+ #ifdef MSG_FILAMENT_CHANGE_PURGE_2
|
|
4517
|
+ STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_2);
|
4312
|
4518
|
#define __FC_LINES_G 3
|
4313
|
4519
|
#else
|
4314
|
4520
|
#define __FC_LINES_G 2
|
4315
|
4521
|
#endif
|
4316
|
|
- #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_3
|
4317
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_3);
|
|
4522
|
+ #ifdef MSG_FILAMENT_CHANGE_PURGE_3
|
|
4523
|
+ STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_3);
|
4318
|
4524
|
#define _FC_LINES_G (__FC_LINES_G + 1)
|
4319
|
4525
|
#else
|
4320
|
4526
|
#define _FC_LINES_G __FC_LINES_G
|
|
@@ -4328,7 +4534,7 @@ void kill_screen(const char* lcd_msg) {
|
4328
|
4534
|
|
4329
|
4535
|
void lcd_advanced_pause_resume_message() {
|
4330
|
4536
|
START_SCREEN();
|
4331
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
4537
|
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
|
4332
|
4538
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_1);
|
4333
|
4539
|
#ifdef MSG_FILAMENT_CHANGE_RESUME_2
|
4334
|
4540
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_2);
|
|
@@ -4339,49 +4545,38 @@ void kill_screen(const char* lcd_msg) {
|
4339
|
4545
|
END_SCREEN();
|
4340
|
4546
|
}
|
4341
|
4547
|
|
4342
|
|
- void lcd_advanced_pause_show_message(const AdvancedPauseMessage message) {
|
|
4548
|
+ FORCE_INLINE screenFunc_t ap_message_screen(const AdvancedPauseMessage message) {
|
4343
|
4549
|
switch (message) {
|
4344
|
|
- case ADVANCED_PAUSE_MESSAGE_INIT:
|
4345
|
|
- defer_return_to_status = true;
|
4346
|
|
- lcd_goto_screen(lcd_advanced_pause_init_message);
|
4347
|
|
- break;
|
4348
|
|
- case ADVANCED_PAUSE_MESSAGE_UNLOAD:
|
4349
|
|
- defer_return_to_status = true;
|
4350
|
|
- lcd_goto_screen(lcd_advanced_pause_unload_message);
|
4351
|
|
- break;
|
4352
|
|
- case ADVANCED_PAUSE_MESSAGE_INSERT:
|
4353
|
|
- defer_return_to_status = true;
|
4354
|
|
- lcd_goto_screen(lcd_advanced_pause_insert_message);
|
4355
|
|
- break;
|
4356
|
|
- case ADVANCED_PAUSE_MESSAGE_LOAD:
|
4357
|
|
- defer_return_to_status = true;
|
4358
|
|
- lcd_goto_screen(lcd_advanced_pause_load_message);
|
4359
|
|
- break;
|
4360
|
|
- case ADVANCED_PAUSE_MESSAGE_EXTRUDE:
|
4361
|
|
- defer_return_to_status = true;
|
4362
|
|
- lcd_goto_screen(lcd_advanced_pause_extrude_message);
|
4363
|
|
- break;
|
4364
|
|
- case ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE:
|
4365
|
|
- defer_return_to_status = true;
|
4366
|
|
- lcd_goto_screen(lcd_advanced_pause_heat_nozzle);
|
4367
|
|
- break;
|
4368
|
|
- case ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT:
|
4369
|
|
- defer_return_to_status = true;
|
4370
|
|
- lcd_goto_screen(lcd_advanced_pause_wait_for_nozzles_to_heat);
|
4371
|
|
- break;
|
4372
|
|
- case ADVANCED_PAUSE_MESSAGE_OPTION:
|
4373
|
|
- defer_return_to_status = true;
|
4374
|
|
- advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
|
4375
|
|
- lcd_goto_screen(lcd_advanced_pause_option_menu);
|
4376
|
|
- break;
|
4377
|
|
- case ADVANCED_PAUSE_MESSAGE_RESUME:
|
4378
|
|
- defer_return_to_status = true;
|
4379
|
|
- lcd_goto_screen(lcd_advanced_pause_resume_message);
|
4380
|
|
- break;
|
|
4550
|
+ case ADVANCED_PAUSE_MESSAGE_INIT: return lcd_advanced_pause_init_message;
|
|
4551
|
+ case ADVANCED_PAUSE_MESSAGE_UNLOAD: return lcd_advanced_pause_unload_message;
|
|
4552
|
+ case ADVANCED_PAUSE_MESSAGE_INSERT: return lcd_advanced_pause_insert_message;
|
|
4553
|
+ case ADVANCED_PAUSE_MESSAGE_LOAD: return lcd_advanced_pause_load_message;
|
|
4554
|
+ case ADVANCED_PAUSE_MESSAGE_PURGE: return lcd_advanced_pause_purge_message;
|
|
4555
|
+ case ADVANCED_PAUSE_MESSAGE_RESUME: return lcd_advanced_pause_resume_message;
|
|
4556
|
+ case ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE: return lcd_advanced_pause_heat_nozzle;
|
|
4557
|
+ case ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT: return lcd_advanced_pause_wait_for_nozzles_to_heat;
|
|
4558
|
+ case ADVANCED_PAUSE_MESSAGE_OPTION: advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
|
|
4559
|
+ return lcd_advanced_pause_option_menu;
|
4381
|
4560
|
case ADVANCED_PAUSE_MESSAGE_STATUS:
|
4382
|
|
- lcd_return_to_status();
|
4383
|
|
- break;
|
|
4561
|
+ default: break;
|
4384
|
4562
|
}
|
|
4563
|
+ return NULL;
|
|
4564
|
+ }
|
|
4565
|
+
|
|
4566
|
+ void lcd_advanced_pause_show_message(
|
|
4567
|
+ const AdvancedPauseMessage message,
|
|
4568
|
+ const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_PAUSE_PRINT*/,
|
|
4569
|
+ const uint8_t extruder/*=active_extruder*/
|
|
4570
|
+ ) {
|
|
4571
|
+ advanced_pause_mode = mode;
|
|
4572
|
+ hotend_status_extruder = extruder;
|
|
4573
|
+ const screenFunc_t next_screen = ap_message_screen(message);
|
|
4574
|
+ if (next_screen) {
|
|
4575
|
+ defer_return_to_status = true;
|
|
4576
|
+ lcd_goto_screen(next_screen);
|
|
4577
|
+ }
|
|
4578
|
+ else
|
|
4579
|
+ lcd_return_to_status();
|
4385
|
4580
|
}
|
4386
|
4581
|
|
4387
|
4582
|
#endif // ADVANCED_PAUSE_FEATURE
|
|
@@ -4742,7 +4937,7 @@ void lcd_update() {
|
4742
|
4937
|
if (UBL_CONDITION && LCD_CLICKED) {
|
4743
|
4938
|
if (!wait_for_unclick) { // If not waiting for a debounce release:
|
4744
|
4939
|
wait_for_unclick = true; // Set debounce flag to ignore continous clicks
|
4745
|
|
- lcd_clicked = !wait_for_user && !no_reentry; // Flag the click if allowed
|
|
4940
|
+ lcd_clicked = !wait_for_user && !no_reentry; // Keep the click if not waiting for a user-click
|
4746
|
4941
|
wait_for_user = false; // Any click clears wait for user
|
4747
|
4942
|
lcd_quick_feedback(); // Always make a click sound
|
4748
|
4943
|
}
|