Repository navigation
FIX: bg swap hands the heater back to the slicer, swap never restores… - #196
Conversation
… a 0 target into a print Background swap (ace_bg_swap.py, ace.py heater intent observer): the slicer's M109 for the next head could arrive while the background cold pull held that head's heater; the op then set the target to 0 and the M109 waited forever. A heater intent observer around pheaters.set_temperature records every request that is not the engine's own. When a bg op ends it restores the newest such request since it took the heater, else the target it found, else 0 (always 0 once the print has ended). Swap (ace.py): a head that arrives at a target below min extrude (a pause, or a bg op that switched it off) no longer gets that target back at the end of the swap while printing. It gets the last print temperature a swap saw on that head, else the swap temperature. The post-load wipe uses the same value, so it no longer jumps to the database load temperature (250 for Generic PLA) after a bg op. tests/unit/test_bg_heat_intent.py: the observer and the claim/release helpers on stubs.
|
@decay71 I can confirm that the temperature is no longer spiking to 250C after the IDLE action when a head is picked up, and goes to the last print temperature. Full BG Swap Blob IssueI a full bg swap is completed (and its purging in the back) we get the blob in front of the prime tower again. Blob |
|
Thanks for the log, it shows the blob exactly. Both cases (13:34 and 13:38 UTC) are the same sequence: the bg swap was still in LD_PRIME when the T arrived. Stock parks the old head, lifts the bg head out of the dock ( Fix on branch For #186 this is the same spot: |


Fix for the temperature detour reported in #172 (nozzle wipe at 250 after a background swap), ported from dev.
Tests: tests/unit/test_bg_heat_intent.py (observer and claim/release on stubs).