Fix for linearity correction not being stored to EEPROM when doing MENU-

UP
This commit is contained in:
DRracer 2019-05-06 15:33:13 +02:00
parent e5911c42da
commit 0794430208
2 changed files with 13 additions and 8 deletions

3
Firmware/menu.h Normal file → Executable file
View File

@ -81,6 +81,9 @@ extern uint8_t menu_item_submenu_P(const char* str, menu_func_t submenu);
#define MENU_ITEM_BACK_P(str) do { if (menu_item_back_P(str)) return; } while (0) #define MENU_ITEM_BACK_P(str) do { if (menu_item_back_P(str)) return; } while (0)
extern uint8_t menu_item_back_P(const char* str); extern uint8_t menu_item_back_P(const char* str);
// leaving menu - this condition must be immediately before MENU_ITEM_BACK_P
#define ON_MENU_LEAVE(func) if (((menu_item == menu_line) && menu_clicked && (lcd_encoder == menu_item)) || menu_leaving){ func }
#define MENU_ITEM_FUNCTION_P(str, func) do { if (menu_item_function_P(str, func)) return; } while (0) #define MENU_ITEM_FUNCTION_P(str, func) do { if (menu_item_function_P(str, func)) return; } while (0)
extern uint8_t menu_item_function_P(const char* str, menu_func_t func); extern uint8_t menu_item_function_P(const char* str, menu_func_t func);

18
Firmware/ultralcd.cpp Normal file → Executable file
View File

@ -3346,15 +3346,14 @@ void lcd_adjust_bed(void)
} }
MENU_BEGIN(); MENU_BEGIN();
// leaving menu - this condition must be immediately before MENU_ITEM_BACK_P // leaving menu - this condition must be immediately before MENU_ITEM_BACK_P
if (((menu_item == menu_line) && menu_clicked && (lcd_encoder == menu_item)) || menu_leaving) ON_MENU_LEAVE(
{
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_LEFT, _md->left); eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_LEFT, _md->left);
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_RIGHT, _md->right); eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_RIGHT, _md->right);
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT, _md->front); eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT, _md->front);
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR, _md->rear); eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR, _md->rear);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1); eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1);
} )
MENU_ITEM_BACK_P(_T(MSG_SETTINGS)); MENU_ITEM_BACK_P(_T(MSG_SETTINGS));
MENU_ITEM_EDIT_int3_P(_i("Left side [um]"), &_md->left, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_LEFT c=14 r=1 MENU_ITEM_EDIT_int3_P(_i("Left side [um]"), &_md->left, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_LEFT c=14 r=1
MENU_ITEM_EDIT_int3_P(_i("Right side[um]"), &_md->right, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_RIGHT c=14 r=1 MENU_ITEM_EDIT_int3_P(_i("Right side[um]"), &_md->right, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_RIGHT c=14 r=1
MENU_ITEM_EDIT_int3_P(_i("Front side[um]"), &_md->front, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_FRONT c=14 r=1 MENU_ITEM_EDIT_int3_P(_i("Front side[um]"), &_md->front, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_FRONT c=14 r=1
@ -5160,6 +5159,9 @@ void lcd_wizard(WizState state)
void lcd_settings_linearity_correction_menu(void) void lcd_settings_linearity_correction_menu(void)
{ {
MENU_BEGIN(); MENU_BEGIN();
ON_MENU_LEAVE(
lcd_settings_linearity_correction_menu_save();
)
MENU_ITEM_BACK_P(_T(MSG_SETTINGS)); MENU_ITEM_BACK_P(_T(MSG_SETTINGS));
#ifdef TMC2130_LINEARITY_CORRECTION_XYZ #ifdef TMC2130_LINEARITY_CORRECTION_XYZ
//tmc2130_wave_fac[X_AXIS] //tmc2130_wave_fac[X_AXIS]
@ -5170,10 +5172,10 @@ void lcd_settings_linearity_correction_menu(void)
#endif //TMC2130_LINEARITY_CORRECTION_XYZ #endif //TMC2130_LINEARITY_CORRECTION_XYZ
MENU_ITEM_EDIT_int3_P(_i("E-correct"), &tmc2130_wave_fac[E_AXIS], TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=9 r=0 MENU_ITEM_EDIT_int3_P(_i("E-correct"), &tmc2130_wave_fac[E_AXIS], TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=9 r=0
MENU_END(); MENU_END();
if(menu_leaving) // if(menu_leaving)
{ // {
lcd_settings_linearity_correction_menu_save(); // lcd_settings_linearity_correction_menu_save();
} // }
} }
#endif // TMC2130 #endif // TMC2130