Skip to content

Commit 5ff43e0

Browse files
committed
TestCamera throws exceptions if it should be initialized but isn't.
1 parent 1fef4b3 commit 5ff43e0

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:
@@ -249,6 +260,7 @@ def initialize(self):
249260
"""
250261
_logger.info('Initializing.')
251262
time.sleep(0.5)
263+
self._initialized = True
252264

253265
def make_safe(self):
254266
if self._acquiring:
@@ -257,6 +269,7 @@ def make_safe(self):
257269
def _on_disable(self):
258270
self.abort()
259271

272+
@must_be_initialized
260273
def _on_enable(self):
261274
_logger.info("Preparing for acquisition.")
262275
if self._acquiring:
@@ -282,6 +295,7 @@ def _get_sensor_shape(self):
282295
def get_trigger_type(self):
283296
return devices.TRIGGER_SOFT
284297

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

0 commit comments

Comments
 (0)