optimisation: reduce code size in MMU filament menus

Change in memory:
Flash: -156 bytes
SRAM: 0 bytes
This commit is contained in:
Guðni Már Gilbert 2023-08-20 10:15:29 +00:00 committed by DRracer
parent 1881c5f086
commit 5bf9bf7507
1 changed files with 11 additions and 18 deletions

View File

@ -4811,17 +4811,24 @@ static inline void lcd_mmu_load_to_nozzle_wrapper(uint8_t index){
clearFilamentAction();
}
static void mmu_load_to_nozzle_menu() {
// Helper function to save code size by reducing duplicated code
// These menus are not time critical
static void mmu_common_choose_filament_menu(const char * label, void (*menuAction)(uint8_t))
{
MENU_BEGIN();
ON_MENU_LEAVE(
clearFilamentAction();
);
MENU_ITEM_BACK_P(_T(MSG_MAIN));
for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++)
MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), i + '1', lcd_mmu_load_to_nozzle_wrapper, i);
MENU_ITEM_FUNCTION_NR_P(_T(label), i + '1', menuAction, i);
MENU_END();
}
static void mmu_load_to_nozzle_menu() {
mmu_common_choose_filament_menu(MSG_LOAD_FILAMENT, lcd_mmu_load_to_nozzle_wrapper);
}
static void mmu_eject_filament(uint8_t filament) {
menu_back();
MMU2::mmu2.eject_filament(filament, true);
@ -4831,14 +4838,7 @@ static void mmu_eject_filament(uint8_t filament) {
}
static void mmu_fil_eject_menu() {
MENU_BEGIN();
ON_MENU_LEAVE(
clearFilamentAction();
);
MENU_ITEM_BACK_P(_T(MSG_MAIN));
for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++)
MENU_ITEM_FUNCTION_NR_P(_T(MSG_EJECT_FROM_MMU), i + '1', mmu_eject_filament, i);
MENU_END();
mmu_common_choose_filament_menu(MSG_EJECT_FROM_MMU, mmu_eject_filament);
}
#ifdef MMU_HAS_CUTTER
@ -4847,14 +4847,7 @@ static inline void mmu_cut_filament_wrapper(uint8_t index){
}
static void mmu_cut_filament_menu() {
MENU_BEGIN();
ON_MENU_LEAVE(
clearFilamentAction();
);
MENU_ITEM_BACK_P(_T(MSG_MAIN));
for (uint8_t i = 0; i < MMU_FILAMENT_COUNT; i++)
MENU_ITEM_FUNCTION_NR_P(_T(MSG_CUT_FILAMENT), i + '1', mmu_cut_filament_wrapper, i);
MENU_END();
mmu_common_choose_filament_menu(MSG_CUT_FILAMENT, mmu_cut_filament_wrapper);
}
#endif //MMU_HAS_CUTTER