Scott Lahteine
6 years ago
2 changed files with 166 additions and 133 deletions
@ -0,0 +1,166 @@ |
|||||
|
/**
|
||||
|
* Marlin 3D Printer Firmware |
||||
|
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
|
* |
||||
|
* Based on Sprinter and grbl. |
||||
|
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm |
||||
|
* |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
//
|
||||
|
// Main Menu
|
||||
|
//
|
||||
|
|
||||
|
#include "../../inc/MarlinConfigPre.h" |
||||
|
|
||||
|
#if HAS_LCD_MENU |
||||
|
|
||||
|
#include "menu.h" |
||||
|
#include "../../module/temperature.h" |
||||
|
|
||||
|
#if ENABLED(SDSUPPORT) |
||||
|
|
||||
|
#include "../../sd/cardreader.h" |
||||
|
#include "../../gcode/queue.h" |
||||
|
#include "../../module/printcounter.h" |
||||
|
|
||||
|
void lcd_sdcard_pause() { |
||||
|
card.pauseSDPrint(); |
||||
|
print_job_timer.pause(); |
||||
|
#if ENABLED(PARK_HEAD_ON_PAUSE) |
||||
|
enqueue_and_echo_commands_P(PSTR("M125")); |
||||
|
#endif |
||||
|
lcd_reset_status(); |
||||
|
} |
||||
|
|
||||
|
void lcd_sdcard_resume() { |
||||
|
#if ENABLED(PARK_HEAD_ON_PAUSE) |
||||
|
enqueue_and_echo_commands_P(PSTR("M24")); |
||||
|
#else |
||||
|
card.startFileprint(); |
||||
|
print_job_timer.start(); |
||||
|
#endif |
||||
|
lcd_reset_status(); |
||||
|
} |
||||
|
|
||||
|
void lcd_sdcard_stop() { |
||||
|
wait_for_heatup = wait_for_user = false; |
||||
|
card.abort_sd_printing = true; |
||||
|
lcd_setstatusPGM(PSTR(MSG_PRINT_ABORTED), -1); |
||||
|
lcd_return_to_status(); |
||||
|
} |
||||
|
|
||||
|
#if ENABLED(MENU_ADDAUTOSTART) |
||||
|
|
||||
|
void lcd_autostart_sd() { card.beginautostart(); } |
||||
|
|
||||
|
#endif |
||||
|
|
||||
|
#endif // SDSUPPORT
|
||||
|
|
||||
|
void menu_tune(); |
||||
|
void menu_movement(); |
||||
|
void menu_temperature(); |
||||
|
void menu_configuration(); |
||||
|
void _menu_user(); |
||||
|
void menu_temp_e0_filament_change(); |
||||
|
void menu_change_filament(); |
||||
|
void menu_info(); |
||||
|
void menu_led(); |
||||
|
|
||||
|
void menu_main() { |
||||
|
START_MENU(); |
||||
|
MENU_BACK(MSG_WATCH); |
||||
|
|
||||
|
#if ENABLED(SDSUPPORT) |
||||
|
if (card.cardOK) { |
||||
|
if (card.isFileOpen()) { |
||||
|
if (card.sdprinting) |
||||
|
MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause); |
||||
|
else |
||||
|
MENU_ITEM(function, MSG_RESUME_PRINT, lcd_sdcard_resume); |
||||
|
MENU_ITEM(function, MSG_STOP_PRINT, lcd_sdcard_stop); |
||||
|
} |
||||
|
else { |
||||
|
MENU_ITEM(submenu, MSG_CARD_MENU, menu_sdcard); |
||||
|
#if !PIN_EXISTS(SD_DETECT) |
||||
|
MENU_ITEM(gcode, MSG_CHANGE_SDCARD, PSTR("M21")); // SD-card changed by user
|
||||
|
#endif |
||||
|
} |
||||
|
} |
||||
|
else { |
||||
|
MENU_ITEM(submenu, MSG_NO_CARD, menu_sdcard); |
||||
|
#if !PIN_EXISTS(SD_DETECT) |
||||
|
MENU_ITEM(gcode, MSG_INIT_SDCARD, PSTR("M21")); // Manually initialize the SD-card via user interface
|
||||
|
#endif |
||||
|
} |
||||
|
#endif // SDSUPPORT
|
||||
|
|
||||
|
const bool busy = printer_busy(); |
||||
|
if (busy) |
||||
|
MENU_ITEM(submenu, MSG_TUNE, menu_tune); |
||||
|
else { |
||||
|
MENU_ITEM(submenu, MSG_MOTION, menu_movement); |
||||
|
MENU_ITEM(submenu, MSG_TEMPERATURE, menu_temperature); |
||||
|
} |
||||
|
|
||||
|
MENU_ITEM(submenu, MSG_CONFIGURATION, menu_configuration); |
||||
|
|
||||
|
#if ENABLED(CUSTOM_USER_MENUS) |
||||
|
MENU_ITEM(submenu, MSG_USER_MENU, _menu_user); |
||||
|
#endif |
||||
|
|
||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE) |
||||
|
#if E_STEPPERS == 1 && DISABLED(FILAMENT_LOAD_UNLOAD_GCODES) |
||||
|
if (thermalManager.targetHotEnoughToExtrude(active_extruder)) |
||||
|
MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600 B0")); |
||||
|
else |
||||
|
MENU_ITEM(submenu, MSG_FILAMENTCHANGE, menu_temp_e0_filament_change); |
||||
|
#else |
||||
|
MENU_ITEM(submenu, MSG_FILAMENTCHANGE, menu_change_filament); |
||||
|
#endif |
||||
|
#endif |
||||
|
|
||||
|
#if ENABLED(LCD_INFO_MENU) |
||||
|
MENU_ITEM(submenu, MSG_INFO_MENU, menu_info); |
||||
|
#endif |
||||
|
|
||||
|
#if ENABLED(LED_CONTROL_MENU) |
||||
|
MENU_ITEM(submenu, MSG_LED_CONTROL, menu_led); |
||||
|
#endif |
||||
|
|
||||
|
//
|
||||
|
// Switch power on/off
|
||||
|
//
|
||||
|
#if HAS_POWER_SWITCH |
||||
|
if (powersupply_on) |
||||
|
MENU_ITEM(gcode, MSG_SWITCH_PS_OFF, PSTR("M81")); |
||||
|
else |
||||
|
MENU_ITEM(gcode, MSG_SWITCH_PS_ON, PSTR("M80")); |
||||
|
#endif |
||||
|
|
||||
|
//
|
||||
|
// Autostart
|
||||
|
//
|
||||
|
#if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART) |
||||
|
if (!busy) |
||||
|
MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd); |
||||
|
#endif |
||||
|
|
||||
|
END_MENU(); |
||||
|
} |
||||
|
|
||||
|
#endif // HAS_LCD_MENU
|
Loading…
Reference in new issue