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 authored and DRracer committed Aug 21, 2023
1 parent 1881c5f commit 5bf9bf7
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 @@ -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);
Expand All @@ -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
Expand All @@ -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

Expand Down

0 comments on commit 5bf9bf7

Please sign in to comment.