diff --git a/openflexure_microscope/api/v1/blueprints/base.py b/openflexure_microscope/api/v1/blueprints/base.py index 022015c7..2dc7c600 100644 --- a/openflexure_microscope/api/v1/blueprints/base.py +++ b/openflexure_microscope/api/v1/blueprints/base.py @@ -2,6 +2,7 @@ from openflexure_microscope.api.utilities import gen, JsonPayload from openflexure_microscope.api.v1.views import MicroscopeView from flask import Response, Blueprint, jsonify, request +import logging class StreamAPI(MicroscopeView): @@ -99,8 +100,6 @@ class ConfigAPI(MicroscopeView): Content-Type: application/json { - "analog_gain": 1.0, - "digital_gain": 1.0, "image_resolution": [ 2592, 1944 @@ -111,7 +110,9 @@ class ConfigAPI(MicroscopeView): 1312, 976 ], - "picamera_params": { + "picamera_settings": { + "analog_gain": 1.0, + "digital_gain": 1.0, "awb_gains": [ 0.92578125, 2.94921875 @@ -125,7 +126,6 @@ class ConfigAPI(MicroscopeView): "plugins": [ "openflexure_microscope.plugins.default:Plugin" ], - "shading_table_path": "/home/pi/.openflexure/microscopelst.npy", "video_resolution": [ 832, 624 @@ -170,7 +170,7 @@ class ConfigAPI(MicroscopeView): """ payload = JsonPayload(request) - print(payload.json) + logging.debug("Updating settings from POST request.") self.microscope.write_config(payload.json) self.microscope.save_config() diff --git a/openflexure_microscope/camera/base.py b/openflexure_microscope/camera/base.py index c3f237d8..1477f8a7 100644 --- a/openflexure_microscope/camera/base.py +++ b/openflexure_microscope/camera/base.py @@ -125,6 +125,14 @@ class BaseCamera(object): self.images = self.load_capture_db(self.images_db) self.videos = self.load_capture_db(self.videos_db) + def apply_config(self, config): + """Update settings from a config dictionary""" + self.config.update(config) + + def read_config(self, config): + """Return the current settings as a dictionary""" + return self.config + def __enter__(self): """Create camera on context enter.""" return self diff --git a/openflexure_microscope/camera/pi.py b/openflexure_microscope/camera/pi.py index 7dd40b03..3f693ad6 100644 --- a/openflexure_microscope/camera/pi.py +++ b/openflexure_microscope/camera/pi.py @@ -184,12 +184,17 @@ class StreamingCamera(BaseCamera): set_digital_gain(self.camera, value) elif key == 'analog_gain': set_analog_gain(self.camera, value) + elif key == "shutter_speed": + self.camera.shutter_speed = int(value) else: setattr(self.camera, key, value) # Write setting to camera # StreamingCamera parameters (applied via StreamingCamera config) for key, value in config.items(): # For each provided setting - if key != 'picamera_settings': # We already handled this + if key in self.config.keys(): + if key != 'picamera_settings': # We already handled this + logging.warn("{} is not in the streaming camera settings dictionary - adding it.") + #continue #TODO: filter settings somehow? logging.debug("Setting parameter {}: {}".format(key, value)) self.config[key] = value diff --git a/openflexure_microscope/microscope.py b/openflexure_microscope/microscope.py index 45fcc398..fcc3030b 100644 --- a/openflexure_microscope/microscope.py +++ b/openflexure_microscope/microscope.py @@ -192,7 +192,7 @@ class Microscope(object): # If attached to a camera if self.camera: # Update camera config - self.camera.config.update(config) + self.camera.apply_config(config) # If attached to a stage # TODO: Convert stage settings into a config expansion