Marlin 2.0 for Flying Bear 4S/5
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

143 lines
5.0 KiB

/****************************
* endstop_state_screen.cpp *
****************************/
/****************************************************************************
* Written By Mark Pelletier 2017 - Aleph Objects, Inc. *
* Written By Marcio Teixeira 2018 - Aleph Objects, Inc. *
* *
* 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. *
* *
* To view a copy of the GNU General Public License, go to the following *
* location: <https://www.gnu.org/licenses/>. *
****************************************************************************/
#include "../config.h"
#include "../screens.h"
#ifdef FTDI_ENDSTOP_STATE_SCREEN
using namespace FTDI;
using namespace Theme;
using namespace ExtUI;
void EndstopStatesScreen::onEntry() {
BaseScreen::onEntry();
}
void EndstopStatesScreen::onExit() {
BaseScreen::onExit();
}
#define GRID_COLS 6
#define GRID_ROWS 7
#define PIN_BTN(X,Y,PIN,LABEL) button(BTN_POS(X,Y), BTN_SIZE(2,1), LABEL)
#define PIN_ENABLED(X,Y,LABEL,PIN,INV) cmd.enabled(1).colors(READ(PIN##_PIN) != INV ? action_btn : normal_btn).PIN_BTN(X,Y,PIN,LABEL);
#define PIN_DISABLED(X,Y,LABEL,PIN) cmd.enabled(0).PIN_BTN(X,Y,PIN,LABEL);
void EndstopStatesScreen::onRedraw(draw_mode_t) {
CommandProcessor cmd;
cmd.cmd(CLEAR_COLOR_RGB(bg_color))
.cmd(COLOR_RGB(bg_text_enabled))
.cmd(CLEAR(true,true,true))
.tag(0);
cmd.font(TERN(TOUCH_UI_PORTRAIT, font_large, font_medium))
.text(BTN_POS(1,1), BTN_SIZE(6,1), GET_TEXT_F(MSG_LCD_ENDSTOPS))
.font(font_tiny);
#if HAS_X_MAX
PIN_ENABLED (1, 2, PSTR(STR_X_MAX), X_MAX, X_MAX_ENDSTOP_INVERTING)
#else
PIN_DISABLED(1, 2, PSTR(STR_X_MAX), X_MAX)
#endif
#if HAS_Y_MAX
PIN_ENABLED (3, 2, PSTR(STR_Y_MAX), Y_MAX, Y_MAX_ENDSTOP_INVERTING)
#else
PIN_DISABLED(3, 2, PSTR(STR_Y_MAX), Y_MAX)
#endif
#if HAS_Z_MAX
PIN_ENABLED (5, 2, PSTR(STR_Z_MAX), Z_MAX, Z_MAX_ENDSTOP_INVERTING)
#else
PIN_DISABLED(5, 2, PSTR(STR_Z_MAX), Z_MAX)
#endif
#if HAS_X_MIN
PIN_ENABLED (1, 3, PSTR(STR_X_MIN), X_MIN, X_MIN_ENDSTOP_INVERTING)
#else
PIN_DISABLED(1, 3, PSTR(STR_X_MIN), X_MIN)
#endif
#if HAS_Y_MIN
PIN_ENABLED (3, 3, PSTR(STR_Y_MIN), Y_MIN, Y_MIN_ENDSTOP_INVERTING)
#else
PIN_DISABLED(3, 3, PSTR(STR_Y_MIN), Y_MIN)
#endif
#if HAS_Z_MIN
PIN_ENABLED (5, 3, PSTR(STR_Z_MIN), Z_MIN, Z_MIN_ENDSTOP_INVERTING)
#else
PIN_DISABLED(5, 3, PSTR(STR_Z_MIN), Z_MIN)
#endif
#if ENABLED(FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT)
PIN_ENABLED (1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT, FIL_RUNOUT1_STATE)
#else
PIN_DISABLED(1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT)
#endif
#if BOTH(HAS_MULTI_EXTRUDER, FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT2)
PIN_ENABLED (3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2, FIL_RUNOUT2_STATE)
#else
PIN_DISABLED(3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2)
#endif
#if PIN_EXISTS(Z_MIN_PROBE)
PIN_ENABLED (5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE, Z_MIN_PROBE_ENDSTOP_INVERTING)
#else
PIN_DISABLED(5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE)
#endif
#if HAS_SOFTWARE_ENDSTOPS
#undef EDGE_R
#define EDGE_R 30
cmd.cmd(COLOR_RGB(bg_text_enabled))
.font(font_small)
.text (BTN_POS(1,5), BTN_SIZE(3,1), GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS), OPT_RIGHTX | OPT_CENTERY)
.colors(ui_toggle)
.tag(2).toggle2(BTN_POS(4,5), BTN_SIZE(3,1), GET_TEXT_F(MSG_NO), GET_TEXT_F(MSG_YES), getSoftEndstopState());
#undef EDGE_R
#define EDGE_R 0
#endif
cmd.font(font_medium)
.colors(action_btn)
.tag(1).button(BTN_POS(1,7), BTN_SIZE(6,1), GET_TEXT_F(MSG_BUTTON_DONE));
}
bool EndstopStatesScreen::onTouchEnd(uint8_t tag) {
switch (tag) {
case 1: GOTO_PREVIOUS(); break;
#if HAS_SOFTWARE_ENDSTOPS
case 2: setSoftEndstopState(!getSoftEndstopState());
#endif
default:
return false;
}
return true;
}
void EndstopStatesScreen::onIdle() {
constexpr uint32_t DIAGNOSTICS_UPDATE_INTERVAL = 100;
if (refresh_timer.elapsed(DIAGNOSTICS_UPDATE_INTERVAL)) {
onRefresh();
refresh_timer.start();
reset_menu_timeout();
}
BaseScreen::onIdle();
}
#endif // FTDI_ENDSTOP_STATE_SCREEN