@@ -1182,7 +1182,14 @@ void DGUSScreenHandler::HandleFeedAmountChanged(DGUS_VP_Variable &var, void *val
1182
1182
1183
1183
ScreenHandler.skipVP = var.VP ; // don't overwrite value the next update time as the display might autoincrement in parallel
1184
1184
return ;
1185
- }
1185
+ }
1186
+
1187
+ void DGUSScreenHandler::HandleFadeHeight (DGUS_VP_Variable &var, void *val_ptr) {
1188
+ DGUSLCD_SetFloatAsIntFromDisplay<1 >(var, val_ptr);
1189
+
1190
+ RequestSaveSettings ();
1191
+ return ;
1192
+ }
1186
1193
1187
1194
void DGUSScreenHandler::HandlePositionChange (DGUS_VP_Variable &var, void *val_ptr) {
1188
1195
DEBUG_ECHOLNPGM (" HandlePositionChange" );
@@ -1259,121 +1266,6 @@ void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr
1259
1266
*(int16_t *)var.memadr = *(int16_t *)var.memadr > 0 ? 0 : preheat_temp;
1260
1267
}
1261
1268
1262
- #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
1263
-
1264
- typedef struct {
1265
- ExtUI::extruder_t extruder; // which extruder to operate
1266
- uint8_t action; // load or unload
1267
- bool heated; // heating done ?
1268
- float purge_length; // the length to extrude before unload, prevent filament jam
1269
- } filament_data_t ;
1270
-
1271
- static filament_data_t filament_data;
1272
-
1273
- void DGUSScreenHandler::HandleFilamentOption (DGUS_VP_Variable &var, void *val_ptr) {
1274
- DEBUG_ECHOLNPGM (" HandleFilamentOption" );
1275
-
1276
- uint8_t e_temp = 0 ;
1277
- filament_data.heated = false ;
1278
- uint16_t preheat_option = swap16 (*(uint16_t *)val_ptr);
1279
- if (preheat_option <= 8 ) // Load filament type
1280
- filament_data.action = 1 ;
1281
- else if (preheat_option >= 10 ) { // Unload filament type
1282
- preheat_option -= 10 ;
1283
- filament_data.action = 2 ;
1284
- filament_data.purge_length = DGUS_FILAMENT_PURGE_LENGTH;
1285
- }
1286
- else // Cancel filament operation
1287
- filament_data.action = 0 ;
1288
-
1289
- switch (preheat_option) {
1290
- case 0 : // Load PLA
1291
- #ifdef PREHEAT_1_TEMP_HOTEND
1292
- e_temp = PREHEAT_1_TEMP_HOTEND;
1293
- #endif
1294
- break ;
1295
- case 1 : // Load ABS
1296
- TERN_ (PREHEAT_2_TEMP_HOTEND, e_temp = PREHEAT_2_TEMP_HOTEND);
1297
- break ;
1298
- case 2 : // Load PET
1299
- #ifdef PREHEAT_3_TEMP_HOTEND
1300
- e_temp = PREHEAT_3_TEMP_HOTEND;
1301
- #endif
1302
- break ;
1303
- case 3 : // Load FLEX
1304
- #ifdef PREHEAT_4_TEMP_HOTEND
1305
- e_temp = PREHEAT_4_TEMP_HOTEND;
1306
- #endif
1307
- break ;
1308
- case 9 : // Cool down
1309
- default :
1310
- e_temp = 0 ;
1311
- break ;
1312
- }
1313
-
1314
- if (filament_data.action == 0 ) { // Go back to utility screen
1315
- #if HOTENDS >= 1
1316
- thermalManager.setTargetHotend (e_temp, ExtUI::extruder_t ::E0 );
1317
- #endif
1318
- #if HOTENDS >= 2
1319
- thermalManager.setTargetHotend (e_temp, ExtUI::extruder_t ::E1 );
1320
- #endif
1321
- GotoScreen (DGUSLCD_SCREEN_UTILITY);
1322
- }
1323
- else { // Go to the preheat screen to show the heating progress
1324
- switch (var.VP ) {
1325
- default : return ;
1326
- #if HOTENDS >= 1
1327
- case VP_E0_FILAMENT_LOAD_UNLOAD:
1328
- filament_data.extruder = ExtUI::extruder_t ::E0 ;
1329
- thermalManager.setTargetHotend (e_temp, filament_data.extruder );
1330
- break ;
1331
- #endif
1332
- #if HOTENDS >= 2
1333
- case VP_E1_FILAMENT_LOAD_UNLOAD:
1334
- filament_data.extruder = ExtUI::extruder_t ::E1 ;
1335
- thermalManager.setTargetHotend (e_temp, filament_data.extruder );
1336
- break ;
1337
- #endif
1338
- }
1339
- GotoScreen (DGUSLCD_SCREEN_FILAMENT_HEATING);
1340
- }
1341
- }
1342
-
1343
- void DGUSScreenHandler::HandleFilamentLoadUnload (DGUS_VP_Variable &var) {
1344
- DEBUG_ECHOLNPGM (" HandleFilamentLoadUnload" );
1345
- if (filament_data.action <= 0 ) return ;
1346
-
1347
- // If we close to the target temperature, we can start load or unload the filament
1348
- if (thermalManager.hotEnoughToExtrude (filament_data.extruder ) && \
1349
- thermalManager.targetHotEnoughToExtrude (filament_data.extruder )) {
1350
- float movevalue = DGUS_FILAMENT_LOAD_LENGTH_PER_TIME;
1351
-
1352
- if (filament_data.action == 1 ) { // load filament
1353
- if (!filament_data.heated ) {
1354
- GotoScreen (DGUSLCD_SCREEN_FILAMENT_LOADING);
1355
- filament_data.heated = true ;
1356
- }
1357
- movevalue = ExtUI::getAxisPosition_mm (filament_data.extruder )+movevalue;
1358
- }
1359
- else { // unload filament
1360
- if (!filament_data.heated ) {
1361
- GotoScreen (DGUSLCD_SCREEN_FILAMENT_UNLOADING);
1362
- filament_data.heated = true ;
1363
- }
1364
- // Before unloading extrude to prevent jamming
1365
- if (filament_data.purge_length >= 0 ) {
1366
- movevalue = ExtUI::getAxisPosition_mm (filament_data.extruder ) + movevalue;
1367
- filament_data.purge_length -= movevalue;
1368
- }
1369
- else
1370
- movevalue = ExtUI::getAxisPosition_mm (filament_data.extruder ) - movevalue;
1371
- }
1372
- ExtUI::setAxisPosition_mm (movevalue, filament_data.extruder );
1373
- }
1374
- }
1375
- #endif
1376
-
1377
1269
void DGUSScreenHandler::HandleLEDToggle () {
1378
1270
bool newState = !caselight.on ;
1379
1271
0 commit comments