""" Writeable settings for the microscope, and attached hardware """ from openflexure_microscope.api.utilities import gen, JsonResponse from openflexure_microscope.api.views import MicroscopeView from openflexure_microscope.api.utilities import blueprint_for_module from openflexure_microscope.utilities import get_by_path, set_by_path, create_from_path from flask import Blueprint, jsonify, request, abort import logging class SettingsAPI(MicroscopeView): def get(self): """ JSON representation of the microscope settings. .. :quickref: Settings; Get microscope settings **Example request**: .. sourcecode:: http GET /settings/ HTTP/1.1 Accept: application/json **Example response**: .. sourcecode:: http HTTP/1.1 200 OK Vary: Accept Content-Type: application/json { "id": "0e2c6fac5421429aac67c7903107bdd8", "name": "docuscope-2000", "fov": [4100, 3146], "camera_settings": { "image_resolution": [2592, 1944], "numpy_resolution": [1312, 976], "video_resolution": [832, 624], "jpeg_quality": 75, "picamera_settings": { "analog_gain": 1.0, "digital_gain": 1.0, "awb_gains": [0.92578125, 2.94921875], "awb_mode": "off", "exposure_mode": "off", "framerate": 24.0, "saturation": 0, "shutter_speed": 5378 }, }, "stage_settings": { "backlash": { "x": 256, "y": 256, "z": 0 } } "plugins": [ "openflexure_microscope.plugins.default.autofocus:AutofocusPlugin", "openflexure_microscope.plugins.default.scan:ScanPlugin", "openflexure_microscope.plugins.default.camera_calibration:Plugin" ] } :>header Accept: application/json :>header Content-Type: application/json :status 200: state available """ return jsonify(self.microscope.read_settings()) def put(self): """ Modify microscope configuration .. :quickref: Settings; Update microscope settings **Example request**: .. sourcecode:: http PUT /config HTTP/1.1 Accept: application/json { "id": "0e2c6fac5421429aac67c7903107bdd8", "name": "docuscope-2000", "fov": [4100, 3146], "camera_settings": { "image_resolution": [2592, 1944], "numpy_resolution": [1312, 976], "video_resolution": [832, 624], "jpeg_quality": 75, "picamera_settings": { "analog_gain": 1.0, "digital_gain": 1.0, "awb_gains": [0.92578125, 2.94921875], "awb_mode": "off", "exposure_mode": "off", "framerate": 24.0, "saturation": 0, "shutter_speed": 5378 }, }, "stage_settings": { "backlash": { "x": 256, "y": 256, "z": 0 } } "plugins": [ "openflexure_microscope.plugins.default.autofocus:AutofocusPlugin", "openflexure_microscope.plugins.default.scan:ScanPlugin", "openflexure_microscope.plugins.default.camera_calibration:Plugin" ] } :>header Accept: application/json :", view_func=NestedSettingsAPI.as_view( "nested_settings", microscope=microscope_obj ), ) return blueprint