Skip to content

Commit bdd634d

Browse files
committed
TestCamera throws exceptions if it should be initialized but isn't.
1 parent 84e042f commit bdd634d

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

microscope/testsuite/devices.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,15 @@
3636

3737
_logger = logging.getLogger(__name__)
3838

39+
from functools import wraps
40+
def must_be_initialized(f):
41+
@wraps(f)
42+
def wrapper(self, *args, **kwargs):
43+
if hasattr(self, '_initialized') and self._initialized:
44+
return f(self, *args, **kwargs)
45+
else:
46+
raise Exception("Device not initialized.")
47+
return wrapper
3948

4049
class CamEnum(IntEnum):
4150
A = 1
@@ -215,11 +224,13 @@ def _purge_buffers(self):
215224
"""Purge buffers on both camera and PC."""
216225
_logger.info("Purging buffers.")
217226

227+
@must_be_initialized
218228
def _create_buffers(self):
219229
"""Create buffers and store values needed to remove padding later."""
220230
self._purge_buffers()
221231
_logger.info("Creating buffers.")
222232

233+
@must_be_initialized
223234
def _fetch_data(self):
224235
if self._acquiring and self._triggered > 0:
225236
if random.randint(0, 100) < self._error_percent:
@@ -250,6 +261,7 @@ def initialize(self):
250261
"""
251262
_logger.info('Initializing.')
252263
time.sleep(0.5)
264+
self._initialized = True
253265

254266
def make_safe(self):
255267
if self._acquiring:
@@ -258,6 +270,7 @@ def make_safe(self):
258270
def _on_disable(self):
259271
self.abort()
260272

273+
@must_be_initialized
261274
def _on_enable(self):
262275
_logger.info("Preparing for acquisition.")
263276
if self._acquiring:
@@ -283,6 +296,7 @@ def _get_sensor_shape(self):
283296
def get_trigger_type(self):
284297
return devices.TRIGGER_SOFT
285298

299+
@must_be_initialized
286300
def soft_trigger(self):
287301
_logger.info('Trigger received; self._acquiring is %s.'
288302
% self._acquiring)

0 commit comments

Comments
 (0)