Skip to content

Commit

Permalink
optimisation: reduce code size in MMU filament menus
Browse files Browse the repository at this point in the history
Change in memory:
Flash: -156 bytes
SRAM: 0 bytes
  • Loading branch information
gudnimg committed Aug 20, 2023
1 parent f2a0949 commit 1ca50bc
Showing 1 changed file with 11 additions and 18 deletions.
29 changes: 11 additions & 18 deletions Firmware/ultralcd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4810,17 +4810,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);
Expand All @@ -4830,14 +4837,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
Expand All @@ -4846,14 +4846,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

Expand Down

0 comments on commit 1ca50bc

Please sign in to comment.