|
@@ -1332,59 +1332,16 @@ void MarlinUI::update() {
|
1332
|
1332
|
|
1333
|
1333
|
#endif // HAS_WIRED_LCD
|
1334
|
1334
|
|
1335
|
|
-#if HAS_DISPLAY
|
1336
|
|
-
|
1337
|
|
- #if ENABLED(EXTENSIBLE_UI)
|
1338
|
|
- #include "extui/ui_api.h"
|
1339
|
|
- #endif
|
|
1335
|
+#if HAS_STATUS_MESSAGE
|
1340
|
1336
|
|
1341
|
1337
|
////////////////////////////////////////////
|
1342
|
|
- /////////////// Status Line ////////////////
|
|
1338
|
+ ////////////// Status Message //////////////
|
1343
|
1339
|
////////////////////////////////////////////
|
1344
|
1340
|
|
1345
|
|
- #if ENABLED(STATUS_MESSAGE_SCROLLING)
|
1346
|
|
- void MarlinUI::advance_status_scroll() {
|
1347
|
|
- // Advance by one UTF8 code-word
|
1348
|
|
- if (status_scroll_offset < utf8_strlen(status_message))
|
1349
|
|
- while (!START_OF_UTF8_CHAR(status_message[++status_scroll_offset]));
|
1350
|
|
- else
|
1351
|
|
- status_scroll_offset = 0;
|
1352
|
|
- }
|
1353
|
|
- char* MarlinUI::status_and_len(uint8_t &len) {
|
1354
|
|
- char *out = status_message + status_scroll_offset;
|
1355
|
|
- len = utf8_strlen(out);
|
1356
|
|
- return out;
|
1357
|
|
- }
|
|
1341
|
+ #if ENABLED(EXTENSIBLE_UI)
|
|
1342
|
+ #include "extui/ui_api.h"
|
1358
|
1343
|
#endif
|
1359
|
1344
|
|
1360
|
|
- void MarlinUI::finish_status(const bool persist) {
|
1361
|
|
-
|
1362
|
|
- #if !(ENABLED(LCD_PROGRESS_BAR) && (PROGRESS_MSG_EXPIRE) > 0)
|
1363
|
|
- UNUSED(persist);
|
1364
|
|
- #endif
|
1365
|
|
-
|
1366
|
|
- #if ENABLED(LCD_PROGRESS_BAR) || BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
|
1367
|
|
- const millis_t ms = millis();
|
1368
|
|
- #endif
|
1369
|
|
-
|
1370
|
|
- #if ENABLED(LCD_PROGRESS_BAR) && !IS_TFTGLCD_PANEL
|
1371
|
|
- progress_bar_ms = ms;
|
1372
|
|
- #if PROGRESS_MSG_EXPIRE > 0
|
1373
|
|
- expire_status_ms = persist ? 0 : ms + PROGRESS_MSG_EXPIRE;
|
1374
|
|
- #endif
|
1375
|
|
- #endif
|
1376
|
|
-
|
1377
|
|
- #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
|
1378
|
|
- next_filament_display = ms + 5000UL; // Show status message for 5s
|
1379
|
|
- #endif
|
1380
|
|
-
|
1381
|
|
- #if BOTH(HAS_WIRED_LCD, STATUS_MESSAGE_SCROLLING)
|
1382
|
|
- status_scroll_offset = 0;
|
1383
|
|
- #endif
|
1384
|
|
-
|
1385
|
|
- TERN_(EXTENSIBLE_UI, ExtUI::onStatusChanged(status_message));
|
1386
|
|
- }
|
1387
|
|
-
|
1388
|
1345
|
bool MarlinUI::has_status() { return (status_message[0] != '\0'); }
|
1389
|
1346
|
|
1390
|
1347
|
void MarlinUI::set_status(const char * const message, const bool persist) {
|
|
@@ -1414,16 +1371,45 @@ void MarlinUI::update() {
|
1414
|
1371
|
finish_status(persist);
|
1415
|
1372
|
}
|
1416
|
1373
|
|
1417
|
|
- #include <stdarg.h>
|
|
1374
|
+ /**
|
|
1375
|
+ * Reset the status message
|
|
1376
|
+ */
|
|
1377
|
+ void MarlinUI::reset_status(const bool no_welcome) {
|
|
1378
|
+ #if SERVICE_INTERVAL_1 > 0
|
|
1379
|
+ static PGMSTR(service1, "> " SERVICE_NAME_1 "!");
|
|
1380
|
+ #endif
|
|
1381
|
+ #if SERVICE_INTERVAL_2 > 0
|
|
1382
|
+ static PGMSTR(service2, "> " SERVICE_NAME_2 "!");
|
|
1383
|
+ #endif
|
|
1384
|
+ #if SERVICE_INTERVAL_3 > 0
|
|
1385
|
+ static PGMSTR(service3, "> " SERVICE_NAME_3 "!");
|
|
1386
|
+ #endif
|
|
1387
|
+ PGM_P msg;
|
|
1388
|
+ if (printingIsPaused())
|
|
1389
|
+ msg = GET_TEXT(MSG_PRINT_PAUSED);
|
|
1390
|
+ #if ENABLED(SDSUPPORT)
|
|
1391
|
+ else if (IS_SD_PRINTING())
|
|
1392
|
+ return set_status(card.longest_filename(), true);
|
|
1393
|
+ #endif
|
|
1394
|
+ else if (print_job_timer.isRunning())
|
|
1395
|
+ msg = GET_TEXT(MSG_PRINTING);
|
1418
|
1396
|
|
1419
|
|
- void MarlinUI::status_printf_P(const uint8_t level, PGM_P const fmt, ...) {
|
1420
|
|
- if (level < alert_level) return;
|
1421
|
|
- alert_level = level;
|
1422
|
|
- va_list args;
|
1423
|
|
- va_start(args, fmt);
|
1424
|
|
- vsnprintf_P(status_message, MAX_MESSAGE_LENGTH, fmt, args);
|
1425
|
|
- va_end(args);
|
1426
|
|
- finish_status(level > 0);
|
|
1397
|
+ #if SERVICE_INTERVAL_1 > 0
|
|
1398
|
+ else if (print_job_timer.needsService(1)) msg = service1;
|
|
1399
|
+ #endif
|
|
1400
|
+ #if SERVICE_INTERVAL_2 > 0
|
|
1401
|
+ else if (print_job_timer.needsService(2)) msg = service2;
|
|
1402
|
+ #endif
|
|
1403
|
+ #if SERVICE_INTERVAL_3 > 0
|
|
1404
|
+ else if (print_job_timer.needsService(3)) msg = service3;
|
|
1405
|
+ #endif
|
|
1406
|
+
|
|
1407
|
+ else if (!no_welcome)
|
|
1408
|
+ msg = GET_TEXT(WELCOME_MSG);
|
|
1409
|
+ else
|
|
1410
|
+ return;
|
|
1411
|
+
|
|
1412
|
+ set_status_P(msg, -1);
|
1427
|
1413
|
}
|
1428
|
1414
|
|
1429
|
1415
|
void MarlinUI::set_status_P(PGM_P const message, int8_t level) {
|
|
@@ -1459,51 +1445,76 @@ void MarlinUI::update() {
|
1459
|
1445
|
TERN_(HAS_LCD_MENU, return_to_status());
|
1460
|
1446
|
}
|
1461
|
1447
|
|
1462
|
|
- PGM_P print_paused = GET_TEXT(MSG_PRINT_PAUSED);
|
|
1448
|
+ #include <stdarg.h>
|
1463
|
1449
|
|
1464
|
|
- /**
|
1465
|
|
- * Reset the status message
|
1466
|
|
- */
|
1467
|
|
- void MarlinUI::reset_status(const bool no_welcome) {
|
1468
|
|
- PGM_P printing = GET_TEXT(MSG_PRINTING);
|
1469
|
|
- PGM_P welcome = GET_TEXT(WELCOME_MSG);
|
1470
|
|
- #if SERVICE_INTERVAL_1 > 0
|
1471
|
|
- static PGMSTR(service1, "> " SERVICE_NAME_1 "!");
|
1472
|
|
- #endif
|
1473
|
|
- #if SERVICE_INTERVAL_2 > 0
|
1474
|
|
- static PGMSTR(service2, "> " SERVICE_NAME_2 "!");
|
1475
|
|
- #endif
|
1476
|
|
- #if SERVICE_INTERVAL_3 > 0
|
1477
|
|
- static PGMSTR(service3, "> " SERVICE_NAME_3 "!");
|
1478
|
|
- #endif
|
1479
|
|
- PGM_P msg;
|
1480
|
|
- if (printingIsPaused())
|
1481
|
|
- msg = print_paused;
|
1482
|
|
- #if ENABLED(SDSUPPORT)
|
1483
|
|
- else if (IS_SD_PRINTING())
|
1484
|
|
- return set_status(card.longest_filename(), true);
|
1485
|
|
- #endif
|
1486
|
|
- else if (print_job_timer.isRunning())
|
1487
|
|
- msg = printing;
|
|
1450
|
+ void MarlinUI::status_printf_P(const uint8_t level, PGM_P const fmt, ...) {
|
|
1451
|
+ if (level < alert_level) return;
|
|
1452
|
+ alert_level = level;
|
|
1453
|
+ va_list args;
|
|
1454
|
+ va_start(args, fmt);
|
|
1455
|
+ vsnprintf_P(status_message, MAX_MESSAGE_LENGTH, fmt, args);
|
|
1456
|
+ va_end(args);
|
|
1457
|
+ finish_status(level > 0);
|
|
1458
|
+ }
|
1488
|
1459
|
|
1489
|
|
- #if SERVICE_INTERVAL_1 > 0
|
1490
|
|
- else if (print_job_timer.needsService(1)) msg = service1;
|
1491
|
|
- #endif
|
1492
|
|
- #if SERVICE_INTERVAL_2 > 0
|
1493
|
|
- else if (print_job_timer.needsService(2)) msg = service2;
|
1494
|
|
- #endif
|
1495
|
|
- #if SERVICE_INTERVAL_3 > 0
|
1496
|
|
- else if (print_job_timer.needsService(3)) msg = service3;
|
1497
|
|
- #endif
|
|
1460
|
+ void MarlinUI::finish_status(const bool persist) {
|
1498
|
1461
|
|
1499
|
|
- else if (!no_welcome)
|
1500
|
|
- msg = welcome;
|
1501
|
|
- else
|
1502
|
|
- return;
|
|
1462
|
+ #if HAS_SPI_LCD
|
1503
|
1463
|
|
1504
|
|
- set_status_P(msg, -1);
|
|
1464
|
+ #if !(ENABLED(LCD_PROGRESS_BAR) && (PROGRESS_MSG_EXPIRE) > 0)
|
|
1465
|
+ UNUSED(persist);
|
|
1466
|
+ #endif
|
|
1467
|
+
|
|
1468
|
+ #if ENABLED(LCD_PROGRESS_BAR) || BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
|
|
1469
|
+ const millis_t ms = millis();
|
|
1470
|
+ #endif
|
|
1471
|
+
|
|
1472
|
+ #if ENABLED(LCD_PROGRESS_BAR)
|
|
1473
|
+ progress_bar_ms = ms;
|
|
1474
|
+ #if PROGRESS_MSG_EXPIRE > 0
|
|
1475
|
+ expire_status_ms = persist ? 0 : ms + PROGRESS_MSG_EXPIRE;
|
|
1476
|
+ #endif
|
|
1477
|
+ #endif
|
|
1478
|
+
|
|
1479
|
+ #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
|
|
1480
|
+ next_filament_display = ms + 5000UL; // Show status message for 5s
|
|
1481
|
+ #endif
|
|
1482
|
+
|
|
1483
|
+ #if ENABLED(STATUS_MESSAGE_SCROLLING)
|
|
1484
|
+ status_scroll_offset = 0;
|
|
1485
|
+ #endif
|
|
1486
|
+
|
|
1487
|
+ #endif
|
|
1488
|
+
|
|
1489
|
+ TERN_(EXTENSIBLE_UI, ExtUI::onStatusChanged(status_message));
|
1505
|
1490
|
}
|
1506
|
1491
|
|
|
1492
|
+ #if ENABLED(STATUS_MESSAGE_SCROLLING)
|
|
1493
|
+
|
|
1494
|
+ void MarlinUI::advance_status_scroll() {
|
|
1495
|
+ // Advance by one UTF8 code-word
|
|
1496
|
+ if (status_scroll_offset < utf8_strlen(status_message))
|
|
1497
|
+ while (!START_OF_UTF8_CHAR(status_message[++status_scroll_offset]));
|
|
1498
|
+ else
|
|
1499
|
+ status_scroll_offset = 0;
|
|
1500
|
+ }
|
|
1501
|
+
|
|
1502
|
+ char* MarlinUI::status_and_len(uint8_t &len) {
|
|
1503
|
+ char *out = status_message + status_scroll_offset;
|
|
1504
|
+ len = utf8_strlen(out);
|
|
1505
|
+ return out;
|
|
1506
|
+ }
|
|
1507
|
+
|
|
1508
|
+ #endif
|
|
1509
|
+
|
|
1510
|
+#endif
|
|
1511
|
+
|
|
1512
|
+#if HAS_DISPLAY
|
|
1513
|
+
|
|
1514
|
+ #if ENABLED(SDSUPPORT)
|
|
1515
|
+ extern bool wait_for_user, wait_for_heatup;
|
|
1516
|
+ #endif
|
|
1517
|
+
|
1507
|
1518
|
void MarlinUI::abort_print() {
|
1508
|
1519
|
#if ENABLED(SDSUPPORT)
|
1509
|
1520
|
wait_for_heatup = wait_for_user = false;
|
|
@@ -1514,7 +1525,7 @@ void MarlinUI::update() {
|
1514
|
1525
|
#endif
|
1515
|
1526
|
TERN_(HOST_PROMPT_SUPPORT, host_prompt_open(PROMPT_INFO, PSTR("UI Aborted"), DISMISS_STR));
|
1516
|
1527
|
print_job_timer.stop();
|
1517
|
|
- set_status_P(GET_TEXT(MSG_PRINT_ABORTED));
|
|
1528
|
+ LCD_MESSAGEPGM(MSG_PRINT_ABORTED);
|
1518
|
1529
|
TERN_(HAS_LCD_MENU, return_to_status());
|
1519
|
1530
|
}
|
1520
|
1531
|
|
|
@@ -1530,7 +1541,7 @@ void MarlinUI::update() {
|
1530
|
1541
|
|
1531
|
1542
|
TERN_(HOST_PROMPT_SUPPORT, host_prompt_open(PROMPT_PAUSE_RESUME, PSTR("UI Pause"), PSTR("Resume")));
|
1532
|
1543
|
|
1533
|
|
- set_status_P(print_paused);
|
|
1544
|
+ LCD_MESSAGEPGM(MSG_PRINT_PAUSED);
|
1534
|
1545
|
|
1535
|
1546
|
#if ENABLED(PARK_HEAD_ON_PAUSE)
|
1536
|
1547
|
TERN_(HAS_WIRED_LCD, lcd_pause_show_message(PAUSE_MESSAGE_PARKING, PAUSE_MODE_PAUSE_PRINT)); // Show message immediately to let user know about pause in progress
|
|
@@ -1615,6 +1626,10 @@ void MarlinUI::update() {
|
1615
|
1626
|
|
1616
|
1627
|
#if ENABLED(SDSUPPORT)
|
1617
|
1628
|
|
|
1629
|
+ #if ENABLED(EXTENSIBLE_UI)
|
|
1630
|
+ #include "extui/ui_api.h"
|
|
1631
|
+ #endif
|
|
1632
|
+
|
1618
|
1633
|
void MarlinUI::media_changed(const uint8_t old_status, const uint8_t status) {
|
1619
|
1634
|
if (old_status == status) {
|
1620
|
1635
|
TERN_(EXTENSIBLE_UI, ExtUI::onMediaError()); // Failed to mount/unmount
|
|
@@ -1629,7 +1644,7 @@ void MarlinUI::update() {
|
1629
|
1644
|
quick_feedback();
|
1630
|
1645
|
goto_screen(MEDIA_MENU_GATEWAY);
|
1631
|
1646
|
#else
|
1632
|
|
- set_status_P(GET_TEXT(MSG_MEDIA_INSERTED));
|
|
1647
|
+ LCD_MESSAGEPGM(MSG_MEDIA_INSERTED);
|
1633
|
1648
|
#endif
|
1634
|
1649
|
}
|
1635
|
1650
|
}
|
|
@@ -1637,7 +1652,7 @@ void MarlinUI::update() {
|
1637
|
1652
|
if (old_status < 2) {
|
1638
|
1653
|
TERN_(EXTENSIBLE_UI, ExtUI::onMediaRemoved()); // ExtUI response
|
1639
|
1654
|
#if PIN_EXISTS(SD_DETECT)
|
1640
|
|
- set_status_P(GET_TEXT(MSG_MEDIA_REMOVED));
|
|
1655
|
+ LCD_MESSAGEPGM(MSG_MEDIA_REMOVED);
|
1641
|
1656
|
#if HAS_LCD_MENU
|
1642
|
1657
|
if (!defer_return_to_status) return_to_status();
|
1643
|
1658
|
#endif
|