|
|
@ -214,21 +214,21 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
|
|
|
|
* START_SCREEN generates the init code for a screen function
|
|
|
|
* START_SCREEN generates the init code for a screen function
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* encoderLine is the position based on the encoder
|
|
|
|
* encoderLine is the position based on the encoder
|
|
|
|
* currentMenuViewOffset is the top menu line to display
|
|
|
|
* encoderTopLine is the top menu line to display
|
|
|
|
* _drawLineNr is the index of the LCD line (0-3)
|
|
|
|
* _lcdLineNr is the index of the LCD line (e.g., 0-3)
|
|
|
|
* _lineNr is the menu item to draw and process
|
|
|
|
* _menuLineNr is the menu item to draw and process
|
|
|
|
* _menuItemNr is the index of each MENU_ITEM
|
|
|
|
* _thisItemNr is the index of each MENU_ITEM or STATIC_ITEM
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
#define _START_SCREEN(CODE) do { \
|
|
|
|
#define _START_SCREEN(CODE) \
|
|
|
|
ENCODER_DIRECTION_MENUS(); \
|
|
|
|
ENCODER_DIRECTION_MENUS(); \
|
|
|
|
encoderRateMultiplierEnabled = false; \
|
|
|
|
encoderRateMultiplierEnabled = false; \
|
|
|
|
if (encoderPosition > 0x8000) encoderPosition = 0; \
|
|
|
|
if (encoderPosition > 0x8000) encoderPosition = 0; \
|
|
|
|
uint8_t encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM; \
|
|
|
|
int8_t encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM; \
|
|
|
|
NOMORE(currentMenuViewOffset, encoderLine); \
|
|
|
|
NOMORE(encoderTopLine, encoderLine); \
|
|
|
|
uint8_t _lineNr = currentMenuViewOffset, _menuItemNr; \
|
|
|
|
int8_t _menuLineNr = encoderTopLine, _thisItemNr; \
|
|
|
|
CODE; \
|
|
|
|
CODE; \
|
|
|
|
for (uint8_t _drawLineNr = 0; _drawLineNr < LCD_HEIGHT; _drawLineNr++, _lineNr++) { \
|
|
|
|
for (int8_t _lcdLineNr = 0; _lcdLineNr < LCD_HEIGHT; _lcdLineNr++, _menuLineNr++) { \
|
|
|
|
_menuItemNr = 0;
|
|
|
|
_thisItemNr = 0;
|
|
|
|
|
|
|
|
|
|
|
|
#define START_SCREEN() _START_SCREEN(0)
|
|
|
|
#define START_SCREEN() _START_SCREEN(0)
|
|
|
|
|
|
|
|
|
|
|
@ -260,49 +260,71 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
|
|
|
|
* menu_action_setting_edit_int3(PSTR(MSG_SPEED), &feedrate_multiplier, 10, 999)
|
|
|
|
* menu_action_setting_edit_int3(PSTR(MSG_SPEED), &feedrate_multiplier, 10, 999)
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
#define _MENU_ITEM_PART_1(type, label, args...) \
|
|
|
|
#define _MENU_ITEM_PART_1(TYPE, LABEL, ARGS...) \
|
|
|
|
if (_menuItemNr == _lineNr) { \
|
|
|
|
if (_menuLineNr == _thisItemNr) { \
|
|
|
|
if (lcdDrawUpdate) \
|
|
|
|
if (lcdDrawUpdate) \
|
|
|
|
lcd_implementation_drawmenu_ ## type(encoderLine == _menuItemNr, _drawLineNr, PSTR(label), ## args); \
|
|
|
|
lcd_implementation_drawmenu_ ## TYPE(encoderLine == _thisItemNr, _lcdLineNr, PSTR(LABEL), ## ARGS); \
|
|
|
|
if (wasClicked && encoderLine == _menuItemNr) { \
|
|
|
|
if (wasClicked && encoderLine == _thisItemNr) { \
|
|
|
|
lcd_quick_feedback()
|
|
|
|
lcd_quick_feedback()
|
|
|
|
|
|
|
|
|
|
|
|
#define _MENU_ITEM_PART_2(type, args...) \
|
|
|
|
#define _MENU_ITEM_PART_2(TYPE, ARGS...) \
|
|
|
|
menu_action_ ## type(args); \
|
|
|
|
menu_action_ ## TYPE(ARGS); \
|
|
|
|
return; \
|
|
|
|
return; \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
_menuItemNr++
|
|
|
|
_thisItemNr++
|
|
|
|
|
|
|
|
|
|
|
|
#define MENU_ITEM(type, label, args...) do { \
|
|
|
|
#define MENU_ITEM(TYPE, LABEL, ARGS...) do { \
|
|
|
|
_MENU_ITEM_PART_1(type, label, ## args); \
|
|
|
|
_MENU_ITEM_PART_1(TYPE, LABEL, ## ARGS); \
|
|
|
|
_MENU_ITEM_PART_2(type, ## args); \
|
|
|
|
_MENU_ITEM_PART_2(TYPE, ## ARGS); \
|
|
|
|
} while(0)
|
|
|
|
} while(0)
|
|
|
|
|
|
|
|
|
|
|
|
// Used to print static text with no visible cursor.
|
|
|
|
// Used to print static text with no visible cursor.
|
|
|
|
#define STATIC_ITEM(label, args...) \
|
|
|
|
#define STATIC_ITEM(LABEL, ARGS...) \
|
|
|
|
if (_menuItemNr == _lineNr) { \
|
|
|
|
if (_menuLineNr == _thisItemNr) { \
|
|
|
|
if (encoderLine == _menuItemNr && _menuItemNr < LCD_HEIGHT - 1) \
|
|
|
|
if (encoderLine == _thisItemNr && _thisItemNr < LCD_HEIGHT - 1) { \
|
|
|
|
encoderPosition += ENCODER_STEPS_PER_MENU_ITEM; \
|
|
|
|
encoderPosition += ENCODER_STEPS_PER_MENU_ITEM; \
|
|
|
|
|
|
|
|
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; \
|
|
|
|
|
|
|
|
} \
|
|
|
|
if (lcdDrawUpdate) \
|
|
|
|
if (lcdDrawUpdate) \
|
|
|
|
lcd_implementation_drawmenu_static(_drawLineNr, PSTR(label), ## args); \
|
|
|
|
lcd_implementation_drawmenu_static(_lcdLineNr, PSTR(LABEL), ## ARGS); \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
_menuItemNr++
|
|
|
|
_thisItemNr++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* END_SCREEN Closing code for a screen having only static items.
|
|
|
|
|
|
|
|
* Do simplified scrolling of the entire screen.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* END_MENU Closing code for a screen with menu items.
|
|
|
|
|
|
|
|
* Scroll as-needed to keep the selected line in view.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* At this point _thisItemNr equals the total number of items.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Simple-scroll by using encoderLine as encoderTopLine
|
|
|
|
#define END_SCREEN() \
|
|
|
|
#define END_SCREEN() \
|
|
|
|
if (encoderLine >= _menuItemNr) { \
|
|
|
|
|
|
|
|
encoderPosition = _menuItemNr * (ENCODER_STEPS_PER_MENU_ITEM) - 1; \
|
|
|
|
|
|
|
|
encoderLine = _menuItemNr - 1; \
|
|
|
|
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
if (encoderLine >= currentMenuViewOffset + LCD_HEIGHT) { \
|
|
|
|
NOMORE(encoderLine, _thisItemNr - LCD_HEIGHT); \
|
|
|
|
currentMenuViewOffset = encoderLine - (LCD_HEIGHT) + 1; \
|
|
|
|
NOLESS(encoderLine, 0); \
|
|
|
|
|
|
|
|
encoderPosition = encoderLine * (ENCODER_STEPS_PER_MENU_ITEM); \
|
|
|
|
|
|
|
|
if (encoderTopLine != encoderLine) { \
|
|
|
|
|
|
|
|
encoderTopLine = encoderLine; \
|
|
|
|
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; \
|
|
|
|
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; \
|
|
|
|
_lineNr = currentMenuViewOffset - 1; \
|
|
|
|
}
|
|
|
|
_drawLineNr = -1; \
|
|
|
|
|
|
|
|
} \
|
|
|
|
|
|
|
|
} } while(0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define END_MENU() END_SCREEN()
|
|
|
|
// Scroll through menu items, scrolling as-needed to stay in view
|
|
|
|
|
|
|
|
#define END_MENU() \
|
|
|
|
|
|
|
|
} \
|
|
|
|
|
|
|
|
if (encoderLine >= _thisItemNr) { \
|
|
|
|
|
|
|
|
encoderLine = _thisItemNr - 1; \
|
|
|
|
|
|
|
|
encoderPosition = encoderLine * (ENCODER_STEPS_PER_MENU_ITEM); \
|
|
|
|
|
|
|
|
} \
|
|
|
|
|
|
|
|
if (encoderLine >= encoderTopLine + LCD_HEIGHT) { \
|
|
|
|
|
|
|
|
encoderTopLine = encoderLine - (LCD_HEIGHT - 1); \
|
|
|
|
|
|
|
|
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; \
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(ENCODER_RATE_MULTIPLIER)
|
|
|
|
#if ENABLED(ENCODER_RATE_MULTIPLIER)
|
|
|
|
|
|
|
|
|
|
|
@ -320,7 +342,7 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
|
|
|
|
|
|
|
|
|
|
|
|
#endif //ENCODER_RATE_MULTIPLIER
|
|
|
|
#endif //ENCODER_RATE_MULTIPLIER
|
|
|
|
|
|
|
|
|
|
|
|
#define MENU_ITEM_DUMMY() do { _menuItemNr++; } while(0)
|
|
|
|
#define MENU_ITEM_DUMMY() do { _thisItemNr++; } while(0)
|
|
|
|
#define MENU_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label), ## args)
|
|
|
|
#define MENU_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label), ## args)
|
|
|
|
#define MENU_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label), ## args)
|
|
|
|
#define MENU_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label), ## args)
|
|
|
|
#if ENABLED(ENCODER_RATE_MULTIPLIER)
|
|
|
|
#if ENABLED(ENCODER_RATE_MULTIPLIER)
|
|
|
@ -340,7 +362,7 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
|
|
|
|
#if ENABLED(LCD_HAS_SLOW_BUTTONS)
|
|
|
|
#if ENABLED(LCD_HAS_SLOW_BUTTONS)
|
|
|
|
volatile uint8_t slow_buttons; // Bits of the pressed buttons.
|
|
|
|
volatile uint8_t slow_buttons; // Bits of the pressed buttons.
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
uint8_t currentMenuViewOffset; /* scroll offset in the current menu */
|
|
|
|
int8_t encoderTopLine; /* scroll offset in the current menu */
|
|
|
|
millis_t next_button_update_ms;
|
|
|
|
millis_t next_button_update_ms;
|
|
|
|
uint8_t lastEncoderBits;
|
|
|
|
uint8_t lastEncoderBits;
|
|
|
|
uint32_t encoderPosition;
|
|
|
|
uint32_t encoderPosition;
|
|
|
@ -376,6 +398,7 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
|
|
|
|
if (currentScreen != screen) {
|
|
|
|
if (currentScreen != screen) {
|
|
|
|
currentScreen = screen;
|
|
|
|
currentScreen = screen;
|
|
|
|
lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
|
|
|
|
lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
|
|
|
|
|
|
|
|
encoderTopLine = 0;
|
|
|
|
#if ENABLED(NEWPANEL)
|
|
|
|
#if ENABLED(NEWPANEL)
|
|
|
|
encoderPosition = encoder;
|
|
|
|
encoderPosition = encoder;
|
|
|
|
if (feedback) lcd_quick_feedback();
|
|
|
|
if (feedback) lcd_quick_feedback();
|
|
|
@ -654,6 +677,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
long babysteps_done = 0;
|
|
|
|
long babysteps_done = 0;
|
|
|
|
|
|
|
|
|
|
|
|
static void _lcd_babystep(const AxisEnum axis, const char* msg) {
|
|
|
|
static void _lcd_babystep(const AxisEnum axis, const char* msg) {
|
|
|
|
|
|
|
|
if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; }
|
|
|
|
ENCODER_DIRECTION_NORMAL();
|
|
|
|
ENCODER_DIRECTION_NORMAL();
|
|
|
|
if (encoderPosition) {
|
|
|
|
if (encoderPosition) {
|
|
|
|
int babystep_increment = (int32_t)encoderPosition * BABYSTEP_MULTIPLICATOR;
|
|
|
|
int babystep_increment = (int32_t)encoderPosition * BABYSTEP_MULTIPLICATOR;
|
|
|
@ -666,7 +690,6 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
lcd_implementation_drawedit(msg, ftostr43sign(
|
|
|
|
lcd_implementation_drawedit(msg, ftostr43sign(
|
|
|
|
((1000 * babysteps_done) / planner.axis_steps_per_mm[axis]) * 0.001f
|
|
|
|
((1000 * babysteps_done) / planner.axis_steps_per_mm[axis]) * 0.001f
|
|
|
|
));
|
|
|
|
));
|
|
|
|
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(BABYSTEP_XY)
|
|
|
|
#if ENABLED(BABYSTEP_XY)
|
|
|
@ -1321,6 +1344,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
float move_menu_scale;
|
|
|
|
float move_menu_scale;
|
|
|
|
|
|
|
|
|
|
|
|
static void _lcd_move_xyz(const char* name, AxisEnum axis, float min, float max) {
|
|
|
|
static void _lcd_move_xyz(const char* name, AxisEnum axis, float min, float max) {
|
|
|
|
|
|
|
|
if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; }
|
|
|
|
ENCODER_DIRECTION_NORMAL();
|
|
|
|
ENCODER_DIRECTION_NORMAL();
|
|
|
|
if (encoderPosition) {
|
|
|
|
if (encoderPosition) {
|
|
|
|
refresh_cmd_timeout();
|
|
|
|
refresh_cmd_timeout();
|
|
|
@ -1332,7 +1356,6 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
|
|
|
|
lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (lcdDrawUpdate) lcd_implementation_drawedit(name, ftostr41sign(current_position[axis]));
|
|
|
|
if (lcdDrawUpdate) lcd_implementation_drawedit(name, ftostr41sign(current_position[axis]));
|
|
|
|
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#if ENABLED(DELTA)
|
|
|
|
#if ENABLED(DELTA)
|
|
|
|
static float delta_clip_radius_2 = (DELTA_PRINTABLE_RADIUS) * (DELTA_PRINTABLE_RADIUS);
|
|
|
|
static float delta_clip_radius_2 = (DELTA_PRINTABLE_RADIUS) * (DELTA_PRINTABLE_RADIUS);
|
|
|
@ -1349,6 +1372,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
int8_t eindex = -1
|
|
|
|
int8_t eindex = -1
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
|
|
|
|
if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; }
|
|
|
|
ENCODER_DIRECTION_NORMAL();
|
|
|
|
ENCODER_DIRECTION_NORMAL();
|
|
|
|
if (encoderPosition) {
|
|
|
|
if (encoderPosition) {
|
|
|
|
current_position[E_AXIS] += float((int32_t)encoderPosition) * move_menu_scale;
|
|
|
|
current_position[E_AXIS] += float((int32_t)encoderPosition) * move_menu_scale;
|
|
|
@ -1378,7 +1402,6 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
#endif //EXTRUDERS > 1
|
|
|
|
#endif //EXTRUDERS > 1
|
|
|
|
lcd_implementation_drawedit(pos_label, ftostr41sign(current_position[E_AXIS]));
|
|
|
|
lcd_implementation_drawedit(pos_label, ftostr41sign(current_position[E_AXIS]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
#if EXTRUDERS > 1
|
|
|
@ -1837,6 +1860,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
#if HAS_LCD_CONTRAST
|
|
|
|
#if HAS_LCD_CONTRAST
|
|
|
|
static void lcd_set_contrast() {
|
|
|
|
static void lcd_set_contrast() {
|
|
|
|
|
|
|
|
if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; }
|
|
|
|
ENCODER_DIRECTION_NORMAL();
|
|
|
|
ENCODER_DIRECTION_NORMAL();
|
|
|
|
if (encoderPosition) {
|
|
|
|
if (encoderPosition) {
|
|
|
|
set_lcd_contrast(lcd_contrast + encoderPosition);
|
|
|
|
set_lcd_contrast(lcd_contrast + encoderPosition);
|
|
|
@ -1852,7 +1876,6 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif // HAS_LCD_CONTRAST
|
|
|
|
#endif // HAS_LCD_CONTRAST
|
|
|
|
|
|
|
|
|
|
|
@ -1886,13 +1909,13 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
#if !PIN_EXISTS(SD_DETECT)
|
|
|
|
#if !PIN_EXISTS(SD_DETECT)
|
|
|
|
static void lcd_sd_refresh() {
|
|
|
|
static void lcd_sd_refresh() {
|
|
|
|
card.initsd();
|
|
|
|
card.initsd();
|
|
|
|
currentMenuViewOffset = 0;
|
|
|
|
encoderTopLine = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
static void lcd_sd_updir() {
|
|
|
|
static void lcd_sd_updir() {
|
|
|
|
card.updir();
|
|
|
|
card.updir();
|
|
|
|
currentMenuViewOffset = 0;
|
|
|
|
encoderTopLine = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -1917,7 +1940,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for (uint16_t i = 0; i < fileCnt; i++) {
|
|
|
|
for (uint16_t i = 0; i < fileCnt; i++) {
|
|
|
|
if (_menuItemNr == _lineNr) {
|
|
|
|
if (_menuLineNr == _thisItemNr) {
|
|
|
|
card.getfilename(
|
|
|
|
card.getfilename(
|
|
|
|
#if ENABLED(SDCARD_RATHERRECENTFIRST)
|
|
|
|
#if ENABLED(SDCARD_RATHERRECENTFIRST)
|
|
|
|
fileCnt-1 -
|
|
|
|
fileCnt-1 -
|
|
|
@ -1944,10 +1967,12 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
#if ENABLED(PRINTCOUNTER)
|
|
|
|
#if ENABLED(PRINTCOUNTER)
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* About Printer > Stastics submenu
|
|
|
|
* About Printer > Statistics submenu
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
static void lcd_info_stats_menu() {
|
|
|
|
static void lcd_info_stats_menu() {
|
|
|
|
|
|
|
|
if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; }
|
|
|
|
|
|
|
|
|
|
|
|
PrintCounter print_job_counter = PrintCounter();
|
|
|
|
PrintCounter print_job_counter = PrintCounter();
|
|
|
|
print_job_counter.loadStats();
|
|
|
|
print_job_counter.loadStats();
|
|
|
|
printStatistics stats = print_job_counter.getStats();
|
|
|
|
printStatistics stats = print_job_counter.getStats();
|
|
|
@ -1955,11 +1980,10 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
char printTime[6];
|
|
|
|
char printTime[6];
|
|
|
|
sprintf(printTime, "%02d:%02d", int(stats.printTime / 3600), int(stats.printTime / 60) % 60);
|
|
|
|
sprintf(printTime, "%02d:%02d", int(stats.printTime / 3600), int(stats.printTime / 60) % 60);
|
|
|
|
|
|
|
|
|
|
|
|
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
|
|
|
|
|
|
|
START_SCREEN();
|
|
|
|
START_SCREEN();
|
|
|
|
STATIC_ITEM(MSG_INFO_PRINT_COUNT ": ", itostr3left(stats.totalPrints)); // Print Count : 999
|
|
|
|
STATIC_ITEM(MSG_INFO_PRINT_COUNT ": ", false, false, itostr3left(stats.totalPrints)); // Print Count : 999
|
|
|
|
STATIC_ITEM(MSG_INFO_FINISHED_PRINTS ": ", itostr3left(stats.finishedPrints)); // Finished : 666
|
|
|
|
STATIC_ITEM(MSG_INFO_FINISHED_PRINTS ": ", false, false, itostr3left(stats.finishedPrints)); // Finished : 666
|
|
|
|
STATIC_ITEM(MSG_INFO_PRINT_TIME ": ", printTime); // Total Time : 12:34
|
|
|
|
STATIC_ITEM(MSG_INFO_PRINT_TIME ": ", false, false, printTime); // Total Time : 12:34
|
|
|
|
END_SCREEN();
|
|
|
|
END_SCREEN();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif // PRINTCOUNTER
|
|
|
|
#endif // PRINTCOUNTER
|
|
|
@ -1970,48 +1994,48 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
static void lcd_info_thermistors_menu() {
|
|
|
|
static void lcd_info_thermistors_menu() {
|
|
|
|
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
|
|
|
if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; }
|
|
|
|
START_SCREEN();
|
|
|
|
START_SCREEN();
|
|
|
|
#define THERMISTOR_ID TEMP_SENSOR_0
|
|
|
|
#define THERMISTOR_ID TEMP_SENSOR_0
|
|
|
|
#include "thermistornames.h"
|
|
|
|
#include "thermistornames.h"
|
|
|
|
STATIC_ITEM("T0: " THERMISTOR_NAME);
|
|
|
|
STATIC_ITEM("T0: " THERMISTOR_NAME, false, true);
|
|
|
|
STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_0_MINTEMP));
|
|
|
|
STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_0_MINTEMP), false);
|
|
|
|
STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_0_MAXTEMP));
|
|
|
|
STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_0_MAXTEMP), false);
|
|
|
|
|
|
|
|
|
|
|
|
#if TEMP_SENSOR_1 != 0
|
|
|
|
#if TEMP_SENSOR_1 != 0
|
|
|
|
#undef THERMISTOR_ID
|
|
|
|
#undef THERMISTOR_ID
|
|
|
|
#define THERMISTOR_ID TEMP_SENSOR_1
|
|
|
|
#define THERMISTOR_ID TEMP_SENSOR_1
|
|
|
|
#include "thermistornames.h"
|
|
|
|
#include "thermistornames.h"
|
|
|
|
STATIC_ITEM("T1: " THERMISTOR_NAME);
|
|
|
|
STATIC_ITEM("T1: " THERMISTOR_NAME, false, true);
|
|
|
|
STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_1_MINTEMP));
|
|
|
|
STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_1_MINTEMP), false);
|
|
|
|
STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_1_MAXTEMP));
|
|
|
|
STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_1_MAXTEMP), false);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if TEMP_SENSOR_2 != 0
|
|
|
|
#if TEMP_SENSOR_2 != 0
|
|
|
|
#undef THERMISTOR_ID
|
|
|
|
#undef THERMISTOR_ID
|
|
|
|
#define THERMISTOR_ID TEMP_SENSOR_2
|
|
|
|
#define THERMISTOR_ID TEMP_SENSOR_2
|
|
|
|
#include "thermistornames.h"
|
|
|
|
#include "thermistornames.h"
|
|
|
|
STATIC_ITEM("T2: " THERMISTOR_NAME);
|
|
|
|
STATIC_ITEM("T2: " THERMISTOR_NAME, false, true);
|
|
|
|
STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_2_MINTEMP));
|
|
|
|
STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_2_MINTEMP), false);
|
|
|
|
STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_2_MAXTEMP));
|
|
|
|
STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_2_MAXTEMP), false);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if TEMP_SENSOR_3 != 0
|
|
|
|
#if TEMP_SENSOR_3 != 0
|
|
|
|
#undef THERMISTOR_ID
|
|
|
|
#undef THERMISTOR_ID
|
|
|
|
#define THERMISTOR_ID TEMP_SENSOR_3
|
|
|
|
#define THERMISTOR_ID TEMP_SENSOR_3
|
|
|
|
#include "thermistornames.h"
|
|
|
|
#include "thermistornames.h"
|
|
|
|
STATIC_ITEM("T3: " THERMISTOR_NAME);
|
|
|
|
STATIC_ITEM("T3: " THERMISTOR_NAME, false, true);
|
|
|
|
STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_3_MINTEMP));
|
|
|
|
STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_3_MINTEMP), false);
|
|
|
|
STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_3_MAXTEMP));
|
|
|
|
STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_3_MAXTEMP), false);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if TEMP_SENSOR_BED != 0
|
|
|
|
#if TEMP_SENSOR_BED != 0
|
|
|
|
#undef THERMISTOR_ID
|
|
|
|
#undef THERMISTOR_ID
|
|
|
|
#define THERMISTOR_ID TEMP_SENSOR_BED
|
|
|
|
#define THERMISTOR_ID TEMP_SENSOR_BED
|
|
|
|
#include "thermistornames.h"
|
|
|
|
#include "thermistornames.h"
|
|
|
|
STATIC_ITEM("TBed:" THERMISTOR_NAME);
|
|
|
|
STATIC_ITEM("TBed:" THERMISTOR_NAME, false, true);
|
|
|
|
STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(BED_MINTEMP));
|
|
|
|
STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(BED_MINTEMP), false);
|
|
|
|
STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(BED_MAXTEMP));
|
|
|
|
STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(BED_MAXTEMP), false);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
END_SCREEN();
|
|
|
|
END_SCREEN();
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -2022,9 +2046,9 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
static void lcd_info_board_menu() {
|
|
|
|
static void lcd_info_board_menu() {
|
|
|
|
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
|
|
|
if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; }
|
|
|
|
START_SCREEN();
|
|
|
|
START_SCREEN();
|
|
|
|
STATIC_ITEM(BOARD_NAME); // MyPrinterController
|
|
|
|
STATIC_ITEM(BOARD_NAME, true, true); // MyPrinterController
|
|
|
|
STATIC_ITEM(MSG_INFO_BAUDRATE ": " STRINGIFY(BAUDRATE)); // Baud: 250000
|
|
|
|
STATIC_ITEM(MSG_INFO_BAUDRATE ": " STRINGIFY(BAUDRATE)); // Baud: 250000
|
|
|
|
STATIC_ITEM(MSG_INFO_PROTOCOL ": " PROTOCOL_VERSION); // Protocol: 1.0
|
|
|
|
STATIC_ITEM(MSG_INFO_PROTOCOL ": " PROTOCOL_VERSION); // Protocol: 1.0
|
|
|
|
#ifdef POWER_SUPPLY
|
|
|
|
#ifdef POWER_SUPPLY
|
|
|
@ -2043,9 +2067,9 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
static void lcd_info_printer_menu() {
|
|
|
|
static void lcd_info_printer_menu() {
|
|
|
|
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
|
|
|
if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; }
|
|
|
|
START_SCREEN();
|
|
|
|
START_SCREEN();
|
|
|
|
STATIC_ITEM(MSG_MARLIN); // Marlin
|
|
|
|
STATIC_ITEM(MSG_MARLIN, true, true); // Marlin
|
|
|
|
STATIC_ITEM(SHORT_BUILD_VERSION); // x.x.x-Branch
|
|
|
|
STATIC_ITEM(SHORT_BUILD_VERSION); // x.x.x-Branch
|
|
|
|
STATIC_ITEM(STRING_DISTRIBUTION_DATE); // YYYY-MM-DD HH:MM
|
|
|
|
STATIC_ITEM(STRING_DISTRIBUTION_DATE); // YYYY-MM-DD HH:MM
|
|
|
|
STATIC_ITEM(MACHINE_NAME); // My3DPrinter
|
|
|
|
STATIC_ITEM(MACHINE_NAME); // My3DPrinter
|
|
|
@ -2087,7 +2111,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
static void lcd_filament_change_option_menu() {
|
|
|
|
static void lcd_filament_change_option_menu() {
|
|
|
|
START_MENU();
|
|
|
|
START_MENU();
|
|
|
|
#if LCD_HEIGHT > 2
|
|
|
|
#if LCD_HEIGHT > 2
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_OPTION_HEADER);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_OPTION_HEADER, true, false);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_filament_change_resume_print);
|
|
|
|
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_filament_change_resume_print);
|
|
|
|
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_EXTRUDE, lcd_filament_change_extrude_more);
|
|
|
|
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_EXTRUDE, lcd_filament_change_extrude_more);
|
|
|
@ -2096,7 +2120,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
|
|
|
|
|
|
|
|
static void lcd_filament_change_init_message() {
|
|
|
|
static void lcd_filament_change_init_message() {
|
|
|
|
START_SCREEN();
|
|
|
|
START_SCREEN();
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_1);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_1);
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_INIT_2
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_INIT_2
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_2);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_2);
|
|
|
@ -2109,7 +2133,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
|
|
|
|
|
|
|
|
static void lcd_filament_change_unload_message() {
|
|
|
|
static void lcd_filament_change_unload_message() {
|
|
|
|
START_SCREEN();
|
|
|
|
START_SCREEN();
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_1);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_1);
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_UNLOAD_2
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_UNLOAD_2
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_2);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_2);
|
|
|
@ -2122,7 +2146,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
|
|
|
|
|
|
|
|
static void lcd_filament_change_insert_message() {
|
|
|
|
static void lcd_filament_change_insert_message() {
|
|
|
|
START_SCREEN();
|
|
|
|
START_SCREEN();
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_1);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_1);
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_INSERT_2
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_INSERT_2
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_2);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_2);
|
|
|
@ -2135,7 +2159,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
|
|
|
|
|
|
|
|
static void lcd_filament_change_load_message() {
|
|
|
|
static void lcd_filament_change_load_message() {
|
|
|
|
START_SCREEN();
|
|
|
|
START_SCREEN();
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_1);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_1);
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_LOAD_2
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_LOAD_2
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_2);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_2);
|
|
|
@ -2148,7 +2172,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
|
|
|
|
|
|
|
|
static void lcd_filament_change_extrude_message() {
|
|
|
|
static void lcd_filament_change_extrude_message() {
|
|
|
|
START_SCREEN();
|
|
|
|
START_SCREEN();
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_1);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_1);
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_EXTRUDE_2
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_EXTRUDE_2
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_2);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_2);
|
|
|
@ -2161,7 +2185,7 @@ void kill_screen(const char* lcd_msg) {
|
|
|
|
|
|
|
|
|
|
|
|
static void lcd_filament_change_resume_message() {
|
|
|
|
static void lcd_filament_change_resume_message() {
|
|
|
|
START_SCREEN();
|
|
|
|
START_SCREEN();
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_1);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_1);
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_RESUME_2
|
|
|
|
#ifdef MSG_FILAMENT_CHANGE_RESUME_2
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_2);
|
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_2);
|
|
|
|