@@ -36,9 +36,9 @@ def __init__(self, setpoint: float = -20., **kwargs: Any):
36
36
self ._window = (0 , 0 , 0 , 0 )
37
37
self ._binning = (1 , 1 )
38
38
39
- def open (self ) -> None :
39
+ async def open (self ) -> None :
40
40
"""Open module."""
41
- BaseCamera .open (self )
41
+ await BaseCamera .open (self )
42
42
43
43
# list devices
44
44
devices = FliDriver .list_devices ()
@@ -59,19 +59,19 @@ def open(self) -> None:
59
59
60
60
# set cooling
61
61
if self ._temp_setpoint is not None :
62
- self .set_cooling (True , self ._temp_setpoint )
62
+ await self .set_cooling (True , self ._temp_setpoint )
63
63
64
- def close (self ) -> None :
64
+ async def close (self ) -> None :
65
65
"""Close the module."""
66
- BaseCamera .close (self )
66
+ await BaseCamera .close (self )
67
67
68
68
# not open?
69
69
if self ._driver is not None :
70
70
# close connection
71
71
self ._driver .close ()
72
72
self ._driver = None
73
73
74
- def get_full_frame (self , ** kwargs : Any ) -> Tuple [int , int , int , int ]:
74
+ async def get_full_frame (self , ** kwargs : Any ) -> Tuple [int , int , int , int ]:
75
75
"""Returns full size of CCD.
76
76
77
77
Returns:
@@ -81,23 +81,23 @@ def get_full_frame(self, **kwargs: Any) -> Tuple[int, int, int, int]:
81
81
raise ValueError ('No camera driver.' )
82
82
return self ._driver .get_full_frame ()
83
83
84
- def get_window (self , ** kwargs : Any ) -> Tuple [int , int , int , int ]:
84
+ async def get_window (self , ** kwargs : Any ) -> Tuple [int , int , int , int ]:
85
85
"""Returns the camera window.
86
86
87
87
Returns:
88
88
Tuple with left, top, width, and height set.
89
89
"""
90
90
return self ._window
91
91
92
- def get_binning (self , ** kwargs : Any ) -> Tuple [int , int ]:
92
+ async def get_binning (self , ** kwargs : Any ) -> Tuple [int , int ]:
93
93
"""Returns the camera binning.
94
94
95
95
Returns:
96
96
Tuple with x and y.
97
97
"""
98
98
return self ._binning
99
99
100
- def set_window (self , left : int , top : int , width : int , height : int , ** kwargs : Any ) -> None :
100
+ async def set_window (self , left : int , top : int , width : int , height : int , ** kwargs : Any ) -> None :
101
101
"""Set the camera window.
102
102
103
103
Args:
@@ -112,7 +112,7 @@ def set_window(self, left: int, top: int, width: int, height: int, **kwargs: Any
112
112
self ._window = (left , top , width , height )
113
113
log .info ('Setting window to %dx%d at %d,%d...' , width , height , left , top )
114
114
115
- def set_binning (self , x : int , y : int , ** kwargs : Any ) -> None :
115
+ async def set_binning (self , x : int , y : int , ** kwargs : Any ) -> None :
116
116
"""Set the camera binning.
117
117
118
118
Args:
@@ -125,7 +125,7 @@ def set_binning(self, x: int, y: int, **kwargs: Any) -> None:
125
125
self ._binning = (x , y )
126
126
log .info ('Setting binning to %dx%d...' , x , y )
127
127
128
- def _expose (self , exposure_time : float , open_shutter : bool , abort_event : threading .Event ) -> Image :
128
+ async def _expose (self , exposure_time : float , open_shutter : bool , abort_event : threading .Event ) -> Image :
129
129
"""Actually do the exposure, should be implemented by derived classes.
130
130
131
131
Args:
@@ -159,7 +159,6 @@ def _expose(self, exposure_time: float, open_shutter: bool, abort_event: threadi
159
159
self ._driver .set_window (self ._window [0 ], self ._window [1 ], width , height )
160
160
161
161
# set some stuff
162
- self ._change_exposure_status (ExposureStatus .EXPOSING )
163
162
self ._driver .init_exposure (open_shutter )
164
163
self ._driver .set_exposure_time (int (exposure_time * 1000. ))
165
164
@@ -175,7 +174,7 @@ def _expose(self, exposure_time: float, open_shutter: bool, abort_event: threadi
175
174
while True :
176
175
# aborted?
177
176
if abort_event .is_set ():
178
- self ._change_exposure_status (ExposureStatus .IDLE )
177
+ await self ._change_exposure_status (ExposureStatus .IDLE )
179
178
raise ValueError ('Aborted exposure.' )
180
179
181
180
# is exposure finished?
@@ -187,7 +186,7 @@ def _expose(self, exposure_time: float, open_shutter: bool, abort_event: threadi
187
186
188
187
# readout
189
188
log .info ('Exposure finished, reading out...' )
190
- self ._change_exposure_status (ExposureStatus .READOUT )
189
+ await self ._change_exposure_status (ExposureStatus .READOUT )
191
190
width = int (math .floor (self ._window [2 ] / self ._binning [0 ]))
192
191
height = int (math .floor (self ._window [3 ] / self ._binning [1 ]))
193
192
img = np .zeros ((height , width ), dtype = np .uint16 )
@@ -224,7 +223,6 @@ def _expose(self, exposure_time: float, open_shutter: bool, abort_event: threadi
224
223
225
224
# return FITS image
226
225
log .info ('Readout finished.' )
227
- self ._change_exposure_status (ExposureStatus .IDLE )
228
226
return image
229
227
230
228
def _abort_exposure (self ) -> None :
@@ -236,9 +234,8 @@ def _abort_exposure(self) -> None:
236
234
if self ._driver is None :
237
235
raise ValueError ('No camera driver.' )
238
236
self ._driver .cancel_exposure ()
239
- self ._camera_status = ExposureStatus .IDLE
240
237
241
- def get_cooling_status (self , ** kwargs : Any ) -> Tuple [bool , float , float ]:
238
+ async def get_cooling_status (self , ** kwargs : Any ) -> Tuple [bool , float , float ]:
242
239
"""Returns the current status for the cooling.
243
240
244
241
Returns:
@@ -252,7 +249,7 @@ def get_cooling_status(self, **kwargs: Any) -> Tuple[bool, float, float]:
252
249
enabled = self ._temp_setpoint is not None
253
250
return enabled , self ._temp_setpoint if self ._temp_setpoint is not None else 99. , self ._driver .get_cooler_power ()
254
251
255
- def get_temperatures (self , ** kwargs : Any ) -> Dict [str , float ]:
252
+ async def get_temperatures (self , ** kwargs : Any ) -> Dict [str , float ]:
256
253
"""Returns all temperatures measured by this module.
257
254
258
255
Returns:
@@ -265,7 +262,7 @@ def get_temperatures(self, **kwargs: Any) -> Dict[str, float]:
265
262
'Base' : self ._driver .get_temp (FliTemperature .BASE )
266
263
}
267
264
268
- def set_cooling (self , enabled : bool , setpoint : float , ** kwargs : Any ) -> None :
265
+ async def set_cooling (self , enabled : bool , setpoint : float , ** kwargs : Any ) -> None :
269
266
"""Enables/disables cooling and sets setpoint.
270
267
271
268
Args:
0 commit comments