|
|
|
@ -283,22 +283,25 @@ static void lcd_status_screen() {
|
|
|
|
|
#if PROGRESS_MSG_EXPIRE > 0
|
|
|
|
|
// Handle message expire
|
|
|
|
|
if (expire_status_ms > 0) {
|
|
|
|
|
if (card.isFileOpen()) {
|
|
|
|
|
// Expire the message when printing is active
|
|
|
|
|
if (IS_SD_PRINTING) {
|
|
|
|
|
#if ENABLED(SDSUPPORT)
|
|
|
|
|
if (card.isFileOpen()) {
|
|
|
|
|
// Expire the message when printing is active
|
|
|
|
|
if (ms >= expire_status_ms) {
|
|
|
|
|
lcd_status_message[0] = '\0';
|
|
|
|
|
expire_status_ms = 0;
|
|
|
|
|
if (IS_SD_PRINTING) {
|
|
|
|
|
if (ms >= expire_status_ms) {
|
|
|
|
|
lcd_status_message[0] = '\0';
|
|
|
|
|
expire_status_ms = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
expire_status_ms += LCD_UPDATE_INTERVAL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
expire_status_ms += LCD_UPDATE_INTERVAL;
|
|
|
|
|
expire_status_ms = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
#else
|
|
|
|
|
expire_status_ms = 0;
|
|
|
|
|
}
|
|
|
|
|
#endif //SDSUPPORT
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#endif //LCD_PROGRESS_BAR
|
|
|
|
@ -367,18 +370,22 @@ static void lcd_status_screen() {
|
|
|
|
|
|
|
|
|
|
static void lcd_return_to_status() { lcd_goto_menu(lcd_status_screen); }
|
|
|
|
|
|
|
|
|
|
static void lcd_sdcard_pause() { card.pauseSDPrint(); }
|
|
|
|
|
#if ENABLED(SDSUPPORT)
|
|
|
|
|
|
|
|
|
|
static void lcd_sdcard_resume() { card.startFileprint(); }
|
|
|
|
|
static void lcd_sdcard_pause() { card.pauseSDPrint(); }
|
|
|
|
|
|
|
|
|
|
static void lcd_sdcard_stop() {
|
|
|
|
|
quickStop();
|
|
|
|
|
card.sdprinting = false;
|
|
|
|
|
card.closefile();
|
|
|
|
|
autotempShutdown();
|
|
|
|
|
cancel_heatup = true;
|
|
|
|
|
lcd_setstatus(MSG_PRINT_ABORTED, true);
|
|
|
|
|
}
|
|
|
|
|
static void lcd_sdcard_resume() { card.startFileprint(); }
|
|
|
|
|
|
|
|
|
|
static void lcd_sdcard_stop() {
|
|
|
|
|
quickStop();
|
|
|
|
|
card.sdprinting = false;
|
|
|
|
|
card.closefile();
|
|
|
|
|
autotempShutdown();
|
|
|
|
|
cancel_heatup = true;
|
|
|
|
|
lcd_setstatus(MSG_PRINT_ABORTED, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif //SDSUPPORT
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
@ -1186,57 +1193,61 @@ static void lcd_control_volumetric_menu() {
|
|
|
|
|
}
|
|
|
|
|
#endif // FWRETRACT
|
|
|
|
|
|
|
|
|
|
#if !PIN_EXISTS(SD_DETECT)
|
|
|
|
|
static void lcd_sd_refresh() {
|
|
|
|
|
card.initsd();
|
|
|
|
|
currentMenuViewOffset = 0;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(SDSUPPORT)
|
|
|
|
|
|
|
|
|
|
static void lcd_sd_updir() {
|
|
|
|
|
card.updir();
|
|
|
|
|
currentMenuViewOffset = 0;
|
|
|
|
|
}
|
|
|
|
|
#if !PIN_EXISTS(SD_DETECT)
|
|
|
|
|
static void lcd_sd_refresh() {
|
|
|
|
|
card.initsd();
|
|
|
|
|
currentMenuViewOffset = 0;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* "Print from SD" submenu
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void lcd_sdcard_menu() {
|
|
|
|
|
if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card)
|
|
|
|
|
uint16_t fileCnt = card.getnrfilenames();
|
|
|
|
|
START_MENU();
|
|
|
|
|
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
|
|
|
|
card.getWorkDirName();
|
|
|
|
|
if (card.filename[0] == '/') {
|
|
|
|
|
#if !PIN_EXISTS(SD_DETECT)
|
|
|
|
|
MENU_ITEM(function, LCD_STR_REFRESH MSG_REFRESH, lcd_sd_refresh);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
MENU_ITEM(function, LCD_STR_FOLDER "..", lcd_sd_updir);
|
|
|
|
|
static void lcd_sd_updir() {
|
|
|
|
|
card.updir();
|
|
|
|
|
currentMenuViewOffset = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (uint16_t i = 0; i < fileCnt; i++) {
|
|
|
|
|
if (_menuItemNr == _lineNr) {
|
|
|
|
|
card.getfilename(
|
|
|
|
|
#if ENABLED(SDCARD_RATHERRECENTFIRST)
|
|
|
|
|
fileCnt-1 -
|
|
|
|
|
#endif
|
|
|
|
|
i
|
|
|
|
|
);
|
|
|
|
|
if (card.filenameIsDir)
|
|
|
|
|
MENU_ITEM(sddirectory, MSG_CARD_MENU, card.filename, card.longFilename);
|
|
|
|
|
else
|
|
|
|
|
MENU_ITEM(sdfile, MSG_CARD_MENU, card.filename, card.longFilename);
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* "Print from SD" submenu
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void lcd_sdcard_menu() {
|
|
|
|
|
if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card)
|
|
|
|
|
uint16_t fileCnt = card.getnrfilenames();
|
|
|
|
|
START_MENU();
|
|
|
|
|
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
|
|
|
|
card.getWorkDirName();
|
|
|
|
|
if (card.filename[0] == '/') {
|
|
|
|
|
#if !PIN_EXISTS(SD_DETECT)
|
|
|
|
|
MENU_ITEM(function, LCD_STR_REFRESH MSG_REFRESH, lcd_sd_refresh);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
MENU_ITEM_DUMMY();
|
|
|
|
|
MENU_ITEM(function, LCD_STR_FOLDER "..", lcd_sd_updir);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (uint16_t i = 0; i < fileCnt; i++) {
|
|
|
|
|
if (_menuItemNr == _lineNr) {
|
|
|
|
|
card.getfilename(
|
|
|
|
|
#if ENABLED(SDCARD_RATHERRECENTFIRST)
|
|
|
|
|
fileCnt-1 -
|
|
|
|
|
#endif
|
|
|
|
|
i
|
|
|
|
|
);
|
|
|
|
|
if (card.filenameIsDir)
|
|
|
|
|
MENU_ITEM(sddirectory, MSG_CARD_MENU, card.filename, card.longFilename);
|
|
|
|
|
else
|
|
|
|
|
MENU_ITEM(sdfile, MSG_CARD_MENU, card.filename, card.longFilename);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
MENU_ITEM_DUMMY();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
END_MENU();
|
|
|
|
|
}
|
|
|
|
|
END_MENU();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif //SDSUPPORT
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
@ -1389,10 +1400,16 @@ static void menu_action_sdfile(const char* filename, char* longFilename) {
|
|
|
|
|
enqueuecommands_P(PSTR("M24"));
|
|
|
|
|
lcd_return_to_status();
|
|
|
|
|
}
|
|
|
|
|
static void menu_action_sddirectory(const char* filename, char* longFilename) {
|
|
|
|
|
card.chdir(filename);
|
|
|
|
|
encoderPosition = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if ENABLED(SDSUPPORT)
|
|
|
|
|
|
|
|
|
|
static void menu_action_sddirectory(const char* filename, char* longFilename) {
|
|
|
|
|
card.chdir(filename);
|
|
|
|
|
encoderPosition = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
static void menu_action_setting_edit_bool(const char* pstr, bool* ptr) { *ptr = !(*ptr); }
|
|
|
|
|
static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, menuFunc_t callback) {
|
|
|
|
|
menu_action_setting_edit_bool(pstr, ptr);
|
|
|
|
@ -1496,7 +1513,8 @@ void lcd_update() {
|
|
|
|
|
|
|
|
|
|
lcd_buttons_update();
|
|
|
|
|
|
|
|
|
|
#if PIN_EXISTS(SD_DETECT)
|
|
|
|
|
#if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
|
|
|
|
|
|
|
|
|
|
if (IS_SD_INSERTED != lcd_oldcardstatus && lcd_detected()) {
|
|
|
|
|
lcdDrawUpdate = 2;
|
|
|
|
|
lcd_oldcardstatus = IS_SD_INSERTED;
|
|
|
|
@ -1515,7 +1533,8 @@ void lcd_update() {
|
|
|
|
|
LCD_MESSAGEPGM(MSG_SD_REMOVED);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif//CARDINSERTED
|
|
|
|
|
|
|
|
|
|
#endif //SDSUPPORT && SD_DETECT_PIN
|
|
|
|
|
|
|
|
|
|
millis_t ms = millis();
|
|
|
|
|
if (ms > next_lcd_update_ms) {
|
|
|
|
|