Skip to content

Comments

[TRCL-675][fix] SPARC GUI: don't prevent acquisition when ebeam-gun-exciter interlock is open#3371

Merged
pieleric merged 1 commit intodelmic:masterfrom
pieleric:fix-sparc-gui-don-t-prevent-acquisition-when-ebeam-gun-exciter-interlock-is-open
Feb 20, 2026
Merged

[TRCL-675][fix] SPARC GUI: don't prevent acquisition when ebeam-gun-exciter interlock is open#3371
pieleric merged 1 commit intodelmic:masterfrom
pieleric:fix-sparc-gui-don-t-prevent-acquisition-when-ebeam-gun-exciter-interlock-is-open

Conversation

@pieleric
Copy link
Member

As much as the light (aka laser) interlock can indicate a safety issue
(because it can mean the SPARC optical path is opened), an acquisition with
with the ebeam-gun-exciter interlock open would at worse mean that it
would acquire a dark measurement. More over, in many cases, the user
might not even want to be using the gun exciter. So no need to prevent
the acquisition in such case.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts SPARC acquisition UI gating so that an open e-beam gun exciter interlock does not block acquisitions (since it would at worst produce a dark measurement), while keeping existing interlock handling for systems that expose the light/laser interlock VA.

Changes:

  • Introduces _interlock_blocks_acquisition to control whether an interlock state disables acquisition.
  • Sets _interlock_blocks_acquisition = False when subscribing to ebeam_gun_exciter.interlockTriggered.
  • Updates update_acquisition_time() to only disable acquisition when both the interlock is triggered and blocking is enabled.

@pieleric pieleric changed the title [fix] SPARC GUI: don't prevent acquisition when ebeam-gun-exciter interlock is open [TRCL-675][fix] SPARC GUI: don't prevent acquisition when ebeam-gun-exciter interlock is open Feb 20, 2026
…erlock is open

As much as the light (aka laser) interlock can indicate a safety issue
(because it can mean the SPARC optical path is opened), an acquisition with
with the ebeam-gun-exciter interlock open would at worse mean that it
would acquire a dark measurement. More over, in many cases, the user
might not even want to be using the gun exciter. So no need to prevent
the acquisition in such case.
@pieleric pieleric force-pushed the fix-sparc-gui-don-t-prevent-acquisition-when-ebeam-gun-exciter-interlock-is-open branch from 26668e4 to 383d815 Compare February 20, 2026 18:20
@pieleric pieleric merged commit 1650380 into delmic:master Feb 20, 2026
4 of 5 checks passed
@coderabbitai
Copy link

coderabbitai bot commented Feb 20, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

The pull request modifies the SPARC acquisition controller to introduce fine-grained control over whether a triggered laser interlock blocks acquisition. A new private flag _interlock_blocks_acquisition is added (defaulting to True for backward compatibility). When an e-beam gun exciter has an interlockTriggered value attribute, this flag is set to False, allowing acquisition to proceed even if the interlock is triggered. The acquisition-time logic now checks both the interlock status and this flag before deciding whether to block acquisition. Minor clarifications are added to comments and behavior notes regarding blanker state preservation.

Sequence Diagram

sequenceDiagram
    participant User as User/Acquisition Request
    participant Acq as Acquisition Controller
    participant Interlock as Laser Interlock
    participant Blanker as Blanker
    participant Engine as Acquisition Engine

    User->>Acq: Start Acquisition
    Acq->>Interlock: Check interlockTriggered status
    Interlock-->>Acq: Interlock status
    
    alt Interlock Triggered and _interlock_blocks_acquisition = True
        Acq->>User: Block Acquisition (Warning)
    else Interlock Triggered and _interlock_blocks_acquisition = False
        Acq->>User: Warn about interlock
        Acq->>Blanker: Preserve/Restore blanker state
        Blanker-->>Acq: State preserved
        Acq->>Engine: Proceed with Acquisition
        Engine-->>Acq: Acquisition running
    else Interlock Not Triggered
        Acq->>Engine: Proceed with Acquisition
        Engine-->>Acq: Acquisition running
    end
Loading
✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants