summaryrefslogtreecommitdiff
path: root/src/libcamera/controls.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-02-15 23:59:54 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-03-06 18:10:24 +0200
commitcd0f7929ec0bdf3c98e552a6ce2e9147b8c6dd17 (patch)
tree8eb09864167944b7e3f6b0197fbc7872626ec6e4 /src/libcamera/controls.cpp
parent954bf1f656e610474d9a582774690dc505fb821b (diff)
libcamera: controls: Expose raw data in ControlValue
Add a data() function to the ControlValue class to expose the raw data stored by the class as a Span<const uint8_t>. This will be useful to simplify the serialization of ControlValue instances. The size computation for the raw data is moved from the ControlSerializer, which is updated accordingly to use the data() function in order to access the size. Simplification of the ControlSerializer will happen in a subsequent change. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/libcamera/controls.cpp')
-rw-r--r--src/libcamera/controls.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp
index 76230a05..e5131880 100644
--- a/src/libcamera/controls.cpp
+++ b/src/libcamera/controls.cpp
@@ -47,6 +47,17 @@ namespace libcamera {
LOG_DEFINE_CATEGORY(Controls)
+namespace {
+
+static constexpr size_t ControlValueSize[] = {
+ [ControlTypeNone] = 1,
+ [ControlTypeBool] = sizeof(bool),
+ [ControlTypeInteger32] = sizeof(int32_t),
+ [ControlTypeInteger64] = sizeof(int64_t),
+};
+
+} /* namespace */
+
/**
* \enum ControlType
* \brief Define the data type of a Control
@@ -92,6 +103,18 @@ ControlValue::ControlValue()
*/
/**
+ * \brief Retrieve the raw data of a control value
+ * \return The raw data of the control value as a span of uint8_t
+ */
+Span<const uint8_t> ControlValue::data() const
+{
+ return {
+ reinterpret_cast<const uint8_t *>(&bool_),
+ ControlValueSize[type_]
+ };
+}
+
+/**
* \brief Assemble and return a string describing the value
* \return A string describing the ControlValue
*/