123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- #include "MarlinConfig.h"
- #if ENABLED(FWRETRACT)
- #include "fwretract.h"
- #include "Marlin.h"
- #include "planner.h"
- #include "stepper.h"
- FWRetract fwretract;
- #if EXTRUDERS > 1
- bool FWRetract::retracted_swap[EXTRUDERS];
- #endif
- bool FWRetract::autoretract_enabled,
- FWRetract::retracted[EXTRUDERS];
- float FWRetract::retract_length,
- FWRetract::retract_feedrate_mm_s,
- FWRetract::retract_zlift,
- FWRetract::retract_recover_length,
- FWRetract::retract_recover_feedrate_mm_s,
- FWRetract::swap_retract_length,
- FWRetract::swap_retract_recover_length,
- FWRetract::swap_retract_recover_feedrate_mm_s,
- FWRetract::hop_amount;
- void FWRetract::reset() {
- autoretract_enabled = false;
- retract_length = RETRACT_LENGTH;
- retract_feedrate_mm_s = RETRACT_FEEDRATE;
- retract_zlift = RETRACT_ZLIFT;
- retract_recover_length = RETRACT_RECOVER_LENGTH;
- retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE;
- swap_retract_length = RETRACT_LENGTH_SWAP;
- swap_retract_recover_length = RETRACT_RECOVER_LENGTH_SWAP;
- swap_retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE_SWAP;
- hop_amount = 0.0;
- for (uint8_t i = 0; i < EXTRUDERS; ++i) {
- retracted[i] = false;
- #if EXTRUDERS > 1
- retracted_swap[i] = false;
- #endif
- }
- }
- void FWRetract::retract(const bool retracting
- #if EXTRUDERS > 1
- , bool swapping
- #endif
- ) {
- static float hop_amount = 0.0;
-
- if (retracted[active_extruder] == retracting) return;
-
- #if EXTRUDERS > 1
-
- if (swapping && retracted_swap[active_extruder] == retracting) return;
-
- if (!retracting) swapping = retracted_swap[active_extruder];
- #else
- constexpr bool swapping = false;
- #endif
-
|