You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(api): Add ready-to-aspirate into engine state so analysis correctly fails (#17636)
<!--
Thanks for taking the time to open a Pull Request (PR)! Please make sure
you've read the "Opening Pull Requests" section of our Contributing
Guide:
https://github.com/Opentrons/opentrons/blob/edge/CONTRIBUTING.md#opening-pull-requests
GitHub provides robust markdown to format your PR. Links, diagrams,
pictures, and videos along with text formatting make it possible to
create a rich and informative PR. For more information on GitHub
markdown, see:
https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax
To ensure your code is reviewed quickly and thoroughly, please fill out
the sections below to the best of your ability!
-->
# Overview
The "ready to aspirate" state was previously only known to the hardware
control layer, this adds the state updates to the protocol engine so
that commands will fail analysis when steps would produce an error at
runtime without removing any of the hardware layer checks.
This stems from a scenario where the following steps would produce a
"not ready to aspirate" error at runtime but pass analysis.
1. Pipette picks up tips
2. Does an air gap
3. Does an aspirate
4. does a dispense with push out
5. does an airgap command
Since we automatically do a prepare-to-aspirate as part of the aspirate
command and the pick up tip, it successfully passes step 2 but we don't
automatically do it during dispense or air gap so when the hardware
attempts to start step 5, and step 4 leaves it in an "not-ready" state
the hardware controller fails at runtime.
This PR updates all of the various protocol engine command that effect
the "ready" state to have a new StateUpdate element that stores the
current state in the state view. this way analysis will fail when a
particular order of calls would result in an illegal move.
<!--
Describe your PR at a high level. State acceptance criteria and how this
PR fits into other work. Link issues, PRs, and other relevant resources.
-->
## Test Plan and Hands on Testing
<!--
Describe your testing of the PR. Emphasize testing not reflected in the
code. Attach protocols, logs, screenshots and any other assets that
support your testing.
-->
## Changelog
<!--
List changes introduced by this PR considering future developers and the
end user. Give careful thought and clear documentation to breaking
changes.
-->
## Review requests
<!--
- What do you need from reviewers to feel confident this PR is ready to
merge?
- Ask questions.
-->
## Risk assessment
<!--
- Indicate the level of attention this PR needs.
- Provide context to guide reviewers.
- Discuss trade-offs, coupling, and side effects.
- Look for the possibility, even if you think it's small, that your
change may affect some other part of the system.
- For instance, changing return tip behavior may also change the
behavior of labware calibration.
- How do your unit tests and on hands on testing mitigate this PR's
risks and the risk of future regressions?
- Especially in high risk PRs, explain how you know your testing is
enough.
-->
0 commit comments