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 @abstractmethod
def apply_config(self, config: dict): def apply_config(self, config: dict):
"""Update settings from a config dictionary""" """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 @abstractmethod
def read_config(self) -> dict: def read_config(self) -> dict:
"""Return the current settings as a dictionary""" """Return the current settings as a dictionary"""
pass return {"paths": self.paths}
def __enter__(self): def __enter__(self):
"""Create camera on context enter.""" """Create camera on context enter."""

View file

@ -75,12 +75,16 @@ class MockStreamer(BaseCamera):
Return config dictionary of the PiCameraStreamer. 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, "stream_resolution": self.stream_resolution,
"image_resolution": self.image_resolution, "image_resolution": self.image_resolution,
"numpy_resolution": self.numpy_resolution, "numpy_resolution": self.numpy_resolution,
"jpeg_quality": self.jpeg_quality, "jpeg_quality": self.jpeg_quality,
} })
return conf_dict return conf_dict

View file

@ -109,15 +109,20 @@ class PiCameraStreamer(BaseCamera):
Return config dictionary of the PiCameraStreamer. 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, "stream_resolution": self.stream_resolution,
"image_resolution": self.image_resolution, "image_resolution": self.image_resolution,
"numpy_resolution": self.numpy_resolution, "numpy_resolution": self.numpy_resolution,
"jpeg_quality": self.jpeg_quality, "jpeg_quality": self.jpeg_quality,
"picamera_settings": {}, "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: for key in PiCameraStreamer.picamera_settings_keys:
try: try:
value = getattr(self.camera, key) value = getattr(self.camera, key)