fix(omny): save reference images at every manual confirm gate, not just the RT confirm handshake
CI for csaxs_bec / test (push) Successful in 2m22s
CI for csaxs_bec / test (push) Successful in 2m22s
_otransfer_save_reference_images() was only called from _otransfer_confirm()'s "All OK?" checkpoint. Now also called at otransfer_get_sample()'s "no sample in gripper" and "ready to start the unmount process" gates, and otransfer_put_sample()'s "ready to start the mount process" gate -- all three already run after the camera pair is live, so no extra setup needed. Checked flomni.py for the equivalent gap per request: there isn't one -- ftransfer_get_sample()/ftransfer_put_sample() have no manual confirm dialog before starting mount/unmount at all (just an automated check + raise), so there's no existing flomni gate missing an image-save call. Documented in AI_docs/OPEN_ISSUES.md, including a forward-looking note in case flomni ever gains an interactive gripper-empty confirm of its own. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018Mupip8x7Hean6E3FFvpbj
This commit is contained in:
1 parent
9fe0678899
commit
a7429b2de2
2 files changed
+35
No files matched your search
@@ -814,6 +814,38 @@ work above). **Mirko's intent: port the same real-EPICS status+account channel t
|
||||
point** -- a separate, dedicated task (its own `.template` record + `FlomniSampleStorage` changes
|
||||
+ retiring/reconciling `_MeasuredSampleLog`), not bundled into this branch.
|
||||
|
||||
## Reference images now saved at every manual confirm gate in otransfer_get_sample/put_sample -- flomni has no equivalent gate to save at
|
||||
|
||||
`_otransfer_save_reference_images()` used to be called only from inside `_otransfer_confirm()`'s
|
||||
"All OK?" checkpoint (the RT-controller confirm handshake during the actual mount/unmount motion).
|
||||
It's now also called at every earlier manual `otransfer_confirm_dialog()` gate in
|
||||
`omny_sample_transfer_mixin.py`:
|
||||
- `otransfer_get_sample()`'s "Please confirm that currently there is no sample in the gripper..."
|
||||
gate (`file_suffix="get_gripper_empty_check"`)
|
||||
- `otransfer_get_sample()`'s "Ready to start the unmount process now?" gate
|
||||
(`file_suffix="get_unmount_start"`)
|
||||
- `otransfer_put_sample()`'s "Ready to start the mount process now?" gate
|
||||
(`file_suffix="put_mount_start"`)
|
||||
|
||||
All three already run after `_omnycam_parking()`/`_omnycam_samplestage()` has made the camera pair
|
||||
live, so no extra setup was needed -- just one more call to the existing, generic
|
||||
`_otransfer_save_reference_images(file_suffix=...)` helper at each site.
|
||||
|
||||
**Checked flOMNI for the equivalent gap, per Mirko's request: there isn't one to fix.**
|
||||
`flomni.py`'s `ftransfer_get_sample()`/`ftransfer_put_sample()` have no manual confirm dialog at
|
||||
all before starting the mount/unmount motion -- unlike OMNY, they just do an automated
|
||||
`is_sample_in_gripper()`/`is_sample_slot_used()` check and raise `FlomniError` directly, no
|
||||
`ftransfer_confirm_dialog()` gate to save an image at. FlOMNI's `save_reference_image()` is (like
|
||||
OMNY's `_otransfer_save_reference_images()` used to be) only ever called from its own "All OK?
|
||||
Continue?" handshake (`flomni.py` around line 1107-1112) -- so flOMNI and OMNY are consistent
|
||||
with each other again after this change, just via different means (OMNY has extra manual gates
|
||||
FlOMNI never had, not a missing image-save call on an existing FlOMNI gate).
|
||||
|
||||
If FlOMNI ever gains an interactive "confirm gripper is empty" gate of its own (closing this
|
||||
long-standing behavioral difference from OMNY), it should get a `save_reference_image()` call at
|
||||
the same point, for consistency with this change -- noted here so it isn't forgotten if/when that
|
||||
gate gets added, not because anything is broken today.
|
||||
|
||||
## Environment note (not code, but will bite again if forgotten)
|
||||
|
||||
Both `csaxs_bec` and `bec_widgets` were pip-installed editable pointing at pre-repo-
|
||||
|
||||
@@ -808,6 +808,7 @@ class OMNYSampleTransferMixin:
|
||||
|
||||
if not self.otransfer_confirm_dialog("Ready to start the mount process now?", "y"):
|
||||
raise OMNYTransferError("Transfer process has been manually aborted.")
|
||||
self._otransfer_save_reference_images(file_suffix="put_mount_start")
|
||||
dev.otransy.controller.socket_put_confirmed("XQ#GRPUT")
|
||||
|
||||
print("The mount process started.")
|
||||
@@ -932,6 +933,7 @@ class OMNYSampleTransferMixin:
|
||||
"y",
|
||||
):
|
||||
raise OMNYTransferError("Transfer process has been manually aborted.")
|
||||
self._otransfer_save_reference_images(file_suffix="get_gripper_empty_check")
|
||||
# clean abort before starting
|
||||
dev.otransx.controller.socket_put_confirmed("XQ#STOP,1")
|
||||
time.sleep(0.1)
|
||||
@@ -962,6 +964,7 @@ class OMNYSampleTransferMixin:
|
||||
|
||||
if not self.otransfer_confirm_dialog("Ready to start the unmount process now?", "y"):
|
||||
raise OMNYTransferError("Transfer process has been manually aborted.")
|
||||
self._otransfer_save_reference_images(file_suffix="get_unmount_start")
|
||||
|
||||
dev.otransy.controller.socket_put_confirmed("XQ#GRGET")
|
||||
|
||||
|
||||
Reference in new issue
Block a user