summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Elder <paul.elder@ideasonboard.com>2024-09-16 01:50:43 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2024-09-25 23:56:47 +0300
commitab67fdd210e30ad3806f10cb5f6d4e325059f8de (patch)
tree1f2caf1fb99b848ae5cb1a850ea0a7ea0804c0d1 /src
parent505e49b76ed4f3040182f66a1c3884ea1648a612 (diff)
libcamera: controls: Add array information to ControlId
Add to ControlId information on whether or not it is an array control, and the size of the control if it is an array control. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src')
-rw-r--r--src/libcamera/controls.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp
index a46c431a..ea439730 100644
--- a/src/libcamera/controls.cpp
+++ b/src/libcamera/controls.cpp
@@ -389,11 +389,12 @@ void ControlValue::reserve(ControlType type, bool isArray, std::size_t numElemen
* \param[in] id The control numerical ID
* \param[in] name The control name
* \param[in] type The control data type
+ * \param[in] size The size of the array control, or 0 if scalar control
* \param[in] enumStrMap The map from enum names to values (optional)
*/
ControlId::ControlId(unsigned int id, const std::string &name, ControlType type,
- const std::map<std::string, int32_t> &enumStrMap)
- : id_(id), name_(name), type_(type), enumStrMap_(enumStrMap)
+ std::size_t size, const std::map<std::string, int32_t> &enumStrMap)
+ : id_(id), name_(name), type_(type), size_(size), enumStrMap_(enumStrMap)
{
for (const auto &pair : enumStrMap_)
reverseMap_[pair.second] = pair.first;
@@ -418,6 +419,19 @@ ControlId::ControlId(unsigned int id, const std::string &name, ControlType type,
*/
/**
+ * \fn bool ControlId::isArray() const
+ * \brief Determine if the control is an array control
+ * \return True if the control is an array control, false otherwise
+ */
+
+/**
+ * \fn std::size_t ControlId::size() const
+ * \brief Retrieve the size of the control if it is an array control
+ * \return The size of the array control, size_t::max for dynamic extent, or 0
+ * for non-array
+ */
+
+/**
* \fn const std::map<int32_t, std::string> &ControlId::enumerators() const
* \brief Retrieve the map of enum values to enum names
* \return The map of enum values to enum names