Added a useful read_config method to BaseCamera

This commit is contained in:
Joel Collins 2019-09-20 14:12:49 +01:00
parent 33af3bf48c
commit 1c67b96895
3 changed files with 20 additions and 7 deletions

View file

@ -137,12 +137,16 @@ class BaseCamera(metaclass=ABCMeta):
@abstractmethod
def apply_config(self, config: dict):
"""Update settings from a config dictionary"""
pass
with self.lock:
# 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
setattr(self, key, value) # Set to the target value
@abstractmethod
def read_config(self) -> dict:
"""Return the current settings as a dictionary"""
pass
return {"paths": self.paths}
def __enter__(self):
"""Create camera on context enter."""

View file

@ -75,12 +75,16 @@ class MockStreamer(BaseCamera):
Return config dictionary of the PiCameraStreamer.
"""
conf_dict = {
# Get config items from the base class
conf_dict = BaseCamera.read_config(self)
# Include device-specific config items
conf_dict.update({
"stream_resolution": self.stream_resolution,
"image_resolution": self.image_resolution,
"numpy_resolution": self.numpy_resolution,
"jpeg_quality": self.jpeg_quality,
}
})
return conf_dict

View file

@ -109,15 +109,20 @@ class PiCameraStreamer(BaseCamera):
Return config dictionary of the PiCameraStreamer.
"""
conf_dict = {
# Get config items from the base class
conf_dict = BaseCamera.read_config(self)
# Include device-specific config items
conf_dict.update({
"stream_resolution": self.stream_resolution,
"image_resolution": self.image_resolution,
"numpy_resolution": self.numpy_resolution,
"jpeg_quality": self.jpeg_quality,
"picamera_settings": {},
}
})
# PiCamera parameters
# Include a subset of picamera properties
# TODO: Expand this subset so we have more metadata?
for key in PiCameraStreamer.picamera_settings_keys:
try:
value = getattr(self.camera, key)