Remove menu code in favor of simplicity
This change needs to be approved of course due to it affecting UI The affect UI is only one menu lcd_settings_linearity_correction_menu I doubt many users are using this menu except very advanced users. I propose we delete the variant of menu_draw_P which was used for uint8_t but renders them as floats. Instead treat uint8_t same as int16_t i.e. just render integers. Keeping it simple :) Solve our fanSpeed problem. Change in memory: Flash: -140 bytes SRAM: -2 bytes
This commit is contained in:
parent
876ea6c228
commit
c754c8dd5f
|
|
@ -14,8 +14,8 @@
|
|||
#define BL_FLASH_DELAY_MS 25
|
||||
|
||||
bool backlightSupport = 0; //only if it's true will any of the settings be visible to the user
|
||||
int16_t backlightLevel_HIGH = 0;
|
||||
int16_t backlightLevel_LOW = 0;
|
||||
uint8_t backlightLevel_HIGH = 0;
|
||||
uint8_t backlightLevel_LOW = 0;
|
||||
uint8_t backlightMode = BACKLIGHT_MODE_BRIGHT;
|
||||
int16_t backlightTimer_period = 10;
|
||||
LongTimer backlightTimer;
|
||||
|
|
@ -62,8 +62,8 @@ void backlight_wake(const uint8_t flashNo)
|
|||
|
||||
void backlight_save() //saves all backlight data to eeprom.
|
||||
{
|
||||
eeprom_update_byte((uint8_t *)EEPROM_BACKLIGHT_LEVEL_HIGH, (uint8_t)backlightLevel_HIGH);
|
||||
eeprom_update_byte((uint8_t *)EEPROM_BACKLIGHT_LEVEL_LOW, (uint8_t)backlightLevel_LOW);
|
||||
eeprom_update_byte((uint8_t *)EEPROM_BACKLIGHT_LEVEL_HIGH, backlightLevel_HIGH);
|
||||
eeprom_update_byte((uint8_t *)EEPROM_BACKLIGHT_LEVEL_LOW, backlightLevel_LOW);
|
||||
eeprom_update_byte((uint8_t *)EEPROM_BACKLIGHT_MODE, backlightMode);
|
||||
eeprom_update_word((uint16_t *)EEPROM_BACKLIGHT_TIMEOUT, backlightTimer_period);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ enum Backlight_Mode
|
|||
BACKLIGHT_MODE_AUTO = 2,
|
||||
};
|
||||
|
||||
extern int16_t backlightLevel_HIGH;
|
||||
extern int16_t backlightLevel_LOW;
|
||||
extern uint8_t backlightLevel_HIGH;
|
||||
extern uint8_t backlightLevel_LOW;
|
||||
extern uint8_t backlightMode;
|
||||
extern bool backlightSupport;
|
||||
extern int16_t backlightTimer_period;
|
||||
|
|
|
|||
|
|
@ -162,12 +162,10 @@ static void menu_draw_toggle_puts_P(const char* str, const char* toggle, const u
|
|||
//xxxxxcba
|
||||
//a = selection mark. If it's set(1), then '>' will be used as the first character on the line. Else leave blank
|
||||
//b = toggle string is from progmem
|
||||
//c = do not set cursor at all. Must be handled externally.
|
||||
uint8_t is_progmem = settings & 0x02;
|
||||
const char eol = (toggle == NULL) ? LCD_STR_ARROW_RIGHT[0] : ' ';
|
||||
if (toggle == NULL) toggle = _T(MSG_NA);
|
||||
uint8_t len = 4 + (is_progmem ? strlen_P(toggle) : strlen(toggle));
|
||||
if (!(settings & 0x04)) lcd_set_cursor(0, menu_row);
|
||||
lcd_putc((settings & 0x01) ? '>' : ' ');
|
||||
lcd_print_pad_P(str, LCD_WIDTH - len);
|
||||
lcd_putc('[');
|
||||
|
|
@ -411,11 +409,10 @@ const char menu_fmt_float31[] PROGMEM = "%-12.12S%+8.1f";
|
|||
|
||||
const char menu_fmt_float13[] PROGMEM = "%c%-13.13S%+5.3f";
|
||||
|
||||
template<typename T>
|
||||
static void menu_draw_P(char chr, const char* str, int16_t val);
|
||||
|
||||
template<>
|
||||
void menu_draw_P<int16_t*>(char chr, const char* str, int16_t val)
|
||||
|
||||
template <typename T>
|
||||
void menu_draw_P(char chr, const char* str, T val)
|
||||
{
|
||||
// The LCD row position is controlled externally. We may only modify the column here
|
||||
lcd_putc(chr);
|
||||
|
|
@ -434,20 +431,8 @@ void menu_draw_P<int16_t*>(char chr, const char* str, int16_t val)
|
|||
lcd_print(val);
|
||||
}
|
||||
|
||||
template<>
|
||||
void menu_draw_P<uint8_t*>(char chr, const char* str, int16_t val)
|
||||
{
|
||||
menu_data_edit_t* _md = (menu_data_edit_t*)&(menu_data[0]);
|
||||
float factor = 1.0f + static_cast<float>(val) / 1000.0f;
|
||||
if (val <= _md->minEditValue)
|
||||
{
|
||||
menu_draw_toggle_puts_P(str, _T(MSG_OFF), 0x04 | 0x02 | (chr=='>'));
|
||||
}
|
||||
else
|
||||
{
|
||||
lcd_printf_P(menu_fmt_float13, chr, str, factor);
|
||||
}
|
||||
}
|
||||
template void menu_draw_P<int16_t>(char chr, const char* str, int16_t val);
|
||||
template void menu_draw_P<uint8_t>(char chr, const char* str, uint8_t val);
|
||||
|
||||
//! @brief Draw up to 10 chars of text and a float number in format from +0.0 to +12345.0. The increased range is necessary
|
||||
//! for displaying large values of extruder positions, which caused text overflow in the previous implementation.
|
||||
|
|
@ -488,7 +473,7 @@ static void _menu_edit_P(void)
|
|||
if (lcd_encoder < _md->minEditValue) lcd_encoder = _md->minEditValue;
|
||||
else if (lcd_encoder > _md->maxEditValue) lcd_encoder = _md->maxEditValue;
|
||||
lcd_set_cursor(0, 1);
|
||||
menu_draw_P<T>(' ', _md->editLabel, (int)lcd_encoder);
|
||||
menu_draw_P(' ', _md->editLabel, (int)lcd_encoder);
|
||||
}
|
||||
if (lcd_clicked())
|
||||
{
|
||||
|
|
@ -506,7 +491,7 @@ uint8_t menu_item_edit_P(const char* str, T pval, int16_t min_val, int16_t max_v
|
|||
if (lcd_draw_update)
|
||||
{
|
||||
lcd_set_cursor(0, menu_row);
|
||||
menu_draw_P<T>(menu_selection_mark(), str, *pval);
|
||||
menu_draw_P(menu_selection_mark(), str, *pval);
|
||||
}
|
||||
if (menu_clicked && (lcd_encoder == menu_item))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -146,6 +146,9 @@ extern void menu_format_sheet_E(const Sheet &sheet_E, SheetFormatBuffer &buffer)
|
|||
template <typename T>
|
||||
extern uint8_t menu_item_edit_P(const char* str, T pval, int16_t min_val, int16_t max_val);
|
||||
|
||||
template <typename T>
|
||||
extern void menu_draw_P(char chr, const char* str, T val);
|
||||
|
||||
extern void menu_progressbar_init(uint16_t total, const char* title);
|
||||
extern void menu_progressbar_update(uint16_t newVal);
|
||||
extern void menu_progressbar_finish(void);
|
||||
|
|
|
|||
|
|
@ -5508,7 +5508,7 @@ static void lcd_tune_menu()
|
|||
MENU_ITEM_EDIT_int3_P(_T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10);//3
|
||||
MENU_ITEM_EDIT_int3_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 10);
|
||||
|
||||
MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), (int16_t*)&fanSpeed, 0, 255);//5
|
||||
MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255);//5
|
||||
MENU_ITEM_EDIT_int3_P(_i("Flow"), &extrudemultiply, 10, 999);//6////MSG_FLOW c=15
|
||||
#ifdef LA_LIVE_K
|
||||
MENU_ITEM_EDIT_advance_K();//7
|
||||
|
|
@ -5633,7 +5633,7 @@ static void lcd_control_temperature_menu()
|
|||
#if TEMP_SENSOR_BED != 0
|
||||
MENU_ITEM_EDIT_int3_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 3);
|
||||
#endif
|
||||
MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), (int16_t*)&fanSpeed, 0, 255);
|
||||
MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255);
|
||||
#if defined AUTOTEMP && (TEMP_SENSOR_0 != 0)
|
||||
//MENU_ITEM_EDIT removed, following code must be redesigned if AUTOTEMP enabled
|
||||
MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &autotemp_enabled);
|
||||
|
|
|
|||
Loading…
Reference in New Issue