|
@@ -28,7 +28,6 @@
|
28
|
28
|
|
29
|
29
|
#include "../ultralcd.h"
|
30
|
30
|
#include "../../sd/cardreader.h"
|
31
|
|
-#include "../../module/temperature.h"
|
32
|
31
|
#include "../../module/planner.h"
|
33
|
32
|
#include "../../module/motion.h"
|
34
|
33
|
#include "../../module/probe.h"
|
|
@@ -243,14 +242,6 @@ void menu_action_setting_edit_callback_bool(PGM_P pstr, bool* ptr, screenFunc_t
|
243
|
242
|
///////////////// Menu Tree ////////////////
|
244
|
243
|
////////////////////////////////////////////
|
245
|
244
|
|
246
|
|
-#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
247
|
|
- #if E_STEPPERS > 1 || ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
248
|
|
- void menu_change_filament();
|
249
|
|
- #else
|
250
|
|
- void menu_temp_e0_filament_change();
|
251
|
|
- #endif
|
252
|
|
-#endif
|
253
|
|
-
|
254
|
245
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
255
|
246
|
float lcd_z_fade_height;
|
256
|
247
|
void _lcd_set_z_fade_height() { set_z_fade_height(lcd_z_fade_height); }
|
|
@@ -910,561 +901,4 @@ void _lcd_draw_homing() {
|
910
|
901
|
|
911
|
902
|
#endif // LED_CONTROL_MENU
|
912
|
903
|
|
913
|
|
-/**
|
914
|
|
- *
|
915
|
|
- * Filament Change Feature Screens
|
916
|
|
- *
|
917
|
|
- */
|
918
|
|
-#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
919
|
|
-
|
920
|
|
- /**
|
921
|
|
- *
|
922
|
|
- * "Change Filament" > "Change/Unload/Load Filament" submenu
|
923
|
|
- *
|
924
|
|
- */
|
925
|
|
- static AdvancedPauseMode _change_filament_temp_mode; // =ADVANCED_PAUSE_MODE_PAUSE_PRINT
|
926
|
|
- static int8_t _change_filament_temp_extruder; // =0
|
927
|
|
-
|
928
|
|
- static PGM_P _change_filament_temp_command() {
|
929
|
|
- switch (_change_filament_temp_mode) {
|
930
|
|
- case ADVANCED_PAUSE_MODE_LOAD_FILAMENT:
|
931
|
|
- return PSTR("M701 T%d");
|
932
|
|
- case ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT:
|
933
|
|
- return _change_filament_temp_extruder >= 0 ? PSTR("M702 T%d") : PSTR("M702 ;%d");
|
934
|
|
- case ADVANCED_PAUSE_MODE_PAUSE_PRINT:
|
935
|
|
- default:
|
936
|
|
- return PSTR("M600 B0 T%d");
|
937
|
|
- }
|
938
|
|
- return PSTR(MSG_FILAMENTCHANGE);
|
939
|
|
- }
|
940
|
|
-
|
941
|
|
- void _change_filament_temp(const uint16_t temperature) {
|
942
|
|
- char cmd[11];
|
943
|
|
- sprintf_P(cmd, _change_filament_temp_command(), _change_filament_temp_extruder);
|
944
|
|
- thermalManager.setTargetHotend(temperature, _change_filament_temp_extruder);
|
945
|
|
- lcd_enqueue_command(cmd);
|
946
|
|
- }
|
947
|
|
- void _menu_change_filament_temp_1() { _change_filament_temp(PREHEAT_1_TEMP_HOTEND); }
|
948
|
|
- void _menu_change_filament_temp_2() { _change_filament_temp(PREHEAT_2_TEMP_HOTEND); }
|
949
|
|
- void _menu_change_filament_temp_custom() { _change_filament_temp(thermalManager.target_temperature[_change_filament_temp_extruder]); }
|
950
|
|
-
|
951
|
|
- static PGM_P change_filament_header(const AdvancedPauseMode mode) {
|
952
|
|
- switch (mode) {
|
953
|
|
- case ADVANCED_PAUSE_MODE_LOAD_FILAMENT:
|
954
|
|
- return PSTR(MSG_FILAMENTLOAD);
|
955
|
|
- case ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT:
|
956
|
|
- return PSTR(MSG_FILAMENTUNLOAD);
|
957
|
|
- default: break;
|
958
|
|
- }
|
959
|
|
- return PSTR(MSG_FILAMENTCHANGE);
|
960
|
|
- }
|
961
|
|
-
|
962
|
|
- void _menu_temp_filament_op(const AdvancedPauseMode mode, const int8_t extruder) {
|
963
|
|
- _change_filament_temp_mode = mode;
|
964
|
|
- _change_filament_temp_extruder = extruder;
|
965
|
|
- START_MENU();
|
966
|
|
- if (LCD_HEIGHT >= 4) STATIC_ITEM_P(change_filament_header(mode), true, true);
|
967
|
|
- MENU_BACK(MSG_BACK);
|
968
|
|
- MENU_ITEM(submenu, MSG_PREHEAT_1, _menu_change_filament_temp_1);
|
969
|
|
- MENU_ITEM(submenu, MSG_PREHEAT_2, _menu_change_filament_temp_2);
|
970
|
|
- uint16_t max_temp;
|
971
|
|
- switch (extruder) {
|
972
|
|
- default: max_temp = HEATER_0_MAXTEMP;
|
973
|
|
- #if HOTENDS > 1
|
974
|
|
- case 1: max_temp = HEATER_1_MAXTEMP; break;
|
975
|
|
- #if HOTENDS > 2
|
976
|
|
- case 2: max_temp = HEATER_2_MAXTEMP; break;
|
977
|
|
- #if HOTENDS > 3
|
978
|
|
- case 3: max_temp = HEATER_3_MAXTEMP; break;
|
979
|
|
- #if HOTENDS > 4
|
980
|
|
- case 4: max_temp = HEATER_4_MAXTEMP; break;
|
981
|
|
- #if HOTENDS > 5
|
982
|
|
- case 5: max_temp = HEATER_5_MAXTEMP; break;
|
983
|
|
- #endif
|
984
|
|
- #endif
|
985
|
|
- #endif
|
986
|
|
- #endif
|
987
|
|
- #endif
|
988
|
|
- }
|
989
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_PREHEAT_CUSTOM, &thermalManager.target_temperature[_change_filament_temp_extruder], EXTRUDE_MINTEMP, max_temp - 15, _menu_change_filament_temp_custom);
|
990
|
|
- END_MENU();
|
991
|
|
- }
|
992
|
|
- void menu_temp_e0_filament_change() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 0); }
|
993
|
|
- void menu_temp_e0_filament_load() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 0); }
|
994
|
|
- void menu_temp_e0_filament_unload() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 0); }
|
995
|
|
- #if E_STEPPERS > 1
|
996
|
|
- void menu_temp_e1_filament_change() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 1); }
|
997
|
|
- void menu_temp_e1_filament_load() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 1); }
|
998
|
|
- void menu_temp_e1_filament_unload() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 1); }
|
999
|
|
- #if ENABLED(FILAMENT_UNLOAD_ALL_EXTRUDERS)
|
1000
|
|
- void menu_unload_filament_all_temp() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, -1); }
|
1001
|
|
- #endif
|
1002
|
|
- #if E_STEPPERS > 2
|
1003
|
|
- void menu_temp_e2_filament_change() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 2); }
|
1004
|
|
- void menu_temp_e2_filament_load() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 2); }
|
1005
|
|
- void menu_temp_e2_filament_unload() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 2); }
|
1006
|
|
- #if E_STEPPERS > 3
|
1007
|
|
- void menu_temp_e3_filament_change() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 3); }
|
1008
|
|
- void menu_temp_e3_filament_load() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 3); }
|
1009
|
|
- void menu_temp_e3_filament_unload() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 3); }
|
1010
|
|
- #if E_STEPPERS > 4
|
1011
|
|
- void menu_temp_e4_filament_change() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 4); }
|
1012
|
|
- void menu_temp_e4_filament_load() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 4); }
|
1013
|
|
- void menu_temp_e4_filament_unload() { _menu_temp_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 4); }
|
1014
|
|
- #endif // E_STEPPERS > 4
|
1015
|
|
- #endif // E_STEPPERS > 3
|
1016
|
|
- #endif // E_STEPPERS > 2
|
1017
|
|
- #endif // E_STEPPERS > 1
|
1018
|
|
-
|
1019
|
|
- /**
|
1020
|
|
- *
|
1021
|
|
- * "Change Filament" submenu
|
1022
|
|
- *
|
1023
|
|
- */
|
1024
|
|
- #if E_STEPPERS > 1 || ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
1025
|
|
- void menu_change_filament() {
|
1026
|
|
- START_MENU();
|
1027
|
|
- MENU_BACK(MSG_MAIN);
|
1028
|
|
-
|
1029
|
|
- // Change filament
|
1030
|
|
- #if E_STEPPERS == 1
|
1031
|
|
- PGM_P msg0 = PSTR(MSG_FILAMENTCHANGE);
|
1032
|
|
- if (thermalManager.targetTooColdToExtrude(active_extruder))
|
1033
|
|
- MENU_ITEM_P(submenu, msg0, menu_temp_e0_filament_change);
|
1034
|
|
- else
|
1035
|
|
- MENU_ITEM_P(gcode, msg0, PSTR("M600 B0"));
|
1036
|
|
- #else
|
1037
|
|
- PGM_P msg0 = PSTR(MSG_FILAMENTCHANGE " " MSG_E1);
|
1038
|
|
- PGM_P msg1 = PSTR(MSG_FILAMENTCHANGE " " MSG_E2);
|
1039
|
|
- if (thermalManager.targetTooColdToExtrude(0))
|
1040
|
|
- MENU_ITEM_P(submenu, msg0, menu_temp_e0_filament_change);
|
1041
|
|
- else
|
1042
|
|
- MENU_ITEM_P(gcode, msg0, PSTR("M600 B0 T0"));
|
1043
|
|
- if (thermalManager.targetTooColdToExtrude(1))
|
1044
|
|
- MENU_ITEM_P(submenu, msg1, menu_temp_e1_filament_change);
|
1045
|
|
- else
|
1046
|
|
- MENU_ITEM_P(gcode, msg1, PSTR("M600 B0 T1"));
|
1047
|
|
- #if E_STEPPERS > 2
|
1048
|
|
- PGM_P msg2 = PSTR(MSG_FILAMENTCHANGE " " MSG_E3);
|
1049
|
|
- if (thermalManager.targetTooColdToExtrude(2))
|
1050
|
|
- MENU_ITEM_P(submenu, msg2, menu_temp_e2_filament_change);
|
1051
|
|
- else
|
1052
|
|
- MENU_ITEM_P(gcode, msg2, PSTR("M600 B0 T2"));
|
1053
|
|
- #if E_STEPPERS > 3
|
1054
|
|
- PGM_P msg3 = PSTR(MSG_FILAMENTCHANGE " " MSG_E4);
|
1055
|
|
- if (thermalManager.targetTooColdToExtrude(3))
|
1056
|
|
- MENU_ITEM_P(submenu, msg3, menu_temp_e3_filament_change);
|
1057
|
|
- else
|
1058
|
|
- MENU_ITEM_P(gcode, msg3, PSTR("M600 B0 T3"));
|
1059
|
|
- #if E_STEPPERS > 4
|
1060
|
|
- PGM_P msg4 = PSTR(MSG_FILAMENTCHANGE " " MSG_E5);
|
1061
|
|
- if (thermalManager.targetTooColdToExtrude(4))
|
1062
|
|
- MENU_ITEM_P(submenu, msg4, menu_temp_e4_filament_change);
|
1063
|
|
- else
|
1064
|
|
- MENU_ITEM_P(gcode, msg4, PSTR("M600 B0 T4"));
|
1065
|
|
- #if E_STEPPERS > 5
|
1066
|
|
- PGM_P msg5 = PSTR(MSG_FILAMENTCHANGE " " MSG_E6);
|
1067
|
|
- if (thermalManager.targetTooColdToExtrude(5))
|
1068
|
|
- MENU_ITEM_P(submenu, msg5, menu_temp_e5_filament_change);
|
1069
|
|
- else
|
1070
|
|
- MENU_ITEM_P(gcode, msg5, PSTR("M600 B0 T5"));
|
1071
|
|
- #endif // E_STEPPERS > 5
|
1072
|
|
- #endif // E_STEPPERS > 4
|
1073
|
|
- #endif // E_STEPPERS > 3
|
1074
|
|
- #endif // E_STEPPERS > 2
|
1075
|
|
- #endif // E_STEPPERS == 1
|
1076
|
|
-
|
1077
|
|
- #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
1078
|
|
- if (!printer_busy()) {
|
1079
|
|
- // Load filament
|
1080
|
|
- #if E_STEPPERS == 1
|
1081
|
|
- PGM_P msg0 = PSTR(MSG_FILAMENTLOAD);
|
1082
|
|
- if (thermalManager.targetTooColdToExtrude(active_extruder))
|
1083
|
|
- MENU_ITEM_P(submenu, msg0, menu_temp_e0_filament_load);
|
1084
|
|
- else
|
1085
|
|
- MENU_ITEM_P(gcode, msg0, PSTR("M701"));
|
1086
|
|
- #else
|
1087
|
|
- PGM_P msg0 = PSTR(MSG_FILAMENTLOAD " " MSG_E1);
|
1088
|
|
- PGM_P msg1 = PSTR(MSG_FILAMENTLOAD " " MSG_E2);
|
1089
|
|
- if (thermalManager.targetTooColdToExtrude(0))
|
1090
|
|
- MENU_ITEM_P(submenu, msg0, menu_temp_e0_filament_load);
|
1091
|
|
- else
|
1092
|
|
- MENU_ITEM_P(gcode, msg0, PSTR("M701 T0"));
|
1093
|
|
- if (thermalManager.targetTooColdToExtrude(1))
|
1094
|
|
- MENU_ITEM_P(submenu, msg1, menu_temp_e1_filament_load);
|
1095
|
|
- else
|
1096
|
|
- MENU_ITEM_P(gcode, msg1, PSTR("M701 T1"));
|
1097
|
|
- #if E_STEPPERS > 2
|
1098
|
|
- PGM_P msg2 = PSTR(MSG_FILAMENTLOAD " " MSG_E3);
|
1099
|
|
- if (thermalManager.targetTooColdToExtrude(2))
|
1100
|
|
- MENU_ITEM_P(submenu, msg2, menu_temp_e2_filament_load);
|
1101
|
|
- else
|
1102
|
|
- MENU_ITEM_P(gcode, msg2, PSTR("M701 T2"));
|
1103
|
|
- #if E_STEPPERS > 3
|
1104
|
|
- PGM_P msg3 = PSTR(MSG_FILAMENTLOAD " " MSG_E4);
|
1105
|
|
- if (thermalManager.targetTooColdToExtrude(3))
|
1106
|
|
- MENU_ITEM_P(submenu, msg3, menu_temp_e3_filament_load);
|
1107
|
|
- else
|
1108
|
|
- MENU_ITEM_P(gcode, msg3, PSTR("M701 T3"));
|
1109
|
|
- #if E_STEPPERS > 4
|
1110
|
|
- PGM_P msg4 = PSTR(MSG_FILAMENTLOAD " " MSG_E5);
|
1111
|
|
- if (thermalManager.targetTooColdToExtrude(4))
|
1112
|
|
- MENU_ITEM_P(submenu, msg4, menu_temp_e4_filament_load);
|
1113
|
|
- else
|
1114
|
|
- MENU_ITEM_P(gcode, msg4, PSTR("M701 T4"));
|
1115
|
|
- #if E_STEPPERS > 5
|
1116
|
|
- PGM_P msg5 = PSTR(MSG_FILAMENTLOAD " " MSG_E6);
|
1117
|
|
- if (thermalManager.targetTooColdToExtrude(5))
|
1118
|
|
- MENU_ITEM_P(submenu, msg5, menu_temp_e5_filament_load);
|
1119
|
|
- else
|
1120
|
|
- MENU_ITEM_P(gcode, msg5, PSTR("M701 T5"));
|
1121
|
|
- #endif // E_STEPPERS > 5
|
1122
|
|
- #endif // E_STEPPERS > 4
|
1123
|
|
- #endif // E_STEPPERS > 3
|
1124
|
|
- #endif // E_STEPPERS > 2
|
1125
|
|
- #endif // E_STEPPERS == 1
|
1126
|
|
-
|
1127
|
|
- // Unload filament
|
1128
|
|
- #if E_STEPPERS == 1
|
1129
|
|
- if (thermalManager.targetHotEnoughToExtrude(active_extruder))
|
1130
|
|
- MENU_ITEM(gcode, MSG_FILAMENTUNLOAD, PSTR("M702"));
|
1131
|
|
- else
|
1132
|
|
- MENU_ITEM(submenu, MSG_FILAMENTUNLOAD, menu_temp_e0_filament_unload);
|
1133
|
|
- #else
|
1134
|
|
- #if ENABLED(FILAMENT_UNLOAD_ALL_EXTRUDERS)
|
1135
|
|
- if (thermalManager.targetHotEnoughToExtrude(0)
|
1136
|
|
- #if E_STEPPERS > 1
|
1137
|
|
- && thermalManager.targetHotEnoughToExtrude(1)
|
1138
|
|
- #if E_STEPPERS > 2
|
1139
|
|
- && thermalManager.targetHotEnoughToExtrude(2)
|
1140
|
|
- #if E_STEPPERS > 3
|
1141
|
|
- && thermalManager.targetHotEnoughToExtrude(3)
|
1142
|
|
- #if E_STEPPERS > 4
|
1143
|
|
- && thermalManager.targetHotEnoughToExtrude(4)
|
1144
|
|
- #if E_STEPPERS > 5
|
1145
|
|
- && thermalManager.targetHotEnoughToExtrude(5)
|
1146
|
|
- #endif // E_STEPPERS > 5
|
1147
|
|
- #endif // E_STEPPERS > 4
|
1148
|
|
- #endif // E_STEPPERS > 3
|
1149
|
|
- #endif // E_STEPPERS > 2
|
1150
|
|
- #endif // E_STEPPERS > 1
|
1151
|
|
- )
|
1152
|
|
- MENU_ITEM(gcode, MSG_FILAMENTUNLOAD_ALL, PSTR("M702"));
|
1153
|
|
- else
|
1154
|
|
- MENU_ITEM(submenu, MSG_FILAMENTUNLOAD_ALL, menu_unload_filament_all_temp);
|
1155
|
|
- #endif
|
1156
|
|
- if (thermalManager.targetHotEnoughToExtrude(0))
|
1157
|
|
- MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E1, PSTR("M702 T0"));
|
1158
|
|
- else
|
1159
|
|
- MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E1, menu_temp_e0_filament_unload);
|
1160
|
|
- if (thermalManager.targetHotEnoughToExtrude(1))
|
1161
|
|
- MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E2, PSTR("M702 T1"));
|
1162
|
|
- else
|
1163
|
|
- MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E2, menu_temp_e1_filament_unload);
|
1164
|
|
- #if E_STEPPERS > 2
|
1165
|
|
- if (thermalManager.targetHotEnoughToExtrude(2))
|
1166
|
|
- MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E3, PSTR("M702 T2"));
|
1167
|
|
- else
|
1168
|
|
- MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E3, menu_temp_e2_filament_unload);
|
1169
|
|
- #if E_STEPPERS > 3
|
1170
|
|
- if (thermalManager.targetHotEnoughToExtrude(3))
|
1171
|
|
- MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E4, PSTR("M702 T3"));
|
1172
|
|
- else
|
1173
|
|
- MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E4, menu_temp_e3_filament_unload);
|
1174
|
|
- #if E_STEPPERS > 4
|
1175
|
|
- if (thermalManager.targetHotEnoughToExtrude(4))
|
1176
|
|
- MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E5, PSTR("M702 T4"));
|
1177
|
|
- else
|
1178
|
|
- MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E5, menu_temp_e4_filament_unload);
|
1179
|
|
- #if E_STEPPERS > 5
|
1180
|
|
- if (thermalManager.targetHotEnoughToExtrude(5))
|
1181
|
|
- MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E6, PSTR("M702 T5"));
|
1182
|
|
- else
|
1183
|
|
- MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E6, menu_temp_e5_filament_unload);
|
1184
|
|
- #endif // E_STEPPERS > 5
|
1185
|
|
- #endif // E_STEPPERS > 4
|
1186
|
|
- #endif // E_STEPPERS > 3
|
1187
|
|
- #endif // E_STEPPERS > 2
|
1188
|
|
- #endif // E_STEPPERS == 1
|
1189
|
|
- }
|
1190
|
|
- #endif
|
1191
|
|
-
|
1192
|
|
- END_MENU();
|
1193
|
|
- }
|
1194
|
|
- #endif
|
1195
|
|
-
|
1196
|
|
- static AdvancedPauseMode advanced_pause_mode = ADVANCED_PAUSE_MODE_PAUSE_PRINT;
|
1197
|
|
- static uint8_t hotend_status_extruder = 0;
|
1198
|
|
-
|
1199
|
|
- static PGM_P advanced_pause_header() {
|
1200
|
|
- switch (advanced_pause_mode) {
|
1201
|
|
- case ADVANCED_PAUSE_MODE_LOAD_FILAMENT:
|
1202
|
|
- return PSTR(MSG_FILAMENT_CHANGE_HEADER_LOAD);
|
1203
|
|
- case ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT:
|
1204
|
|
- return PSTR(MSG_FILAMENT_CHANGE_HEADER_UNLOAD);
|
1205
|
|
- default: break;
|
1206
|
|
- }
|
1207
|
|
- return PSTR(MSG_FILAMENT_CHANGE_HEADER_PAUSE);
|
1208
|
|
- }
|
1209
|
|
-
|
1210
|
|
- // Portions from STATIC_ITEM...
|
1211
|
|
- #define HOTEND_STATUS_ITEM() do { \
|
1212
|
|
- if (_menuLineNr == _thisItemNr) { \
|
1213
|
|
- if (lcdDrawUpdate) { \
|
1214
|
|
- lcd_implementation_drawmenu_static(_lcdLineNr, PSTR(MSG_FILAMENT_CHANGE_NOZZLE), false, true); \
|
1215
|
|
- lcd_implementation_hotend_status(_lcdLineNr, hotend_status_extruder); \
|
1216
|
|
- } \
|
1217
|
|
- if (_skipStatic && encoderLine <= _thisItemNr) { \
|
1218
|
|
- encoderPosition += ENCODER_STEPS_PER_MENU_ITEM; \
|
1219
|
|
- ++encoderLine; \
|
1220
|
|
- } \
|
1221
|
|
- lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; \
|
1222
|
|
- } \
|
1223
|
|
- ++_thisItemNr; \
|
1224
|
|
- }while(0)
|
1225
|
|
-
|
1226
|
|
- void lcd_advanced_pause_resume_print() {
|
1227
|
|
- advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_RESUME_PRINT;
|
1228
|
|
- }
|
1229
|
|
-
|
1230
|
|
- void lcd_advanced_pause_extrude_more() {
|
1231
|
|
- advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_EXTRUDE_MORE;
|
1232
|
|
- }
|
1233
|
|
-
|
1234
|
|
- void menu_advanced_pause_option() {
|
1235
|
|
- START_MENU();
|
1236
|
|
- #if LCD_HEIGHT > 2
|
1237
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_OPTION_HEADER, true, false);
|
1238
|
|
- #endif
|
1239
|
|
- MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_advanced_pause_resume_print);
|
1240
|
|
- MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_PURGE, lcd_advanced_pause_extrude_more);
|
1241
|
|
- END_MENU();
|
1242
|
|
- }
|
1243
|
|
-
|
1244
|
|
- void lcd_advanced_pause_init_message() {
|
1245
|
|
- START_SCREEN();
|
1246
|
|
- STATIC_ITEM_P(advanced_pause_header(), true, true);
|
1247
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_1);
|
1248
|
|
- #ifdef MSG_FILAMENT_CHANGE_INIT_2
|
1249
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_2);
|
1250
|
|
- #define __FC_LINES_A 3
|
1251
|
|
- #else
|
1252
|
|
- #define __FC_LINES_A 2
|
1253
|
|
- #endif
|
1254
|
|
- #ifdef MSG_FILAMENT_CHANGE_INIT_3
|
1255
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_3);
|
1256
|
|
- #define _FC_LINES_A (__FC_LINES_A + 1)
|
1257
|
|
- #else
|
1258
|
|
- #define _FC_LINES_A __FC_LINES_A
|
1259
|
|
- #endif
|
1260
|
|
- #if LCD_HEIGHT > _FC_LINES_A + 1
|
1261
|
|
- STATIC_ITEM(" ");
|
1262
|
|
- #endif
|
1263
|
|
- HOTEND_STATUS_ITEM();
|
1264
|
|
- END_SCREEN();
|
1265
|
|
- }
|
1266
|
|
-
|
1267
|
|
- void lcd_advanced_pause_unload_message() {
|
1268
|
|
- START_SCREEN();
|
1269
|
|
- STATIC_ITEM_P(advanced_pause_header(), true, true);
|
1270
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_1);
|
1271
|
|
- #ifdef MSG_FILAMENT_CHANGE_UNLOAD_2
|
1272
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_2);
|
1273
|
|
- #define __FC_LINES_B 3
|
1274
|
|
- #else
|
1275
|
|
- #define __FC_LINES_B 2
|
1276
|
|
- #endif
|
1277
|
|
- #ifdef MSG_FILAMENT_CHANGE_UNLOAD_3
|
1278
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_3);
|
1279
|
|
- #define _FC_LINES_B (__FC_LINES_B + 1)
|
1280
|
|
- #else
|
1281
|
|
- #define _FC_LINES_B __FC_LINES_B
|
1282
|
|
- #endif
|
1283
|
|
- #if LCD_HEIGHT > _FC_LINES_B + 1
|
1284
|
|
- STATIC_ITEM(" ");
|
1285
|
|
- #endif
|
1286
|
|
- HOTEND_STATUS_ITEM();
|
1287
|
|
- END_SCREEN();
|
1288
|
|
- }
|
1289
|
|
-
|
1290
|
|
- void lcd_advanced_pause_wait_for_nozzles_to_heat() {
|
1291
|
|
- START_SCREEN();
|
1292
|
|
- STATIC_ITEM_P(advanced_pause_header(), true, true);
|
1293
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1);
|
1294
|
|
- #ifdef MSG_FILAMENT_CHANGE_HEATING_2
|
1295
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_2);
|
1296
|
|
- #define _FC_LINES_C 3
|
1297
|
|
- #else
|
1298
|
|
- #define _FC_LINES_C 2
|
1299
|
|
- #endif
|
1300
|
|
- #if LCD_HEIGHT > _FC_LINES_C + 1
|
1301
|
|
- STATIC_ITEM(" ");
|
1302
|
|
- #endif
|
1303
|
|
- HOTEND_STATUS_ITEM();
|
1304
|
|
- END_SCREEN();
|
1305
|
|
- }
|
1306
|
|
-
|
1307
|
|
- void lcd_advanced_pause_heat_nozzle() {
|
1308
|
|
- START_SCREEN();
|
1309
|
|
- STATIC_ITEM_P(advanced_pause_header(), true, true);
|
1310
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1);
|
1311
|
|
- #ifdef MSG_FILAMENT_CHANGE_INSERT_2
|
1312
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_2);
|
1313
|
|
- #define _FC_LINES_D 3
|
1314
|
|
- #else
|
1315
|
|
- #define _FC_LINES_D 2
|
1316
|
|
- #endif
|
1317
|
|
- #if LCD_HEIGHT > _FC_LINES_D + 1
|
1318
|
|
- STATIC_ITEM(" ");
|
1319
|
|
- #endif
|
1320
|
|
- HOTEND_STATUS_ITEM();
|
1321
|
|
- END_SCREEN();
|
1322
|
|
- }
|
1323
|
|
-
|
1324
|
|
- void lcd_advanced_pause_insert_message() {
|
1325
|
|
- START_SCREEN();
|
1326
|
|
- STATIC_ITEM_P(advanced_pause_header(), true, true);
|
1327
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_1);
|
1328
|
|
- #ifdef MSG_FILAMENT_CHANGE_INSERT_2
|
1329
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_2);
|
1330
|
|
- #define __FC_LINES_E 3
|
1331
|
|
- #else
|
1332
|
|
- #define __FC_LINES_E 2
|
1333
|
|
- #endif
|
1334
|
|
- #ifdef MSG_FILAMENT_CHANGE_INSERT_3
|
1335
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_3);
|
1336
|
|
- #define _FC_LINES_E (__FC_LINES_E + 1)
|
1337
|
|
- #else
|
1338
|
|
- #define _FC_LINES_E __FC_LINES_E
|
1339
|
|
- #endif
|
1340
|
|
- #if LCD_HEIGHT > _FC_LINES_E + 1
|
1341
|
|
- STATIC_ITEM(" ");
|
1342
|
|
- #endif
|
1343
|
|
- HOTEND_STATUS_ITEM();
|
1344
|
|
- END_SCREEN();
|
1345
|
|
- }
|
1346
|
|
-
|
1347
|
|
- void lcd_advanced_pause_load_message() {
|
1348
|
|
- START_SCREEN();
|
1349
|
|
- STATIC_ITEM_P(advanced_pause_header(), true, true);
|
1350
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_1);
|
1351
|
|
- #ifdef MSG_FILAMENT_CHANGE_LOAD_2
|
1352
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_2);
|
1353
|
|
- #define __FC_LINES_F 3
|
1354
|
|
- #else
|
1355
|
|
- #define __FC_LINES_F 2
|
1356
|
|
- #endif
|
1357
|
|
- #ifdef MSG_FILAMENT_CHANGE_LOAD_3
|
1358
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_3);
|
1359
|
|
- #define _FC_LINES_F (__FC_LINES_F + 1)
|
1360
|
|
- #else
|
1361
|
|
- #define _FC_LINES_F __FC_LINES_F
|
1362
|
|
- #endif
|
1363
|
|
- #if LCD_HEIGHT > _FC_LINES_F + 1
|
1364
|
|
- STATIC_ITEM(" ");
|
1365
|
|
- #endif
|
1366
|
|
- HOTEND_STATUS_ITEM();
|
1367
|
|
- END_SCREEN();
|
1368
|
|
- }
|
1369
|
|
-
|
1370
|
|
- void lcd_advanced_pause_purge_message() {
|
1371
|
|
- START_SCREEN();
|
1372
|
|
- STATIC_ITEM_P(advanced_pause_header(), true, true);
|
1373
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_1);
|
1374
|
|
- #ifdef MSG_FILAMENT_CHANGE_PURGE_2
|
1375
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_2);
|
1376
|
|
- #define __FC_LINES_G 3
|
1377
|
|
- #else
|
1378
|
|
- #define __FC_LINES_G 2
|
1379
|
|
- #endif
|
1380
|
|
- #ifdef MSG_FILAMENT_CHANGE_PURGE_3
|
1381
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_3);
|
1382
|
|
- #define _FC_LINES_G (__FC_LINES_G + 1)
|
1383
|
|
- #else
|
1384
|
|
- #define _FC_LINES_G __FC_LINES_G
|
1385
|
|
- #endif
|
1386
|
|
- #if LCD_HEIGHT > _FC_LINES_G + 1
|
1387
|
|
- STATIC_ITEM(" ");
|
1388
|
|
- #endif
|
1389
|
|
- HOTEND_STATUS_ITEM();
|
1390
|
|
- END_SCREEN();
|
1391
|
|
- }
|
1392
|
|
-
|
1393
|
|
- #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
1394
|
|
- void menu_advanced_pause_continuous_purge() {
|
1395
|
|
- START_SCREEN();
|
1396
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_1);
|
1397
|
|
- #ifdef MSG_FILAMENT_CHANGE_PURGE_2
|
1398
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_2);
|
1399
|
|
- #define __FC_LINES_G 3
|
1400
|
|
- #else
|
1401
|
|
- #define __FC_LINES_G 2
|
1402
|
|
- #endif
|
1403
|
|
- #ifdef MSG_FILAMENT_CHANGE_PURGE_3
|
1404
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_3);
|
1405
|
|
- #define _FC_LINES_G (__FC_LINES_G + 1)
|
1406
|
|
- #else
|
1407
|
|
- #define _FC_LINES_G __FC_LINES_G
|
1408
|
|
- #endif
|
1409
|
|
- #if LCD_HEIGHT > _FC_LINES_G + 1
|
1410
|
|
- STATIC_ITEM(" ");
|
1411
|
|
- #endif
|
1412
|
|
- HOTEND_STATUS_ITEM();
|
1413
|
|
- STATIC_ITEM(MSG_USERWAIT);
|
1414
|
|
- END_SCREEN();
|
1415
|
|
- }
|
1416
|
|
- #endif
|
1417
|
|
-
|
1418
|
|
- void lcd_advanced_pause_resume_message() {
|
1419
|
|
- START_SCREEN();
|
1420
|
|
- STATIC_ITEM_P(advanced_pause_header(), true, true);
|
1421
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_1);
|
1422
|
|
- #ifdef MSG_FILAMENT_CHANGE_RESUME_2
|
1423
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_2);
|
1424
|
|
- #endif
|
1425
|
|
- #ifdef MSG_FILAMENT_CHANGE_RESUME_3
|
1426
|
|
- STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_3);
|
1427
|
|
- #endif
|
1428
|
|
- END_SCREEN();
|
1429
|
|
- }
|
1430
|
|
-
|
1431
|
|
- FORCE_INLINE screenFunc_t ap_message_screen(const AdvancedPauseMessage message) {
|
1432
|
|
- switch (message) {
|
1433
|
|
- case ADVANCED_PAUSE_MESSAGE_INIT: return lcd_advanced_pause_init_message;
|
1434
|
|
- case ADVANCED_PAUSE_MESSAGE_UNLOAD: return lcd_advanced_pause_unload_message;
|
1435
|
|
- case ADVANCED_PAUSE_MESSAGE_INSERT: return lcd_advanced_pause_insert_message;
|
1436
|
|
- case ADVANCED_PAUSE_MESSAGE_LOAD: return lcd_advanced_pause_load_message;
|
1437
|
|
- case ADVANCED_PAUSE_MESSAGE_PURGE: return lcd_advanced_pause_purge_message;
|
1438
|
|
- case ADVANCED_PAUSE_MESSAGE_RESUME: return lcd_advanced_pause_resume_message;
|
1439
|
|
- case ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE: return lcd_advanced_pause_heat_nozzle;
|
1440
|
|
- case ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT: return lcd_advanced_pause_wait_for_nozzles_to_heat;
|
1441
|
|
- case ADVANCED_PAUSE_MESSAGE_OPTION: advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
|
1442
|
|
- return menu_advanced_pause_option;
|
1443
|
|
- #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
1444
|
|
- case ADVANCED_PAUSE_MESSAGE_CONTINUOUS_PURGE: return menu_advanced_pause_continuous_purge;
|
1445
|
|
- #endif
|
1446
|
|
- case ADVANCED_PAUSE_MESSAGE_STATUS:
|
1447
|
|
- default: break;
|
1448
|
|
- }
|
1449
|
|
- return NULL;
|
1450
|
|
- }
|
1451
|
|
-
|
1452
|
|
- void lcd_advanced_pause_show_message(
|
1453
|
|
- const AdvancedPauseMessage message,
|
1454
|
|
- const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_PAUSE_PRINT*/,
|
1455
|
|
- const uint8_t extruder/*=active_extruder*/
|
1456
|
|
- ) {
|
1457
|
|
- advanced_pause_mode = mode;
|
1458
|
|
- hotend_status_extruder = extruder;
|
1459
|
|
- const screenFunc_t next_screen = ap_message_screen(message);
|
1460
|
|
- if (next_screen) {
|
1461
|
|
- defer_return_to_status = true;
|
1462
|
|
- lcd_goto_screen(next_screen);
|
1463
|
|
- }
|
1464
|
|
- else
|
1465
|
|
- lcd_return_to_status();
|
1466
|
|
- }
|
1467
|
|
-
|
1468
|
|
-#endif // ADVANCED_PAUSE_FEATURE
|
1469
|
|
-
|
1470
|
904
|
#endif // ULTIPANEL
|