libcamera: v4l2_device: Add method to retrieve all supported controls

Add a new controls() method to the V4L2Device class to retrieve the map
of all supported controls. This is needed in order to dynamically query
the supported controls, for instance for drivers that support different
sets of controls depending on the device model.

To make the API easier to use, create a type alias for the control ID to
ControlInfo and use it.

Remove the getControlInfo() method that is not used externally, as it
can now be replaced by accessing the full list of controls.

Update the CameraSensor API accordingly.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
Laurent Pinchart
2019-06-30 15:24:08 +03:00
parent bd0245a0dc
commit a110cc94ab
6 changed files with 28 additions and 32 deletions

View File

@@ -13,12 +13,11 @@
#include <libcamera/geometry.h>
#include "log.h"
#include "v4l2_controls.h"
namespace libcamera {
class MediaEntity;
class V4L2ControlInfo;
class V4L2ControlList;
class V4L2Subdevice;
struct V4L2SubdeviceFormat;
@@ -43,7 +42,7 @@ public:
const Size &size) const;
int setFormat(V4L2SubdeviceFormat *format);
const V4L2ControlInfo *getControlInfo(unsigned int id) const;
const V4L2ControlInfoMap &controls() const;
int getControls(V4L2ControlList *ctrls);
int setControls(V4L2ControlList *ctrls);