Fix Z position tracking when stopping while parked #887
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When executing a parking cycle ($41) and then stopping the job while
parked, the Z position was not being tracked correctly. This occurred
because sync_position() synchronized gc_state.position to the current
physical position (at parking height) rather than the logical work
position before parking.
Added state_await_parking_adjustment() function that adjusts gc_state
position back to the pre-park position when stopping while parked. The
adjustment is only applied when actual parking motion occurred
(park.flags.motion is set), so configurations where Z doesn't move
during parking are handled correctly.
There's probably many ways to tackle this, if you have other ways you would like to see it handled please let me know.
I have flashed and tested this on my machine and it fixes the behavior I was seeing.