summaryrefslogtreecommitdiff
path: root/src/libcamera/camera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/camera.cpp')
-rw-r--r--src/libcamera/camera.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 3a531c7e..9cec2892 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -34,6 +34,8 @@
namespace libcamera {
+LOG_DECLARE_CATEGORY(Camera)
+
/**
* \class Camera
* \brief Camera device
@@ -87,6 +89,18 @@ const std::string &Camera::name() const
return name_;
}
+/**
+ * \var Camera::disconnected
+ * \brief Signal emitted when the camera is disconnected from the system
+ *
+ * This signal is emitted when libcamera detects that the cameera has been
+ * removed from the system. For hot-pluggable devices this is usually caused by
+ * physical device disconnection. The media device is passed as a parameter.
+ *
+ * As soon as this signal is emitted the camera instance will refuse all new
+ * application API calls by returning errors immediately.
+ */
+
Camera::Camera(PipelineHandler *pipe, const std::string &name)
: pipe_(pipe->shared_from_this()), name_(name)
{
@@ -96,4 +110,21 @@ Camera::~Camera()
{
}
+/**
+ * \brief Notify camera disconnection
+ *
+ * This method is used to notify the camera instance that the underlying
+ * hardware has been unplugged. In response to the disconnection the camera
+ * instance notifies the application by emitting the #disconnected signal, and
+ * ensures that all new calls to the application-facing Camera API return an
+ * error immediately.
+ */
+void Camera::disconnect()
+{
+ LOG(Camera, Debug) << "Disconnecting camera " << name_;
+
+ /** \todo Block API calls when they will be implemented. */
+ disconnected.emit(this);
+}
+
} /* namespace libcamera */