From patchwork Fri Oct 4 16:37:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 2101 Return-Path: Received: from relay12.mail.gandi.net (relay12.mail.gandi.net [217.70.178.232]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 9348B6165B for ; Fri, 4 Oct 2019 18:36:01 +0200 (CEST) Received: from uno.localdomain (2-224-242-101.ip172.fastwebnet.it [2.224.242.101]) (Authenticated sender: jacopo@jmondi.org) by relay12.mail.gandi.net (Postfix) with ESMTPSA id 2B079200009; Fri, 4 Oct 2019 16:36:00 +0000 (UTC) From: Jacopo Mondi To: libcamera-devel@lists.libcamera.org Date: Fri, 4 Oct 2019 18:37:33 +0200 Message-Id: <20191004163734.15594-6-jacopo@jmondi.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191004163734.15594-1-jacopo@jmondi.org> References: <20191004163734.15594-1-jacopo@jmondi.org> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 5/6] ipa: vimc: Add support for tracing operations 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-List-Received-Date: Fri, 04 Oct 2019 16:36:02 -0000 Add support to the dummy VIMC IPA for tracing operation by using a FIFO channel that will be used by the IPA Interface test to verify communications with the IPA. At the moment only add support for the init() operation as it's the only defined one. Signed-off-by: Jacopo Mondi --- src/ipa/ipa_vimc.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++ src/ipa/ipa_vimc.h | 21 ++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 src/ipa/ipa_vimc.h diff --git a/src/ipa/ipa_vimc.cpp b/src/ipa/ipa_vimc.cpp index abc06e7f5fd5..5fb62129fef9 100644 --- a/src/ipa/ipa_vimc.cpp +++ b/src/ipa/ipa_vimc.cpp @@ -5,22 +5,88 @@ * ipa_vimc.cpp - Vimc Image Processing Algorithm module */ +#include "ipa_vimc.h" + #include +#include +#include +#include +#include + #include #include +#include "log.h" + namespace libcamera { +LOG_DEFINE_CATEGORY(IPAVimc) + class IPAVimc : public IPAInterface { public: + IPAVimc(); + ~IPAVimc(); + int init(); + +private: + void initTrace(); + int trace(enum IPAOperationCodes operation); + + int fd_; }; +IPAVimc::IPAVimc() + : fd_(-1) +{ + initTrace(); +} + +IPAVimc::~IPAVimc() +{ + if (fd_) + ::close(fd_); +} + int IPAVimc::init() { std::cout << "initializing vimc IPA!" << std::endl; + + return trace(IPAOperationInit); +} + +void IPAVimc::initTrace() +{ + struct stat fifoStat; + int ret = stat(vimcFifoPath, &fifoStat); + if (ret) + return; + + ret = ::open(vimcFifoPath, O_WRONLY); + if (ret < 0) { + LOG(IPAVimc, Debug) << "Failed to open vimc IPA test FIFO: " + << strerror(errno) << std::endl; + return; + } + + fd_ = ret; +} + +int IPAVimc::trace(enum IPAOperationCodes operation) +{ + if (fd_ < 0) + return 0; + + int ret = ::write(fd_, &operation, sizeof(operation)); + if (ret < 0) { + ret = -errno; + LOG(IPAVimc, Debug) << "Failed to write to vimc IPA test FIFO: " + << strerror(-ret) << std::endl; + return ret; + } + return 0; } diff --git a/src/ipa/ipa_vimc.h b/src/ipa/ipa_vimc.h new file mode 100644 index 000000000000..62e40c5a6714 --- /dev/null +++ b/src/ipa/ipa_vimc.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* + * Copyright (C) 2019, Google Inc. + * + * ipa_vimc.h - Vimc Image Processing Algorithm module + */ + +#ifndef __LIBCAMERA_IPA_VIMC_H__ +#define __LIBCAMERA_IPA_VIMC_H__ + +namespace libcamera { + +static const char *vimcFifoPath = "/tmp/vimc_ipa_fifo"; +enum IPAOperationCodes { + IPAOperationNone, + IPAOperationInit, +}; + +}; /* namespace libcamera */ + +#endif /* __LIBCAMERA_IPA_VIMC_H__ */