Revert "controls: Add boolean constructors for ControlInfo"
This reverts commit 10cdc914da.
The constructors introduced by that commit are not used anywhere,
and they do not match the existing practice for boolean controls.
Specifically, every single boolean control is described by calling
the `ControlInfo(ControlValue, ControlValue, ControlValue)`
constructor. Crucially, that constructor does not set `values_`,
while the two removed constructors do. And whether or not `values_`
has any elements is currently used as an implicit sign to decide
whether or not the control is "enum-like", and those are assumed
to have type `int32_t`.
For example, any boolean control described using any of the two
removed constructors would cause an assertion in failure in
`CameraSession::listControls()` when calling `value.get<int32_t>()`.
Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>
This commit is contained in:
@@ -10,7 +10,6 @@
|
||||
#include <assert.h>
|
||||
#include <map>
|
||||
#include <optional>
|
||||
#include <set>
|
||||
#include <stdint.h>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
@@ -334,8 +333,6 @@ public:
|
||||
const ControlValue &def = {});
|
||||
explicit ControlInfo(Span<const ControlValue> values,
|
||||
const ControlValue &def = {});
|
||||
explicit ControlInfo(std::set<bool> values, bool def);
|
||||
explicit ControlInfo(bool value);
|
||||
|
||||
const ControlValue &min() const { return min_; }
|
||||
const ControlValue &max() const { return max_; }
|
||||
|
||||
@@ -625,35 +625,6 @@ ControlInfo::ControlInfo(Span<const ControlValue> values,
|
||||
values_.push_back(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Construct a boolean ControlInfo with both boolean values
|
||||
* \param[in] values The control valid boolean values (both true and false)
|
||||
* \param[in] def The control default boolean value
|
||||
*
|
||||
* Construct a ControlInfo for a boolean control, where both true and false are
|
||||
* valid values. \a values must be { false, true } (the order is irrelevant).
|
||||
* The minimum value will always be false, and the maximum always true. The
|
||||
* default value is \a def.
|
||||
*/
|
||||
ControlInfo::ControlInfo(std::set<bool> values, bool def)
|
||||
: min_(false), max_(true), def_(def), values_({ false, true })
|
||||
{
|
||||
ASSERT(values.count(def) && values.size() == 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Construct a boolean ControlInfo with only one valid value
|
||||
* \param[in] value The control valid boolean value
|
||||
*
|
||||
* Construct a ControlInfo for a boolean control, where there is only valid
|
||||
* value. The minimum, maximum, and default values will all be \a value.
|
||||
*/
|
||||
ControlInfo::ControlInfo(bool value)
|
||||
: min_(value), max_(value), def_(value)
|
||||
{
|
||||
values_ = { value };
|
||||
}
|
||||
|
||||
/**
|
||||
* \fn ControlInfo::min()
|
||||
* \brief Retrieve the minimum value of the control
|
||||
|
||||
@@ -50,7 +50,7 @@ protected:
|
||||
* Test information retrieval from a control with boolean
|
||||
* values.
|
||||
*/
|
||||
ControlInfo aeEnable({ false, true }, false);
|
||||
ControlInfo aeEnable(false, true, false);
|
||||
|
||||
if (aeEnable.min().get<bool>() != false ||
|
||||
aeEnable.def().get<bool>() != false ||
|
||||
@@ -59,13 +59,12 @@ protected:
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
if (aeEnable.values()[0].get<bool>() != false ||
|
||||
aeEnable.values()[1].get<bool>() != true) {
|
||||
if (!aeEnable.values().empty()) {
|
||||
cout << "Invalid control values for AeEnable" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
ControlInfo awbEnable(true);
|
||||
ControlInfo awbEnable(true, true, true);
|
||||
|
||||
if (awbEnable.min().get<bool>() != true ||
|
||||
awbEnable.def().get<bool>() != true ||
|
||||
@@ -74,7 +73,7 @@ protected:
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
if (awbEnable.values()[0].get<bool>() != true) {
|
||||
if (!awbEnable.values().empty()) {
|
||||
cout << "Invalid control values for AwbEnable" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user