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
4049class 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