Commit 1f672ea9 authored by vertighel's avatar vertighel
Browse files

atik2.py: skip set_dark_mode() on shutterless cameras



AtikSDKCamera.set_dark_mode() calls ArtemisSetDarkMode() with no
support check, unlike the wheel's own set_continuous_mode(). scicam2
(long-slit spectrograph, no shutter) fails with ARTEMIS_INVALID_FUNCTION
on every exposure, confirmed on hardware. Guard on the cameraflags
HAS_SHUTTER bit from get_properties() before calling it.

Co-Authored-By: default avatarClaude Sonnet 5 <noreply@anthropic.com>
parent 91827423
Loading
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -11,7 +11,8 @@ from ctypes import byref, c_int, string_at
# Third-party modules
import numpy as np
from astropy.io import fits
from AtikSDK import (ARTEMIS_OK, AtikSDKCamera, ArtemisAbortExposure,
from AtikSDK import (ARTEMIS_OK, ARTEMIS_PROPERTIES_CAMERAFLAGS_HAS_SHUTTER,
                      AtikSDKCamera, ArtemisAbortExposure,
                      ArtemisGetImageData, ArtemisImageBuffer, CameraError,
                      CoolingInfo)

@@ -285,6 +286,13 @@ class Camera(BaseDevice):
            self._last_imagetype = imagetype
            self._last_datetime  = datetime
        is_dark = True if imagetype in [0, 2, "Dark", "Bias"] else False
        # AtikSDKCamera.set_dark_mode() calls ArtemisSetDarkMode
        # unconditionally, with no support check (unlike its own
        # set_continuous_mode()) — on shutterless cameras (scicam2, the
        # long-slit spectrograph) it always fails with
        # ARTEMIS_INVALID_FUNCTION, confirmed on hardware. Skip it when
        # the camera doesn't report a shutter.
        if self._props.get('cameraflags', 0) & ARTEMIS_PROPERTIES_CAMERAFLAGS_HAS_SHUTTER:
            self.put('set_dark_mode', is_dark)
        self.put('start_exposure', duration)