ipa: vimc: Add Flags to parameters
For the purpose of testing serializing/deserializing Flags in function parameters, add an enum class TestFlags and Flags<TestFlags> to some function parameters, both for input and output and Signals. While at it, update the ipa_interface_test. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
23fd404690
commit
3b54b56a2d
4 changed files with 46 additions and 9 deletions
|
@ -17,8 +17,18 @@ enum IPAOperationCode {
|
||||||
IPAOperationStop,
|
IPAOperationStop,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
[scopedEnum] enum TestFlag {
|
||||||
|
Flag1 = 0x1,
|
||||||
|
Flag2 = 0x2,
|
||||||
|
Flag3 = 0x4,
|
||||||
|
Flag4 = 0x8,
|
||||||
|
};
|
||||||
|
|
||||||
interface IPAVimcInterface {
|
interface IPAVimcInterface {
|
||||||
init(libcamera.IPASettings settings, IPAOperationCode code) => (int32 ret);
|
init(libcamera.IPASettings settings,
|
||||||
|
IPAOperationCode code,
|
||||||
|
[flags] TestFlag inFlags)
|
||||||
|
=> (int32 ret, [flags] TestFlag outFlags);
|
||||||
|
|
||||||
configure(libcamera.IPACameraSensorInfo sensorInfo,
|
configure(libcamera.IPACameraSensorInfo sensorInfo,
|
||||||
map<uint32, libcamera.IPAStream> streamConfig,
|
map<uint32, libcamera.IPAStream> streamConfig,
|
||||||
|
@ -41,5 +51,5 @@ interface IPAVimcInterface {
|
||||||
};
|
};
|
||||||
|
|
||||||
interface IPAVimcEventInterface {
|
interface IPAVimcEventInterface {
|
||||||
paramsBufferReady(uint32 bufferId);
|
paramsBufferReady(uint32 bufferId, [flags] TestFlag flags);
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,7 +31,10 @@ public:
|
||||||
IPAVimc();
|
IPAVimc();
|
||||||
~IPAVimc();
|
~IPAVimc();
|
||||||
|
|
||||||
int init(const IPASettings &settings, const ipa::vimc::IPAOperationCode code) override;
|
int init(const IPASettings &settings,
|
||||||
|
const ipa::vimc::IPAOperationCode code,
|
||||||
|
const Flags<ipa::vimc::TestFlag> inFlags,
|
||||||
|
Flags<ipa::vimc::TestFlag> *outFlags) override;
|
||||||
|
|
||||||
int start() override;
|
int start() override;
|
||||||
void stop() override;
|
void stop() override;
|
||||||
|
@ -66,7 +69,10 @@ IPAVimc::~IPAVimc()
|
||||||
::close(fd_);
|
::close(fd_);
|
||||||
}
|
}
|
||||||
|
|
||||||
int IPAVimc::init(const IPASettings &settings, const ipa::vimc::IPAOperationCode code)
|
int IPAVimc::init(const IPASettings &settings,
|
||||||
|
const ipa::vimc::IPAOperationCode code,
|
||||||
|
const Flags<ipa::vimc::TestFlag> inFlags,
|
||||||
|
Flags<ipa::vimc::TestFlag> *outFlags)
|
||||||
{
|
{
|
||||||
trace(ipa::vimc::IPAOperationInit);
|
trace(ipa::vimc::IPAOperationInit);
|
||||||
|
|
||||||
|
@ -76,6 +82,13 @@ int IPAVimc::init(const IPASettings &settings, const ipa::vimc::IPAOperationCode
|
||||||
|
|
||||||
LOG(IPAVimc, Debug) << "Got opcode " << code;
|
LOG(IPAVimc, Debug) << "Got opcode " << code;
|
||||||
|
|
||||||
|
LOG(IPAVimc, Debug)
|
||||||
|
<< "Flag 2 was "
|
||||||
|
<< (inFlags & ipa::vimc::TestFlag::Flag2 ? "" : "not ")
|
||||||
|
<< "set";
|
||||||
|
|
||||||
|
*outFlags |= ipa::vimc::TestFlag::Flag1;
|
||||||
|
|
||||||
File conf(settings.configurationFile);
|
File conf(settings.configurationFile);
|
||||||
if (!conf.open(File::OpenModeFlag::ReadOnly)) {
|
if (!conf.open(File::OpenModeFlag::ReadOnly)) {
|
||||||
LOG(IPAVimc, Error) << "Failed to open configuration file";
|
LOG(IPAVimc, Error) << "Failed to open configuration file";
|
||||||
|
@ -144,7 +157,8 @@ void IPAVimc::fillParamsBuffer([[maybe_unused]] uint32_t frame, uint32_t bufferI
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
paramsBufferReady.emit(bufferId);
|
Flags<ipa::vimc::TestFlag> flags;
|
||||||
|
paramsBufferReady.emit(bufferId, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IPAVimc::initTrace()
|
void IPAVimc::initTrace()
|
||||||
|
|
|
@ -54,7 +54,7 @@ public:
|
||||||
int init();
|
int init();
|
||||||
int allocateMockIPABuffers();
|
int allocateMockIPABuffers();
|
||||||
void bufferReady(FrameBuffer *buffer);
|
void bufferReady(FrameBuffer *buffer);
|
||||||
void paramsBufferReady(unsigned int id);
|
void paramsBufferReady(unsigned int id, const Flags<ipa::vimc::TestFlag> flags);
|
||||||
|
|
||||||
MediaDevice *media_;
|
MediaDevice *media_;
|
||||||
std::unique_ptr<CameraSensor> sensor_;
|
std::unique_ptr<CameraSensor> sensor_;
|
||||||
|
@ -471,7 +471,15 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)
|
||||||
data->ipa_->paramsBufferReady.connect(data.get(), &VimcCameraData::paramsBufferReady);
|
data->ipa_->paramsBufferReady.connect(data.get(), &VimcCameraData::paramsBufferReady);
|
||||||
|
|
||||||
std::string conf = data->ipa_->configurationFile("vimc.conf");
|
std::string conf = data->ipa_->configurationFile("vimc.conf");
|
||||||
data->ipa_->init(IPASettings{ conf, data->sensor_->model() }, ipa::vimc::IPAOperationInit);
|
Flags<ipa::vimc::TestFlag> inFlags = ipa::vimc::TestFlag::Flag2;
|
||||||
|
Flags<ipa::vimc::TestFlag> outFlags;
|
||||||
|
data->ipa_->init(IPASettings{ conf, data->sensor_->model() },
|
||||||
|
ipa::vimc::IPAOperationInit, inFlags, &outFlags);
|
||||||
|
|
||||||
|
LOG(VIMC, Debug)
|
||||||
|
<< "Flag 1 was "
|
||||||
|
<< (outFlags & ipa::vimc::TestFlag::Flag1 ? "" : "not ")
|
||||||
|
<< "set";
|
||||||
|
|
||||||
/* Create and register the camera. */
|
/* Create and register the camera. */
|
||||||
std::set<Stream *> streams{ &data->stream_ };
|
std::set<Stream *> streams{ &data->stream_ };
|
||||||
|
@ -608,7 +616,8 @@ int VimcCameraData::allocateMockIPABuffers()
|
||||||
return video_->exportBuffers(kBufCount, &mockIPABufs_);
|
return video_->exportBuffers(kBufCount, &mockIPABufs_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VimcCameraData::paramsBufferReady([[maybe_unused]] unsigned int id)
|
void VimcCameraData::paramsBufferReady([[maybe_unused]] unsigned int id,
|
||||||
|
[[maybe_unused]] const Flags<ipa::vimc::TestFlag> flags)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,11 @@ protected:
|
||||||
|
|
||||||
/* Test initialization of IPA module. */
|
/* Test initialization of IPA module. */
|
||||||
std::string conf = ipa_->configurationFile("vimc.conf");
|
std::string conf = ipa_->configurationFile("vimc.conf");
|
||||||
int ret = ipa_->init(IPASettings{ conf, "vimc" }, ipa::vimc::IPAOperationInit);
|
Flags<ipa::vimc::TestFlag> inFlags;
|
||||||
|
Flags<ipa::vimc::TestFlag> outFlags;
|
||||||
|
int ret = ipa_->init(IPASettings{ conf, "vimc" },
|
||||||
|
ipa::vimc::IPAOperationInit,
|
||||||
|
inFlags, &outFlags);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
cerr << "IPA interface init() failed" << endl;
|
cerr << "IPA interface init() failed" << endl;
|
||||||
return TestFail;
|
return TestFail;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue