Klipper: specific behaviour (GCodeProcessor, WipeTower). GCodeWriter should behave as Marlin(legacy).
This commit is contained in:
parent
42f1217f6e
commit
b9eb13dff9
4 changed files with 21 additions and 13 deletions
|
@ -568,10 +568,11 @@ void GCodeProcessor::apply_config(const PrintConfig& config)
|
||||||
m_result.filament_cost[i] = static_cast<float>(config.filament_cost.get_at(i));
|
m_result.filament_cost[i] = static_cast<float>(config.filament_cost.get_at(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware || m_flavor == gcfRepRapFirmware) && config.machine_limits_usage.value != MachineLimitsUsage::Ignore) {
|
if ((m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware || m_flavor == gcfRepRapFirmware || m_flavor == gcfKlipper)
|
||||||
|
&& config.machine_limits_usage.value != MachineLimitsUsage::Ignore) {
|
||||||
m_time_processor.machine_limits = reinterpret_cast<const MachineEnvelopeConfig&>(config);
|
m_time_processor.machine_limits = reinterpret_cast<const MachineEnvelopeConfig&>(config);
|
||||||
if (m_flavor == gcfMarlinLegacy) {
|
if (m_flavor == gcfMarlinLegacy || m_flavor == gcfKlipper) {
|
||||||
// Legacy Marlin does not have separate travel acceleration, it uses the 'extruding' value instead.
|
// Legacy Marlin and Klipper don't have separate travel acceleration, they use the 'extruding' value instead.
|
||||||
m_time_processor.machine_limits.machine_max_acceleration_travel = m_time_processor.machine_limits.machine_max_acceleration_extruding;
|
m_time_processor.machine_limits.machine_max_acceleration_travel = m_time_processor.machine_limits.machine_max_acceleration_extruding;
|
||||||
}
|
}
|
||||||
if (m_flavor == gcfRepRapFirmware) {
|
if (m_flavor == gcfRepRapFirmware) {
|
||||||
|
@ -788,7 +789,7 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
||||||
if (machine_limits_usage != nullptr)
|
if (machine_limits_usage != nullptr)
|
||||||
use_machine_limits = machine_limits_usage->value != MachineLimitsUsage::Ignore;
|
use_machine_limits = machine_limits_usage->value != MachineLimitsUsage::Ignore;
|
||||||
|
|
||||||
if (use_machine_limits && (m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware || m_flavor == gcfRepRapFirmware)) {
|
if (use_machine_limits && (m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware || m_flavor == gcfRepRapFirmware || m_flavor == gcfKlipper)) {
|
||||||
const ConfigOptionFloats* machine_max_acceleration_x = config.option<ConfigOptionFloats>("machine_max_acceleration_x");
|
const ConfigOptionFloats* machine_max_acceleration_x = config.option<ConfigOptionFloats>("machine_max_acceleration_x");
|
||||||
if (machine_max_acceleration_x != nullptr)
|
if (machine_max_acceleration_x != nullptr)
|
||||||
m_time_processor.machine_limits.machine_max_acceleration_x.values = machine_max_acceleration_x->values;
|
m_time_processor.machine_limits.machine_max_acceleration_x.values = machine_max_acceleration_x->values;
|
||||||
|
@ -846,8 +847,8 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
||||||
m_time_processor.machine_limits.machine_max_acceleration_retracting.values = machine_max_acceleration_retracting->values;
|
m_time_processor.machine_limits.machine_max_acceleration_retracting.values = machine_max_acceleration_retracting->values;
|
||||||
|
|
||||||
|
|
||||||
// Legacy Marlin does not have separate travel acceleration, it uses the 'extruding' value instead.
|
// Legacy Marlin and Klipper don't have separate travel acceleration, they use the 'extruding' value instead.
|
||||||
const ConfigOptionFloats* machine_max_acceleration_travel = config.option<ConfigOptionFloats>(m_flavor == gcfMarlinLegacy
|
const ConfigOptionFloats* machine_max_acceleration_travel = config.option<ConfigOptionFloats>((m_flavor == gcfMarlinLegacy || m_flavor == gcfKlipper)
|
||||||
? "machine_max_acceleration_extruding"
|
? "machine_max_acceleration_extruding"
|
||||||
: "machine_max_acceleration_travel");
|
: "machine_max_acceleration_travel");
|
||||||
if (machine_max_acceleration_travel != nullptr)
|
if (machine_max_acceleration_travel != nullptr)
|
||||||
|
@ -885,7 +886,7 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
|
||||||
m_time_processor.machines[i].travel_acceleration = (max_travel_acceleration > 0.0f) ? max_travel_acceleration : DEFAULT_TRAVEL_ACCELERATION;
|
m_time_processor.machines[i].travel_acceleration = (max_travel_acceleration > 0.0f) ? max_travel_acceleration : DEFAULT_TRAVEL_ACCELERATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware) {
|
if (m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware) { // No Klipper here, it does not support silent mode.
|
||||||
const ConfigOptionBool* silent_mode = config.option<ConfigOptionBool>("silent_mode");
|
const ConfigOptionBool* silent_mode = config.option<ConfigOptionBool>("silent_mode");
|
||||||
if (silent_mode != nullptr) {
|
if (silent_mode != nullptr) {
|
||||||
if (silent_mode->value && m_time_processor.machine_limits.machine_max_acceleration_x.values.size() > 1)
|
if (silent_mode->value && m_time_processor.machine_limits.machine_max_acceleration_x.values.size() > 1)
|
||||||
|
@ -3244,7 +3245,7 @@ void GCodeProcessor::process_M205(const GCodeReader::GCodeLine& line)
|
||||||
|
|
||||||
void GCodeProcessor::process_M220(const GCodeReader::GCodeLine& line)
|
void GCodeProcessor::process_M220(const GCodeReader::GCodeLine& line)
|
||||||
{
|
{
|
||||||
if (m_flavor != gcfMarlinLegacy && m_flavor != gcfMarlinFirmware)
|
if (m_flavor != gcfMarlinLegacy && m_flavor != gcfMarlinFirmware && m_flavor != gcfKlipper)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (line.has('B'))
|
if (line.has('B'))
|
||||||
|
|
|
@ -93,9 +93,12 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
WipeTowerWriter& disable_linear_advance() {
|
WipeTowerWriter& disable_linear_advance() {
|
||||||
m_gcode += (m_gcode_flavor == gcfRepRapSprinter || m_gcode_flavor == gcfRepRapFirmware
|
if (m_gcode_flavor == gcfRepRapSprinter || m_gcode_flavor == gcfRepRapFirmware)
|
||||||
? (std::string("M572 D") + std::to_string(m_current_tool) + " S0\n")
|
m_gcode += (std::string("M572 D") + std::to_string(m_current_tool) + " S0\n");
|
||||||
: std::string("M900 K0\n"));
|
else if (m_gcode_flavor == gcfKlipper)
|
||||||
|
m_gcode += "SET_PRESSURE_ADVANCE ADVANCE=0\n";
|
||||||
|
else
|
||||||
|
m_gcode += "M900 K0\n";
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,6 +366,8 @@ public:
|
||||||
// Set digital trimpot motor
|
// Set digital trimpot motor
|
||||||
WipeTowerWriter& set_extruder_trimpot(int current)
|
WipeTowerWriter& set_extruder_trimpot(int current)
|
||||||
{
|
{
|
||||||
|
if (m_gcode_flavor == gcfKlipper)
|
||||||
|
return *this;
|
||||||
if (m_gcode_flavor == gcfRepRapSprinter || m_gcode_flavor == gcfRepRapFirmware)
|
if (m_gcode_flavor == gcfRepRapSprinter || m_gcode_flavor == gcfRepRapFirmware)
|
||||||
m_gcode += "M906 E";
|
m_gcode += "M906 E";
|
||||||
else
|
else
|
||||||
|
|
|
@ -58,6 +58,7 @@ std::string GCodeWriter::preamble()
|
||||||
FLAVOR_IS(gcfRepRapFirmware) ||
|
FLAVOR_IS(gcfRepRapFirmware) ||
|
||||||
FLAVOR_IS(gcfMarlinLegacy) ||
|
FLAVOR_IS(gcfMarlinLegacy) ||
|
||||||
FLAVOR_IS(gcfMarlinFirmware) ||
|
FLAVOR_IS(gcfMarlinFirmware) ||
|
||||||
|
FLAVOR_IS(gcfKlipper) ||
|
||||||
FLAVOR_IS(gcfTeacup) ||
|
FLAVOR_IS(gcfTeacup) ||
|
||||||
FLAVOR_IS(gcfRepetier) ||
|
FLAVOR_IS(gcfRepetier) ||
|
||||||
FLAVOR_IS(gcfSmoothie))
|
FLAVOR_IS(gcfSmoothie))
|
||||||
|
|
|
@ -562,8 +562,9 @@ std::string Print::validate(std::string* warning) const
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_config.gcode_flavor != gcfRepRapSprinter && m_config.gcode_flavor != gcfRepRapFirmware &&
|
if (m_config.gcode_flavor != gcfRepRapSprinter && m_config.gcode_flavor != gcfRepRapFirmware &&
|
||||||
m_config.gcode_flavor != gcfRepetier && m_config.gcode_flavor != gcfMarlinLegacy && m_config.gcode_flavor != gcfMarlinFirmware)
|
m_config.gcode_flavor != gcfRepetier && m_config.gcode_flavor != gcfMarlinLegacy &&
|
||||||
return _u8L("The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors.");
|
m_config.gcode_flavor != gcfMarlinFirmware && m_config.gcode_flavor != gcfKlipper)
|
||||||
|
return _u8L("The Wipe Tower is currently only supported for the Marlin, Klipper, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors.");
|
||||||
if (! m_config.use_relative_e_distances)
|
if (! m_config.use_relative_e_distances)
|
||||||
return _u8L("The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1).");
|
return _u8L("The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1).");
|
||||||
if (m_config.ooze_prevention && m_config.single_extruder_multi_material)
|
if (m_config.ooze_prevention && m_config.single_extruder_multi_material)
|
||||||
|
|
Loading…
Reference in a new issue