+57
−31
+24
−1
test_atik.py
0 → 100644
+149
−0
Loading
atik.py: guard subframe change while looping; fix setpoint telemetry off-cooling; script diagnostico standalone
Causa reale trovata su hardware per il bug half_frame()/small_frame()
full-frame: ArtemisSubframe falliva con ARTEMIS_INVALID_PARAMETER
(codice 1) perche' mancava il guard "non idle" che mako.py/stl.py
hanno gia' per lo stesso vincolo hardware (can't-change-binning/window-
while-looping). La guida SDK del vendor conferma il pattern: il suo
stesso esempio controlla ArtemisCameraState(hcam)==0 prima di
ArtemisSubframe. _apply_subframe() ora rifiuta subito se self._looping
e' vero, oltre al controllo del codice di ritorno gia' aggiunto prima.
Cooling: trovata la causa per cui "Set" non aggiornava la telemetria a
cooling spento. all()'s "setpoint" leggeva il registro SDK live
(ArtemisCoolingInfo) invece di self._setpoint — ma ArtemisSetCooling e'
l'unica chiamata che comunica un setpoint all'hardware e attiva sempre
anche il cooling, quindi col cooling spento il registro non viene mai
aggiornato. Ora all() riporta self._setpoint, come gia' fa stl.py per
lo stesso motivo. La lentezza del bottone Cooling Off resta
comportamento SDK/firmware documentato (slow ramp down), non un bug.
Aggiunto test_atik.py nella root: script diagnostico standalone che
chiama la SDK Artemis direttamente via ctypes, senza passare dal
wrapper (niente loop thread/guard/cache), per isolare ulteriormente il
bug subframe. Scatta un'esposizione Light di 1s sulla subframe passata
da riga di comando, stampa stato macchina/codice di ritorno/read-back
SDK, scrive un FITS.
Co-Authored-By:
Claude Sonnet 5 <noreply@anthropic.com>