Support firmware retration and retract_restart_extra

This commit is contained in:
SoftFever 2023-01-07 11:17:55 +08:00
parent 13cd930bb4
commit 0f04df2699
9 changed files with 101 additions and 24 deletions

View file

@ -2335,6 +2335,13 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloats { 0. });
def = this->add("use_firmware_retraction", coBool);
def->label = L("Use firmware retraction");
def->tooltip = L("This experimental setting uses G10 and G11 commands to have the firmware "
"handle the retraction. This is only supported in recent Marlin.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("seam_position", coEnum);
def->label = L("Seam position");
def->category = L("Quality");
@ -4468,6 +4475,22 @@ std::string validate(const FullPrintConfig &cfg)
if (cfg.bottom_shell_layers < 0)
return "Invalid value for --bottom-solid-layers";
if (cfg.use_firmware_retraction.value &&
cfg.gcode_flavor.value != gcfKlipper &&
cfg.gcode_flavor.value != gcfSmoothie &&
cfg.gcode_flavor.value != gcfRepRapSprinter &&
cfg.gcode_flavor.value != gcfRepRapFirmware &&
cfg.gcode_flavor.value != gcfMarlinLegacy &&
cfg.gcode_flavor.value != gcfMarlinFirmware &&
cfg.gcode_flavor.value != gcfMachinekit &&
cfg.gcode_flavor.value != gcfRepetier)
return "--use-firmware-retraction is only supported by Klipper, Marlin, Smoothie, RepRapFirmware, Repetier and Machinekit firmware";
if (cfg.use_firmware_retraction.value)
for (unsigned char wipe : cfg.wipe.values)
if (wipe)
return "--use-firmware-retraction is not compatible with --wipe";
// --gcode-flavor
if (! print_config_def.get("gcode_flavor")->has_enum_value(cfg.gcode_flavor.serialize()))
return "Invalid value for --gcode-flavor";