libcamera  v0.0.0
Supporting cameras in Linux since 2019
camera_lens.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 /*
3  * Copyright (C) 2021, Google Inc.
4  *
5  * camera_lens.h - A camera lens controller
6  */
7 #pragma once
8 
9 #include <memory>
10 #include <string>
11 
12 #include <libcamera/base/class.h>
13 #include <libcamera/base/log.h>
14 
15 namespace libcamera {
16 
17 class MediaEntity;
18 class V4L2Subdevice;
19 
20 class CameraLens : protected Loggable
21 {
22 public:
23  explicit CameraLens(const MediaEntity *entity);
25 
26  int init();
27  int setFocusPostion(int32_t position);
28 
29  const std::string &model() const { return model_; }
30 
31 protected:
32  std::string logPrefix() const override;
33 
34 private:
36 
37  int validateLensDriver();
38 
39  const MediaEntity *entity_;
40  std::unique_ptr<V4L2Subdevice> subdev_;
41 
42  std::string model_;
43 };
44 
45 } /* namespace libcamera */
Utilities to help constructing class interfaces.
#define LIBCAMERA_DISABLE_COPY_AND_MOVE(klass)
Disable copy and move construction and assignment of the klass.
A camera lens based on V4L2 subdevices.
Definition: camera_lens.h:21
CameraLens(const MediaEntity *entity)
Construct a CameraLens.
Definition: camera_lens.cpp:38
std::string logPrefix() const override
Retrieve a string to be prefixed to the log message.
Definition: camera_lens.cpp:137
int init()
Initialize the camera lens instance.
Definition: camera_lens.cpp:56
int setFocusPostion(int32_t position)
This function sets the focal point of the lens to a specific position.
Definition: camera_lens.cpp:87
const std::string & model() const
Retrieve the lens model name.
Definition: camera_lens.h:29
~CameraLens()
Destroy a CameraLens.
Base class to support log message extensions.
Definition: log.h:86
The MediaEntity represents an entity in the media graph.
Definition: media_object.h:89
Logging infrastructure.
Top-level libcamera namespace.
Definition: backtrace.h:17