Doric preflight-armed driver is reused at runtime but stimulation startup still calls connect()

Aperta
#2 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
65/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python
Ambito
embedded-iot

Direzione di ricerca

Leggi preflight_ui.py::_arm_laser_for_launch(), quindi segui stim_controller.py::from_config() e start() per tracciare il riutilizzo di live_state.laser_driver. Controlla doric_light_source.py::connect() e gli esempi del ciclo di vita di Doric inclusi. Il lavoro è completato quando il percorso preparato dal preflight è esplicito, salta una seconda connect() e distingue il riutilizzo dalla nuova inizializzazione senza modificare il blocco dell'avvio.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

When a laser run is verified in preflight, we keep a live DoricLightSource in live_state.laser_driver and reuse it during runtime. However, StimulationController.start() still unconditionally calls driver.connect().

Why this is confusing

  • Preflight launch verification already opens the Doric device and leaves it armed.
  • Runtime reuses that same driver object via live_state.laser_driver.
  • start() still calls connect() as if runtime owns first initialization.
  • This currently works only because DoricLightSource.connect() short-circuits when self._dll is not None.

Code references

  • preflight_ui.py: _arm_laser_for_launch() stores the armed driver in live_state.laser_driver.
  • stim_controller.py: from_config() reuses live_state.laser_driver when present.
  • stim_controller.py: start() still calls self._config.driver.connect() unconditionally.
  • doric_light_source.py: connect() returns early when _dll is already set.

Local evidence

  • Bundled Doric examples show a single lifecycle: init -> open_device -> use -> close_device -> quit.
  • We did not find local documentation explicitly stating that repeated connect() on an already-open device is supported.
  • In the current reuse path, the second connect() is probably harmless because our wrapper short-circuits, but that is wrapper behavior, not a documented Doric contract.

Desired fix

  • Make the preflight-armed runtime path explicit.
  • Do not call connect() again when reusing an already-armed preflight driver.
  • Keep runtime startup semantics clear: reuse vs fresh initialization should be distinguishable in code and UI copy.

Notes

  • This is separate from UI wording cleanup.
  • Preflight still blocks launch if required laser verification fails.
  • After launch, runtime fault handling remains a separate behavior question.
Lingua principale
Python
Stelle
0
Fork
1
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di matiasandina/uid_python_api

Tutte le issue di matiasandina/uid_python_api

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.