@@ -254,12 +254,37 @@ void menu_backlash();
254254#if SHOW_MENU_ADVANCED_TEMPERATURE
255255
256256 #if ENABLED(MPC_EDIT_MENU)
257+
257258 #define MPC_EDIT_DEFS (N ) \
258259 MPC_t &c = thermalManager.temp_hotend[N].constants; \
259260 TERN_ (MPC_INCLUDE_FAN, editable.decimal = c.ambient_xfer_coeff_fan0 + c.fan255_adjustment)
261+
262+ #define _MPC_EDIT_ITEMS (N) \
263+ EDIT_ITEM_FAST_N(float31sign, N, MSG_MPC_POWER_E, &c.heater_power, 1 , 200 ); \
264+ EDIT_ITEM_FAST_N (float31sign, N, MSG_MPC_BLOCK_HEAT_CAPACITY_E, &c.block_heat_capacity, 0 , 40 ); \
265+ EDIT_ITEM_FAST_N (float43, N, MSG_SENSOR_RESPONSIVENESS_E, &c.sensor_responsiveness, 0 , 1 ); \
266+ EDIT_ITEM_FAST_N (float43, N, MSG_MPC_AMBIENT_XFER_COEFF_E, &c.ambient_xfer_coeff_fan0, 0 , 1 )
267+
268+ #if ENABLED (MPC_INCLUDE_FAN)
269+ #define MPC_EDIT_ITEMS (N)
270+ _MPC_EDIT_ITEMS(N); \
271+ EDIT_ITEM_FAST_N (float43, N, MSG_MPC_AMBIENT_XFER_COEFF_FAN255_E, &editable.decimal, 0 , 1 , []{ \
272+ thermalManager.temp_hotend [N].constants .fan255_adjustment = editable.decimal - thermalManager.temp_hotend [N].constants .ambient_xfer_coeff_fan0 ; \
273+ })
274+ #else
275+ #define MPC_EDIT_ITEMS _MPC_EDIT_ITEMS
276+ #endif
277+
260278 #if HAS_MULTI_HOTEND
261- static uint8_t current_mpc_hotend = 0 ;
262- void mpc_edit_hotend (const uint8_t e);
279+ void mpc_edit_hotend (const uint8_t e) {
280+ static uint8_t current_mpc_hotend = 0 ;
281+ current_mpc_hotend = e;
282+ MPC_EDIT_DEFS (e);
283+ START_MENU ();
284+ BACK_ITEM (MSG_TEMPERATURE);
285+ MPC_EDIT_ITEMS (current_mpc_hotend);
286+ END_MENU ();
287+ }
263288 #endif
264289 #endif
265290
@@ -345,32 +370,13 @@ void menu_backlash();
345370 #endif
346371
347372 #if ENABLED(MPC_EDIT_MENU)
348-
349- #define _MPC_EDIT_ITEMS (N ) \
350- EDIT_ITEM_FAST_N (float31sign, N, MSG_MPC_POWER_E, &c.heater_power , 1 , 200 ); \
351- EDIT_ITEM_FAST_N (float31sign, N, MSG_MPC_BLOCK_HEAT_CAPACITY_E, &c.block_heat_capacity , 0 , 40 ); \
352- EDIT_ITEM_FAST_N (float43, N, MSG_SENSOR_RESPONSIVENESS_E, &c.sensor_responsiveness , 0 , 1 ); \
353- EDIT_ITEM_FAST_N (float43, N, MSG_MPC_AMBIENT_XFER_COEFF_E, &c.ambient_xfer_coeff_fan0 , 0 , 1 )
354-
355- #if ENABLED(MPC_INCLUDE_FAN)
356- #define MPC_EDIT_ITEMS (N ) \
357- _MPC_EDIT_ITEMS (N); \
358- EDIT_ITEM_FAST_N (float43, N, MSG_MPC_AMBIENT_XFER_COEFF_FAN255_E, &editable.decimal , 0 , 1 , []{ \
359- thermalManager.temp_hotend [N].constants .fan255_adjustment = editable.decimal - thermalManager.temp_hotend [N].constants .ambient_xfer_coeff_fan0 ; \
360- });
361- #else
362- #define MPC_EDIT_ITEMS _MPC_EDIT_ITEMS
363- #endif
364-
365373 #if HAS_MULTI_HOTEND
366374 #define MPC_ENTRY (N ) SUBMENU_N(N, MSG_MPC_EDIT, []{ mpc_edit_hotend (MenuItemBase::itemIndex); });
375+ REPEAT (HOTENDS, MPC_ENTRY);
367376 #else
368- # define MPC_ENTRY MPC_EDIT_ITEMS
377+ MPC_EDIT_ITEMS;
369378 #endif
370-
371- REPEAT (HOTENDS, MPC_ENTRY);
372-
373- #endif // MPC_EDIT_MENU
379+ #endif
374380
375381 #if ENABLED(MPC_AUTOTUNE_MENU)
376382 ACTION_ITEM (MSG_MPC_AUTOTUNE, []{ queue.inject (F (" M306 T" )); ui.return_to_status (); });
@@ -397,17 +403,6 @@ void menu_backlash();
397403 END_MENU ();
398404 }
399405
400- #if ENABLED(MPC_EDIT_MENU) && HAS_MULTI_HOTEND
401- void mpc_edit_hotend (const uint8_t e) {
402- current_mpc_hotend = e;
403- MPC_EDIT_DEFS (e);
404- START_MENU ();
405- BACK_ITEM (MSG_TEMPERATURE);
406- MPC_EDIT_ITEMS (current_mpc_hotend);
407- END_MENU ();
408- }
409- #endif
410-
411406#endif // SHOW_MENU_ADVANCED_TEMPERATURE
412407
413408#if DISABLED(SLIM_LCD_MENUS)
0 commit comments