Merge branch 'picamera-rescue' into 'master'

Picamerax error recovery

See merge request openflexure/openflexure-microscope-server!86
This commit is contained in:
Joel Collins 2021-01-05 17:11:03 +00:00
commit 3501a5b624

View file

@ -9,17 +9,36 @@ picamera_import_error = ErrorSource(
)
)
picamera_errors = (
"Camera is not enabled. Try running 'sudo raspi-config' and ensure that the camera has been enabled.",
)
picamera_mmal_errors = {
"Failed to enable connection: Out of resources": "Camera already in use by another application."
}
def main():
error_sources = []
logging.info("Attempting to import picamera...")
try:
from picamerax import PiCamera as _
import picamerax
except Exception as e: # pylint: disable=W0703
# TODO: Parse exception object for a few different issues, and append different error sources
# E.g. pi with camera already in use, disconnected, unsupported OS, etc
# TODO: Parse exception object for a few different issues, and append
# different error sources E.g. pi with camera already in use,
# disconnected, unsupported OS, etc
logging.error(e)
error_sources.append(picamera_import_error)
else:
try:
_ = picamerax.PiCamera()
except picamerax.PiCameraError as e:
if e.args[0] in picamera_errors:
error_sources.append(ErrorSource(e.args[0]))
elif e.args[0] in picamera_mmal_errors:
error_sources.append(ErrorSource(picamera_mmal_errors[e.args[0]]))
else:
error_sources.append(ErrorSource(e.args[0]))
return error_sources