Merge branch 'flipped-timeouts' into 'master'
Flipped to explicit finite lock timeouts See merge request openflexure/openflexure-microscope-server!66
This commit is contained in:
commit
cea4ce3453
6 changed files with 35 additions and 30 deletions
|
|
@ -376,10 +376,12 @@ class FastAutofocusAPI(ActionView):
|
||||||
if microscope.has_real_stage():
|
if microscope.has_real_stage():
|
||||||
logging.debug("Running autofocus...")
|
logging.debug("Running autofocus...")
|
||||||
|
|
||||||
# return a handle on the autofocus task
|
# Acquire microscope lock with 1s timeout
|
||||||
return fast_up_down_up_autofocus(
|
with microscope.lock(timeout=1):
|
||||||
microscope, dz=dz, mini_backlash=backlash
|
# Run fast_up_down_up_autofocus
|
||||||
)
|
return fast_up_down_up_autofocus(
|
||||||
|
microscope, dz=dz, mini_backlash=backlash
|
||||||
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
abort(503, "No stage connected. Unable to autofocus.")
|
abort(503, "No stage connected. Unable to autofocus.")
|
||||||
|
|
|
||||||
|
|
@ -325,22 +325,23 @@ class TileScanAPI(ActionView):
|
||||||
|
|
||||||
logging.info("Running tile scan...")
|
logging.info("Running tile scan...")
|
||||||
|
|
||||||
# return a handle on the scan task
|
# Acquire microscope lock with 1s timeout
|
||||||
return scan_extension_v2.tile(
|
with microscope.lock(timeout=1):
|
||||||
microscope,
|
# Run scan_extension_v2
|
||||||
basename=args.get("filename"),
|
return scan_extension_v2.tile(
|
||||||
temporary=args.get("temporary"),
|
microscope,
|
||||||
stride_size=args.get("stride_size"),
|
basename=args.get("filename"),
|
||||||
grid=args.get("grid"),
|
temporary=args.get("temporary"),
|
||||||
style=args.get("style"),
|
stride_size=args.get("stride_size"),
|
||||||
autofocus_dz=args.get("autofocus_dz"),
|
grid=args.get("grid"),
|
||||||
use_video_port=args.get("use_video_port"),
|
style=args.get("style"),
|
||||||
resize=resize,
|
autofocus_dz=args.get("autofocus_dz"),
|
||||||
bayer=args.get("bayer"),
|
use_video_port=args.get("use_video_port"),
|
||||||
fast_autofocus=args.get("fast_autofocus"),
|
resize=resize,
|
||||||
annotations=args.get("annotations"),
|
bayer=args.get("bayer"),
|
||||||
tags=args.get("tags"),
|
fast_autofocus=args.get("fast_autofocus"),
|
||||||
)
|
annotations=args.get("annotations"),
|
||||||
|
tags=args.get("tags"),
|
||||||
|
)
|
||||||
|
|
||||||
scan_extension_v2.add_view(TileScanAPI, "/tile", endpoint="tile")
|
scan_extension_v2.add_view(TileScanAPI, "/tile", endpoint="tile")
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,8 @@ class MoveStageAPI(ActionView):
|
||||||
|
|
||||||
# Move if stage exists
|
# Move if stage exists
|
||||||
if microscope.stage:
|
if microscope.stage:
|
||||||
# Explicitally acquire lock
|
# Explicitally acquire lock with 1s timeout
|
||||||
with microscope.stage.lock:
|
with microscope.stage.lock(timeout=1):
|
||||||
microscope.stage.move_rel(position)
|
microscope.stage.move_rel(position)
|
||||||
else:
|
else:
|
||||||
logging.warning("Unable to move. No stage found.")
|
logging.warning("Unable to move. No stage found.")
|
||||||
|
|
@ -62,7 +62,9 @@ class ZeroStageAPI(ActionView):
|
||||||
Does not move the stage, but rather makes the current position read as [0, 0, 0]
|
Does not move the stage, but rather makes the current position read as [0, 0, 0]
|
||||||
"""
|
"""
|
||||||
microscope = find_component("org.openflexure.microscope")
|
microscope = find_component("org.openflexure.microscope")
|
||||||
microscope.stage.zero_position()
|
|
||||||
|
with microscope.stage.lock(timeout=1):
|
||||||
|
microscope.stage.zero_position()
|
||||||
|
|
||||||
# TODO: Make schema for microscope state
|
# TODO: Make schema for microscope state
|
||||||
return microscope.state["stage"]
|
return microscope.state["stage"]
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ class BaseCamera(metaclass=ABCMeta):
|
||||||
self.thread = None
|
self.thread = None
|
||||||
self.camera = None
|
self.camera = None
|
||||||
|
|
||||||
self.lock = StrictLock(name="Camera", timeout=1)
|
self.lock = StrictLock(name="Camera", timeout=None)
|
||||||
|
|
||||||
self.frame = None
|
self.frame = None
|
||||||
self.last_access = 0
|
self.last_access = 0
|
||||||
|
|
|
||||||
|
|
@ -153,7 +153,7 @@ class Microscope:
|
||||||
Return:
|
Return:
|
||||||
dict: Dictionary containing complete microscope state
|
dict: Dictionary containing complete microscope state
|
||||||
"""
|
"""
|
||||||
with self.lock(timeout=None):
|
with self.lock:
|
||||||
state = {"camera": self.camera.state, "stage": self.stage.state}
|
state = {"camera": self.camera.state, "stage": self.stage.state}
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
|
@ -161,7 +161,7 @@ class Microscope:
|
||||||
"""
|
"""
|
||||||
Applies a settings dictionary to the microscope. Missing parameters will be left untouched.
|
Applies a settings dictionary to the microscope. Missing parameters will be left untouched.
|
||||||
"""
|
"""
|
||||||
with self.lock(timeout=None):
|
with self.lock:
|
||||||
logging.debug("Microscope: Applying settings: {}".format(settings))
|
logging.debug("Microscope: Applying settings: {}".format(settings))
|
||||||
|
|
||||||
# If attached to a camera
|
# If attached to a camera
|
||||||
|
|
@ -206,7 +206,7 @@ class Microscope:
|
||||||
"extensions": self.extension_settings,
|
"extensions": self.extension_settings,
|
||||||
}
|
}
|
||||||
|
|
||||||
with self.lock(timeout=None):
|
with self.lock:
|
||||||
# If attached to a camera
|
# If attached to a camera
|
||||||
if self.camera:
|
if self.camera:
|
||||||
settings_current_camera = self.camera.read_settings()
|
settings_current_camera = self.camera.read_settings()
|
||||||
|
|
@ -254,7 +254,7 @@ class Microscope:
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def configuration(self):
|
def configuration(self):
|
||||||
with self.lock(timeout=None):
|
with self.lock:
|
||||||
initial_configuration = self.configuration_file.load()
|
initial_configuration = self.configuration_file.load()
|
||||||
|
|
||||||
current_configuration = {
|
current_configuration = {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ class BaseStage(metaclass=ABCMeta):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.lock = StrictLock(name="Stage", timeout=1)
|
self.lock = StrictLock(name="Stage", timeout=None)
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def update_settings(self, config: dict):
|
def update_settings(self, config: dict):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue