From patchwork Wed Aug 3 11:21:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 16944 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 5CD61BE173 for ; Wed, 3 Aug 2022 11:22:16 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 0D8C963327; Wed, 3 Aug 2022 13:22:16 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1659525736; bh=JroTs5NeD38Hq9kJl2/agSUMu4kG6U1mejM7F4NzBwY=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=FaMXPSx1PsQebQdviPnho52t05mK3zLW10SSqeKwMt2IT7ol6UzfXW1ODChZ+kq52 9FDTr1EgtGLPw/xxxCnPCP63eONy8Jp2J+2n+s3zbYHZtMWB24apg0ck0VYFDTg8KL k1v4IoaqgW9a7Ul8KlNgWiWkMp+UF1/lDbhYcUw0iBUhCCI2pqocuBzCGUmezCd6qR gYxnt8x3xvuWRAmsm0w/qCKt+r0P7qs5rwbejkGmKoFpcJpb0DYU44LbsTRKaLf6dQ 4WhBjumK/7puh8A3WS2aZzLD27piFrnwaNQMce/DHjktXKNz0xDe5zRSyQOVQYuhoH bkSjUZXksDdgQ== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 539DA6332A for ; Wed, 3 Aug 2022 13:22:14 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="X5zocdWk"; dkim-atps=neutral Received: from pyrite.rasen.tech (h175-177-042-159.catv02.itscom.jp [175.177.42.159]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 264C18B; Wed, 3 Aug 2022 13:22:12 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1659525734; bh=JroTs5NeD38Hq9kJl2/agSUMu4kG6U1mejM7F4NzBwY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X5zocdWkzEztJLtnM3lhCn+8ZG2neiu4DkmA9gQPUFEa2IMDi5SPcbIEOUr4JJxfM 9KylRaElEj+KbHPEjHaMnBC9W9EcUbc6zOMFqdDtwTbAQyIIlWKNtGEppar24orIMf OgthhhvezqvfGcwJ0GtBZPumigLzn5iv1jhAi1YA= To: libcamera-devel@lists.libcamera.org Date: Wed, 3 Aug 2022 20:21:50 +0900 Message-Id: <20220803112150.3040287-10-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220803112150.3040287-1-paul.elder@ideasonboard.com> References: <20220803112150.3040287-1-paul.elder@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 9/9] [TEST] ipa: vimc: Add Flags to parameters X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Paul Elder via libcamera-devel From: Paul Elder Reply-To: Paul Elder Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" For the purpose of testing serializing/deserializing Flags in function parameters, add an enum class TestFlags and Flags to some function parameters, both for input and output and Signals. While at it, update the ipa_interface_test. Signed-off-by: Paul Elder --- include/libcamera/ipa/vimc.mojom | 13 +++++++++++-- src/ipa/vimc/vimc.cpp | 21 +++++++++++++++++---- src/libcamera/pipeline/vimc/vimc.cpp | 16 +++++++++++++--- test/ipa/ipa_interface_test.cpp | 6 +++++- 4 files changed, 46 insertions(+), 10 deletions(-) diff --git a/include/libcamera/ipa/vimc.mojom b/include/libcamera/ipa/vimc.mojom index 16149787..8c718fdd 100644 --- a/include/libcamera/ipa/vimc.mojom +++ b/include/libcamera/ipa/vimc.mojom @@ -17,8 +17,17 @@ enum IPAOperationCode { IPAOperationStop, }; +enum Flags_TestFlags_t { + Flag1 = 0x1, + Flag2 = 0x2, + Flag3 = 0x4, + Flag4 = 0x8, +}; + interface IPAVimcInterface { - init(libcamera.IPASettings settings, IPAOperationCode code) => (int32 ret); + init(libcamera.IPASettings settings, + IPAOperationCode code, + Flags_TestFlags_t inFlags) => (int32 ret, Flags_TestFlags_t outFlags); configure(libcamera.IPACameraSensorInfo sensorInfo, map streamConfig, @@ -41,5 +50,5 @@ interface IPAVimcInterface { }; interface IPAVimcEventInterface { - paramsBufferReady(uint32 bufferId); + paramsBufferReady(uint32 bufferId, Flags_TestFlags_t flags); }; diff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp index 6bf39a1c..bb4ca355 100644 --- a/src/ipa/vimc/vimc.cpp +++ b/src/ipa/vimc/vimc.cpp @@ -31,7 +31,10 @@ public: 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 &inFlags, + Flags *outFlags) override; int start() override; void stop() override; @@ -65,8 +68,10 @@ IPAVimc::~IPAVimc() if (fd_ != -1) ::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 &inFlags, + Flags *outFlags) { trace(ipa::vimc::IPAOperationInit); @@ -76,6 +81,13 @@ int IPAVimc::init(const IPASettings &settings, const ipa::vimc::IPAOperationCode LOG(IPAVimc, Debug) << "Got opcode " << code; + LOG(IPAVimc, Debug) + << "Flag 2 was " + << ((inFlags & ipa::vimc::TestFlags::Flag2) ? "" : "not ") + << "set"; + + *outFlags |= ipa::vimc::TestFlags::Flag1; + File conf(settings.configurationFile); if (!conf.open(File::OpenModeFlag::ReadOnly)) { LOG(IPAVimc, Error) << "Failed to open configuration file"; @@ -144,7 +156,8 @@ void IPAVimc::fillParamsBuffer([[maybe_unused]] uint32_t frame, uint32_t bufferI return; } - paramsBufferReady.emit(bufferId); + Flags flags; + paramsBufferReady.emit(bufferId, flags); } void IPAVimc::initTrace() diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp index 41b9d6f4..7798be0a 100644 --- a/src/libcamera/pipeline/vimc/vimc.cpp +++ b/src/libcamera/pipeline/vimc/vimc.cpp @@ -54,7 +54,7 @@ public: int init(); int allocateMockIPABuffers(); void bufferReady(FrameBuffer *buffer); - void paramsBufferReady(unsigned int id); + void paramsBufferReady(unsigned int id, const Flags &flags); MediaDevice *media_; std::unique_ptr sensor_; @@ -471,7 +471,16 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator) data->ipa_->paramsBufferReady.connect(data.get(), &VimcCameraData::paramsBufferReady); std::string conf = data->ipa_->configurationFile("vimc.conf"); - data->ipa_->init(IPASettings{ conf, data->sensor_->model() }, ipa::vimc::IPAOperationInit); + Flags inFlags; + Flags outFlags; + inFlags |= ipa::vimc::TestFlags::Flag2; + data->ipa_->init(IPASettings{ conf, data->sensor_->model() }, + ipa::vimc::IPAOperationInit, inFlags, &outFlags); + + LOG(VIMC, Debug) + << "Flag 1 was " + << ((outFlags & ipa::vimc::TestFlags::Flag1) ? "" : "not ") + << "set"; /* Create and register the camera. */ std::set streams{ &data->stream_ }; @@ -608,7 +617,8 @@ int VimcCameraData::allocateMockIPABuffers() 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 &flags) { } diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp index b9fa15cd..47c7352b 100644 --- a/test/ipa/ipa_interface_test.cpp +++ b/test/ipa/ipa_interface_test.cpp @@ -106,7 +106,11 @@ protected: /* Test initialization of IPA module. */ std::string conf = ipa_->configurationFile("vimc.conf"); - int ret = ipa_->init(IPASettings{ conf, "vimc" }, ipa::vimc::IPAOperationInit); + Flags inFlags; + Flags outFlags; + int ret = ipa_->init(IPASettings{ conf, "vimc" }, + ipa::vimc::IPAOperationInit, + inFlags, &outFlags); if (ret < 0) { cerr << "IPA interface init() failed" << endl; return TestFail;