ipa: rpi: Initialize enum controls with a list of values

This is how uvcvideo and rkisp1 do it. See ee918b370a
("ipa: rkisp1: agc: Initialize enum controls with a list of values")
for the motivation. In summary, having a list of values is used as a sign
that the control is an enum in multiple places (e.g. `cam`, `camshark`).

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Barnabás Pőcze 2025-06-04 17:00:46 +02:00
parent b3ff75d758
commit b4c92a61bf

View file

@ -58,23 +58,24 @@ const ControlInfoMap::Map ipaControls{
/* \todo Move this to the Camera class */ /* \todo Move this to the Camera class */
{ &controls::AeEnable, ControlInfo(false, true, true) }, { &controls::AeEnable, ControlInfo(false, true, true) },
{ &controls::ExposureTimeMode, { &controls::ExposureTimeMode,
ControlInfo(static_cast<int32_t>(controls::ExposureTimeModeAuto), ControlInfo({ { ControlValue(controls::ExposureTimeModeAuto),
static_cast<int32_t>(controls::ExposureTimeModeManual), ControlValue(controls::ExposureTimeModeManual) } },
static_cast<int32_t>(controls::ExposureTimeModeAuto)) }, ControlValue(controls::ExposureTimeModeAuto)) },
{ &controls::ExposureTime, { &controls::ExposureTime,
ControlInfo(1, 66666, static_cast<int32_t>(defaultExposureTime.get<std::micro>())) }, ControlInfo(1, 66666, static_cast<int32_t>(defaultExposureTime.get<std::micro>())) },
{ &controls::AnalogueGainMode, { &controls::AnalogueGainMode,
ControlInfo(static_cast<int32_t>(controls::AnalogueGainModeAuto), ControlInfo({ { ControlValue(controls::AnalogueGainModeAuto),
static_cast<int32_t>(controls::AnalogueGainModeManual), ControlValue(controls::AnalogueGainModeManual) } },
static_cast<int32_t>(controls::AnalogueGainModeAuto)) }, ControlValue(controls::AnalogueGainModeAuto)) },
{ &controls::AnalogueGain, ControlInfo(1.0f, 16.0f, 1.0f) }, { &controls::AnalogueGain, ControlInfo(1.0f, 16.0f, 1.0f) },
{ &controls::AeMeteringMode, ControlInfo(controls::AeMeteringModeValues) }, { &controls::AeMeteringMode, ControlInfo(controls::AeMeteringModeValues) },
{ &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) }, { &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) },
{ &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) }, { &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) },
{ &controls::ExposureValue, ControlInfo(-8.0f, 8.0f, 0.0f) }, { &controls::ExposureValue, ControlInfo(-8.0f, 8.0f, 0.0f) },
{ &controls::AeFlickerMode, ControlInfo(static_cast<int>(controls::FlickerOff), { &controls::AeFlickerMode,
static_cast<int>(controls::FlickerManual), ControlInfo({ { ControlValue(controls::FlickerOff),
static_cast<int>(controls::FlickerOff)) }, ControlValue(controls::FlickerManual) } },
ControlValue(controls::FlickerOff)) },
{ &controls::AeFlickerPeriod, ControlInfo(100, 1000000) }, { &controls::AeFlickerPeriod, ControlInfo(100, 1000000) },
{ &controls::Brightness, ControlInfo(-1.0f, 1.0f, 0.0f) }, { &controls::Brightness, ControlInfo(-1.0f, 1.0f, 0.0f) },
{ &controls::Contrast, ControlInfo(0.0f, 32.0f, 1.0f) }, { &controls::Contrast, ControlInfo(0.0f, 32.0f, 1.0f) },