@@ -107,7 +107,6 @@ def __init__(self, port: str, baudrate: int, timeout: float) -> None:
107107 dsrdtr = False ,
108108 )
109109 self ._lock = threading .RLock ()
110- self .homed = False
111110
112111 with self ._lock :
113112 # We do not use the general get_description() here because
@@ -340,6 +339,7 @@ def __init__(
340339 self ._axes = {
341340 str (i ): _LudlStageAxis (self ._dev_conn , i )
342341 for i in range (1 , 3 )#self._dev_conn.get_number_axes() + 1)
342+ self .homed = False
343343 }
344344
345345 def _do_shutdown (self ) -> None :
@@ -349,14 +349,16 @@ def _do_enable(self) -> bool:
349349 # Before a device can moved, it first needs to establish a
350350 # reference to the home position. We won't be able to move
351351 # unless we home it first.
352- if not self ._dev_conn .been_homed ():
353- self .home ()
354352 return True
355353
356354 @property
357355 def axes (self ) -> typing .Mapping [str , microscope .abc .StageAxis ]:
358356 return self ._axes
359357
358+ @property
359+ def need_homed (self ):
360+ return not (self .homed )
361+
360362 def move_by (self , delta : typing .Mapping [str , float ]) -> None :
361363 """Move specified axes by the specified distance. """
362364 for axis_name , axis_delta in delta .items ():
@@ -374,12 +376,13 @@ def move_to(self, position: typing.Mapping[str, float]) -> None:
374376 )
375377 self ._dev_conn .wait_until_idle ()
376378
377- def home (self , axes = None ):
378- if axes == None :
379+ def home (self ):
380+ if self . need_homed :
379381 axes = self .axes
380- for axis in axes :
381- self .axes [axis ].home ()
382-
382+ for axis in axes :
383+ self .axes [axis ].home ()
384+ self .homed = True
385+
383386# def assert_filterwheel_number(self, number: int) -> None:
384387# assert number > 0 and number < 4
385388
0 commit comments