mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-23 16:45:07 +03:00
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>
This commit is contained in:
parent
954bf1f656
commit
cd0f7929ec
3 changed files with 27 additions and 12 deletions
|
@ -12,6 +12,8 @@
|
|||
#include <string>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <libcamera/span.h>
|
||||
|
||||
namespace libcamera {
|
||||
|
||||
class ControlValidator;
|
||||
|
@ -65,6 +67,7 @@ public:
|
|||
|
||||
ControlType type() const { return type_; }
|
||||
bool isNone() const { return type_ == ControlTypeNone; }
|
||||
Span<const uint8_t> data() const;
|
||||
|
||||
std::string toString() const;
|
||||
|
||||
|
|
|
@ -27,17 +27,6 @@ namespace libcamera {
|
|||
|
||||
LOG_DEFINE_CATEGORY(Serializer)
|
||||
|
||||
namespace {
|
||||
|
||||
static constexpr size_t ControlValueSize[] = {
|
||||
[ControlTypeNone] = 1,
|
||||
[ControlTypeBool] = sizeof(bool),
|
||||
[ControlTypeInteger32] = sizeof(int32_t),
|
||||
[ControlTypeInteger64] = sizeof(int64_t),
|
||||
};
|
||||
|
||||
} /* namespace */
|
||||
|
||||
/**
|
||||
* \class ControlSerializer
|
||||
* \brief Serializer and deserializer for control-related classes
|
||||
|
@ -106,7 +95,7 @@ void ControlSerializer::reset()
|
|||
|
||||
size_t ControlSerializer::binarySize(const ControlValue &value)
|
||||
{
|
||||
return ControlValueSize[value.type()];
|
||||
return value.data().size_bytes();
|
||||
}
|
||||
|
||||
size_t ControlSerializer::binarySize(const ControlRange &range)
|
||||
|
|
|
@ -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
|
||||
|
@ -91,6 +102,18 @@ ControlValue::ControlValue()
|
|||
* \return True if the value type is ControlTypeNone, false otherwise
|
||||
*/
|
||||
|
||||
/**
|
||||
* \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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue