Merge branch 'variable-lock-timeout' into 'master'

Variable lock timeout

See merge request openflexure/openflexure-microscope-server!64
This commit is contained in:
Joel Collins 2020-06-25 17:02:34 +00:00
commit 768b005fe1
5 changed files with 52 additions and 52 deletions

View file

@ -23,7 +23,7 @@ class BaseCamera(metaclass=ABCMeta):
self.thread = None
self.camera = None
self.lock = StrictLock(name="Camera", timeout=None)
self.lock = StrictLock(name="Camera", timeout=1)
self.frame = None
self.last_access = 0
@ -55,7 +55,7 @@ class BaseCamera(metaclass=ABCMeta):
@abstractmethod
def update_settings(self, config: dict):
"""Update settings from a config dictionary"""
with self.lock:
with self.lock(timeout=None):
# Apply valid config params to camera object
for key, value in config.items(): # For each provided setting
if hasattr(self, key): # If the instance has a matching property

View file

@ -195,7 +195,7 @@ class PiCameraStreamer(BaseCamera):
logging.debug("PiCameraStreamer: Applying config:")
logging.debug(config)
with self.lock:
with self.lock(timeout=None):
# Apply valid config params to Picamera object
if not self.record_active: # If not recording a video
@ -301,7 +301,7 @@ class PiCameraStreamer(BaseCamera):
"""
Change the camera zoom, handling re-centering and scaling.
"""
with self.lock:
with self.lock(timeout=None):
self.zoom_value = float(zoom_value)
if self.zoom_value < 1:
self.zoom_value = 1
@ -448,7 +448,7 @@ class PiCameraStreamer(BaseCamera):
resolution ((int, int)): Resolution to set the camera to, before starting recording.
Defaults to `self.stream_resolution`.
"""
with self.lock:
with self.lock(timeout=None):
# If stream object was destroyed
if not hasattr(self, "stream"):
self.stream = io.BytesIO() # Create a stream object

View file

@ -153,7 +153,7 @@ class Microscope:
Return:
dict: Dictionary containing complete microscope state
"""
with self.lock:
with self.lock(timeout=None):
state = {"camera": self.camera.state, "stage": self.stage.state}
return state
@ -161,7 +161,7 @@ class Microscope:
"""
Applies a settings dictionary to the microscope. Missing parameters will be left untouched.
"""
with self.lock:
with self.lock(timeout=None):
logging.debug("Microscope: Applying settings: {}".format(settings))
# If attached to a camera
@ -199,8 +199,6 @@ class Microscope:
This is to ensure that settings for currently disconnected hardware
don't get removed from the settings file.
"""
with self.lock:
settings_current = {
"id": self.id,
"name": self.name,
@ -208,6 +206,7 @@ class Microscope:
"extensions": self.extension_settings,
}
with self.lock(timeout=None):
# If attached to a camera
if self.camera:
settings_current_camera = self.camera.read_settings()
@ -255,6 +254,7 @@ class Microscope:
@property
def configuration(self):
with self.lock(timeout=None):
initial_configuration = self.configuration_file.load()
current_configuration = {

View file

@ -11,7 +11,7 @@ class BaseStage(metaclass=ABCMeta):
"""
def __init__(self):
self.lock = StrictLock(name="Stage", timeout=5)
self.lock = StrictLock(name="Stage", timeout=1)
@abstractmethod
def update_settings(self, config: dict):

View file

@ -51,7 +51,7 @@ class SangaStage(BaseStage):
@property
def position(self):
with self.lock:
with self.lock(timeout=None):
return self.board.position
@property