CI for csaxs_bec / test (push) Successful in 3m48s
The gap between consecutive detector triggers is exp_time minus a readout time that was a module constant fixed at 0.2 ms. Some detectors need more: FalconcSAXS declares MIN_READOUT = 3 ms, fifteen times longer. Nothing reconciled the two -- DDG2 does not know which detectors are in the scan, and the falcon only validates its exposure time, never the gap -- so a detector that cannot keep up silently dropped frames. There was also no way to change it. on_stage recomputes the pulse width from the constant on every scan, so a value set by hand from the client did not survive to the next acquisition. The readout times are now per-instance, settable two ways: a readout_times key in deviceConfig for a per-deployment default, and set_readout_times() via USER_ACCESS for a change between scans. Raising the value widens the gap and shortens the exposure by the same amount; burst_period stays at exp_time, so the frame rate is unaffected. Channel pair 'ab' is the one multiplexed to the detectors and normally the only one worth changing. A value that would exceed the exposure time is rejected, and a non-default value is logged at on_stage so a scan taken with a widened gap is recoverable from the logs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KLnmUurqcNd1FiDY5M2uZr