Merge pull request #3494 from wavexx/lcd_temperature_jumping

Jump to PLA temps in LCD temperature settings when starting from zero
This commit is contained in:
3d-gussner 2023-08-02 14:21:53 +02:00 committed by GitHub
commit b1da06859c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 73 additions and 21 deletions

View File

@ -461,12 +461,21 @@ void menu_draw_float13(const char* str, float val)
lcd_printf_P(menu_fmt_float13, ' ', str, val); lcd_printf_P(menu_fmt_float13, ' ', str, val);
} }
template <typename T> static void _menu_edit_P()
static void _menu_edit_P(void)
{ {
menu_data_edit_t* _md = (menu_data_edit_t*)&(menu_data[0]); menu_data_edit_t* _md = (menu_data_edit_t*)&(menu_data[0]);
if (lcd_draw_update) if (lcd_draw_update)
{ {
// handle initial value jumping
if (_md->minJumpValue && lcd_encoder) {
if (lcd_encoder > 0 && _md->currentValue == _md->minEditValue) {
_md->currentValue = _md->minJumpValue;
lcd_encoder = 0;
}
// disable after first use and/or if the initial value is not minEditValue
_md->minJumpValue = 0;
}
_md->currentValue += lcd_encoder; _md->currentValue += lcd_encoder;
lcd_encoder = 0; // Consume knob rotation event lcd_encoder = 0; // Consume knob rotation event
@ -477,30 +486,36 @@ static void _menu_edit_P(void)
} }
if (lcd_clicked()) if (lcd_clicked())
{ {
*((T)(_md->editValue)) = _md->currentValue; if (_md->editValueBits == 8)
*((uint8_t*)(_md->editValuePtr)) = _md->currentValue;
else
*((int16_t*)(_md->editValuePtr)) = _md->currentValue;
menu_back_no_reset(); menu_back_no_reset();
} }
} }
template <typename T> void menu_item_edit_P(const char* str, void* pval, uint8_t pbits, int16_t min_val, int16_t max_val, int16_t jmp_val)
void menu_item_edit_P(const char* str, T pval, int16_t min_val, int16_t max_val)
{ {
menu_data_edit_t* _md = (menu_data_edit_t*)&(menu_data[0]); menu_data_edit_t* _md = (menu_data_edit_t*)&(menu_data[0]);
if (menu_item == menu_line) if (menu_item == menu_line)
{ {
int16_t cur_val = (pbits == 8 ? *((uint8_t*)pval) : *((int16_t*)pval));
if (lcd_draw_update) if (lcd_draw_update)
{ {
lcd_set_cursor(0, menu_row); lcd_set_cursor(0, menu_row);
menu_draw_P(menu_selection_mark(), str, *pval); menu_draw_P(menu_selection_mark(), str, cur_val);
} }
if (menu_clicked && (lcd_encoder == menu_item)) if (menu_clicked && (lcd_encoder == menu_item))
{ {
menu_submenu_no_reset(_menu_edit_P<T>); menu_submenu_no_reset(_menu_edit_P);
_md->editLabel = str; _md->editLabel = str;
_md->editValue = pval; _md->editValuePtr = pval;
_md->currentValue = *pval; _md->editValueBits = pbits;
_md->currentValue = cur_val;
_md->minEditValue = min_val; _md->minEditValue = min_val;
_md->maxEditValue = max_val; _md->maxEditValue = max_val;
_md->minJumpValue = jmp_val;
menu_item_ret(); menu_item_ret();
return; return;
} }
@ -508,9 +523,6 @@ void menu_item_edit_P(const char* str, T pval, int16_t min_val, int16_t max_val)
menu_item++; menu_item++;
} }
template void menu_item_edit_P<int16_t*>(const char* str, int16_t *pval, int16_t min_val, int16_t max_val);
template void menu_item_edit_P<uint8_t*>(const char* str, uint8_t *pval, int16_t min_val, int16_t max_val);
static uint8_t progressbar_block_count = 0; static uint8_t progressbar_block_count = 0;
static uint16_t progressbar_total = 0; static uint16_t progressbar_total = 0;
void menu_progressbar_init(uint16_t total, const char* title) void menu_progressbar_init(uint16_t total, const char* title)

View File

@ -20,10 +20,12 @@ typedef struct
{ {
//Variables used when editing values. //Variables used when editing values.
const char* editLabel; const char* editLabel;
void* editValue; uint8_t editValueBits; // 8 or 16
void* editValuePtr;
int16_t currentValue; int16_t currentValue;
int16_t minEditValue; int16_t minEditValue;
int16_t maxEditValue; int16_t maxEditValue;
int16_t minJumpValue;
} menu_data_edit_t; } menu_data_edit_t;
extern uint8_t menu_data[MENU_DATA_SIZE]; extern uint8_t menu_data[MENU_DATA_SIZE];
@ -143,11 +145,9 @@ struct SheetFormatBuffer
extern void menu_format_sheet_E(const Sheet &sheet_E, SheetFormatBuffer &buffer); extern void menu_format_sheet_E(const Sheet &sheet_E, SheetFormatBuffer &buffer);
#define MENU_ITEM_EDIT_int3_P(str, pval, minval, maxval) do { menu_item_edit_P(str, pval, sizeof(*pval)*8, minval, maxval, 0); } while (0)
#define MENU_ITEM_EDIT_int3_P(str, pval, minval, maxval) do { menu_item_edit_P(str, pval, minval, maxval); } while (0) #define MENU_ITEM_EDIT_int3_jmp_P(str, pval, minval, maxval, jmpval) do { menu_item_edit_P(str, pval, sizeof(*pval)*8, minval, maxval, jmpval); } while (0)
//#define MENU_ITEM_EDIT_int3_P(str, pval, minval, maxval) MENU_ITEM_EDIT(int3, str, pval, minval, maxval) extern void menu_item_edit_P(const char* str, void* pval, uint8_t pbits, int16_t min_val, int16_t max_val, int16_t jmp_val);
template <typename T>
extern void menu_item_edit_P(const char* str, T pval, int16_t min_val, int16_t max_val);
extern void menu_progressbar_init(uint16_t total, const char* title); extern void menu_progressbar_init(uint16_t total, const char* title);
extern void menu_progressbar_update(uint16_t newVal); extern void menu_progressbar_update(uint16_t newVal);

View File

@ -4152,12 +4152,12 @@ static void SETTINGS_SILENT_MODE()
static void menuitems_temperature_common() { static void menuitems_temperature_common() {
#if TEMP_SENSOR_0 != 0 #if TEMP_SENSOR_0 != 0
MENU_ITEM_EDIT_int3_P(_T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10); MENU_ITEM_EDIT_int3_jmp_P(_T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10, LCD_JUMP_HOTEND_TEMP);
#endif #endif
#if TEMP_SENSOR_BED != 0 #if TEMP_SENSOR_BED != 0
MENU_ITEM_EDIT_int3_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 5); MENU_ITEM_EDIT_int3_jmp_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 5, LCD_JUMP_BED_TEMP);
#endif #endif
MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255); MENU_ITEM_EDIT_int3_jmp_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255, LCD_JUMP_FAN_SPEED);
} }
void SETTINGS_FANS_CHECK() { void SETTINGS_FANS_CHECK() {

View File

@ -381,6 +381,10 @@
#define FLEX_PREHEAT_HOTEND_TEMP 240 #define FLEX_PREHEAT_HOTEND_TEMP 240
#define FLEX_PREHEAT_HPB_TEMP 50 #define FLEX_PREHEAT_HPB_TEMP 50
#define LCD_JUMP_HOTEND_TEMP 200
#define LCD_JUMP_BED_TEMP 50
#define LCD_JUMP_FAN_SPEED 127
/*------------------------------------ /*------------------------------------
THERMISTORS SETTINGS THERMISTORS SETTINGS
*------------------------------------*/ *------------------------------------*/

View File

@ -382,6 +382,10 @@
#define FLEX_PREHEAT_HOTEND_TEMP 240 #define FLEX_PREHEAT_HOTEND_TEMP 240
#define FLEX_PREHEAT_HPB_TEMP 50 #define FLEX_PREHEAT_HPB_TEMP 50
#define LCD_JUMP_HOTEND_TEMP 200
#define LCD_JUMP_BED_TEMP 50
#define LCD_JUMP_FAN_SPEED 127
/*------------------------------------ /*------------------------------------
THERMISTORS SETTINGS THERMISTORS SETTINGS
*------------------------------------*/ *------------------------------------*/

View File

@ -381,6 +381,10 @@
#define FLEX_PREHEAT_HOTEND_TEMP 240 #define FLEX_PREHEAT_HOTEND_TEMP 240
#define FLEX_PREHEAT_HPB_TEMP 50 #define FLEX_PREHEAT_HPB_TEMP 50
#define LCD_JUMP_HOTEND_TEMP 200
#define LCD_JUMP_BED_TEMP 50
#define LCD_JUMP_FAN_SPEED 127
/*------------------------------------ /*------------------------------------
THERMISTORS SETTINGS THERMISTORS SETTINGS
*------------------------------------*/ *------------------------------------*/

View File

@ -382,6 +382,10 @@
#define FLEX_PREHEAT_HOTEND_TEMP 240 #define FLEX_PREHEAT_HOTEND_TEMP 240
#define FLEX_PREHEAT_HPB_TEMP 50 #define FLEX_PREHEAT_HPB_TEMP 50
#define LCD_JUMP_HOTEND_TEMP 200
#define LCD_JUMP_BED_TEMP 50
#define LCD_JUMP_FAN_SPEED 127
/*------------------------------------ /*------------------------------------
THERMISTORS SETTINGS THERMISTORS SETTINGS
*------------------------------------*/ *------------------------------------*/

View File

@ -527,6 +527,10 @@
#define FLEX_PREHEAT_HOTEND_TEMP 240 #define FLEX_PREHEAT_HOTEND_TEMP 240
#define FLEX_PREHEAT_HPB_TEMP 50 #define FLEX_PREHEAT_HPB_TEMP 50
#define LCD_JUMP_HOTEND_TEMP 200
#define LCD_JUMP_BED_TEMP 50
#define LCD_JUMP_FAN_SPEED 127
/*------------------------------------ /*------------------------------------
THERMISTORS SETTINGS THERMISTORS SETTINGS
*------------------------------------*/ *------------------------------------*/

View File

@ -528,6 +528,10 @@
#define FLEX_PREHEAT_HOTEND_TEMP 240 #define FLEX_PREHEAT_HOTEND_TEMP 240
#define FLEX_PREHEAT_HPB_TEMP 50 #define FLEX_PREHEAT_HPB_TEMP 50
#define LCD_JUMP_HOTEND_TEMP 200
#define LCD_JUMP_BED_TEMP 50
#define LCD_JUMP_FAN_SPEED 127
/*------------------------------------ /*------------------------------------
THERMISTORS SETTINGS THERMISTORS SETTINGS
*------------------------------------*/ *------------------------------------*/

View File

@ -530,6 +530,10 @@
#define FLEX_PREHEAT_HOTEND_TEMP 240 #define FLEX_PREHEAT_HOTEND_TEMP 240
#define FLEX_PREHEAT_HPB_TEMP 50 #define FLEX_PREHEAT_HPB_TEMP 50
#define LCD_JUMP_HOTEND_TEMP 200
#define LCD_JUMP_BED_TEMP 50
#define LCD_JUMP_FAN_SPEED 127
/*------------------------------------ /*------------------------------------
THERMISTORS SETTINGS THERMISTORS SETTINGS
*------------------------------------*/ *------------------------------------*/

View File

@ -531,6 +531,10 @@
#define FLEX_PREHEAT_HOTEND_TEMP 240 #define FLEX_PREHEAT_HOTEND_TEMP 240
#define FLEX_PREHEAT_HPB_TEMP 50 #define FLEX_PREHEAT_HPB_TEMP 50
#define LCD_JUMP_HOTEND_TEMP 200
#define LCD_JUMP_BED_TEMP 50
#define LCD_JUMP_FAN_SPEED 127
/*------------------------------------ /*------------------------------------
THERMISTORS SETTINGS THERMISTORS SETTINGS
*------------------------------------*/ *------------------------------------*/

View File

@ -532,6 +532,10 @@
#define FLEX_PREHEAT_HOTEND_TEMP 240 #define FLEX_PREHEAT_HOTEND_TEMP 240
#define FLEX_PREHEAT_HPB_TEMP 50 #define FLEX_PREHEAT_HPB_TEMP 50
#define LCD_JUMP_HOTEND_TEMP 200
#define LCD_JUMP_BED_TEMP 50
#define LCD_JUMP_FAN_SPEED 127
/*------------------------------------ /*------------------------------------
THERMISTORS SETTINGS THERMISTORS SETTINGS
*------------------------------------*/ *------------------------------------*/

View File

@ -534,6 +534,10 @@
#define FLEX_PREHEAT_HOTEND_TEMP 240 #define FLEX_PREHEAT_HOTEND_TEMP 240
#define FLEX_PREHEAT_HPB_TEMP 50 #define FLEX_PREHEAT_HPB_TEMP 50
#define LCD_JUMP_HOTEND_TEMP 200
#define LCD_JUMP_BED_TEMP 50
#define LCD_JUMP_FAN_SPEED 127
/*------------------------------------ /*------------------------------------
THERMISTORS SETTINGS THERMISTORS SETTINGS
*------------------------------------*/ *------------------------------------*/