Major refactoring
Fixes all the issues I've found so far. Roughly 60B of flash saved. Need to double check that later.
This commit is contained in:
parent
d89e6de040
commit
a7e9ccfb57
|
|
@ -9455,11 +9455,11 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s
|
||||||
// handle longpress
|
// handle longpress
|
||||||
if(lcd_longpress_trigger)
|
if(lcd_longpress_trigger)
|
||||||
{
|
{
|
||||||
|
lcd_consume_click(); // Reset trigger to prevent recursion
|
||||||
// long press is not possible in modal mode, wait until ready
|
// long press is not possible in modal mode, wait until ready
|
||||||
if (lcd_longpress_func && lcd_update_enabled)
|
if (lcd_longpress_func && lcd_update_enabled)
|
||||||
{
|
{
|
||||||
lcd_longpress_func();
|
lcd_longpress_func();
|
||||||
lcd_longpress_trigger = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -637,7 +637,6 @@ uint8_t lcd_encoder_bits = 0;
|
||||||
static int8_t lcd_encoder_diff = 0;
|
static int8_t lcd_encoder_diff = 0;
|
||||||
|
|
||||||
uint8_t lcd_buttons = 0;
|
uint8_t lcd_buttons = 0;
|
||||||
uint8_t lcd_button_pressed = 0;
|
|
||||||
uint8_t lcd_update_enabled = 1;
|
uint8_t lcd_update_enabled = 1;
|
||||||
static bool lcd_backlight_wake_trigger; // Flag set by interrupt when the knob is pressed or rotated
|
static bool lcd_backlight_wake_trigger; // Flag set by interrupt when the knob is pressed or rotated
|
||||||
|
|
||||||
|
|
@ -689,7 +688,6 @@ Sound_MakeSound(e_SOUND_TYPE_ButtonEcho);
|
||||||
void lcd_quick_feedback(void)
|
void lcd_quick_feedback(void)
|
||||||
{
|
{
|
||||||
lcd_draw_update = 2;
|
lcd_draw_update = 2;
|
||||||
lcd_button_pressed = false;
|
|
||||||
lcd_beeper_quick_feedback();
|
lcd_beeper_quick_feedback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -708,6 +706,11 @@ void lcd_update(uint8_t lcdDrawUpdateOverride)
|
||||||
} else {
|
} else {
|
||||||
Sound_MakeSound(e_SOUND_TYPE_ButtonEcho);
|
Sound_MakeSound(e_SOUND_TYPE_ButtonEcho);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lcd_draw_update == 0) {
|
||||||
|
// Update LCD rendering at minimum
|
||||||
|
lcd_draw_update = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
backlight_update();
|
backlight_update();
|
||||||
|
|
@ -750,16 +753,12 @@ bool lcd_longpress_trigger = 0;
|
||||||
void lcd_buttons_update(void)
|
void lcd_buttons_update(void)
|
||||||
{
|
{
|
||||||
static uint8_t lcd_long_press_active = 0;
|
static uint8_t lcd_long_press_active = 0;
|
||||||
uint8_t newbutton = 0;
|
static uint8_t lcd_button_pressed = 0;
|
||||||
if (READ(BTN_EN1) == 0) newbutton |= EN_A;
|
|
||||||
if (READ(BTN_EN2) == 0) newbutton |= EN_B;
|
|
||||||
|
|
||||||
if (READ(BTN_ENC) == 0)
|
if (READ(BTN_ENC) == 0)
|
||||||
{ //button is pressed
|
{ //button is pressed
|
||||||
if (!buttonBlanking.running() || buttonBlanking.expired(BUTTON_BLANKING_TIME)) {
|
if (buttonBlanking.expired_cont(BUTTON_BLANKING_TIME)) {
|
||||||
buttonBlanking.start();
|
buttonBlanking.start();
|
||||||
safetyTimer.start();
|
safetyTimer.start();
|
||||||
lcd_backlight_wake_trigger = true; // flag event, knob pressed
|
|
||||||
if ((lcd_button_pressed == 0) && (lcd_long_press_active == 0))
|
if ((lcd_button_pressed == 0) && (lcd_long_press_active == 0))
|
||||||
{
|
{
|
||||||
longPressTimer.start();
|
longPressTimer.start();
|
||||||
|
|
@ -776,22 +775,20 @@ void lcd_buttons_update(void)
|
||||||
{ //button not pressed
|
{ //button not pressed
|
||||||
if (lcd_button_pressed)
|
if (lcd_button_pressed)
|
||||||
{ //button was released
|
{ //button was released
|
||||||
buttonBlanking.start();
|
lcd_button_pressed = 0; // Reset to prevent double triggering
|
||||||
if (lcd_long_press_active == 0)
|
if (!lcd_long_press_active)
|
||||||
{ //button released before long press gets activated
|
{ //button released before long press gets activated
|
||||||
newbutton |= EN_C;
|
lcd_buttons |= EN_C; // This flag is reset when the event is consumed
|
||||||
}
|
}
|
||||||
//else if (menu_menu == lcd_move_z) lcd_quick_feedback();
|
lcd_backlight_wake_trigger = true; // flag event, knob pressed
|
||||||
//lcd_button_pressed is set back to false via lcd_quick_feedback function
|
lcd_long_press_active = 0;
|
||||||
}
|
}
|
||||||
lcd_long_press_active = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lcd_buttons = newbutton;
|
|
||||||
//manage encoder rotation
|
//manage encoder rotation
|
||||||
uint8_t enc = 0;
|
uint8_t enc = 0;
|
||||||
if (lcd_buttons & EN_A) enc |= B01;
|
if (READ(BTN_EN1) == 0) enc |= B01;
|
||||||
if (lcd_buttons & EN_B) enc |= B10;
|
if (READ(BTN_EN2) == 0) enc |= B10;
|
||||||
if (enc != lcd_encoder_bits)
|
if (enc != lcd_encoder_bits)
|
||||||
{
|
{
|
||||||
switch (enc)
|
switch (enc)
|
||||||
|
|
@ -825,8 +822,8 @@ void lcd_buttons_update(void)
|
||||||
if (abs(lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) {
|
if (abs(lcd_encoder_diff) >= ENCODER_PULSES_PER_STEP) {
|
||||||
lcd_backlight_wake_trigger = true; // flag event, knob rotated
|
lcd_backlight_wake_trigger = true; // flag event, knob rotated
|
||||||
}
|
}
|
||||||
|
lcd_encoder_bits = enc;
|
||||||
}
|
}
|
||||||
lcd_encoder_bits = enc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,8 +105,6 @@ extern uint8_t lcd_encoder_bits;
|
||||||
//the last checked lcd_buttons in a bit array.
|
//the last checked lcd_buttons in a bit array.
|
||||||
extern uint8_t lcd_buttons;
|
extern uint8_t lcd_buttons;
|
||||||
|
|
||||||
extern uint8_t lcd_button_pressed;
|
|
||||||
|
|
||||||
extern uint8_t lcd_update_enabled;
|
extern uint8_t lcd_update_enabled;
|
||||||
|
|
||||||
extern LongTimer lcd_timeoutToStatus;
|
extern LongTimer lcd_timeoutToStatus;
|
||||||
|
|
@ -212,8 +210,7 @@ extern void lcd_set_custom_characters_nextpage(void);
|
||||||
//! @brief Consume click and longpress event
|
//! @brief Consume click and longpress event
|
||||||
inline void lcd_consume_click()
|
inline void lcd_consume_click()
|
||||||
{
|
{
|
||||||
lcd_button_pressed = 0;
|
lcd_buttons = 0;
|
||||||
lcd_buttons &= 0xff^EN_C;
|
|
||||||
lcd_longpress_trigger = 0;
|
lcd_longpress_trigger = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ void menu_data_reset(void)
|
||||||
memset(&menu_data, 0, sizeof(menu_data));
|
memset(&menu_data, 0, sizeof(menu_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_goto(menu_func_t menu, const uint32_t encoder, const bool feedback, bool reset_menu_state)
|
void menu_goto(menu_func_t menu, const uint32_t encoder, bool reset_menu_state, const bool feedback)
|
||||||
{
|
{
|
||||||
CRITICAL_SECTION_START;
|
CRITICAL_SECTION_START;
|
||||||
if (menu_menu != menu)
|
if (menu_menu != menu)
|
||||||
|
|
@ -53,11 +53,10 @@ void menu_goto(menu_func_t menu, const uint32_t encoder, const bool feedback, bo
|
||||||
menu_menu = menu;
|
menu_menu = menu;
|
||||||
lcd_encoder = encoder;
|
lcd_encoder = encoder;
|
||||||
menu_top = 0; //reset menu view. Needed if menu_back() is called from deep inside a menu, such as Support
|
menu_top = 0; //reset menu view. Needed if menu_back() is called from deep inside a menu, such as Support
|
||||||
|
lcd_draw_update = 2; // Full LCD re-draw
|
||||||
CRITICAL_SECTION_END;
|
CRITICAL_SECTION_END;
|
||||||
if (reset_menu_state)
|
if (feedback) lcd_beeper_quick_feedback();
|
||||||
menu_data_reset();
|
if (reset_menu_state) menu_data_reset();
|
||||||
|
|
||||||
if (feedback) lcd_quick_feedback();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CRITICAL_SECTION_END;
|
CRITICAL_SECTION_END;
|
||||||
|
|
@ -74,7 +73,7 @@ void menu_start(void)
|
||||||
if (lcd_encoder < menu_top)
|
if (lcd_encoder < menu_top)
|
||||||
menu_top = lcd_encoder;
|
menu_top = lcd_encoder;
|
||||||
menu_line = menu_top;
|
menu_line = menu_top;
|
||||||
menu_clicked = LCD_CLICKED;
|
menu_clicked = lcd_clicked(); // Consume click event
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_end(void)
|
void menu_end(void)
|
||||||
|
|
@ -96,7 +95,7 @@ void menu_end(void)
|
||||||
void menu_back(uint8_t nLevel)
|
void menu_back(uint8_t nLevel)
|
||||||
{
|
{
|
||||||
menu_depth = ((menu_depth > nLevel) ? (menu_depth - nLevel) : 0);
|
menu_depth = ((menu_depth > nLevel) ? (menu_depth - nLevel) : 0);
|
||||||
menu_goto(menu_stack[menu_depth].menu, menu_stack[menu_depth].position, true, true);
|
menu_goto(menu_stack[menu_depth].menu, menu_stack[menu_depth].position, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_back(void)
|
void menu_back(void)
|
||||||
|
|
@ -109,7 +108,7 @@ void menu_back_no_reset(void)
|
||||||
if (menu_depth > 0)
|
if (menu_depth > 0)
|
||||||
{
|
{
|
||||||
menu_depth--;
|
menu_depth--;
|
||||||
menu_goto(menu_stack[menu_depth].menu, menu_stack[menu_depth].position, true, false);
|
menu_goto(menu_stack[menu_depth].menu, menu_stack[menu_depth].position, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -119,29 +118,29 @@ void menu_back_if_clicked(void)
|
||||||
menu_back();
|
menu_back();
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_submenu(menu_func_t submenu)
|
void menu_submenu(menu_func_t submenu, const bool feedback)
|
||||||
{
|
{
|
||||||
if (menu_depth < MENU_DEPTH_MAX)
|
if (menu_depth < MENU_DEPTH_MAX)
|
||||||
{
|
{
|
||||||
menu_stack[menu_depth].menu = menu_menu;
|
menu_stack[menu_depth].menu = menu_menu;
|
||||||
menu_stack[menu_depth++].position = lcd_encoder;
|
menu_stack[menu_depth++].position = lcd_encoder;
|
||||||
menu_goto(submenu, 0, true, true);
|
menu_goto(submenu, 0, true, feedback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_submenu_no_reset(menu_func_t submenu)
|
void menu_submenu_no_reset(menu_func_t submenu, const bool feedback)
|
||||||
{
|
{
|
||||||
if (menu_depth < MENU_DEPTH_MAX)
|
if (menu_depth < MENU_DEPTH_MAX)
|
||||||
{
|
{
|
||||||
menu_stack[menu_depth].menu = menu_menu;
|
menu_stack[menu_depth].menu = menu_menu;
|
||||||
menu_stack[menu_depth++].position = lcd_encoder;
|
menu_stack[menu_depth++].position = lcd_encoder;
|
||||||
menu_goto(submenu, 0, true, false);
|
menu_goto(submenu, 0, false, feedback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t menu_item_ret(void)
|
uint8_t menu_item_ret(void)
|
||||||
{
|
{
|
||||||
lcd_quick_feedback();
|
lcd_draw_update = 2;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -294,8 +293,6 @@ uint8_t __attribute__((noinline)) menu_item_function_E(const Sheet &sheet, menu_
|
||||||
if (lcd_draw_update) menu_draw_item_select_sheet_E(' ', sheet);
|
if (lcd_draw_update) menu_draw_item_select_sheet_E(' ', sheet);
|
||||||
if (menu_clicked && (lcd_encoder == menu_item))
|
if (menu_clicked && (lcd_encoder == menu_item))
|
||||||
{
|
{
|
||||||
menu_clicked = false;
|
|
||||||
lcd_consume_click();
|
|
||||||
lcd_update_enabled = 0;
|
lcd_update_enabled = 0;
|
||||||
if (func) func();
|
if (func) func();
|
||||||
lcd_update_enabled = 1;
|
lcd_update_enabled = 1;
|
||||||
|
|
@ -332,8 +329,6 @@ uint8_t menu_item_function_P(const char* str, menu_func_t func)
|
||||||
if (lcd_draw_update) menu_draw_item_puts_P(' ', str);
|
if (lcd_draw_update) menu_draw_item_puts_P(' ', str);
|
||||||
if (menu_clicked && (lcd_encoder == menu_item))
|
if (menu_clicked && (lcd_encoder == menu_item))
|
||||||
{
|
{
|
||||||
menu_clicked = false;
|
|
||||||
lcd_consume_click();
|
|
||||||
lcd_update_enabled = 0;
|
lcd_update_enabled = 0;
|
||||||
if (func) func();
|
if (func) func();
|
||||||
lcd_update_enabled = 1;
|
lcd_update_enabled = 1;
|
||||||
|
|
@ -360,8 +355,6 @@ uint8_t menu_item_function_P(const char* str, char number, void (*func)(uint8_t)
|
||||||
if (lcd_draw_update) menu_draw_item_puts_P(' ', str, number);
|
if (lcd_draw_update) menu_draw_item_puts_P(' ', str, number);
|
||||||
if (menu_clicked && (lcd_encoder == menu_item))
|
if (menu_clicked && (lcd_encoder == menu_item))
|
||||||
{
|
{
|
||||||
menu_clicked = false;
|
|
||||||
lcd_consume_click();
|
|
||||||
lcd_update_enabled = 0;
|
lcd_update_enabled = 0;
|
||||||
if (func) func(fn_par);
|
if (func) func(fn_par);
|
||||||
lcd_update_enabled = 1;
|
lcd_update_enabled = 1;
|
||||||
|
|
@ -386,8 +379,6 @@ uint8_t menu_item_toggle_P(const char* str, const char* toggle, menu_func_t func
|
||||||
}
|
}
|
||||||
else // do the actual toggling
|
else // do the actual toggling
|
||||||
{
|
{
|
||||||
menu_clicked = false;
|
|
||||||
lcd_consume_click();
|
|
||||||
lcd_update_enabled = 0;
|
lcd_update_enabled = 0;
|
||||||
if (func) func();
|
if (func) func();
|
||||||
lcd_update_enabled = 1;
|
lcd_update_enabled = 1;
|
||||||
|
|
@ -499,7 +490,7 @@ static void _menu_edit_P(void)
|
||||||
lcd_set_cursor(0, 1);
|
lcd_set_cursor(0, 1);
|
||||||
menu_draw_P<T>(' ', _md->editLabel, (int)lcd_encoder);
|
menu_draw_P<T>(' ', _md->editLabel, (int)lcd_encoder);
|
||||||
}
|
}
|
||||||
if (LCD_CLICKED)
|
if (lcd_clicked())
|
||||||
{
|
{
|
||||||
*((T)(_md->editValue)) = lcd_encoder;
|
*((T)(_md->editValue)) = lcd_encoder;
|
||||||
menu_back_no_reset();
|
menu_back_no_reset();
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ extern menu_func_t menu_menu;
|
||||||
|
|
||||||
extern void menu_data_reset(void);
|
extern void menu_data_reset(void);
|
||||||
|
|
||||||
extern void menu_goto(menu_func_t menu, const uint32_t encoder, const bool feedback, bool reset_menu_state);
|
extern void menu_goto(menu_func_t menu, const uint32_t encoder, bool reset_menu_state, const bool feedback=false);
|
||||||
|
|
||||||
#define MENU_BEGIN() menu_start(); for(menu_row = 0; menu_row < LCD_HEIGHT; menu_row++, menu_line++) { menu_item = 0;
|
#define MENU_BEGIN() menu_start(); for(menu_row = 0; menu_row < LCD_HEIGHT; menu_row++, menu_line++) { menu_item = 0;
|
||||||
void menu_start(void);
|
void menu_start(void);
|
||||||
|
|
@ -78,8 +78,8 @@ extern void menu_back(uint8_t nLevel);
|
||||||
|
|
||||||
extern void menu_back_if_clicked(void);
|
extern void menu_back_if_clicked(void);
|
||||||
|
|
||||||
extern void menu_submenu(menu_func_t submenu);
|
extern void menu_submenu(menu_func_t submenu, const bool feedback=false);
|
||||||
extern void menu_submenu_no_reset(menu_func_t submenu);
|
extern void menu_submenu_no_reset(menu_func_t submenu, const bool feedback=false);
|
||||||
|
|
||||||
extern uint8_t menu_item_ret(void);
|
extern uint8_t menu_item_ret(void);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -296,8 +296,6 @@ uint8_t menu_item_sddir(const char* str_fn, char* str_fnl)
|
||||||
}
|
}
|
||||||
if (menu_clicked && (lcd_encoder == menu_item))
|
if (menu_clicked && (lcd_encoder == menu_item))
|
||||||
{
|
{
|
||||||
menu_clicked = false;
|
|
||||||
lcd_consume_click();
|
|
||||||
lcd_update_enabled = false;
|
lcd_update_enabled = false;
|
||||||
menu_action_sddirectory(str_fn);
|
menu_action_sddirectory(str_fn);
|
||||||
lcd_update_enabled = true;
|
lcd_update_enabled = true;
|
||||||
|
|
@ -318,8 +316,6 @@ static uint8_t menu_item_sdfile(const char* str_fn, char* str_fnl)
|
||||||
}
|
}
|
||||||
if (menu_clicked && (lcd_encoder == menu_item))
|
if (menu_clicked && (lcd_encoder == menu_item))
|
||||||
{
|
{
|
||||||
menu_clicked = false;
|
|
||||||
lcd_consume_click();
|
|
||||||
lcd_update_enabled = false;
|
lcd_update_enabled = false;
|
||||||
menu_action_sdfile(str_fn);
|
menu_action_sdfile(str_fn);
|
||||||
lcd_update_enabled = true;
|
lcd_update_enabled = true;
|
||||||
|
|
@ -762,7 +758,7 @@ void lcd_status_screen() // NOT static due to using ins
|
||||||
lcd_commands();
|
lcd_commands();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool current_click = LCD_CLICKED;
|
bool current_click = lcd_clicked();
|
||||||
|
|
||||||
if (ignore_click)
|
if (ignore_click)
|
||||||
{
|
{
|
||||||
|
|
@ -775,7 +771,7 @@ void lcd_status_screen() // NOT static due to using ins
|
||||||
}
|
}
|
||||||
else if (current_click)
|
else if (current_click)
|
||||||
{
|
{
|
||||||
lcd_quick_feedback();
|
lcd_draw_update = 2;
|
||||||
wait_for_unclick = true;
|
wait_for_unclick = true;
|
||||||
current_click = false;
|
current_click = false;
|
||||||
}
|
}
|
||||||
|
|
@ -852,7 +848,7 @@ void lcd_commands()
|
||||||
case 10:
|
case 10:
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
menu_depth = 0;
|
menu_depth = 0;
|
||||||
menu_submenu(lcd_babystep_z);
|
menu_submenu(lcd_babystep_z, true);
|
||||||
lay1cal_intro_line(extraPurgeNeeded, layer_height, extrusion_width);
|
lay1cal_intro_line(extraPurgeNeeded, layer_height, extrusion_width);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
|
|
@ -1018,7 +1014,7 @@ void lcd_commands()
|
||||||
void lcd_return_to_status()
|
void lcd_return_to_status()
|
||||||
{
|
{
|
||||||
lcd_refresh(); // to maybe revive the LCD if static electricity killed it.
|
lcd_refresh(); // to maybe revive the LCD if static electricity killed it.
|
||||||
menu_goto(lcd_status_screen, 0, false, true);
|
menu_goto(lcd_status_screen, 0, true);
|
||||||
menu_depth = 0;
|
menu_depth = 0;
|
||||||
eFilamentAction = FilamentAction::None; // i.e. non-autoLoad
|
eFilamentAction = FilamentAction::None; // i.e. non-autoLoad
|
||||||
}
|
}
|
||||||
|
|
@ -1896,7 +1892,7 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
|
||||||
case FilamentAction::Load:
|
case FilamentAction::Load:
|
||||||
case FilamentAction::AutoLoad:
|
case FilamentAction::AutoLoad:
|
||||||
case FilamentAction::UnLoad:
|
case FilamentAction::UnLoad:
|
||||||
if (bFilamentWaitingFlag) menu_submenu(mFilamentPrompt);
|
if (bFilamentWaitingFlag) menu_submenu(mFilamentPrompt, true);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nLevel = bFilamentPreheatState ? 1 : 2;
|
nLevel = bFilamentPreheatState ? 1 : 2;
|
||||||
|
|
@ -1915,13 +1911,13 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
|
||||||
nLevel = bFilamentPreheatState ? 1 : 2;
|
nLevel = bFilamentPreheatState ? 1 : 2;
|
||||||
bFilamentAction = true;
|
bFilamentAction = true;
|
||||||
menu_back(nLevel);
|
menu_back(nLevel);
|
||||||
menu_submenu(mmu_load_to_nozzle_menu);
|
menu_submenu(mmu_load_to_nozzle_menu, true);
|
||||||
break;
|
break;
|
||||||
case FilamentAction::MmuLoadingTest:
|
case FilamentAction::MmuLoadingTest:
|
||||||
nLevel = bFilamentPreheatState ? 1 : 2;
|
nLevel = bFilamentPreheatState ? 1 : 2;
|
||||||
bFilamentAction = true;
|
bFilamentAction = true;
|
||||||
menu_back(nLevel);
|
menu_back(nLevel);
|
||||||
menu_submenu(mmu_loading_test_menu);
|
menu_submenu(mmu_loading_test_menu, true);
|
||||||
break;
|
break;
|
||||||
case FilamentAction::MmuUnLoad:
|
case FilamentAction::MmuUnLoad:
|
||||||
nLevel = bFilamentPreheatState ? 1 : 2;
|
nLevel = bFilamentPreheatState ? 1 : 2;
|
||||||
|
|
@ -1933,14 +1929,14 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
|
||||||
nLevel = bFilamentPreheatState ? 1 : 2;
|
nLevel = bFilamentPreheatState ? 1 : 2;
|
||||||
bFilamentAction = true;
|
bFilamentAction = true;
|
||||||
menu_back(nLevel);
|
menu_back(nLevel);
|
||||||
menu_submenu(mmu_fil_eject_menu);
|
menu_submenu(mmu_fil_eject_menu, true);
|
||||||
break;
|
break;
|
||||||
case FilamentAction::MmuCut:
|
case FilamentAction::MmuCut:
|
||||||
#ifdef MMU_HAS_CUTTER
|
#ifdef MMU_HAS_CUTTER
|
||||||
nLevel=bFilamentPreheatState?1:2;
|
nLevel=bFilamentPreheatState?1:2;
|
||||||
bFilamentAction=true;
|
bFilamentAction=true;
|
||||||
menu_back(nLevel);
|
menu_back(nLevel);
|
||||||
menu_submenu(mmu_cut_filament_menu);
|
menu_submenu(mmu_cut_filament_menu, true);
|
||||||
#endif //MMU_HAS_CUTTER
|
#endif //MMU_HAS_CUTTER
|
||||||
break;
|
break;
|
||||||
case FilamentAction::None:
|
case FilamentAction::None:
|
||||||
|
|
@ -2418,7 +2414,7 @@ static void _lcd_move(const char *name, uint8_t axis, int min, int max)
|
||||||
menu_draw_float31(name, current_position[axis]);
|
menu_draw_float31(name, current_position[axis]);
|
||||||
}
|
}
|
||||||
if (menu_leaving || LCD_CLICKED) (void)enable_endstops(_md->endstopsEnabledPrevious);
|
if (menu_leaving || LCD_CLICKED) (void)enable_endstops(_md->endstopsEnabledPrevious);
|
||||||
if (LCD_CLICKED) menu_back();
|
menu_back_if_clicked();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -2444,7 +2440,7 @@ void lcd_move_e()
|
||||||
// the implementation of menu_draw_float31
|
// the implementation of menu_draw_float31
|
||||||
menu_draw_float31(PSTR("Extruder:"), current_position[E_AXIS]);
|
menu_draw_float31(PSTR("Extruder:"), current_position[E_AXIS]);
|
||||||
}
|
}
|
||||||
if (LCD_CLICKED) menu_back();
|
menu_back_if_clicked();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -2651,7 +2647,7 @@ static void lcd_babystep_z()
|
||||||
#endif //PINDA_THERMISTOR
|
#endif //PINDA_THERMISTOR
|
||||||
calibration_status_set(CALIBRATION_STATUS_LIVE_ADJUST);
|
calibration_status_set(CALIBRATION_STATUS_LIVE_ADJUST);
|
||||||
}
|
}
|
||||||
if (LCD_CLICKED) menu_back();
|
menu_back_if_clicked();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -3263,7 +3259,7 @@ static void lcd_show_end_stops() {
|
||||||
|
|
||||||
static void menu_show_end_stops() {
|
static void menu_show_end_stops() {
|
||||||
lcd_show_end_stops();
|
lcd_show_end_stops();
|
||||||
if (LCD_CLICKED) menu_back();
|
menu_back_if_clicked();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_diag_show_end_stops()
|
void lcd_diag_show_end_stops()
|
||||||
|
|
@ -3626,7 +3622,7 @@ void lcd_first_layer_calibration_reset()
|
||||||
static_assert(sizeof(menu_data)>= sizeof(MenuData),"_menu_data_t doesn't fit into menu_data");
|
static_assert(sizeof(menu_data)>= sizeof(MenuData),"_menu_data_t doesn't fit into menu_data");
|
||||||
MenuData* menuData = (MenuData*)&(menu_data[0]);
|
MenuData* menuData = (MenuData*)&(menu_data[0]);
|
||||||
|
|
||||||
if(LCD_CLICKED || !eeprom_is_sheet_initialized(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))) ||
|
if(lcd_clicked() || !eeprom_is_sheet_initialized(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))) ||
|
||||||
(!calibration_status_get(CALIBRATION_STATUS_LIVE_ADJUST)) ||
|
(!calibration_status_get(CALIBRATION_STATUS_LIVE_ADJUST)) ||
|
||||||
(0 == static_cast<int16_t>(eeprom_read_word(reinterpret_cast<uint16_t*>
|
(0 == static_cast<int16_t>(eeprom_read_word(reinterpret_cast<uint16_t*>
|
||||||
(&EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)))))
|
(&EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)))))
|
||||||
|
|
@ -3635,7 +3631,7 @@ void lcd_first_layer_calibration_reset()
|
||||||
{
|
{
|
||||||
eeprom_update_word(reinterpret_cast<uint16_t*>(&EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset), 0xffff);
|
eeprom_update_word(reinterpret_cast<uint16_t*>(&EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset), 0xffff);
|
||||||
}
|
}
|
||||||
menu_goto(lcd_v2_calibration,0,true,true);
|
menu_goto(lcd_v2_calibration, 0, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lcd_encoder > 0)
|
if (lcd_encoder > 0)
|
||||||
|
|
@ -3961,7 +3957,7 @@ void lcd_wizard(WizState state)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case S::Preheat:
|
case S::Preheat:
|
||||||
menu_goto(lcd_preheat_menu,0,false,true);
|
menu_goto(lcd_preheat_menu, 0, true);
|
||||||
lcd_show_fullscreen_message_and_wait_P(_i("Select nozzle preheat temperature which matches your material."));////MSG_SEL_PREHEAT_TEMP c=20 r=6
|
lcd_show_fullscreen_message_and_wait_P(_i("Select nozzle preheat temperature which matches your material."));////MSG_SEL_PREHEAT_TEMP c=20 r=6
|
||||||
end = true; // Leave wizard temporarily for lcd_preheat_menu
|
end = true; // Leave wizard temporarily for lcd_preheat_menu
|
||||||
break;
|
break;
|
||||||
|
|
@ -3976,7 +3972,7 @@ void lcd_wizard(WizState state)
|
||||||
break;
|
break;
|
||||||
case S::Lay1CalCold:
|
case S::Lay1CalCold:
|
||||||
wizard_lay1cal_message(true);
|
wizard_lay1cal_message(true);
|
||||||
menu_goto(lcd_v2_calibration,0,false,true);
|
menu_goto(lcd_v2_calibration, 0, true);
|
||||||
end = true; // Leave wizard temporarily for lcd_v2_calibration
|
end = true; // Leave wizard temporarily for lcd_v2_calibration
|
||||||
break;
|
break;
|
||||||
case S::Lay1CalHot:
|
case S::Lay1CalHot:
|
||||||
|
|
@ -4816,36 +4812,36 @@ char reset_menu() {
|
||||||
delay_keep_alive(0);
|
delay_keep_alive(0);
|
||||||
|
|
||||||
if (lcd_encoder) {
|
if (lcd_encoder) {
|
||||||
if (lcd_encoder > 0) {
|
if (lcd_encoder > 0) {
|
||||||
cursor_pos--;
|
cursor_pos--;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lcd_encoder < 0) {
|
if (lcd_encoder < 0) {
|
||||||
cursor_pos++;
|
cursor_pos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cursor_pos > 3) {
|
if (cursor_pos > 3) {
|
||||||
cursor_pos = 3;
|
cursor_pos = 3;
|
||||||
Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
|
Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
|
||||||
if (first < (uint8_t)(sizeof(item) / sizeof(item[0])) - 4) {
|
if (first < (uint8_t)(sizeof(item) / sizeof(item[0])) - 4) {
|
||||||
first++;
|
first++;
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cursor_pos < 0) {
|
if (cursor_pos < 0) {
|
||||||
cursor_pos = 0;
|
cursor_pos = 0;
|
||||||
Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
|
Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
|
||||||
if (first > 0) {
|
if (first > 0) {
|
||||||
first--;
|
first--;
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lcd_puts_at_P(0, 0, PSTR(" \n \n \n "));
|
lcd_puts_at_P(0, 0, PSTR(" \n \n \n "));
|
||||||
lcd_set_cursor(0, cursor_pos);
|
lcd_set_cursor(0, cursor_pos);
|
||||||
lcd_putc('>');
|
lcd_putc('>');
|
||||||
lcd_encoder = 0;
|
lcd_encoder = 0;
|
||||||
_delay(100);
|
_delay(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lcd_clicked()) {
|
if (lcd_clicked()) {
|
||||||
|
|
@ -5455,7 +5451,7 @@ static void lcd_advance_edit_K(void)
|
||||||
lcd_set_cursor(0, 1);
|
lcd_set_cursor(0, 1);
|
||||||
lcd_advance_draw_K(' ', 0.01 * lcd_encoder);
|
lcd_advance_draw_K(' ', 0.01 * lcd_encoder);
|
||||||
}
|
}
|
||||||
if (LCD_CLICKED)
|
if (lcd_clicked())
|
||||||
{
|
{
|
||||||
extruder_advance_K = 0.01 * lcd_encoder;
|
extruder_advance_K = 0.01 * lcd_encoder;
|
||||||
menu_back_no_reset();
|
menu_back_no_reset();
|
||||||
|
|
@ -5834,7 +5830,7 @@ void lcd_sdcard_menu()
|
||||||
_md->lcd_scrollTimer.start();
|
_md->lcd_scrollTimer.start();
|
||||||
lcd_draw_update = 1; //forces last load before switching to scrolling.
|
lcd_draw_update = 1; //forces last load before switching to scrolling.
|
||||||
}
|
}
|
||||||
if (lcd_draw_update == 0 && !LCD_CLICKED)
|
if (lcd_draw_update == 0 && !lcd_clicked())
|
||||||
return; // nothing to do (so don't thrash the SD card)
|
return; // nothing to do (so don't thrash the SD card)
|
||||||
|
|
||||||
_md->row = -1; // assume that no SD file/dir is currently selected. Once they are rendered, it will be changed to the correct row for the _scrolling state.
|
_md->row = -1; // assume that no SD file/dir is currently selected. Once they are rendered, it will be changed to the correct row for the _scrolling state.
|
||||||
|
|
@ -5885,7 +5881,7 @@ void lcd_sdcard_menu()
|
||||||
} break;
|
} break;
|
||||||
case _scrolling: //scrolling filename
|
case _scrolling: //scrolling filename
|
||||||
{
|
{
|
||||||
const bool rewindFlag = LCD_CLICKED || lcd_draw_update; //flag that says whether the menu should return to _standard state.
|
const bool rewindFlag = lcd_clicked() || lcd_draw_update; //flag that says whether the menu should return to _standard state.
|
||||||
|
|
||||||
if (_md->scrollPointer == NULL)
|
if (_md->scrollPointer == NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -5898,7 +5894,7 @@ void lcd_sdcard_menu()
|
||||||
_md->scrollPointer = (card.longFilename[0] == '\0') ? card.filename : card.longFilename;
|
_md->scrollPointer = (card.longFilename[0] == '\0') ? card.filename : card.longFilename;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rewindFlag == 1)
|
if (rewindFlag)
|
||||||
_md->offset = 0; //redraw once again from the beginning.
|
_md->offset = 0; //redraw once again from the beginning.
|
||||||
if (_md->lcd_scrollTimer.expired(300) || rewindFlag)
|
if (_md->lcd_scrollTimer.expired(300) || rewindFlag)
|
||||||
{
|
{
|
||||||
|
|
@ -6925,7 +6921,6 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite,
|
||||||
|
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||||
|
|
||||||
lcd_button_pressed = false;
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (lcd_encoder) {
|
if (lcd_encoder) {
|
||||||
|
|
@ -6944,7 +6939,7 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite,
|
||||||
lcd_putc_at(0, 3, '>');
|
lcd_putc_at(0, 3, '>');
|
||||||
lcd_puts_at_P(1, 3, _T(MSG_SELFTEST_FAN_NO));
|
lcd_puts_at_P(1, 3, _T(MSG_SELFTEST_FAN_NO));
|
||||||
}
|
}
|
||||||
lcd_encoder = 0;
|
lcd_encoder = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -7360,13 +7355,13 @@ void menu_lcd_longpress_func(void)
|
||||||
if (homing_flag || mesh_bed_leveling_flag || menu_menu == lcd_babystep_z || menu_menu == lcd_move_z || menu_block_mask != MENU_BLOCK_NONE || Stopped)
|
if (homing_flag || mesh_bed_leveling_flag || menu_menu == lcd_babystep_z || menu_menu == lcd_move_z || menu_block_mask != MENU_BLOCK_NONE || Stopped)
|
||||||
{
|
{
|
||||||
// disable longpress during re-entry, while homing, calibration or if a serious error
|
// disable longpress during re-entry, while homing, calibration or if a serious error
|
||||||
lcd_quick_feedback();
|
lcd_draw_update = 2;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (menu_menu == lcd_hw_setup_menu)
|
if (menu_menu == lcd_hw_setup_menu)
|
||||||
{
|
{
|
||||||
// only toggle the experimental menu visibility flag
|
// only toggle the experimental menu visibility flag
|
||||||
lcd_quick_feedback();
|
lcd_draw_update = 2;
|
||||||
eeprom_toggle((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY);
|
eeprom_toggle((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -7452,7 +7447,7 @@ void menu_lcd_lcdupdate_func(void)
|
||||||
}
|
}
|
||||||
LCD_MESSAGERPGM(MSG_WELCOME);
|
LCD_MESSAGERPGM(MSG_WELCOME);
|
||||||
bMain=false; // flag (i.e. 'fake parameter') for 'lcd_sdcard_menu()' function
|
bMain=false; // flag (i.e. 'fake parameter') for 'lcd_sdcard_menu()' function
|
||||||
menu_submenu(lcd_sdcard_menu);
|
menu_submenu(lcd_sdcard_menu, true);
|
||||||
lcd_timeoutToStatus.start();
|
lcd_timeoutToStatus.start();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -7464,14 +7459,7 @@ void menu_lcd_lcdupdate_func(void)
|
||||||
#endif//CARDINSERTED
|
#endif//CARDINSERTED
|
||||||
if (lcd_next_update_millis < _millis())
|
if (lcd_next_update_millis < _millis())
|
||||||
{
|
{
|
||||||
if (lcd_encoder)
|
if (lcd_draw_update) {
|
||||||
{
|
|
||||||
if (lcd_draw_update == 0) lcd_draw_update = 1;
|
|
||||||
lcd_timeoutToStatus.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (LCD_CLICKED)
|
|
||||||
{
|
|
||||||
lcd_timeoutToStatus.start();
|
lcd_timeoutToStatus.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue