Browse Source

🎨 Apply HAS_MULTI_HOTEND conditional

vanilla_fb_2.0.x
Scott Lahteine 3 years ago
committed by Scott Lahteine
parent
commit
cbc7dadf42
  1. 15
      Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp
  2. 8
      Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp
  3. 12
      Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp
  4. 4
      Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp
  5. 44
      Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp
  6. 6
      Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp
  7. 10
      Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp
  8. 10
      Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp
  9. 6
      Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp
  10. 12
      Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp
  11. 8
      Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp
  12. 4
      Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h
  13. 4
      Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp
  14. 7
      Marlin/src/lcd/menu/menu_temperature.cpp
  15. 4
      Marlin/src/lcd/tft/ui_common.h
  16. 2
      Marlin/src/pins/esp32/pins_E4D.h
  17. 2
      Marlin/src/pins/esp32/pins_FYSETC_E4.h
  18. 2
      Marlin/src/pins/esp32/pins_MRR_ESPA.h
  19. 2
      Marlin/src/pins/esp32/pins_MRR_ESPE.h
  20. 2
      Marlin/src/pins/ramps/pins_K8600.h
  21. 2
      Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h
  22. 2
      Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h
  23. 2
      Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h
  24. 2
      Marlin/src/pins/stm32f1/pins_CREALITY_V4.h
  25. 2
      Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h
  26. 2
      Marlin/src/pins/stm32f1/pins_CREALITY_V452.h
  27. 2
      Marlin/src/pins/stm32f1/pins_CREALITY_V453.h
  28. 2
      Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h
  29. 2
      Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h
  30. 2
      Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h
  31. 2
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3.h
  32. 2
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D.h
  33. 2
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D_V1_1.h
  34. 2
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h
  35. 2
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_V1_1.h
  36. 2
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h
  37. 2
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h
  38. 2
      Marlin/src/pins/stm32f4/pins_ANET_ET4.h
  39. 2
      Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
  40. 2
      Marlin/src/pins/stm32f4/pins_LERDGE_X.h
  41. 2
      Marlin/src/pins/stm32f7/pins_REMRAM_V1.h

15
Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp

@ -132,20 +132,19 @@ FORCE_INLINE void _draw_fan_status(const uint16_t x, const uint16_t y) {
}
}
#if HOTENDS > 2
#define HOTEND_STATS 3
#elif HOTENDS > 1
#define HOTEND_STATS 2
#elif HAS_HOTEND
#define HOTEND_STATS 1
#endif
/**
* Draw a single heater icon with current and target temperature, at the given XY
*/
FORCE_INLINE void _draw_heater_status(const heater_id_t heater, const uint16_t x, const uint16_t y) {
#if HAS_HOTEND
#if HOTENDS > 2
#define HOTEND_STATS 3
#elif HOTENDS > 1
#define HOTEND_STATS 2
#elif HAS_HOTEND
#define HOTEND_STATS 1
#endif
static celsius_t old_temp[HOTEND_STATS] = ARRAY_N_1(HOTEND_STATS, 500),
old_target[HOTEND_STATS] = ARRAY_N_1(HOTEND_STATS, 500);
static bool old_on[HOTEND_STATS] = ARRAY_N_1(HOTEND_STATS, false);

8
Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp

@ -185,7 +185,7 @@ void DGUSScreenHandler::DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var) {
case VP_E0_PID_I: valuesend = unscalePID_i(value); break;
case VP_E0_PID_D: valuesend = unscalePID_d(value); break;
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
case VP_E1_PID_P: valuesend = value; break;
case VP_E1_PID_I: valuesend = unscalePID_i(value); break;
case VP_E1_PID_D: valuesend = unscalePID_d(value); break;
@ -400,7 +400,7 @@ void DGUSScreenHandler::HandleTemperatureChanged(DGUS_VP_Variable &var, void *va
acceptedvalue = thermalManager.degTargetHotend(0);
break;
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
case VP_T_E1_Set:
NOMORE(newvalue, HEATER_1_MAXTEMP);
thermalManager.setTargetHotend(newvalue, 1);
@ -551,7 +551,7 @@ void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, vo
sprintf_P(buf, PSTR("M303 E%d C5 S210 U1"), ExtUI::extruder_t::E0);
break;
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
case VP_PID_AUTOTUNE_E1:
sprintf_P(buf, PSTR("M303 E%d C5 S210 U1"), ExtUI::extruder_t::E1);
break;
@ -598,7 +598,7 @@ void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr
switch (var.VP) {
#if HAS_HOTEND
case VP_E0_CONTROL:
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
case VP_E1_CONTROL:
#if HOTENDS >= 3
case VP_E2_CONTROL:

12
Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp

@ -51,7 +51,7 @@ const uint16_t VPList_Main[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set, VP_E0_STATUS,
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#if HAS_HEATED_BED
@ -73,7 +73,7 @@ const uint16_t VPList_Temp[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#if HAS_HEATED_BED
@ -87,7 +87,7 @@ const uint16_t VPList_Status[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#if HAS_HEATED_BED
@ -120,7 +120,7 @@ const uint16_t VPList_Preheat[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#if HAS_HEATED_BED
@ -187,7 +187,7 @@ const uint16_t VPList_SD_PrintManipulation[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#if HAS_HEATED_BED
@ -379,7 +379,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, ScreenHandler.HandleFilamentOption, ScreenHandler.HandleFilamentLoadUnload),
#endif
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>),
VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
VPHELPER(VP_Flowrate_E1, &planner.flow_percentage[ExtUI::extruder_t::E1], ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay), // ERROR: Flow is per-extruder, not per-hotend

4
Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp

@ -256,7 +256,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) {
case VP_E0_PID_I: newvalue = scalePID_i(value); break;
case VP_E0_PID_D: newvalue = scalePID_d(value); break;
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
case VP_E1_PID_P: newvalue = value; break;
case VP_E1_PID_I: newvalue = scalePID_i(value); break;
case VP_E1_PID_D: newvalue = scalePID_d(value); break;
@ -334,7 +334,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) {
#if HAS_HOTEND
thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E0);
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E1);
#endif
GotoScreen(DGUSLCD_SCREEN_UTILITY);

44
Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp

@ -50,7 +50,7 @@ const uint16_t VPList_Main[] PROGMEM = {
// VP_M117, for completeness, but it cannot be auto-uploaded.
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set, VP_E0_STATUS,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#endif
@ -72,7 +72,7 @@ const uint16_t VPList_Main[] PROGMEM = {
const uint16_t VPList_Temp[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#endif
@ -86,7 +86,7 @@ const uint16_t VPList_Status[] PROGMEM = {
// VP_M117, for completeness, but it cannot be auto-uploaded
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#endif
@ -107,7 +107,7 @@ const uint16_t VPList_Status2[] PROGMEM = {
// VP_M117, for completeness, but it cannot be auto-uploaded
#if HAS_HOTEND
VP_Flowrate_E0,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_Flowrate_E1,
#endif
#endif
@ -119,7 +119,7 @@ const uint16_t VPList_Status2[] PROGMEM = {
const uint16_t VPList_Preheat[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#endif
@ -137,7 +137,7 @@ const uint16_t VPList_ManualMove[] PROGMEM = {
const uint16_t VPList_ManualExtrude[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#endif
@ -159,7 +159,7 @@ const uint16_t VPList_Filament_heating[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
VP_E0_FILAMENT_LOAD_UNLOAD,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#endif
@ -169,7 +169,7 @@ const uint16_t VPList_Filament_heating[] PROGMEM = {
const uint16_t VPList_Filament_load_unload[] PROGMEM = {
#if HAS_HOTEND
VP_E0_FILAMENT_LOAD_UNLOAD,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_E1_FILAMENT_LOAD_UNLOAD,
#endif
#endif
@ -185,7 +185,7 @@ const uint16_t VPList_SD_PrintManipulation[] PROGMEM = {
VP_PrintProgress_Percentage, VP_PrintTime,
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#endif
@ -205,7 +205,7 @@ const uint16_t VPList_SD_PrintManipulation[] PROGMEM = {
const uint16_t VPList_SDPrintTune[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#endif
@ -222,23 +222,17 @@ const uint16_t VPList_SDPrintTune[] PROGMEM = {
};
const uint16_t VPList_StepPerMM[] PROGMEM = {
VP_X_STEP_PER_MM,
VP_Y_STEP_PER_MM,
VP_Z_STEP_PER_MM,
#if HAS_HOTEND
VP_E0_STEP_PER_MM,
#if HOTENDS >= 2
VP_E1_STEP_PER_MM,
#endif
#endif
0x0000
VP_X_STEP_PER_MM
, VP_Y_STEP_PER_MM
, VP_Z_STEP_PER_MM
OPTARG(HAS_HOTEND, VP_E0_STEP_PER_MM)
OPTARG(HAS_MULTI_HOTEND, VP_E1_STEP_PER_MM)
, 0x0000
};
const uint16_t VPList_PIDE0[] PROGMEM = {
#if ENABLED(PIDTEMP)
VP_E0_PID_P,
VP_E0_PID_I,
VP_E0_PID_D,
VP_E0_PID_P, VP_E0_PID_I, VP_E0_PID_D,
#endif
0x0000
};
@ -382,7 +376,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, ScreenHandler.HandlePIDAutotune, nullptr),
#endif
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>),
VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
VPHELPER(VP_Flowrate_E1, nullptr, ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
@ -435,7 +429,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>),
#if HAS_HOTEND
VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>),
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>),
#endif
#endif

6
Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp

@ -256,7 +256,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) {
case VP_E0_PID_I: newvalue = scalePID_i(value); break;
case VP_E0_PID_D: newvalue = scalePID_d(value); break;
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
case VP_E1_PID_P: newvalue = value; break;
case VP_E1_PID_I: newvalue = scalePID_i(value); break;
case VP_E1_PID_D: newvalue = scalePID_d(value); break;
@ -333,7 +333,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) {
if (filament_data.action == 0) { // Go back to utility screen
#if HAS_HOTEND
thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E0);
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E1);
#endif
#endif
@ -348,7 +348,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) {
thermalManager.setTargetHotend(e_temp, filament_data.extruder);
break;
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
case VP_E1_FILAMENT_LOAD_UNLOAD:
filament_data.extruder = ExtUI::extruder_t::E1;
thermalManager.setTargetHotend(e_temp, filament_data.extruder);

10
Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp

@ -122,7 +122,7 @@ const uint16_t VPList_Main[] PROGMEM = {
// VP_M117, for completeness, but it cannot be auto-uploaded.
#if HAS_HOTEND
MKSLIST_E_ITEM(0) VP_E0_STATUS,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
MKSLIST_E_ITEM(1) VP_E1_STATUS,
#endif
#endif
@ -567,7 +567,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
#endif
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>),
VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
VPHELPER(VP_Flowrate_E1, &planner.flow_percentage[ExtUI::extruder_t::E1], ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
@ -656,7 +656,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
#if HAS_HOTEND
VPHELPER(VP_E0_MAX_SPEED, &planner.settings.max_feedrate_mm_s[E_AXIS_N(0)], ScreenHandler.HandleExtruderMaxSpeedChange_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VPHELPER(VP_E1_MAX_SPEED, &planner.settings.max_feedrate_mm_s[E_AXIS_N(1)], ScreenHandler.HandleExtruderMaxSpeedChange_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
#endif
#endif
@ -667,7 +667,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
#if HAS_HOTEND
VPHELPER(VP_E0_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(0)], ScreenHandler.HandleExtruderAccChange_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VPHELPER(VP_E1_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)], ScreenHandler.HandleExtruderAccChange_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
#endif
#endif
@ -744,7 +744,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
#if HAS_HOTEND
VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], ScreenHandler.HandleStepPerMMExtruderChanged_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], ScreenHandler.HandleStepPerMMExtruderChanged_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
#endif
#endif

10
Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp

@ -57,7 +57,7 @@ const uint16_t VPList_Main[] PROGMEM = {
const uint16_t VPList_Temp[] PROGMEM = {
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#endif
@ -71,7 +71,7 @@ const uint16_t VPList_Status[] PROGMEM = {
// VP_M117, for completeness, but it cannot be auto-uploaded
#if HAS_HOTEND
VP_T_E0_Is, VP_T_E0_Set,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_T_E1_Is, VP_T_E1_Set,
#endif
#endif
@ -92,7 +92,7 @@ const uint16_t VPList_Status2[] PROGMEM = {
// VP_M117, for completeness, but it cannot be auto-uploaded
#if HAS_HOTEND
VP_Flowrate_E0,
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VP_Flowrate_E1,
#endif
#endif
@ -182,7 +182,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, ScreenHandler.HandleFilamentOption, ScreenHandler.HandleFilamentLoadUnload),
#endif
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<0>),
VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, ScreenHandler.HandleTemperatureChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
VPHELPER(VP_Flowrate_E1, nullptr, ScreenHandler.HandleFlowRateChanged, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
@ -237,7 +237,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>),
#if HAS_HOTEND
VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>),
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>),
#endif
#endif

6
Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp

@ -256,7 +256,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) {
case VP_E0_PID_I: newvalue = scalePID_i(value); break;
case VP_E0_PID_D: newvalue = scalePID_d(value); break;
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
case VP_E1_PID_P: newvalue = value; break;
case VP_E1_PID_I: newvalue = scalePID_i(value); break;
case VP_E1_PID_D: newvalue = scalePID_d(value); break;
@ -333,7 +333,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) {
if (filament_data.action == 0) { // Go back to utility screen
#if HAS_HOTEND
thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E0);
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E1);
#endif
#endif
@ -348,7 +348,7 @@ void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) {
thermalManager.setTargetHotend(e_temp, filament_data.extruder);
break;
#endif
#if HOTENDS >= 2
#if HAS_MULTI_HOTEND
case VP_E1_FILAMENT_LOAD_UNLOAD:
filament_data.extruder = ExtUI::extruder_t::E1;
thermalManager.setTargetHotend(e_temp, filament_data.extruder);

12
Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp

@ -327,7 +327,7 @@ void DGUSRxHandler::TempTarget(DGUS_VP &vp, void *data_ptr) {
case DGUS_Addr::TEMP_SetTarget_H0:
ExtUI::setTargetTemp_celsius(temp, ExtUI::H0);
break;
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Addr::TEMP_SetTarget_H1:
ExtUI::setTargetTemp_celsius(temp, ExtUI::H1);
break;
@ -347,7 +347,7 @@ void DGUSRxHandler::TempCool(DGUS_VP &vp, void *data_ptr) {
case DGUS_Data::Heater::ALL:
ExtUI::setTargetTemp_celsius(0, ExtUI::BED);
ExtUI::setTargetTemp_celsius(0, ExtUI::H0);
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
ExtUI::setTargetTemp_celsius(0, ExtUI::H1);
#endif
break;
@ -357,7 +357,7 @@ void DGUSRxHandler::TempCool(DGUS_VP &vp, void *data_ptr) {
case DGUS_Data::Heater::H0:
ExtUI::setTargetTemp_celsius(0, ExtUI::H0);
break;
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
ExtUI::setTargetTemp_celsius(0, ExtUI::H1);
break;
@ -827,7 +827,7 @@ void DGUSRxHandler::PIDSelect(DGUS_VP &vp, void *data_ptr) {
dgus_screen_handler.pid_heater = heater;
break;
case DGUS_Data::Heater::H0:
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
#endif
dgus_screen_handler.pid_temp = DGUS_PLA_TEMP_HOTEND;
@ -858,7 +858,7 @@ void DGUSRxHandler::PIDSetTemp(DGUS_VP &vp, void *data_ptr) {
case DGUS_Data::Heater::H0:
temp = constrain(temp, HEATER_0_MINTEMP, (HEATER_0_MAXTEMP - HOTEND_OVERSHOOT));
break;
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
temp = constrain(temp, HEATER_1_MINTEMP, (HEATER_1_MAXTEMP - HOTEND_OVERSHOOT));
break;
@ -900,7 +900,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) {
dgus_screen_handler.SetStatusMessage(F("PID disabled"));
return;
#endif
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
#if ENABLED(PIDTEMP)
heater = H_E1;

8
Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.cpp

@ -275,7 +275,7 @@ void DGUSTxHandler::TempMax(DGUS_VP &vp) {
case DGUS_Addr::TEMP_Max_H0:
temp = HEATER_0_MAXTEMP - HOTEND_OVERSHOOT;
break;
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Addr::TEMP_Max_H1:
temp = HEATER_1_MAXTEMP - HOTEND_OVERSHOOT;
break;
@ -428,7 +428,7 @@ void DGUSTxHandler::PIDKp(DGUS_VP &vp) {
case DGUS_Data::Heater::H0:
value = ExtUI::getPIDValues_Kp(ExtUI::E0);
break;
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
value = ExtUI::getPIDValues_Kp(ExtUI::E1);
break;
@ -454,7 +454,7 @@ void DGUSTxHandler::PIDKi(DGUS_VP &vp) {
case DGUS_Data::Heater::H0:
value = ExtUI::getPIDValues_Ki(ExtUI::E0);
break;
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
value = ExtUI::getPIDValues_Ki(ExtUI::E1);
break;
@ -480,7 +480,7 @@ void DGUSTxHandler::PIDKd(DGUS_VP &vp) {
case DGUS_Data::Heater::H0:
value = ExtUI::getPIDValues_Kd(ExtUI::E0);
break;
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
value = ExtUI::getPIDValues_Kd(ExtUI::E1);
break;

4
Marlin/src/lcd/extui/dgus_reloaded/config/DGUS_Addr.h

@ -64,7 +64,7 @@ enum class DGUS_Addr : uint16_t {
TEMP_Preset = 0x2010, // Popup / Data: DGUS_Data::TempPreset
TEMP_SetTarget_Bed = 0x2011, // Type: Integer (16 bits signed)
TEMP_SetTarget_H0 = 0x2012, // Type: Integer (16 bits signed)
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
TEMP_SetTarget_H1 = 0x2013, // Type: Integer (16 bits signed)
#endif
TEMP_Cool = 0x2014, // Data: DGUS_Data::Heater
@ -123,7 +123,7 @@ enum class DGUS_Addr : uint16_t {
TEMP_Current_H0 = 0x30FF, // Type: Integer (16 bits signed)
TEMP_Target_H0 = 0x3100, // Type: Integer (16 bits signed)
TEMP_Max_H0 = 0x3101, // Type: Integer (16 bits unsigned)
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
TEMP_Current_H1 = 0x3102, // Type: Integer (16 bits signed)
TEMP_Target_H1 = 0x3103, // Type: Integer (16 bits signed)
TEMP_Max_H1 = 0x3104, // Type: Integer (16 bits unsigned)

4
Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp

@ -102,7 +102,7 @@ const struct DGUS_VP vp_list[] PROGMEM = {
VP_HELPER_RX(DGUS_Addr::TEMP_Preset, &DGUSRxHandler::TempPreset),
VP_HELPER_RX(DGUS_Addr::TEMP_SetTarget_Bed, &DGUSRxHandler::TempTarget),
VP_HELPER_RX(DGUS_Addr::TEMP_SetTarget_H0, &DGUSRxHandler::TempTarget),
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
VP_HELPER_RX(DGUS_Addr::TEMP_SetTarget_H1, &DGUSRxHandler::TempTarget),
#endif
VP_HELPER_RX(DGUS_Addr::TEMP_Cool, &DGUSRxHandler::TempCool),
@ -217,7 +217,7 @@ const struct DGUS_VP vp_list[] PROGMEM = {
&thermalManager.temp_hotend[ExtUI::heater_t::H0].target,
&DGUSTxHandler::ExtraToInteger<int16_t>),
VP_HELPER_TX(DGUS_Addr::TEMP_Max_H0, &DGUSTxHandler::TempMax),
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
VP_HELPER_TX_AUTO(DGUS_Addr::TEMP_Current_H1,
&thermalManager.temp_hotend[ExtUI::heater_t::H1].celsius,
&DGUSTxHandler::ExtraToInteger<float>),

7
Marlin/src/lcd/menu/menu_temperature.cpp

@ -122,7 +122,8 @@ void Temperature::lcd_preheat(const uint8_t e, const int8_t indh, const int8_t i
HOTEND_LOOP() PREHEAT_ITEMS(editable.int8, e);
ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M_ALL, []() {
HOTEND_LOOP() thermalManager.setTargetHotend(ui.material_preset[editable.int8].hotend_temp, e);
const celsius_t t = ui.material_preset[editable.int8].hotend_temp;
HOTEND_LOOP() thermalManager.setTargetHotend(t, e);
TERN(HAS_HEATED_BED, _preheat_bed(editable.int8), ui.return_to_status());
});
@ -268,7 +269,7 @@ void menu_temperature() {
//
LOOP_L_N(m, PREHEAT_COUNT) {
editable.int8 = m;
#if HOTENDS > 1 || HAS_HEATED_BED
#if HAS_MULTI_HOTEND || HAS_HEATED_BED
SUBMENU_S(ui.get_preheat_label(m), MSG_PREHEAT_M, menu_preheat_m);
#elif HAS_HOTEND
ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M, do_preheat_end_m);
@ -295,7 +296,7 @@ void menu_temperature() {
LOOP_L_N(m, PREHEAT_COUNT) {
editable.int8 = m;
#if HOTENDS > 1 || HAS_HEATED_BED
#if HAS_MULTI_HOTEND || HAS_HEATED_BED
SUBMENU_S(ui.get_preheat_label(m), MSG_PREHEAT_M, menu_preheat_m);
#else
ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M, do_preheat_end_m);

4
Marlin/src/lcd/tft/ui_common.h

@ -57,7 +57,7 @@ void menu_item(const uint8_t row, bool sel = false);
#define ABSOLUTE_ZERO -273.15
#if HAS_TEMP_CHAMBER && HOTENDS > 1
#if HAS_TEMP_CHAMBER && HAS_MULTI_HOTEND
#define ITEM_E0 0
#define ITEM_E1 1
#define ITEM_BED 2
@ -74,7 +74,7 @@ void menu_item(const uint8_t row, bool sel = false);
#define ITEM_COOLER 0
#define ITEM_FAN 1
#define ITEMS_COUNT 2
#elif HOTENDS > 1
#elif HAS_MULTI_HOTEND
#define ITEM_E0 0
#define ITEM_E1 1
#define ITEM_BED 2

2
Marlin/src/pins/esp32/pins_E4D.h

@ -32,7 +32,7 @@
#if EXTRUDERS > 1 || E_STEPPERS > 1
#error "E4d@box only supports one E Stepper. Comment out this line to continue."
#elif HOTENDS > 1
#elif HAS_MULTI_HOTEND
#error "E4d@box only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/esp32/pins_FYSETC_E4.h

@ -32,7 +32,7 @@
#if EXTRUDERS > 1 || E_STEPPERS > 1
#error "FYSETC E4 only supports one E Stepper. Comment out this line to continue."
#elif HOTENDS > 1
#elif HAS_MULTI_HOTEND
#error "FYSETC E4 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/esp32/pins_MRR_ESPA.h

@ -32,7 +32,7 @@
#if EXTRUDERS > 1 || E_STEPPERS > 1
#error "MRR ESPA only supports one E Stepper. Comment out this line to continue."
#elif HOTENDS > 1
#elif HAS_MULTI_HOTEND
#error "MRR ESPA only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/esp32/pins_MRR_ESPE.h

@ -33,7 +33,7 @@
#if EXTRUDERS > 2 || E_STEPPERS > 2
#error "MRR ESPE only supports two E Steppers. Comment out this line to continue."
#elif HOTENDS > 1
#elif HAS_MULTI_HOTEND
#error "MRR ESPE only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/ramps/pins_K8600.h

@ -25,7 +25,7 @@
* VERTEX NANO Arduino Mega with RAMPS EFB v1.4 pin assignments.
*/
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
#error "Only 1 hotend is supported for Vertex Nano."
#endif

2
Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h

@ -28,7 +28,7 @@
#define REQUIRE_MEGA2560
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "Longer3D LGT KIT V1.0 board only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h

@ -21,7 +21,7 @@
*/
#pragma once
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "Ender-4 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h

@ -23,7 +23,7 @@
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "CCROBOT-ONLINE MEEB_3DP only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_CREALITY_V4.h

@ -27,7 +27,7 @@
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "Creality V4 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_CREALITY_V4210.h

@ -27,7 +27,7 @@
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "CREALITY supports up to 1 hotends / E-steppers. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_CREALITY_V452.h

@ -25,7 +25,7 @@
* Creality v4.5.2 (STM32F103RET6) board pin assignments
*/
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "Creality v4.5.2 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_CREALITY_V453.h

@ -25,7 +25,7 @@
* Creality v4.5.3 (STM32F103RET6) board pin assignments
*/
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "Creality v4.5.3 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h

@ -31,7 +31,7 @@
#if NOT_TARGET(__STM32F1__, STM32F1xx)
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
#elif HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "FLSUN HiSpeedV1 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h

@ -32,7 +32,7 @@
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "JGAurora A5S A1 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h

@ -27,7 +27,7 @@
#if NOT_TARGET(__STM32F1__, STM32F1xx)
#error "Oops! Select a STM32F1 board in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
#elif HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "Longer3D only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3.h

@ -25,7 +25,7 @@
* MKS Robin E3 (STM32F103RCT6) board pin assignments
*/
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "MKS Robin E3 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D.h

@ -25,7 +25,7 @@
* MKS Robin E3D (STM32F103RCT6) board pin assignments
*/
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "MKS Robin E3D only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3D_V1_1.h

@ -25,7 +25,7 @@
* MKS Robin E3D v1.1 (STM32F103RCT6) board pin assignments
*/
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "MKS Robin E3D v1.1 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3P.h

@ -27,7 +27,7 @@
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "MKS Robin E3P only supports one hotend / E-stepper. Comment out this line to continue."
#elif HAS_FSMC_TFT
#error "MKS Robin E3P doesn't support FSMC-based TFT displays."

2
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_V1_1.h

@ -25,7 +25,7 @@
* MKS Robin E3 v1.1 (STM32F103RCT6) board pin assignments
*/
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "MKS Robin E3 v1.1 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h

@ -23,7 +23,7 @@
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "MKS Robin Lite only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h

@ -27,7 +27,7 @@
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "MKS Robin mini only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f4/pins_ANET_ET4.h

@ -23,7 +23,7 @@
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "Anet ET4 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h

@ -23,7 +23,7 @@
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "BIGTREE BTT002 V1.0 only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f4/pins_LERDGE_X.h

@ -24,7 +24,7 @@
#define ALLOW_STM32DUINO
#include "env_validate.h"
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "LERDGE X only supports one hotend / E-stepper. Comment out this line to continue."
#endif

2
Marlin/src/pins/stm32f7/pins_REMRAM_V1.h

@ -32,7 +32,7 @@
#define SRAM_EEPROM_EMULATION // Emulate the EEPROM using Backup SRAM
#endif
#if HOTENDS > 1 || E_STEPPERS > 1
#if HAS_MULTI_HOTEND || E_STEPPERS > 1
#error "RemRam only supports one hotend / E-stepper. Comment out this line to continue."
#endif

Loading…
Cancel
Save