diff --git a/Firmware/backlight.cpp b/Firmware/backlight.cpp index ef7206d26..ae9122160 100644 --- a/Firmware/backlight.cpp +++ b/Firmware/backlight.cpp @@ -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); } diff --git a/Firmware/backlight.h b/Firmware/backlight.h index d9fdd0ad1..7d1300b62 100644 --- a/Firmware/backlight.h +++ b/Firmware/backlight.h @@ -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; diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp index de80ae7e6..f6614e588 100755 --- a/Firmware/menu.cpp +++ b/Firmware/menu.cpp @@ -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 -static void menu_draw_P(char chr, const char* str, int16_t val); -template<> -void menu_draw_P(char chr, const char* str, int16_t val) + +template +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(char chr, const char* str, int16_t val) lcd_print(val); } -template<> -void menu_draw_P(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(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(char chr, const char* str, int16_t val); +template void menu_draw_P(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(' ', _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(menu_selection_mark(), str, *pval); + menu_draw_P(menu_selection_mark(), str, *pval); } if (menu_clicked && (lcd_encoder == menu_item)) { diff --git a/Firmware/menu.h b/Firmware/menu.h index e8a348d3b..3c34fdb15 100755 --- a/Firmware/menu.h +++ b/Firmware/menu.h @@ -146,6 +146,9 @@ extern void menu_format_sheet_E(const Sheet &sheet_E, SheetFormatBuffer &buffer) template extern uint8_t menu_item_edit_P(const char* str, T pval, int16_t min_val, int16_t max_val); +template +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); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 6b00b344d..18010fceb 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -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);