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 :
@@ -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