optimisation: deduplicate printer check toggle menus
This saves ~100B of flash
This commit is contained in:
parent
bf72ecc3f9
commit
b7caf36207
|
|
@ -4233,26 +4233,6 @@ switch(oCheckMode)
|
||||||
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)oCheckMode);
|
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)oCheckMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SETTINGS_MODE \
|
|
||||||
do\
|
|
||||||
{\
|
|
||||||
switch(oCheckMode)\
|
|
||||||
{\
|
|
||||||
case ClCheckMode::_None:\
|
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_NONE), lcd_check_mode_set);\
|
|
||||||
break;\
|
|
||||||
case ClCheckMode::_Warn:\
|
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_WARN), lcd_check_mode_set);\
|
|
||||||
break;\
|
|
||||||
case ClCheckMode::_Strict:\
|
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_STRICT), lcd_check_mode_set);\
|
|
||||||
break;\
|
|
||||||
default:\
|
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_NONE), lcd_check_mode_set);\
|
|
||||||
}\
|
|
||||||
}\
|
|
||||||
while (0)
|
|
||||||
|
|
||||||
static void lcd_nozzle_diameter_cycle(void) {
|
static void lcd_nozzle_diameter_cycle(void) {
|
||||||
uint16_t nDiameter;
|
uint16_t nDiameter;
|
||||||
switch(oNozzleDiameter){
|
switch(oNozzleDiameter){
|
||||||
|
|
@ -4298,127 +4278,83 @@ static void lcd_check_model_set(void)
|
||||||
{
|
{
|
||||||
switch(oCheckModel)
|
switch(oCheckModel)
|
||||||
{
|
{
|
||||||
case ClCheckModel::_None:
|
case ClCheckMode::_None:
|
||||||
oCheckModel=ClCheckModel::_Warn;
|
oCheckModel=ClCheckMode::_Warn;
|
||||||
break;
|
break;
|
||||||
case ClCheckModel::_Warn:
|
case ClCheckMode::_Warn:
|
||||||
oCheckModel=ClCheckModel::_Strict;
|
oCheckModel=ClCheckMode::_Strict;
|
||||||
break;
|
break;
|
||||||
case ClCheckModel::_Strict:
|
case ClCheckMode::_Strict:
|
||||||
oCheckModel=ClCheckModel::_None;
|
oCheckModel=ClCheckMode::_None;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
oCheckModel=ClCheckModel::_None;
|
oCheckModel=ClCheckMode::_None;
|
||||||
}
|
}
|
||||||
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_MODEL,(uint8_t)oCheckModel);
|
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_MODEL,(uint8_t)oCheckModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SETTINGS_MODEL \
|
|
||||||
do\
|
|
||||||
{\
|
|
||||||
switch(oCheckModel)\
|
|
||||||
{\
|
|
||||||
case ClCheckModel::_None:\
|
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_NONE), lcd_check_model_set);\
|
|
||||||
break;\
|
|
||||||
case ClCheckModel::_Warn:\
|
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_WARN), lcd_check_model_set);\
|
|
||||||
break;\
|
|
||||||
case ClCheckModel::_Strict:\
|
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_STRICT), lcd_check_model_set);\
|
|
||||||
break;\
|
|
||||||
default:\
|
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_NONE), lcd_check_model_set);\
|
|
||||||
}\
|
|
||||||
}\
|
|
||||||
while (0)
|
|
||||||
|
|
||||||
static void lcd_check_version_set(void)
|
static void lcd_check_version_set(void)
|
||||||
{
|
{
|
||||||
switch(oCheckVersion)
|
switch(oCheckVersion)
|
||||||
{
|
{
|
||||||
case ClCheckVersion::_None:
|
case ClCheckMode::_None:
|
||||||
oCheckVersion=ClCheckVersion::_Warn;
|
oCheckVersion=ClCheckMode::_Warn;
|
||||||
break;
|
break;
|
||||||
case ClCheckVersion::_Warn:
|
case ClCheckMode::_Warn:
|
||||||
oCheckVersion=ClCheckVersion::_Strict;
|
oCheckVersion=ClCheckMode::_Strict;
|
||||||
break;
|
break;
|
||||||
case ClCheckVersion::_Strict:
|
case ClCheckMode::_Strict:
|
||||||
oCheckVersion=ClCheckVersion::_None;
|
oCheckVersion=ClCheckMode::_None;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
oCheckVersion=ClCheckVersion::_None;
|
oCheckVersion=ClCheckMode::_None;
|
||||||
}
|
}
|
||||||
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_VERSION,(uint8_t)oCheckVersion);
|
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_VERSION,(uint8_t)oCheckVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SETTINGS_VERSION \
|
|
||||||
do\
|
|
||||||
{\
|
|
||||||
switch(oCheckVersion)\
|
|
||||||
{\
|
|
||||||
case ClCheckVersion::_None:\
|
|
||||||
MENU_ITEM_TOGGLE_P(MSG_FIRMWARE, _T(MSG_NONE), lcd_check_version_set);\
|
|
||||||
break;\
|
|
||||||
case ClCheckVersion::_Warn:\
|
|
||||||
MENU_ITEM_TOGGLE_P(MSG_FIRMWARE, _T(MSG_WARN), lcd_check_version_set);\
|
|
||||||
break;\
|
|
||||||
case ClCheckVersion::_Strict:\
|
|
||||||
MENU_ITEM_TOGGLE_P(MSG_FIRMWARE, _T(MSG_STRICT), lcd_check_version_set);\
|
|
||||||
break;\
|
|
||||||
default:\
|
|
||||||
MENU_ITEM_TOGGLE_P(MSG_FIRMWARE, _T(MSG_NONE), lcd_check_version_set);\
|
|
||||||
}\
|
|
||||||
}\
|
|
||||||
while (0)
|
|
||||||
|
|
||||||
static void lcd_check_filament_set(void)
|
static void lcd_check_filament_set(void)
|
||||||
{
|
{
|
||||||
switch(oCheckFilament)
|
switch(oCheckFilament)
|
||||||
{
|
{
|
||||||
case ClCheckFilament::_None:
|
case ClCheckMode::_None:
|
||||||
oCheckFilament=ClCheckFilament::_Warn;
|
oCheckFilament=ClCheckMode::_Warn;
|
||||||
break;
|
break;
|
||||||
case ClCheckFilament::_Warn:
|
case ClCheckMode::_Warn:
|
||||||
oCheckFilament=ClCheckFilament::_Strict;
|
oCheckFilament=ClCheckMode::_Strict;
|
||||||
break;
|
break;
|
||||||
case ClCheckFilament::_Strict:
|
case ClCheckMode::_Strict:
|
||||||
oCheckFilament=ClCheckFilament::_None;
|
oCheckFilament=ClCheckMode::_None;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
oCheckFilament=ClCheckFilament::_None;
|
oCheckFilament=ClCheckMode::_None;
|
||||||
}
|
}
|
||||||
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_FILAMENT,(uint8_t)oCheckFilament);
|
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_FILAMENT,(uint8_t)oCheckFilament);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SETTINGS_CHECK_FILAMENT \
|
static void settings_check_toggle(ClCheckMode oCheckSetting, const char* msg, void (*func)(void)) {
|
||||||
do\
|
switch(oCheckSetting) {
|
||||||
{\
|
case ClCheckMode::_None:
|
||||||
switch(oCheckFilament)\
|
MENU_ITEM_TOGGLE_P(msg, _T(MSG_NONE), func);
|
||||||
{\
|
break;
|
||||||
case ClCheckFilament::_None:\
|
case ClCheckMode::_Warn:
|
||||||
MENU_ITEM_TOGGLE_P(MSG_FILAMENT, _T(MSG_NONE), lcd_check_filament_set);\
|
MENU_ITEM_TOGGLE_P(msg, _T(MSG_WARN), func);
|
||||||
break;\
|
break;
|
||||||
case ClCheckFilament::_Warn:\
|
case ClCheckMode::_Strict:
|
||||||
MENU_ITEM_TOGGLE_P(MSG_FILAMENT, _T(MSG_WARN), lcd_check_filament_set);\
|
MENU_ITEM_TOGGLE_P(msg, _T(MSG_STRICT), func);
|
||||||
break;\
|
break;
|
||||||
case ClCheckFilament::_Strict:\
|
default:
|
||||||
MENU_ITEM_TOGGLE_P(MSG_FILAMENT, _T(MSG_STRICT), lcd_check_filament_set);\
|
MENU_ITEM_TOGGLE_P(msg, _T(MSG_NONE), func);
|
||||||
break;\
|
}
|
||||||
default:\
|
}
|
||||||
MENU_ITEM_TOGGLE_P(MSG_FILAMENT, _T(MSG_NONE), lcd_check_filament_set);\
|
|
||||||
}\
|
|
||||||
}\
|
|
||||||
while (0)
|
|
||||||
|
|
||||||
static void lcd_checking_menu(void)
|
static void lcd_checking_menu(void)
|
||||||
{
|
{
|
||||||
MENU_BEGIN();
|
MENU_BEGIN();
|
||||||
MENU_ITEM_BACK_P(_T(MSG_HW_SETUP));
|
MENU_ITEM_BACK_P(_T(MSG_HW_SETUP));
|
||||||
SETTINGS_MODE;
|
settings_check_toggle(oCheckMode, _T(MSG_NOZZLE), lcd_check_mode_set);
|
||||||
SETTINGS_MODEL;
|
settings_check_toggle(oCheckModel, _T(MSG_MODEL), lcd_check_model_set);
|
||||||
SETTINGS_VERSION;
|
settings_check_toggle(oCheckVersion, MSG_FIRMWARE, lcd_check_version_set);
|
||||||
SETTINGS_CHECK_FILAMENT;
|
settings_check_toggle(oCheckFilament, MSG_FILAMENT, lcd_check_filament_set);
|
||||||
MENU_END();
|
MENU_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -202,7 +202,7 @@ bool eeprom_fw_version_older_than_p(const uint16_t (&ver_req)[4])
|
||||||
|
|
||||||
bool show_upgrade_dialog_if_version_newer(const char *version_string)
|
bool show_upgrade_dialog_if_version_newer(const char *version_string)
|
||||||
{
|
{
|
||||||
if(oCheckVersion == ClCheckVersion::_None)
|
if(oCheckVersion == ClCheckMode::_None)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int8_t upgrade = is_provided_version_newer(version_string);
|
int8_t upgrade = is_provided_version_newer(version_string);
|
||||||
|
|
@ -242,10 +242,10 @@ void update_current_firmware_version_to_eeprom()
|
||||||
|
|
||||||
ClNozzleDiameter oNozzleDiameter;
|
ClNozzleDiameter oNozzleDiameter;
|
||||||
ClCheckMode oCheckMode;
|
ClCheckMode oCheckMode;
|
||||||
ClCheckModel oCheckModel;
|
ClCheckMode oCheckModel;
|
||||||
ClCheckVersion oCheckVersion;
|
ClCheckMode oCheckVersion;
|
||||||
ClCheckGcode oCheckGcode;
|
ClCheckMode oCheckGcode;
|
||||||
ClCheckFilament oCheckFilament;
|
ClCheckMode oCheckFilament;
|
||||||
|
|
||||||
void fCheckModeInit() {
|
void fCheckModeInit() {
|
||||||
oCheckMode = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_MODE, (uint8_t)ClCheckMode::_Warn);
|
oCheckMode = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_MODE, (uint8_t)ClCheckMode::_Warn);
|
||||||
|
|
@ -258,10 +258,10 @@ void fCheckModeInit() {
|
||||||
oNozzleDiameter = (ClNozzleDiameter)eeprom_init_default_byte((uint8_t *)EEPROM_NOZZLE_DIAMETER, (uint8_t)ClNozzleDiameter::_Diameter_400);
|
oNozzleDiameter = (ClNozzleDiameter)eeprom_init_default_byte((uint8_t *)EEPROM_NOZZLE_DIAMETER, (uint8_t)ClNozzleDiameter::_Diameter_400);
|
||||||
eeprom_init_default_word((uint16_t *)EEPROM_NOZZLE_DIAMETER_uM, EEPROM_NOZZLE_DIAMETER_uM_DEFAULT);
|
eeprom_init_default_word((uint16_t *)EEPROM_NOZZLE_DIAMETER_uM, EEPROM_NOZZLE_DIAMETER_uM_DEFAULT);
|
||||||
|
|
||||||
oCheckModel = (ClCheckModel)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_MODEL, (uint8_t)ClCheckModel::_Warn);
|
oCheckModel = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_MODEL, (uint8_t)ClCheckMode::_Warn);
|
||||||
oCheckVersion = (ClCheckVersion)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_VERSION, (uint8_t)ClCheckVersion::_Warn);
|
oCheckVersion = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_VERSION, (uint8_t)ClCheckMode::_Warn);
|
||||||
oCheckGcode = (ClCheckGcode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_GCODE, (uint8_t)ClCheckGcode::_Warn);
|
oCheckGcode = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_GCODE, (uint8_t)ClCheckMode::_Warn);
|
||||||
oCheckFilament = (ClCheckFilament)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_FILAMENT, (uint8_t)ClCheckFilament::_Warn);
|
oCheckFilament = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_FILAMENT, (uint8_t)ClCheckMode::_Warn);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void render_M862_warnings(const char* warning, const char* strict, uint8_t check)
|
static void render_M862_warnings(const char* warning, const char* strict, uint8_t check)
|
||||||
|
|
@ -304,7 +304,7 @@ void nozzle_diameter_check(uint16_t nDiameter) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void printer_model_check(uint16_t nPrinterModel, uint16_t actualPrinterModel) {
|
void printer_model_check(uint16_t nPrinterModel, uint16_t actualPrinterModel) {
|
||||||
if (oCheckModel == ClCheckModel::_None)
|
if (oCheckModel == ClCheckMode::_None)
|
||||||
return;
|
return;
|
||||||
if (nPrinterModel == actualPrinterModel)
|
if (nPrinterModel == actualPrinterModel)
|
||||||
return;
|
return;
|
||||||
|
|
@ -330,7 +330,7 @@ uint8_t mCompareValue(uint16_t nX, uint16_t nY) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void fw_version_check(const char *pVersion) {
|
void fw_version_check(const char *pVersion) {
|
||||||
if (oCheckVersion == ClCheckVersion::_None)
|
if (oCheckVersion == ClCheckMode::_None)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
uint16_t aVersion[4];
|
uint16_t aVersion[4];
|
||||||
|
|
@ -374,7 +374,7 @@ void fw_version_check(const char *pVersion) {
|
||||||
void filament_presence_check() {
|
void filament_presence_check() {
|
||||||
if (fsensor.isEnabled() && !fsensor.getFilamentPresent())
|
if (fsensor.isEnabled() && !fsensor.getFilamentPresent())
|
||||||
{
|
{
|
||||||
if (oCheckFilament == ClCheckFilament::_None)
|
if (oCheckFilament == ClCheckMode::_None)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
render_M862_warnings(
|
render_M862_warnings(
|
||||||
|
|
@ -387,7 +387,7 @@ void filament_presence_check() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void gcode_level_check(uint16_t nGcodeLevel) {
|
void gcode_level_check(uint16_t nGcodeLevel) {
|
||||||
if (oCheckGcode == ClCheckGcode::_None)
|
if (oCheckGcode == ClCheckMode::_None)
|
||||||
return;
|
return;
|
||||||
if (nGcodeLevel <= (uint16_t)GCODE_LEVEL)
|
if (nGcodeLevel <= (uint16_t)GCODE_LEVEL)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -55,38 +55,6 @@ enum class ClCheckMode:uint_least8_t
|
||||||
_Undef=EEPROM_EMPTY_VALUE
|
_Undef=EEPROM_EMPTY_VALUE
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class ClCheckModel:uint_least8_t
|
|
||||||
{
|
|
||||||
_None,
|
|
||||||
_Warn,
|
|
||||||
_Strict,
|
|
||||||
_Undef=EEPROM_EMPTY_VALUE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class ClCheckVersion:uint_least8_t
|
|
||||||
{
|
|
||||||
_None,
|
|
||||||
_Warn,
|
|
||||||
_Strict,
|
|
||||||
_Undef=EEPROM_EMPTY_VALUE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class ClCheckGcode:uint_least8_t
|
|
||||||
{
|
|
||||||
_None,
|
|
||||||
_Warn,
|
|
||||||
_Strict,
|
|
||||||
_Undef=EEPROM_EMPTY_VALUE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class ClCheckFilament:uint_least8_t
|
|
||||||
{
|
|
||||||
_None,
|
|
||||||
_Warn,
|
|
||||||
_Strict,
|
|
||||||
_Undef=EEPROM_EMPTY_VALUE
|
|
||||||
};
|
|
||||||
|
|
||||||
#define COMPARE_VALUE_EQUAL (((uint8_t)ClCompareValue::_Equal<<6)+((uint8_t)ClCompareValue::_Equal<<4)+((uint8_t)ClCompareValue::_Equal<<2)+((uint8_t)ClCompareValue::_Equal))
|
#define COMPARE_VALUE_EQUAL (((uint8_t)ClCompareValue::_Equal<<6)+((uint8_t)ClCompareValue::_Equal<<4)+((uint8_t)ClCompareValue::_Equal<<2)+((uint8_t)ClCompareValue::_Equal))
|
||||||
enum class ClCompareValue:uint_least8_t
|
enum class ClCompareValue:uint_least8_t
|
||||||
{
|
{
|
||||||
|
|
@ -137,10 +105,10 @@ private:
|
||||||
|
|
||||||
extern ClNozzleDiameter oNozzleDiameter;
|
extern ClNozzleDiameter oNozzleDiameter;
|
||||||
extern ClCheckMode oCheckMode;
|
extern ClCheckMode oCheckMode;
|
||||||
extern ClCheckModel oCheckModel;
|
extern ClCheckMode oCheckModel;
|
||||||
extern ClCheckVersion oCheckVersion;
|
extern ClCheckMode oCheckVersion;
|
||||||
extern ClCheckGcode oCheckGcode;
|
extern ClCheckMode oCheckGcode;
|
||||||
extern ClCheckFilament oCheckFilament;
|
extern ClCheckMode oCheckFilament;
|
||||||
|
|
||||||
void fCheckModeInit();
|
void fCheckModeInit();
|
||||||
void nozzle_diameter_check(uint16_t nDiameter);
|
void nozzle_diameter_check(uint16_t nDiameter);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue